| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189 |
- <?php
- // +----------------------------------------------------------------------
- // | Description: CRM相关设置
- // +----------------------------------------------------------------------
- // | Author: Michael_xu | gengxiaoxu@5kcrm.com
- // +----------------------------------------------------------------------
- namespace app\crm\model;
-
- use app\admin\controller\ApiCommon;
- use think\Db;
- use app\admin\model\Common;
- use think\Exception;
-
- class Setting extends Common
- {
- /**
- * 为了数据库的整洁,同时又不影响Model和Controller的名称
- * 我们约定每个模块的数据表都加上相同的前缀,比如CRM模块用crm作为数据表前缀
- */
-
- /**
- * 团队成员
- * @author Michael_xu
- * @param types 类型
- * @param types_id 类型ID数组
- * @param type 权限 1只读2读写
- * @param user_id [array] 协作人
- * @param is_del 1 移除操作
- * @return
- */
- public function createTeamData($param)
- {
- if (!is_array($param['user_id'])) {
- $param['user_id'] = [intval($param['user_id'])];
- }
- if (!is_array($param['types_id'])) {
- $param['types_id'] = [intval($param['types_id'])];
- }
- $res = teamUserId($param['types'], $param['types_id'], $param['type'], $param['user_id'], $param['is_del'], $param['owner_user_id']);
- if ($res == '1') {
- //同时关联其他模块(仅限客户模块)
- if (is_array($param['module']) && $param['types'] == 'crm_customer') {
- foreach ($param['module'] as $v) {
- $where = [];
- $where['customer_id'] = array('in',$param['types_id']);
- // $where['owner_user_id'] = $param['owner_user_id'];
- $moduleList = db($v)->where($where)->select();
- switch ($v) {
- case 'crm_contacts' : $module_id = 'contacts_id'; break;
- case 'crm_business' : $module_id = 'business_id'; break;
- case 'crm_contract' : $module_id = 'contract_id'; break;
- }
- foreach ($moduleList as $val) {
- teamUserId($v, $val[$module_id], $param['type'], $param['user_id'], $param['is_del'], $param['owner_user_id'], 0);
- }
- }
- }
- return true;
- } else {
- return $res;
- }
- }
-
- /**
- * 设置回访提醒
- *
- * @param $status
- * @param $day
- * @return bool
- * @throws \think\Exception
- * @throws \think\exception\PDOException
- */
- public function setVisitDay($status, $day)
- {
- $status = intval($status);
- $day = intval($day);
-
- # 是否开启回访提醒
- if (Db::name('crm_config')->where('name', 'visit_config')->value('id')) {
- Db::name('crm_config')->where('name', 'visit_config')->update(['value' => $status]);
- } else {
- Db::name('crm_config')->insert([
- 'name' => 'visit_config',
- 'value' => $status,
- 'description' => '是否开启回访提醒:1开启;0不开启'
- ]);
- }
-
- # 客户回访提醒天数
- if (!empty($day)) {
- if (Db::name('crm_config')->where('name', 'visit_day')->value('id')) {
- Db::name('crm_config')->where('name', 'visit_day')->update(['value' => $day]);
- } else {
- Db::name('crm_config')->insert([
- 'name' => 'visit_day',
- 'value' => $day,
- 'description' => '客户回访提醒天数'
- ]);
- }
- }
- # 系统操作日志
- $user=new ApiCommon();
- $userInfo=$user->userInfo;
- SystemActionLog($userInfo['id'], 'crm_config','customer', 1, 'update','客户回访提醒' , '', '','设置了客户回访提醒');
- return true;
- }
-
- /**
- * 获取回访提醒
- *
- * @return array
- */
- public function getVisitDay()
- {
- $status = Db::name('crm_config')->where('name', 'visit_config')->value('value');
- $day = Db::name('crm_config')->where('name', 'visit_day')->value('value');
-
- return ['status' => !empty($status) ? 1 : 0, 'day' => !empty($day) ? intval($day) : 0];
- }
-
- /**
- * 设置自动编号
- *
- * @param $param
- * @return bool
- */
- public function setNumber($param)
- {
- $apiCommon = new ApiCommon();
-
- Db::startTrans();
- try {
- foreach ($param AS $key => $value) {
- # 前端传来的status值为1代表启用,后端保存的status值为0代表启用,这里执行以下取反操作;
- $status = $value['status'] == 1 ? 0 : 1;
- $sort = 0;
-
- # 删除未提交过来的数据,先查出某一类型的全部ID数据
- $sequenceIds = Db::name('crm_number_sequence')->where('number_type', $value['number_type'])->column('number_sequence_id');
- # 记录提交的ID,用于删除,没有提交过来的就是要删除的
- $updateIds = [];
- foreach ($value['setting'] AS $k => $v) {
- $v['status'] = $status;
- if (!empty($v['sort'])) $sort = $v['sort'];
-
- # 编辑
- if (!empty($v['number_sequence_id'])) {
- $updateIds[] = $v['number_sequence_id'];
- Db::name('crm_number_sequence')->update($v);
- }
- # 新增
- if (empty($v['number_sequence_id'])) {
- $increaseNumber = !empty($v['increase_number']) ? $v['increase_number'] : 1;
- $reset = !empty($v['reset']) ? $v['reset'] : 0;
-
- $insertData =[
- 'sort' => $sort + 1,
- 'type' => $v['type'],
- 'value' => $v['value'],
- 'increase_number' => $v['type'] == 3 ? $increaseNumber : null,
- 'reset' => $v['type'] == 3 ? $reset : null,
- 'create_time' => time(),
- 'create_user_id' => $apiCommon->userInfo['id'],
- 'status' => $v['status'],
- 'number_type' => $value['number_type']
- ];
-
- Db::name('crm_number_sequence')->insert($insertData);
- }
- }
-
- # 删除
- $sequenceIds = array_diff($sequenceIds, $updateIds);
- if (!empty($sequenceIds)) Db::name('crm_number_sequence')->whereIn('number_sequence_id', $sequenceIds)->delete();
- }
-
- Db::commit();
- # 系统操作日志
- $user=new ApiCommon();
- $userInfo=$user->userInfo;
- SystemActionLog($userInfo['id'], 'crm_number_sequence','customer', 1, 'update','编号规则设置' , '', '','设置了编号规则');
- return true;
- } catch (Exception $e) {
- Db::rollback();
-
- return false;
- }
- }
- }
|