fmtRequest( $request ); $map = $request['map'] ? : []; $order = 'update_time desc'; //排序 $list = $this ->where($map) ->page($request['page'], $request['limit']) ->order($order) ->select(); foreach ($list as $k=>$v) { $list[$k]['user_ids_info'] = $userModel->getListByStr($v['user_ids']); $list[$k]['structure_ids_info'] = $structureModel->getListByStr($v['structure_ids']); } $dataCount = $this->where($map)->count('id'); $data = []; $data['list'] = $list; $data['dataCount'] = $dataCount ? : 0; return $data; } /** * 保存/编辑相关信息 todo 创建和编辑走一个接口,前端非要这么搞 * * @param array $param * @return array|bool * @throws \think\db\exception\DataNotFoundException * @throws \think\db\exception\ModelNotFoundException * @throws \think\exception\DbException */ public function createData($param) { $id = !empty($param['id']) ? $param['id'] : 0; if ($param['value'] <= 0) { $this->error = '数量上限必须大于0'; return false; } # 验证重复 if ($this->checkRepeat($param['types'], $param['user_ids'], $param['structure_ids'], $id)) { $this->error = '有员工或部门包含在其他的规则里!'; return false; } $param['types'] = !empty($param['types']) ? $param['types'] : 1; # 1拥有客户上限2锁定客户上限 $param['user_ids'] = !empty($param['user_ids']) ? arrayToString($param['user_ids']) : ''; # 处理user_id $param['structure_ids'] = !empty($param['structure_ids']) ? arrayToString($param['structure_ids']) : ''; # 处理structure_id if ($this->allowField(true)->isUpdate(empty($id) ? false : true)->save($param, !empty($id) ? ['id' => $id] : [])) { $data['id'] = $this->id; return $data; } else { $this->error = '创建失败'; return false; } } /** * 编辑相关信息 * * @param $param * @param string $id * @return array|bool */ public function updateDataById($param, $id = '') { if (!$id) { $this->error = '参数错误'; return false; } if ($param['value'] <= 0) { $this->error = '数量上限必须大于0'; return false; } unset($param['id']); $param['user_ids'] = is_array($param['user_ids']) ? arrayToString($param['user_ids']) : $param['user_ids']; //处理user_id $param['structure_ids'] = is_array($param['structure_ids']) ? arrayToString($param['structure_ids']) : ''; //处理structure_id if ($this->allowField(true)->isUpdate(true)->save($param, ['id' => $id])) { $data['id'] = $id; return $data; } else { $this->error = '编辑失败'; return false; } } /** * 相关信息数据 * * @param string $id * @return Common|array|bool|\PDOStatement|string|\think\Model|null * @throws \think\db\exception\DataNotFoundException * @throws \think\db\exception\ModelNotFoundException * @throws \think\exception\DbException */ public function getDataById($id = '') { $map['id'] = $id; $dataInfo = $this->where($map)->find(); return $dataInfo ? : []; } /** * 验证相关信息 * * @param $user_id * @param $types * @param string $is_update * @return bool * @throws \think\db\exception\DataNotFoundException * @throws \think\db\exception\ModelNotFoundException * @throws \think\exception\DbException */ public function checkData($user_id, $types, $is_update = '') { $userModel = new \app\admin\model\User(); $customerModel = new \app\crm\model\Customer(); $userInfo = $userModel->getUserById($user_id); $dataInfo = $this->where(['types' => $types,'user_ids' => ['like','%,'.$user_id.',%']])->order('update_time desc')->find(); if (!$dataInfo) { $dataInfo = $this->where(['types' => $types,'structure_ids' => ['like','%,'.$userInfo['structure_id'].',%']])->find(); } switch ($types) { case '1' : $types_title = '拥有的客户数量'; break; case '2' : $types_title = '锁定的客户数量'; break; } if ($dataInfo) { $is_deal = $dataInfo['is_deal'] ? : 0; if (!$dataInfo['value']) { $this->error = $types_title.'超出限制:'.$dataInfo['value'].'个'; return false; } //拥有数、锁定数 $count = $customerModel->getCountByHave($user_id,$is_deal,$types); $error = false; if ($count >= $dataInfo['value']) { $error = true; } if ($is_update == 1 && $types == 1 && $dataInfo['is_deal'] == 1) { //更改成交状态 if ($count = $dataInfo['value']) { $error = false; } } if ($error == true) { $this->error = $userInfo['realname'].','.$types_title.'超出限制:'.$dataInfo['value'].'个'; return false; } } return true; } /** * 验证拥有/锁定客户数中的员工或部门是否重复添加 * * @param $types * @param $users * @param $structures * @param $id * @return bool * @throws \think\db\exception\DataNotFoundException * @throws \think\db\exception\ModelNotFoundException * @throws \think\exception\DbException */ private function checkRepeat($types, $users, $structures, $id) { $userArray = []; $structureArray = []; $where['types'] = $types; if (!empty($id)) $where['id'] = ['neq', $id]; $data = db('crm_customer_config')->field(['user_ids', 'structure_ids'])->where($where)->select(); foreach ($data AS $key => $value) { if (!empty($value['user_ids'])) { $userArray = array_merge($userArray, explode(',', trim($value['user_ids'], ','))); } if (!empty($value['structure_ids'])) { $structureArray = array_merge($structureArray, explode(',', trim($value['structure_ids'], ','))); } } if (array_intersect($users, $userArray) || array_intersect($structures, $structureArray)) { return true; } return false; } }