Files
xinhu/webmain/model/flow/gongModel.php
2025-07-18 14:38:01 +08:00

260 lines
7.8 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
class flow_gongClassModel extends flowModel
{
private $readunarr = array();//未读人员
private $logobj;
public function initModel()
{
$this->logobj = m('log');
}
protected function flowchangedata(){
$cont = c('html')->replace($this->rs['content']);
$fm = $this->rs['fengmian'];
if(!isempt($fm)){
$cont='<div align="center"><img style="max-width:100%" src="'.$this->rock->gethttppath($fm).'"></div>'.$cont.'';
}
$url = $this->rs['url'];
if(!isempt($url))$cont.='<div><a href="'.$url.'">打开相应地址&gt;&gt;</a></div>';
$this->rs['content'] = $cont;
}
public function flowrsreplace($rs, $lx=0)
{
$mintou = (int)arrvalue($rs, 'mintou','0');
if($lx==2){
$zt = $this->logobj->isread($this->mtable, $rs['id'], $this->adminid);
if($zt>0)$rs['ishui']=1;
}
if($lx==1){
$receid = $rs['receid'];
if(isempt($receid))$receid='all';
$barr = m('log')->getreadshu($this->mtable, $rs['id'],$receid , $rs['optdt'], $this->adminmodel);
foreach($barr as $k=>$v)$rs[$k]=$v;
$this->readunarr = $barr['wduarr'];
}
if($mintou>0){
$rs['title'] .='(投票)';
}
return $rs;
}
protected function flowsubmit($na, $sm)
{
if($this->rs['status']==1)$this->tisongtodo();
}
//移动端列表
private $ydarr = false;
public function flowrsreplace_we($row, $rs)
{
if(!isempt($rs['fengmian']))$row['picurl'] = $rs['fengmian'];
if($this->ydarr===false)$this->ydarr = explode(',', m('log')->getread('infor', $this->adminid));
if(!in_array($rs['id'], $this->ydarr)){
$row['statustext'] = '未读';
$row['statuscolor'] = '#ED5A5A';
}else{
$row['ishui'] = 1;
}
return $row;
}
public function flowwesearchdata($lx)
{
if($lx==1)return $this->option->getselectdata('gongtype', true);
return array(
'typename' => '所有通知',
'searchmsg' => '通知标题/分类',
);
}
//审核完成后发通知
protected function flowcheckfinsh($zt)
{
if($zt==1)$this->tisongtodo();
}
public function getreceids($receid, $whe='')
{
$receid = $this->adminmodel->gjoin($receid,'ud','where');
if($receid=='' || $receid=='all'){
$where = '';
}else{
$where = 'and id>0 and ('.$receid.')';
}
$ids = '';
$rows = $this->adminmodel->getall('`status`=1 '.$where.' '.$whe.'','id');
foreach($rows as $k=>$rs)$ids.=',u'.$rs['id'].'';
if($ids!='')$ids = substr($ids, 1);
return $ids;
}
//发送推送通知
private function tisongtodo()
{
//还没到展示时间就不发送提醒
$zstart= arrvalue($this->rs, 'zstart');
if(!isempt($zstart) && $zstart>$this->rock->date)return;
$h = c('html');
$cont = $h->htmlremove($this->rs['content']);
$cont = $h->substrstr($cont,0, 40);
if(strlen($cont)>41)$cont.='...';
if(isempt($cont))$cont = $this->rs['title']; //为空时
$this->push($this->rs['receid'], '通知公告', $cont, $this->rs['title'],1);
//添加短信提醒,短信提醒
if(arrvalue($this->rs,'issms')=='1'){
$receid = $this->rs['receid'];//接收人ID可以为部门合聚如d2,u1(必须)
if(isempt($receid))$receid = 'all'; //为空就是全部人
$qiannum= ''; //【系统→短信管理→短信签名】下获取,如没有自己的签名默认【信呼OA】
$tplnum = m('option')->getval('gongsmstpl', 'gongsms');//到【数据选项→行政选项】下设置通知短信模版编号
$params = array(
'title' => $this->rs['title'],
'typename' => $this->rs['typename'],
);
$url = $this->getxiangurlx();//详情连接地址(选填)短信模版有url就需要填写
c('xinhuapi')->sendsms($receid, $qiannum, $tplnum, $params, $url);
}
}
protected function flowgetoptmenu($opt)
{
$to = m('log')->isread($this->mtable, $this->id);
return $to<=0;
}
protected function flowoptmenu($ors, $crs)
{
$table = $this->mtable;
$mid = $this->id;
$uid = $this->adminid;
$lx = $ors['num'];
$log = m('log');
if($lx=='yd'){
$log->addread($table, $mid, $uid);
}
if($lx=='allyd'){
$ydid = $log->getread($table, $uid);
$where = "id not in($ydid)";
$meswh = m('admin')->getjoinstr('receid', $uid);
$where .= $meswh;
$rows = m($table)->getrows($where,'id');
foreach($rows as $k=>$rs)$log->addread($table, $rs['id'], $uid);
}
}
protected function flowbillwhere($uid, $lx)
{
$key = $this->rock->post('key');
$typeid = (int)$this->rock->post('typeid','0');
$keywere= '';
$whyere = '';
if(!isempt($key))$keywere.=" and (`title` like '%$key%' or `typename`='$key')";
//我和我未读
if($lx=='my' || $lx=='wexx'){
$whyere= "and (`zstart` is null or `zstart`<='{$this->rock->date}')";
$whyere.= " and (`zsend` is null or `zsend`>='{$this->rock->date}')";
$wdate = $this->adminmodel->getmou('workdate', $uid);
if(!isempt($wdate))$whyere.=" and `indate`>='$wdate'";
}
if($typeid>0){
$typename=$this->option->getmou('name', $typeid);
$whyere.=" and `typename`='$typename'";
}
return array(
'order' => '`istop` desc,`optdt` desc',
'keywere' => $keywere,
'where' => $whyere,
'fields' => 'id,typename,optdt,title,optname,zuozhe,indate,recename,fengmian,mintou,`status`,`istop`,`appxs`,`comid`'
);
}
//显示投票
protected function flowdatalog($arr)
{
$istoupiao = 0;
$mintou = (int)arrvalue($this->rs, 'mintou','0');
$maxtou = (int)arrvalue($this->rs, 'maxtou','0');
$status = (int)arrvalue($this->rs, 'status','0');
$touarr = array();
$logarr = array();
if($mintou>0){
$istoupiao = 4;
$toutype = 0;//不需要投票1已投票2未投票
$receid = $this->rs['receid'];
if(isempt($receid)){
$istoupiao = 1;
}else{
$bo = $this->adminmodel->containjoin($receid, $this->adminid);
if($bo)$istoupiao = 1;
}
$zongps = 0;
$touitems = m('infors')->getall('mid='.$this->id.'','*','`sort`');
foreach($touitems as $k=>$rs){
$zongps+=floatval($rs['touci']);
$touitems[$k]['bili'] = 0;
}
if($zongps>0)foreach($touitems as $k=>$rs){
$touitems[$k]['bili'] = $this->rock->number(floatval($rs['touci'])/$zongps * 100);
}
$touarr['touitems'] = $touitems;
if($istoupiao==1){
if($this->rs['startdt']>$this->rock->now)$istoupiao = 2; //未开始
if($this->rs['enddt']<$this->rock->now)$istoupiao = 3; //结束
}
$touarr['type'] = ($mintou==1 && $maxtou==1)? 'radio': 'checkbox';
//判断我是否投票了
if($istoupiao==1 && $status==1){
$towheer = $this->mwhere." and `name`='投票' and `checkid`='$this->adminid'";
if($this->flogmodel->rows($towheer)>0){
$toutype = 1;
$istoupiao = 5;
}else{
$toutype = 2; //未投票
}
}
$touarr['toutype'] = $toutype;
//判断是否可以显示结果
$showtou = 0;
if($istoupiao!=2 && $status==1 && ($toutype==1 || $toutype==0))$showtou = 1;
if($showtou==0){
foreach($arr['logarr'] as $k1=>$rs1){
if($rs1['actname']!='投票')$logarr[] = $rs1;
}
}
$touarr['showtou'] = $showtou;
$touarr['mintou'] = $mintou;
$touarr['maxtou'] = $maxtou;
}
$toupiaoarrr = explode(',',',<font color=blue>投票进行中</font>,<font color=#ff6600>未开始</font>,<font color=#888888>已结束</font>,<font color=#888888>你不在投票对象中</font>,<font color=green>已投票过了</font>');
$arr['istoupiao'] = $istoupiao; //投票状态0不能,1可以2未开始3结束 4你不需要投票
$arr['toupiaostatus'] = $toupiaoarrr[$istoupiao];
$arr['title'] = '';
$arr['touarr'] = $touarr;
if($logarr)$arr['logarr'] = $logarr;
$arr['readunarr'] = $this->readunarr;//读取未查阅
return $arr;
}
}