You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

188 lines
5.9 KiB

<?php
namespace app\crm\controller;
use app\admin\controller\ApiCommon;
use app\crm\model\NumberSequence;
use app\crm\traits\AutoNumberTrait;
use app\crm\logic\VisitLogic;
use think\Hook;
use think\Request;
use app\admin\model\User;
use think\Db;
class Visit extends ApiCommon
{
use AutoNumberTrait;
/**
* 用于判断权限
* @permission 无限制
* @allow 登录用户可访问
* @other 其他根据系统设置
**/
public function _initialize()
{
$action = [
'permission' => [''],
'allow' => ['count']
];
Hook::listen('check_auth', $action);
$request = Request::instance();
$a = strtolower($request->action());
if (!in_array($a, $action['permission'])) {
parent::_initialize();
}
}
public function visitUser(){
$userInfo = $this->userInfo;
$userModel=new User();
$userInfo= $userModel->getUserById($userInfo['id']);
return resultArray(['data' => $userInfo]);
}
/**
* 回访列表
*/
public function index()
{
$Visit = new VisitLogic;
$param = $this->param;
$userInfo = $this->userInfo;
$param['user_id'] = $param['user_id']?:$userInfo['id'];
$data = $Visit->getDataList($param);
return resultArray(['data' => $data]);
}
/**
* 创建回访单
*/
public function save()
{
$Visit = new VisitLogic;
$param = $this->param;
$userInfo = $this->userInfo;
# 设置回复编号
$numberInfo = [];
if (empty($param['number'])) {
$numberInfo = $this->getAutoNumbers(3);
if (empty($numberInfo['number'])) return resultArray(['error' => '请填写回访编号!']);
$param['number'] = $numberInfo['number'];
}
$param['owner_user_id'] = $param['owner_user_id'] ? : $userInfo['id'];
$param['create_user_id'] = $userInfo['id'];
$param['create_time'] = time();
$param['update_time'] = time();
$res = $Visit->createData($param);
if ($res) {
# 更新crm_number_sequence表中的last_date、create_time字段
if (!empty($numberInfo['data'])) (new NumberSequence())->batchUpdate($numberInfo['data']);
return resultArray(['data' => '添加成功']);
} else {
return resultArray(['error' => $Visit->getError()]);
}
}
/**
* 回访单详情
*/
public function read()
{
$visit = new VisitLogic;
$userModel = new \app\admin\model\User();
$param = $this->param;
$userInfo = $this->userInfo;
$data = $visit->getDataById($param['id'], $userInfo['id']);
//判断权限
$auth_user_ids = $userModel->getUserByPer('crm', 'visit', 'read');
//读权限
$roPre = $userModel->rwPre($userInfo['id'], $data['ro_user_id'], $data['rw_user_id'], 'read');
$rwPre = $userModel->rwPre($userInfo['id'], $data['ro_user_id'], $data['rw_user_id'], 'update');
if (!in_array($data['owner_user_id'], $auth_user_ids) && !$rwPre && !$roPre) {
$authData['dataAuth'] = (int)0;
return resultArray(['data' => $authData]);
}
if (!$data) {
return resultArray(['error' => $visit->getError()]);
}
return resultArray(['data' => $data]);
}
/**
* 编辑回访单
*/
public function update()
{
$Visit = new VisitLogic;
$userModel = new \app\admin\model\User();
$param = $this->param;
$userInfo = $this->userInfo;
$param['user_id'] = $userInfo['id'];
$param['owner_user_id'] = $param['owner_user_id'] ? : $userInfo['id'];
# 设置回访编号
$numberInfo = [];
if (empty($param['number'])) {
$numberInfo = $this->getAutoNumbers(3);
if (empty($numberInfo['number'])) return resultArray(['error' => '请填写回访编号!']);
$param['number'] = $numberInfo['number'];
}
//判断权限
$data = $Visit->getDataById($param['id']);
$auth_user_ids = $userModel->getUserByPer('crm', 'visit', 'update');
$param['update_time'] = time();
if ($Visit->updateDataById($param, $param['id'])) {
# 更新crm_number_sequence表中的last_date、create_time字段
if (!empty($numberInfo['data'])) (new NumberSequence())->batchUpdate($numberInfo['data']);
return resultArray(['data' => '编辑成功']);
} else {
return resultArray(['error' => $Visit->getError()]);
}
}
/**
* 删除回访单
*/
public function delete()
{
$Visit = new VisitLogic;
$param = $this->param;
$userInfo = $this->userInfo;
if (!is_array($param['id'])) {
$visit_id[] = $param['id'];
} else {
$visit_id = $param['id'];
}
$data = $Visit->del($visit_id);
if ($data) {
return resultArray(['error' => $data]);
} else {
return resultArray(['data' => '删除成功']);
}
}
/**
* 系统信息
*
*/
public function system(VisitLogic $visitLogic)
{
if (empty($this->param['id'])) return resultArray(['error' => '参数错误!']);
$data = $visitLogic->getSystemInfo($this->param['id']);
return resultArray(['data' => $data]);
}
/**
* table标签栏数量
*/
public function count()
{
if (empty($this->param['visit_id'])) return resultArray(['error' => '参数错误!']);
# 附件
$fileCount = Db::name('crm_visit_file')->alias('visit')->join('__ADMIN_FILE__ file', 'file.file_id = visit.file_id', 'LEFT')->where('visit_id', $this->param['visit_id'])->count();
return resultArray(['data' => ['fielCount' => $fileCount]]);
}
}