dicGroupModel = new dicGroupModel; $this->dicModel = new dicModel; } /** * @title: 统一创建查询条件 * @desc: * @param {*} * @return {*} * @Author: Rock * @Date: 2021-12-04 10:58:55 * @LastEditTime: Do not edit */ private function createWhere() { $data = $this->request->param(); $where = []; if (!empty($data['type'])) { if ($data['type'] == 'GOODTYPE') { // 货物分类 $group_codes = $this->dicGroupModel->where('pid', 1)->column('group_code'); $where[] = ['group_code', 'IN', $group_codes]; } elseif ($data['type'] == 'CARTYPE') { // 车辆分类 $where[] = ['group_code', '=', 'CARTYPE']; } elseif ($data['type'] == 'INDUSTRY') { $group_codes = $this->dicGroupModel->where('pid', 12)->column('group_code'); $where[] = ['group_code', 'IN', $group_codes]; } elseif ($data['type'] == 'OPERATE') { $where[] = ['group_code', '=', 'OPERATE']; } } if (!empty($data['group_id'])) { $groupInfo = $this->dicGroupModel->where('group_id', $data['group_id'])->find(); $where[] = ['group_code', '=', $groupInfo->group_code]; } if (!empty($data['group_code'])) { $where[] = ['group_code', '=', $data['group_code']]; } if (!empty($data['status'])) { $where[] = ['status', '=', $data['status']]; } if (!empty($data['keyword'])) { $keyword = $data['keyword']; $where[] = ['title|code', 'LIKE', "%$keyword%"]; } return $where; } /** * @title: 获取字典列表 * @desc: * @param {int} {pageNo} {0} {页码,页码为0时不分页返回全部} * @param {int} {pageSize} {10} {每页数量} * @param {int} {group_id} {} {分组ID} * @param {int} {status} {} {字典状态} * @param {int} {group_code} {} {分组编码} * @return {*} * @Author: Rock * @Date: 2021-12-04 10:16:04 * @LastEditTime: Do not edit */ public function getList($pageNo = 0, $pageSize = 10) { $where = $this->createWhere(); if ($pageNo) { $list = $this->dicModel->where($where)->order('sort')->paginate(['page' => $pageNo, 'list_rows' => $pageSize]); return pageRes(1, "获取成功", $list->total(), $list->items()); } else { $list = $this->dicModel->where($where)->select(); return res(1, "获取成功", $list); } } /** * @title: 新增/编辑字典 * @desc: * @param {*} * @return {*} * @Author: Rock * @Date: 2021-12-04 10:52:22 * @LastEditTime: Do not edit */ public function doEdit() { $data = $this->request->param(); if (!empty($data['dic_id'])) { $res = $this->dicModel->replace()->save($data); } else { $res = dicModel::createDic($data); } // 更新缓存内容 $group_code = $data['group_code']; $list = dicModel::where('group_code', $group_code)->where('status', 1)->select()->toArray(); $list = array_column($list, 'title', 'code'); cache($group_code, $list, 86400); slog(1, "编辑了字典" . $data['title'], $data); return res(1, "保存成功", $res); } /** * @title: 删除字典 * @desc: * @param {int} {dic_id} {必填} {分组ID} * @return {*} * @Author: Rock * @Date: 2021-12-04 10:52:53 * @LastEditTime: Do not edit */ public function doDelete($dic_id) { $where = []; $where[] = ['dic_id', '=', $dic_id]; $info = $this->dicModel->where($where)->find(); try { dicModel::startTrans(); dicModel::where($where)->delete(); dicModel::commit(); // 更新缓存内容 $group_code = $info->group_code; $list = dicModel::where('group_code', $group_code)->where('status', 1)->select()->toArray(); $list = array_column($list, 'title', 'code'); cache($group_code, $list, 86400); slog(1, "删除了字典" . $info->title); return res(1, "删除成功"); } catch (\Exception $e) { dicModel::rollback(); slog(2, "删除了字典" . $info->title); return res(2, "删除失败"); } } /** * @title: 改变字典状态 * @desc: * @param {string/array} {ids} {必填} {字典IDS,以字符串传递时用','隔开} * @return {*} * @Author: Rock * @Date: 2021-12-04 11:11:19 * @LastEditTime: Do not edit */ public function changeStatus($ids) { $where = []; if (is_string($ids)) { $ids = explode(',', $ids); } elseif (is_int($ids)) { $ids = [$ids]; } $where[] = ['dic_id', 'IN', $ids]; $this->dicModel->where($where)->update(['status' => Db::raw('ABS(3 * `status` - 5)')]); // 更新缓存内容 $codeList = dicModel::where($where)->column('group_code'); foreach ($codeList as $group_code) { $list = dicModel::where('group_code', $group_code)->where('status', 1)->select()->toArray(); $list = array_column($list, 'title', 'code'); cache($group_code, $list, 86400); } slog(1, "变更了字典状态"); return res(1, "操作成功"); } /** * Desc :获取字典 * User : zwq * Date : 2025-02-05 09:26 */ public function getDic() { $group_code = input('group_code/s', ""); $list = dicModel::where('group_code', $group_code) ->where('status', 1) ->order('sort') ->select(); return res(1, "获取成功", $list ?? []); } }