|
|
|
|
<?php
|
|
|
|
|
// +----------------------------------------------------------------------
|
|
|
|
|
// | Description: 日志
|
|
|
|
|
// +----------------------------------------------------------------------
|
|
|
|
|
// | Author: Michael_xu | gengxiaoxu@5kcrm.com
|
|
|
|
|
// +----------------------------------------------------------------------
|
|
|
|
|
namespace app\oa\model;
|
|
|
|
|
|
|
|
|
|
use app\admin\controller\ApiCommon;
|
|
|
|
|
use think\Db;
|
|
|
|
|
use app\admin\model\Common;
|
|
|
|
|
use app\admin\model\Message;
|
|
|
|
|
use app\admin\model\User;
|
|
|
|
|
use think\Request;
|
|
|
|
|
use think\Validate;
|
|
|
|
|
|
|
|
|
|
class Log extends Common
|
|
|
|
|
{
|
|
|
|
|
/**
|
|
|
|
|
* 为了数据库的整洁,同时又不影响Model和Controller的名称
|
|
|
|
|
* 我们约定每个模块的数据表都加上相同的前缀,比如CRM模块用crm作为数据表前缀
|
|
|
|
|
*/
|
|
|
|
|
protected $name = 'oa_log';
|
|
|
|
|
protected $createTime = 'create_time';
|
|
|
|
|
protected $updateTime = 'update_time';
|
|
|
|
|
protected $autoWriteTimestamp = true;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* [getDataList 日志list]
|
|
|
|
|
* @param [string] $map [查询条件]
|
|
|
|
|
* @param [number] $page [当前页数]
|
|
|
|
|
* @param [number] $limit [每页数量]
|
|
|
|
|
* @return [array] [description]
|
|
|
|
|
* @author Michael_xu
|
|
|
|
|
*/
|
|
|
|
|
public function getDataList($request)
|
|
|
|
|
{
|
|
|
|
|
$userModel = new \app\admin\model\User();
|
|
|
|
|
$structureModel = new \app\admin\model\Structure();
|
|
|
|
|
$fileModel = new \app\admin\model\File();
|
|
|
|
|
$commonModel = new \app\admin\model\Comment();
|
|
|
|
|
$recordModel = new \app\admin\model\Record();
|
|
|
|
|
$user_id = $request['read_user_id'];
|
|
|
|
|
$by = $request['by'] ?: '';
|
|
|
|
|
$map = [];
|
|
|
|
|
$search = $request['search'];
|
|
|
|
|
if (isset($request['search']) && $request['search']) {
|
|
|
|
|
//普通筛选
|
|
|
|
|
$searchMap = function ($query) use ($search) {
|
|
|
|
|
$query->where('log.content', array('like', '%' . $search . '%'))
|
|
|
|
|
->whereOr('log.tomorrow', array('like', '%' . $search . '%'))
|
|
|
|
|
->whereOr('log.question', array('like', '%' . $search . '%'));
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
if ($request['category_id']) {
|
|
|
|
|
$map['log.category_id'] = $request['category_id'];
|
|
|
|
|
}
|
|
|
|
|
if ($request['type']) {
|
|
|
|
|
$timeAry = ByDateTime($request['type']);
|
|
|
|
|
$between_time = [$timeAry[0], $timeAry[1]];
|
|
|
|
|
$map['log.create_time'] = ['between', $between_time];
|
|
|
|
|
} else {
|
|
|
|
|
//自定义时间
|
|
|
|
|
$start_time = $request['start_time'] ? strtotime($request['start_time'].' 00:00:00') : strtotime(date('Y-m-01', time()));
|
|
|
|
|
$end_time = $request['end_time'] ? strtotime($request['end_time'].' 23:59:59') : strtotime(date('Y-m-01', time()) . ' +1 month -1 day');
|
|
|
|
|
$map['log.create_time'] = ['between', [$start_time, $end_time]];
|
|
|
|
|
}
|
|
|
|
|
$requestData = $this->requestData();
|
|
|
|
|
//获取权限范围内的员工
|
|
|
|
|
$auth_user_ids = getSubUserId();
|
|
|
|
|
$dataWhere['user_id'] = $user_id;
|
|
|
|
|
$dataWhere['structure_id'] = $request['structure_id'];
|
|
|
|
|
$dataWhere['auth_user_ids'] = $auth_user_ids;
|
|
|
|
|
$logMap = '';
|
|
|
|
|
if ($request['create_user_id'] != '') {
|
|
|
|
|
$map['log.create_user_id'] = ['in', trim(arrayToString($request['create_user_id']), ',')];
|
|
|
|
|
}
|
|
|
|
|
switch ($by) {
|
|
|
|
|
case 'me' :
|
|
|
|
|
$map['log.create_user_id'] = $user_id;
|
|
|
|
|
break;
|
|
|
|
|
case 'other':
|
|
|
|
|
$logMap = function ($query) use ($dataWhere) {
|
|
|
|
|
$query->where('log.send_user_ids', array('like', '%,' . $dataWhere['user_id'] . ',%'))
|
|
|
|
|
->whereOr('log.send_structure_ids', array('like', '%,' . $dataWhere['structure_id'] . ',%'));
|
|
|
|
|
};
|
|
|
|
|
break;
|
|
|
|
|
default :
|
|
|
|
|
$logMap = function ($query) use ($dataWhere) {
|
|
|
|
|
$query->where('log.create_user_id', array('in', implode(',', $dataWhere['auth_user_ids'])))
|
|
|
|
|
->whereOr('log.send_user_ids', array('like', '%,' . $dataWhere['user_id'] . ',%'))
|
|
|
|
|
->whereOr('log.send_structure_ids', array('like', '%,' . $dataWhere['structure_id'] . ',%'));
|
|
|
|
|
};
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
$list = Db::name('OaLog')
|
|
|
|
|
->where($map)
|
|
|
|
|
->where($logMap)
|
|
|
|
|
->where($searchMap)
|
|
|
|
|
->alias('log')
|
|
|
|
|
->join('__ADMIN_USER__ user', 'user.id = log.create_user_id', 'LEFT')
|
|
|
|
|
->page($request['page'], $request['limit'])
|
|
|
|
|
->field('log.*,user.realname,user.thumb_img')
|
|
|
|
|
->order('log.update_time desc')
|
|
|
|
|
->select();
|
|
|
|
|
$dataCount = $this->alias('log')->where($map)->where($logMap)->where($searchMap)->count();
|
|
|
|
|
foreach ($list as $k => $v) {
|
|
|
|
|
$list[$k]['create_user_info']['realname'] = $v['realname'] ?: '';
|
|
|
|
|
$list[$k]['create_user_info']['id'] = $v['create_user_id'] ?: '';
|
|
|
|
|
$list[$k]['create_user_info']['thumb_img'] = $v['thumb_img'] ? getFullPath($v['thumb_img']) : '';
|
|
|
|
|
//附件、图片
|
|
|
|
|
$fileList = [];
|
|
|
|
|
$imgList = [];
|
|
|
|
|
$where = [];
|
|
|
|
|
$where['module'] = 'oa_log';
|
|
|
|
|
$where['module_id'] = $v['log_id'];
|
|
|
|
|
$newFileList = [];
|
|
|
|
|
$newFileList = $fileModel->getDataList($where);
|
|
|
|
|
foreach ($newFileList['list'] as $val) {
|
|
|
|
|
if ($val['types'] == 'file') {
|
|
|
|
|
$fileList[] = $val;
|
|
|
|
|
} else {
|
|
|
|
|
$imgList[] = $val;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
$list[$k]['create_time'] = date('Y-m-d H:i:s', $v['create_time']);
|
|
|
|
|
$list[$k]['fileList'] = $fileList ?: [];
|
|
|
|
|
$list[$k]['imgList'] = $imgList ?: [];
|
|
|
|
|
$list[$k]['sendUserList'] = $userModel->getDataByStr($v['send_user_ids']) ?: [];
|
|
|
|
|
$list[$k]['sendStructList'] = $structureModel->getDataByStr($v['send_structure_ids']) ?: [];
|
|
|
|
|
$favour=$this->favourList($v['log_id']);
|
|
|
|
|
$list[$k]['favourUser'] = $favour ?: [];
|
|
|
|
|
$list[$k]['favour_status'] =!empty($favour)?1:0 ;
|
|
|
|
|
$param['type_id'] = $v['log_id'];
|
|
|
|
|
$param['type'] = 'oa_log';
|
|
|
|
|
$list[$k]['replyList'] = $commonModel->read($param);
|
|
|
|
|
//相关业务
|
|
|
|
|
$relationArr = $recordModel->getListByRelationId('log', $v['log_id']);
|
|
|
|
|
$list[$k]['businessList'] = $relationArr['businessList'];
|
|
|
|
|
$list[$k]['contactsList'] = $relationArr['contactsList'];
|
|
|
|
|
$list[$k]['contractList'] = $relationArr['contractList'];
|
|
|
|
|
$list[$k]['customerList'] = $relationArr['customerList'];
|
|
|
|
|
|
|
|
|
|
if ($v['is_relation'] == 1) {
|
|
|
|
|
$list[$k]['bulletin']['customerNum'] = $v['save_customer'];
|
|
|
|
|
$list[$k]['bulletin']['businessNum'] = $v['save_business'];
|
|
|
|
|
$list[$k]['bulletin']['contractNum'] = $v['save_contract'];
|
|
|
|
|
$list[$k]['bulletin']['receivablesMoneyNum'] = $v['save_receivables'];
|
|
|
|
|
$list[$k]['bulletin']['recordNum'] = $v['save_activity'];
|
|
|
|
|
} else {
|
|
|
|
|
$list[$k]['bulletin'] = 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$is_update = 0;
|
|
|
|
|
$is_delete = 0;
|
|
|
|
|
//3天内的日志可删,可修改
|
|
|
|
|
if (($v['create_user_id'] == $user_id) && date('Ymd', $v['create_time']) > date('Ymd', (strtotime(date('Ymd', time())) - 86400 * 3))) {
|
|
|
|
|
$is_update = 1;
|
|
|
|
|
$is_delete = 1;
|
|
|
|
|
}
|
|
|
|
|
if (in_array($v['create_user_id'], $auth_user_ids)) {
|
|
|
|
|
$is_delete = 1;
|
|
|
|
|
}
|
|
|
|
|
$permission['is_update'] = $is_update;
|
|
|
|
|
$permission['is_delete'] = $is_delete;
|
|
|
|
|
$list[$k]['permission'] = $permission;
|
|
|
|
|
//已读
|
|
|
|
|
$read_user_ids = stringToArray($v['read_user_ids']);
|
|
|
|
|
$is_read = 0;
|
|
|
|
|
if (in_array($user_id, $read_user_ids)) {
|
|
|
|
|
$is_read = 1;
|
|
|
|
|
}
|
|
|
|
|
$list[$k]['is_read'] = $is_read;
|
|
|
|
|
}
|
|
|
|
|
$data = [];
|
|
|
|
|
$data['page']['list'] = $list;
|
|
|
|
|
$data['page']['dataCount'] = $dataCount ?: 0;
|
|
|
|
|
|
|
|
|
|
if ($param['page'] != 1 && ($param['page'] * $param['limit']) >= $dataCount) {
|
|
|
|
|
$data['firstPage'] = false;
|
|
|
|
|
$data['lastPage'] = true;
|
|
|
|
|
} else if ($param['page'] != 1 && (int)($param['page'] * $param['limit']) < $dataCount) {
|
|
|
|
|
$data['firstPage'] = false;
|
|
|
|
|
$data['lastPage'] = false;
|
|
|
|
|
} else if ($param['page'] == 1 && (int)($param['page'] * $param['limit']) < $dataCount) {
|
|
|
|
|
$data['firstPage'] = true;
|
|
|
|
|
$data['lastPage'] = true;
|
|
|
|
|
}
|
|
|
|
|
return $data;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 创建日志信息
|
|
|
|
|
public function createData($param)
|
|
|
|
|
{
|
|
|
|
|
$userModel = new \app\admin\model\User();
|
|
|
|
|
$recordModel = new \app\admin\model\Record();
|
|
|
|
|
$fileArr = $param['file']; //接收表单附件
|
|
|
|
|
unset($param['file']);
|
|
|
|
|
$senduserArray = $param['send_user_ids'] ?: [];
|
|
|
|
|
$param['send_user_ids'] = $param['send_user_ids'] ? arrayToString($param['send_user_ids']) : '';
|
|
|
|
|
$param['send_structure_ids'] = $param['send_structure_ids'] ? arrayToString($param['send_structure_ids']) : '';
|
|
|
|
|
$param['is_relation'] = $param['is_relation'] ?: 0;
|
|
|
|
|
$rdata = [];
|
|
|
|
|
//关联业务
|
|
|
|
|
$rdata['customer_ids'] = $param['customer_ids'] ? arrayToString($param['customer_ids']) : '';
|
|
|
|
|
$rdata['contacts_ids'] = $param['contacts_ids'] ? arrayToString($param['contacts_ids']) : '';
|
|
|
|
|
$rdata['business_ids'] = $param['business_ids'] ? arrayToString($param['business_ids']) : '';
|
|
|
|
|
$rdata['contract_ids'] = $param['contract_ids'] ? arrayToString($param['contract_ids']) : '';
|
|
|
|
|
$arr = ['customer_ids', 'contacts_ids', 'business_ids', 'contract_ids'];
|
|
|
|
|
foreach ($arr as $value) {
|
|
|
|
|
unset($param[$value]);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ($param['category_id'] == 1) {
|
|
|
|
|
$param['title'] = date('Y-m-d') . '-日报';
|
|
|
|
|
} else if ($param['category_id'] == 2) {
|
|
|
|
|
$param['title'] = date('Y-m-d') . '-周报';
|
|
|
|
|
} else if ($param['category_id'] == 3) {
|
|
|
|
|
$param['title'] = date('Y-m-d') . '-月报';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ($this->data($param)->allowField(true)->save()) {
|
|
|
|
|
$log_id = $this->log_id;
|
|
|
|
|
//操作记录
|
|
|
|
|
// actionLog($log_id, $param['send_user_ids'], $param['send_structure_ids'], '创建了日志');
|
|
|
|
|
//处理附件关系
|
|
|
|
|
if ($fileArr) {
|
|
|
|
|
$fileModel = new \app\admin\model\File();
|
|
|
|
|
$resData = $fileModel->createDataById($fileArr, 'oa_log', $log_id);
|
|
|
|
|
if ($resData == false) {
|
|
|
|
|
$this->error = '附件上传失败';
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$temp = User::where(['structure_id' => ['in', $param['send_structure_ids']]])->column('id');
|
|
|
|
|
(new Message())->send(
|
|
|
|
|
Message::LOG_SEND,
|
|
|
|
|
[
|
|
|
|
|
'title' => $param['title'],
|
|
|
|
|
'action_id' => $log_id
|
|
|
|
|
],
|
|
|
|
|
array_merge($temp, $senduserArray)
|
|
|
|
|
);
|
|
|
|
|
//返回数据,前端动态追加使用
|
|
|
|
|
$data = [];
|
|
|
|
|
$data['log_id'] = $log_id;
|
|
|
|
|
$data = $param;
|
|
|
|
|
|
|
|
|
|
if (count($fileArr)) {
|
|
|
|
|
$fileList = Db::name('AdminFile')->where('file_id in (' . implode(',', $fileArr) . ')')->select();
|
|
|
|
|
foreach ($fileList as $k => $v) {
|
|
|
|
|
$fileList[$k]['file_path'] = $v['file_path'] ? getFullPath($v['file_path']) : '';
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
$data['fileList'] = $fileList ?: array();
|
|
|
|
|
//发送人
|
|
|
|
|
$data['sendUserList'] = $param['send_user_ids'] ? $userModel->getListByStr($param['send_user_ids']) : [];
|
|
|
|
|
//发送部门
|
|
|
|
|
$data['sendStructureList'] = $param['send_structure_ids'] ? $userModel->getListByStr($param['send_structure_ids']) : [];
|
|
|
|
|
$data['log_id'] = $log_id;
|
|
|
|
|
|
|
|
|
|
$rdata['log_id'] = $log_id;
|
|
|
|
|
$rdata['status'] = 1;
|
|
|
|
|
$rdata['create_time'] = time();
|
|
|
|
|
//关联业务
|
|
|
|
|
Db::name('OaLogRelation')->insert($rdata);
|
|
|
|
|
|
|
|
|
|
//相关业务
|
|
|
|
|
$relationArr = $recordModel->getListByRelationId('log', $log_id);
|
|
|
|
|
$data['businessList'] = $relationArr['businessList'];
|
|
|
|
|
$data['contactsList'] = $relationArr['contactsList'];
|
|
|
|
|
$data['contractList'] = $relationArr['contractList'];
|
|
|
|
|
$data['customerList'] = $relationArr['customerList'];
|
|
|
|
|
|
|
|
|
|
# 添加活动记录
|
|
|
|
|
if (!empty($rdata['customer_ids']) || !empty($rdata['contacts_ids']) || !empty($rdata['business_ids']) || !empty($rdata['contract_ids'])) {
|
|
|
|
|
Db::name('crm_activity')->insert([
|
|
|
|
|
'type' => 2,
|
|
|
|
|
'activity_type' => 8,
|
|
|
|
|
'activity_type_id' => $log_id,
|
|
|
|
|
'content' => !empty($param['title']) ? $param['title'] : '日志',
|
|
|
|
|
'create_user_id' => $param['create_user_id'],
|
|
|
|
|
'update_time' => time(),
|
|
|
|
|
'create_time' => time(),
|
|
|
|
|
'customer_ids' => !empty($rdata['customer_ids']) ? $rdata['customer_ids'] : '',
|
|
|
|
|
'contacts_ids' => !empty($rdata['contacts_ids']) ? $rdata['contacts_ids'] : '',
|
|
|
|
|
'business_ids' => !empty($rdata['business_ids']) ? $rdata['business_ids'] : '',
|
|
|
|
|
'contract_ids' => !empty($rdata['contract_ids']) ? $rdata['contract_ids'] : '',
|
|
|
|
|
]);
|
|
|
|
|
}
|
|
|
|
|
RecordActionLog($param['create_user_id'],'oa_log','save',$param['title'],'','','新增了日志'.$param['title']);
|
|
|
|
|
return $data;
|
|
|
|
|
} else {
|
|
|
|
|
$this->error = '添加失败';
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 编辑日志信息
|
|
|
|
|
* @param
|
|
|
|
|
* @return
|
|
|
|
|
* @author Michael_xu
|
|
|
|
|
*/
|
|
|
|
|
public function updateDataById($param, $log_id = '')
|
|
|
|
|
{
|
|
|
|
|
$dataInfo = $this->getDataById($log_id);
|
|
|
|
|
if (!$dataInfo) {
|
|
|
|
|
$this->error = '数据不存在或已删除';
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
if ($dataInfo['create_time'] < time() - 3600 * 24 * 3) {
|
|
|
|
|
$this->error = '超过时效,不可修改';
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
//关联业务
|
|
|
|
|
$rdata['customer_ids'] = $param['customer_ids'] ? arrayToString($param['customer_ids']) : '';
|
|
|
|
|
$rdata['contacts_ids'] = $param['contacts_ids'] ? arrayToString($param['contacts_ids']) : '';
|
|
|
|
|
$rdata['business_ids'] = $param['business_ids'] ? arrayToString($param['business_ids']) : '';
|
|
|
|
|
$rdata['contract_ids'] = $param['contract_ids'] ? arrayToString($param['contract_ids']) : '';
|
|
|
|
|
|
|
|
|
|
$arr = ['customer_ids', 'contacts_ids', 'business_ids', 'contract_ids'];
|
|
|
|
|
foreach ($arr as $value) {
|
|
|
|
|
unset($param[$value]);
|
|
|
|
|
}
|
|
|
|
|
//过滤不能修改的字段
|
|
|
|
|
$unUpdateField = ['create_user_id', 'is_deleted', 'delete_time'];
|
|
|
|
|
foreach ($unUpdateField as $v) {
|
|
|
|
|
unset($param[$v]);
|
|
|
|
|
}
|
|
|
|
|
$fileArr = $param['file']; //接收表单附件
|
|
|
|
|
unset($param['file']);
|
|
|
|
|
$param['send_user_ids'] = $param['send_user_ids'] ? arrayToString($param['send_user_ids']) : '';
|
|
|
|
|
$param['send_structure_ids'] = $param['send_structure_ids'] ? arrayToString($param['send_structure_ids']) : '';
|
|
|
|
|
if(empty($param['is_relation'])){
|
|
|
|
|
$param['is_relation']=0;
|
|
|
|
|
$param['save_customer'] = 0;
|
|
|
|
|
$param['save_business'] = 0;
|
|
|
|
|
$param['save_contract'] = 0;
|
|
|
|
|
$param['save_receivables'] = 0;
|
|
|
|
|
$param['save_activity'] = 0;
|
|
|
|
|
}
|
|
|
|
|
if ($this->allowField(true)->save($param, ['log_id' => $log_id])) {
|
|
|
|
|
//操作日志
|
|
|
|
|
Db::name('AdminActionLog')->where(['action_id' => $log_id])->update(['join_user_ids' => $this->send_user_ids, 'structure_ids' => $this->send_structure_ids]);
|
|
|
|
|
// actionLog($log_id, $this->send_user_ids, $this->send_structure_ids, '修改了日志');
|
|
|
|
|
//处理附件关系
|
|
|
|
|
if ($fileArr) {
|
|
|
|
|
$fileModel = new \app\admin\model\File();
|
|
|
|
|
$resData = $fileModel->createDataById($fileArr, 'oa_log', $log_id);
|
|
|
|
|
if ($resData == false) {
|
|
|
|
|
$this->error = '附件上传失败';
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
$data = [];
|
|
|
|
|
$data['log_id'] = $log_id;
|
|
|
|
|
Db::name('OaLogRelation')->where('log_id = ' . $log_id)->update($rdata);
|
|
|
|
|
# 删除活动记录
|
|
|
|
|
Db::name('crm_activity')->where(['activity_type' => 8, 'activity_type_id' => $log_id])->delete();
|
|
|
|
|
# 添加活动记录
|
|
|
|
|
if (!empty($rdata['customer_ids']) || !empty($rdata['contacts_ids']) || !empty($rdata['business_ids']) || !empty($rdata['contract_ids'])) {
|
|
|
|
|
Db::name('crm_activity')->insert([
|
|
|
|
|
'type' => 2,
|
|
|
|
|
'activity_type' => 8,
|
|
|
|
|
'activity_type_id' => $log_id,
|
|
|
|
|
'content' => !empty($param['title']) ? $param['title'] : '日志',
|
|
|
|
|
'create_user_id' => $param['user_id'],
|
|
|
|
|
'update_time' => time(),
|
|
|
|
|
'create_time' => time(),
|
|
|
|
|
'customer_ids' => !empty($rdata['customer_ids']) ? $rdata['customer_ids'] : '',
|
|
|
|
|
'contacts_ids' => !empty($rdata['contacts_ids']) ? $rdata['contacts_ids'] : '',
|
|
|
|
|
'business_ids' => !empty($rdata['business_ids']) ? $rdata['business_ids'] : '',
|
|
|
|
|
'contract_ids' => !empty($rdata['contract_ids']) ? $rdata['contract_ids'] : ''
|
|
|
|
|
]);
|
|
|
|
|
}
|
|
|
|
|
RecordActionLog($param['user_id'], 'oa_log', 'update',$dataInfo['title'], '','','修改了日志:'.$dataInfo['title']);
|
|
|
|
|
return $data;
|
|
|
|
|
} else {
|
|
|
|
|
$this->error = '编辑失败';
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 日志数据
|
|
|
|
|
* @param $id 日志ID
|
|
|
|
|
* @return
|
|
|
|
|
*/
|
|
|
|
|
public function getDataById($id = '')
|
|
|
|
|
{
|
|
|
|
|
$fileModel = new \app\admin\model\File();
|
|
|
|
|
$userModel = new \app\admin\model\User();
|
|
|
|
|
$structureModel = new \app\admin\model\Structure();
|
|
|
|
|
$commonModel = new \app\admin\model\Comment();
|
|
|
|
|
|
|
|
|
|
$map['log.log_id'] = $id;
|
|
|
|
|
$data_view = db('oa_log')
|
|
|
|
|
->where($map)
|
|
|
|
|
->alias('log')
|
|
|
|
|
->join('__ADMIN_USER__ user', 'user.id = log.create_user_id', 'LEFT');
|
|
|
|
|
$dataInfo = $data_view->field('log.*,user.realname,user.thumb_img')->find();
|
|
|
|
|
if (!$dataInfo) {
|
|
|
|
|
$this->error = '暂无此数据';
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$relation = Db::name('OaLogRelation')->where('log_id =' . $id)->find();
|
|
|
|
|
$BusinessModel = new \app\crm\model\Business(); //商机
|
|
|
|
|
$dataInfo['businessList'] = $relation['business_ids'] ? $BusinessModel->getDataByStr($relation['business_ids']) : [];
|
|
|
|
|
$ContactsModel = new \app\crm\model\Contacts();//联系人
|
|
|
|
|
$dataInfo['contactsList'] = $relation['contacts_ids'] ? $ContactsModel->getDataByStr($relation['contacts_ids']) : [];
|
|
|
|
|
$ContractModel = new \app\crm\model\Contract();//合同
|
|
|
|
|
$dataInfo['contractList'] = $relation['contract_ids'] ? $ContractModel->getDataByStr($relation['contract_ids']) : [];
|
|
|
|
|
$CustomerModel = new \app\crm\model\Customer();//客户
|
|
|
|
|
$dataInfo['customerList'] = $relation['customer_ids'] ? $CustomerModel->getDataByStr($relation['customer_ids']) : [];
|
|
|
|
|
|
|
|
|
|
$dataInfo['create_user_info']['realname'] = $dataInfo['realname'] ?: '';
|
|
|
|
|
$dataInfo['create_user_info']['id'] = $dataInfo['create_user_id'] ?: '';
|
|
|
|
|
$dataInfo['create_user_info']['thumb_img'] = $dataInfo['thumb_img'] ? getFullPath($dataInfo['thumb_img']) : '';
|
|
|
|
|
//附件、图片
|
|
|
|
|
$where['module'] = 'oa_log';
|
|
|
|
|
$where['module_id'] = $id;
|
|
|
|
|
$newFileList = $fileModel->getDataList($where);
|
|
|
|
|
foreach ($newFileList['list'] as $val) {
|
|
|
|
|
if ($val['types'] == 'file') {
|
|
|
|
|
$fileList[] = $val;
|
|
|
|
|
} else {
|
|
|
|
|
$imgList[] = $val;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
$dataInfo['fileList'] = $fileList ?: [];
|
|
|
|
|
$dataInfo['imgList'] = $imgList ?: [];
|
|
|
|
|
$dataInfo['sendUserList'] = $userModel->getDataByStr($dataInfo['send_user_ids']) ?: [];
|
|
|
|
|
$dataInfo['sendStructList'] = $structureModel->getDataByStr($dataInfo['send_structure_ids']) ?: [];
|
|
|
|
|
$param['type_id'] = $id;
|
|
|
|
|
$param['type'] = 'oa_log';
|
|
|
|
|
$dataInfo['replyList'] = $commonModel->read($param);
|
|
|
|
|
return $dataInfo;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 日志删除
|
|
|
|
|
*
|
|
|
|
|
* @param string $param
|
|
|
|
|
* @return bool
|
|
|
|
|
* @throws \think\Exception
|
|
|
|
|
* @throws \think\exception\DbException
|
|
|
|
|
* @throws \think\exception\PDOException
|
|
|
|
|
*/
|
|
|
|
|
public function delDataById($param)
|
|
|
|
|
{
|
|
|
|
|
$map['log_id'] = $param['log_id'];
|
|
|
|
|
$dataInfo = $this->get($map['log_id']);
|
|
|
|
|
if (!$dataInfo) {
|
|
|
|
|
$this->error = '数据不存在或已删除';
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
$flag = Db::name('OaLog')->where($map)->delete();
|
|
|
|
|
if ($flag) {
|
|
|
|
|
$fileModel = new \app\admin\model\File();
|
|
|
|
|
$commentModel = new \app\admin\model\Comment();
|
|
|
|
|
//删除关联附件
|
|
|
|
|
$fileModel->delRFileByModule('oa_log', $param['log_id']);
|
|
|
|
|
//删除相关评论
|
|
|
|
|
$commentModel->delDataById(['type' => 'oa_log', 'type_id' => $param['log_id']]);
|
|
|
|
|
RecordActionLog($param['user_id'], 'oa_log', 'delete', $dataInfo['title'], '', '', '删除了日志:' . $dataInfo['title']);
|
|
|
|
|
# 删除活动记录
|
|
|
|
|
Db::name('crm_activity')->where(['activity_type' => 8, 'activity_type_id' => $param['log_id']])->delete();
|
|
|
|
|
return true;
|
|
|
|
|
} else {
|
|
|
|
|
$this->error = '操作失败';
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 点赞数据
|
|
|
|
|
* @param string $log_id 日志id
|
|
|
|
|
*
|
|
|
|
|
* @author alvin guogaobo
|
|
|
|
|
* @version 1.0 版本号
|
|
|
|
|
* @since 2021/5/18 0018 09:29
|
|
|
|
|
*/
|
|
|
|
|
public function favourList($log_id=''){
|
|
|
|
|
$list= db('oa_log_favour')
|
|
|
|
|
->alias('favour')
|
|
|
|
|
->join('__ADMIN_USER__ user','user.id=favour.user_id','LEFT')
|
|
|
|
|
->where(['favour.log_id'=>$log_id,'favour.status'=>1])
|
|
|
|
|
->field('user.id,user.realname,user.img,favour.status')
|
|
|
|
|
->select();
|
|
|
|
|
return $list?:[];
|
|
|
|
|
}
|
|
|
|
|
}
|