Files
annnj-company 130c1026c4 first commit
2026-04-17 18:29:53 +08:00

339 lines
14 KiB
PHP
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?php
namespace app\admin\controller;
use app\model\Message;
use app\model\Notice;
use app\model\Attachment;
use think\Db;
use think\facade\Request;
use think\facade\Log;
class MessageRemind extends Base
{
private $type =array(1=>'询价待处理',2=>"订单进度",3=>"调价待处理",4=>"查勘待派单",5=>"查勘待跟进",6=>"报告待制作",7=>"报告待审核",8=>"工作流待处理",9=>"工作流进度");
private $message_type =array(1=>'询价待处理',2=>"订单进度",3=>"调价待处理",4=>"查勘待派单",5=>"查勘待跟进",6=>"报告待制作",
7=>"报告待审核",8=>"工作流待处理",9=>"工作流进度",10=>'询价待处理',11=>"订单进度",12=>"调价待处理",13=>"查勘待派单",
14=>"查勘待跟进",15=>"报告待制作",16=>"报告待审核",17=>"工作流待处理",18=>"工作流进度",18=>"查勘待跟进",19=>"报告待制作",
20=>"报告待审核",21=>"工作流待处理",22=>"工作流进度",23=>"查勘待跟进",24=>"报告待制作",25=>"报告待审核");
/**
* 获取信息列表
* @author cavan
*/
public function MessageRemindList()
{
if(empty($this->userInfo)){
return $this->buildFailed("登录已失效");
}
$Mdb = new Message();
$resultData=$Mdb->where(["status"=>1,"user_id"=>$this->userInfo['user_id']])
->order("create_time asc")
->field('*')
->select()
->toArray();
$data = array();
if(!empty($resultData)){
$inquiryPending = array();$OrderProgress = array();$ModifyPricePending = array();$SurveyWaitingList = array();$SurveyfollowUp = array();
$ReportProduced = array();$ReportReviewed = array();$WorkflowPending = array();$WorkflowProgress = array();
$inquiryPendingCount = $OrderProgressCount = $ModifyPricePendingCount = $SurveyWaitingListCount = $SurveyfollowUpCount = $ReportProducedCount = $ReportReviewedCount = $WorkflowPendingCount = $WorkflowProgressCount = 0;
$type_arr = array_unique(array_column($resultData,"type"));
if(!empty($type_arr)){
foreach ($type_arr as $k => $v){
foreach ($resultData as $kd => $vd){
$vd['create_time'] = date("Y-m-d H:i",strtotime($vd['create_time']));
if($v == $vd['type']){
if($v == 1){
$inquiryPending[] = $vd;
if($vd['issee'] == 2){
$inquiryPendingCount++;
}
}else if($v == 2){
if($vd['message_type'] == 11 || $vd['message_type'] == 31){ //报告已完成 报告完成时间不是当天的不显示
$completion_time = Db::name("report")
->where("quot_id",$vd['quot_id'])
->value("completion_time");
if($completion_time && date("Y-m-d",$completion_time) == date("Y-m-d",time())){
$OrderProgress[] = $vd;
if($vd['issee'] == 2){
$OrderProgressCount++;
}
}
}else{
$OrderProgress[] = $vd;
if($vd['issee'] == 2){
$OrderProgressCount++;
}
}
}else if($v == 3){
$ModifyPricePending[] = $vd;
if($vd['issee'] == 2){
$ModifyPricePendingCount++;
}
}else if($v == 4){
$SurveyWaitingList[] = $vd;
if($vd['issee'] == 2){
$SurveyWaitingListCount++;
}
}else if($v == 5){
$SurveyfollowUp[] = $vd;
if($vd['issee'] == 2){
$SurveyfollowUpCount++;
}
}else if($v == 6){
$ReportProduced[] = $vd;
if($vd['issee'] == 2){
$ReportProducedCount++;
}
}else if($v == 7){
$ReportReviewed[] = $vd;
if($vd['issee'] == 2){
$ReportReviewedCount++;
}
}else if($v == 8){
$WorkflowPending[] = $vd;
if($vd['issee'] == 2){
$WorkflowPendingCount++;
}
}else if($v == 9){
$WorkflowProgress[] = $vd;
if($vd['issee'] == 2){
$WorkflowProgressCount++;
}
}
}
}
}
}
$data['inquiryPending'] = $inquiryPending;
$data['OrderProgress'] = array_merge($this->arraySort(array_merge($OrderProgress),"create_time","desc"));
$data['ModifyPricePending'] = $ModifyPricePending;
$data['SurveyWaitingList'] = $SurveyWaitingList;
$data['SurveyfollowUp'] = $SurveyfollowUp;
$data['ReportProduced'] = $ReportProduced;
$data['ReportReviewed'] = $ReportReviewed;
$data['WorkflowPending'] = $WorkflowPending;
$data['WorkflowProgress'] = $WorkflowProgress;
$data['inquiryPendingCount'] = $inquiryPendingCount;
$data['OrderProgressCount'] = $OrderProgressCount;
$data['ModifyPricePendingCount'] = $ModifyPricePendingCount;
$data['SurveyWaitingListCount'] = $SurveyWaitingListCount;
$data['SurveyfollowUpCount'] = $SurveyfollowUpCount;
$data['ReportProducedCount'] = $ReportProducedCount;
$data['ReportReviewedCount'] = $ReportReviewedCount;
$data['WorkflowPendingCount'] = $WorkflowPendingCount;
$data['WorkflowProgressCount'] = $WorkflowProgressCount;
}
return $this->buildSuccess($data);
}
/**
* 消息已读调用方法
*
* @author cavan
*
* @param ids //信息表id字符串
*/
public function MessageRead(){
$ids = $this->request->post('ids', '', 'trim'); //信息表id
$relsut = array();
if(!$ids){
$Mdb = new Message();
$resultData=$Mdb->where(["status"=>1,"issee"=>2,"user_id"=>$this->userInfo['user_id']])
->field('id')
->select()
->toArray();
if(!empty($resultData)){
foreach ($resultData as $k => $v){
$relsut = MessageRead($v['id']);
}
}else{
return $this->buildSuccess();
}
}else{
$relsut = MessageRead($ids);
}
if($relsut && $relsut['code'] == 1){
return $this->buildSuccess();
}else {
return $this->buildFailed("操作成功");
}
}
/**
* app消息写入方法
*
* @author cavan
*
* @param quot_id //询价主表id
* @param type //消息归属
* @param message_type //消息类型
* @param property_cert_info_id //物业表id
*/
public function publicMessage(){
$quot_id = $this->request->post('quot_id', '', 'trim'); //询价主表id
$type = $this->request->post('type', '', 'trim'); //消息归属
$message_type = $this->request->post('message_type', '', 'trim'); //消息类型
$property_cert_info_id = $this->request->post('property_cert_info_id', '', 'trim'); //物业表id
$relsut = PublicMessage($quot_id,$type,$message_type,$property_cert_info_id);
if($relsut['code'] == 1){
return $this->buildSuccess();
}else {
return $this->buildFailed($relsut['msg']);
}
}
/**
* 公告 / 传阅
*
* @author cavan
*
*/
public function Notice(){
if(empty($this->userInfo)){
return $this->buildFailed("登录已失效");
}
$Ndb = new Notice();
$Attachment = new Attachment(); //获取图片信息
$resultData1=$Ndb->where(["type"=>1])
->where("status",1)
->order(['update_time'=>'desc','create_time'=>'desc'])
->field('*')
->limit(5)
->select()
->toArray();
if(!empty($resultData1)){
foreach ($resultData1 as $k => $v){
//图片列表
$resultData1[$k]['fileslist'] = !empty($v['files'])?$Attachment->getUrls($v['files']):array();
}
}
$user_id = $this->userInfo['user_id'];
$resultData2=$Ndb->where(["type"=>2])
->where('FIND_IN_SET(:uid,relevant_personnel_ids)',['uid' => $user_id])
->where("status",1)
->order(['update_time'=>'desc','create_time'=>'desc'])
->field('*')
->limit(5)
->select()
->toArray();
if(!empty($resultData2)){
foreach ($resultData2 as $k => $v){
//图片列表
$resultData2[$k]['fileslist'] = !empty($v['files'])?$Attachment->getUrls($v['files']):array();
$resultData2[$k]['propertyDetails'] = Db::name("notice_reply")->where("notice_id",$v['id'])->field("*")->select();
}
}
$data['Notice'] = $resultData1;
$data['Circulation'] = $resultData2;
return $this->buildSuccess($data);
}
/**
* 获取信息列表最新 10条
* @author cavan
*/
public function MessageRemindAll()
{
$min_id = $this->request->post('min_id', '', 'trim'); //分页
if(empty($this->userInfo)){
return $this->buildFailed("登录已失效");
}
$Mdb = new Message();
$where = array();
$where[] = ["status","=",1];
$where[] = ["user_id","=",$this->userInfo['user_id']];
if($min_id){
$where[] = ["id","<",$min_id];
}
$resultData=$Mdb->where($where)
->order(['issee'=>'desc','id'=>'desc'])
->field('*')
->limit(10)
->select()
->toArray();
$issee_num = $Mdb->where(["status"=>1,'issee'=>2,"user_id"=>$this->userInfo['user_id']])->count();
if(!empty($resultData)){
foreach ($resultData as $kd => $vd){
$resultData[$kd]['create_time'] = date("Y-m-d H:i",strtotime($vd['create_time']));
if($vd['type'] == 1){
$resultData[$kd]['messageType'] = "inquiryPending";
}else if($vd['type'] == 2){
if($vd['message_type'] == 11 || $vd['message_type'] == 31){ //报告已完成 报告完成时间不是当天的不显示
$completion_time = Db::name("report")
->where("quot_id",$vd['quot_id'])
->value("completion_time");
if(!$completion_time || ($completion_time && date("Y-m-d",$completion_time) != date("Y-m-d",time()))){
unset($resultData[$kd]);
}else{
$resultData[$kd]['messageType'] = "OrderProgress";
}
}else{
$resultData[$kd]['messageType'] = "OrderProgress";
}
}else if($vd['type'] == 3){
$resultData[$kd]['messageType'] = "ModifyPricePending";
}else if($vd['type'] == 4){
$resultData[$kd]['messageType'] = "SurveyWaitingList";
}else if($vd['type'] == 5){
$resultData[$kd]['messageType'] = "SurveyfollowUp";
}else if($vd['type'] == 6){
$resultData[$kd]['messageType'] = "ReportProduced";
}else if($vd['type'] == 7){
$resultData[$kd]['messageType'] = "ReportReviewed";
}else if($vd['type'] == 8){
$resultData[$kd]['messageType'] = "WorkflowPending";
}else if($vd['type'] == 9){
$resultData[$kd]['messageType'] = "WorkflowProgress";
}
}
}
$data = array();
$data['issee_num'] = $issee_num;
$data['list'] = array_merge($resultData);
return $this->buildSuccess($data);
}
/**
* 消息推送
*
*/
public function messagePush(){
ignore_user_abort(TRUE); //如果客户端断开连接不会引起脚本abort
set_time_limit(0); //取消脚本执行延时上限
$request = Request::instance();
$par = $request->param();
$par = json_decode(urldecode($par['query']), true);
if(!empty($par)){
$res = sendMessage($par['user_id'],$par['message_content']);
Log::write("参数:".json_encode($par)."--返回:".$res,'workermanmsg');
}
}
//数组排序
function arraySort($array,$keys,$sort='asc') {
$newArr = $valArr = array();
foreach ($array as $key=>$value) {
$valArr[$key] = $value[$keys];
}
($sort == 'asc') ? asort($valArr) : arsort($valArr);
reset($valArr);
foreach($valArr as $key=>$value) {
$newArr[$key] = $array[$key];
}
return $newArr;
}
}