123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203 |
- <?php
- namespace app\admin\controller\base\dic;
- /**
- * @title : 字典控制器
- * @desc :
- * @Author : Rock
- * @Date : 2021-12-04 10:12:21
- * @LastEditTime: 2023-03-11 14:06:11
- */
- use think\facade\Db;
- use app\admin\controller\Base;
- use app\common\model\base\dic\DicGroup as dicGroupModel;
- use app\common\model\base\dic\Dic as dicModel;
- class Dic extends Base
- {
- protected $dicGroupModel;
- protected $dicModel;
- protected $noNeedAuth = ['getList','getDic'];
- protected $noNeedLogin = ['getDic'];
- public function initialize()
- {
- parent::initialize();
- $this->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 ?? []);
- }
- }
|