where(['type_id' => $type_id])->whereOr(['type_id' => 0])->select(); } else { $list = $this->where(['type_id' => $type_id])->select(); } return $list ? : []; } /** * [getTypeList 商机组list] * @author Michael_xu * @param [string] $map [查询条件] * @param [number] $page [当前页数] * @param [number] $limit [每页数量] * @return [array] [description] */ public function getTypeList($request) { # H5不传page和limit(查全部),商机组不会有太多,把limit设置大一些就行。 if (empty($request['limit'])) $request['limit'] = 100; if (empty($request['page'])) $request['page'] = 1; $userModel = new \app\admin\model\User(); $structureModel = new \app\admin\model\Structure(); $request = $this->fmtRequest( $request ); $map = $request['map'] ? : []; if (isset($map['search']) && $map['search']) { //普通筛选 $map['name'] = ['like', '%'.$map['search'].'%']; } $map['is_display'] = ['eq', 1]; unset($map['search']); $list = db('crm_business_type') ->where($map) ->page($request['page'], $request['limit']) ->select(); $dataCount = db('crm_business_type')->where($map)->count('type_id'); foreach ($list as $k=>$v) { $list[$k]['create_user_id_info'] = $userModel->getUserById($v['create_user_id']); $list[$k]['structure_id_info'] = $structureModel->getListByStr($v['structure_id']) ? : []; $list[$k]['create_time'] = !empty($v['create_time']) ? date('Y-m-d H:i:s', $v['create_time']) : null; $list[$k]['update_time'] = !empty($v['update_time']) ? date('Y-m-d H:i:s', $v['update_time']) : null; $list[$k]['status_list'] = db('crm_business_status')->where('type_id', $v['type_id'])->order('order_id', 'asc')->select(); } $data = []; $data['list'] = $list; $data['dataCount'] = $dataCount ? : 0; return $data; } /** * 创建商机组 * @author Michael_xu * @param * @return */ public function createData($param) { if (!$param['name']) { $this->error = '请填写商机组名称'; return false; } if (!$param['status']) { $this->error = '请至少配置一个商机阶段'; return false; } $data = []; $data['name'] = $param['name']; $data['update_time'] = time(); $data['create_time'] = time(); $data['create_user_id'] = $param['create_user_id']; $data['structure_id'] = arrayToString($param['structure_id']); if ($type_id = db('crm_business_type')->insertGetId($data)) { $statusData = []; $i = 1; foreach ($param['status'] as $k=>$v) { //$v = json_decode($v,true); $statusData[$k]['name'] = $v['name']; $statusData[$k]['rate'] = $v['rate']; $statusData[$k]['type_id'] = $type_id; $statusData[$k]['order_id'] = $i; if (empty($v['name']) && empty($v['rate'])) { unset($statusData[$k]); } else { $i++; } } db('crm_business_status')->insertAll($statusData); return true; } else { $this->error = '添加失败'; return false; } } /** * 编辑商机组信息 * @author Michael_xu * @param type_id 商机组类型ID * @return */ public function updateDataById($param, $type_id = '') { $dataInfo = db('crm_business_type')->where(['type_id' => $type_id])->find(); if (!$dataInfo) { $this->error = '数据不存在或已删除'; return false; } //过滤不能修改的字段 $unUpdateField = ['create_user_id']; foreach ($unUpdateField as $v) { unset($param[$v]); } if (!$param['name']) { $this->error = '请填写商机组名称'; return false; } if (!$param['status']) { $this->error = '请至少配置一个商机阶段'; return false; } $data = []; $data['name'] = $param['name']; $data['structure_id'] = arrayToString($param['structure_id']); $newIds = []; //编辑ID $statusData = []; $resData = true; // 启动事务 Db::startTrans(); try { db('crm_business_type')->where(['type_id' => $type_id])->update($data); $i = 1; foreach ($param['status'] as $k=>$v) { $statusData[$k]['name'] = $v['name']; $statusData[$k]['rate'] = $v['rate']; $statusData[$k]['type_id'] = $type_id; $statusData[$k]['order_id'] = $i; if ($v['status_id']) { //编辑 $newIds[] = $v['status_id']; $statusData[$k]['status_id'] = $v['status_id']; $this->isUpdate()->saveAll($statusData); unset($statusData[$k]); } if (empty($v['name']) && empty($v['rate'])) { unset($statusData[$k]); } else { $i++; } } //删除 $oldIds = $this->where(['type_id' => $type_id])->column('status_id'); //原ID $delIds = array_diff($oldIds, $newIds); //数组差集 if ($delIds) { db('crm_business_status')->where(['status_id' => ['in',$delIds]])->delete(); } //新增 db('crm_business_status')->insertAll($statusData); // 提交事务 Db::commit(); return true; } catch (\Exception $e) { $this->error = '编辑失败'; // 回滚事务 Db::rollback(); return false; } } /** * 商机组数据 * @param $status_id 商机组ID * @return */ public function getDataById($type_id = '') { if (!$data = db('crm_business_type')->where(['type_id' => $type_id])->find()) { $this->error = '数据不存在或已删除'; return false; } $status = $this->getDataList($type_id); $data['structure_id'] = !empty($data['structure_id']) ? stringToArray($data['structure_id']) : []; $data['status'] = $status ? : []; return $data; } /** * [delDataById 根据id删除数据] * @param string $id [主键] * @param boolean $delSon [是否删除子孙数据] * @return [type] [description] */ public function delDataById($id = '', $delSon = false) { if (!$id) { $this->error = '删除失败'; return false; } //状态组已被使用,则不能删除 $resDel = true; // if (db('crm_business')->where(['type_id' => $id])->find()) { // $this->error = '状态组已被使用,不能删除'; // return false; // } //启动事务 Db::startTrans(); try { db('crm_business_type')->where(['type_id' => $id])->update(['is_display' => 0]); // db('crm_business_type')->where(['type_id' => $id])->delete(); // db('crm_business_status')->where(['type_id' => $id])->delete(); // 提交事务 Db::commit(); return true; } catch(\Exception $e) { $this->error = '删除失败'; // 回滚事务 Db::rollback(); return false; } } }