param(); $con = Tool::getOptionalQuery( ['cmc.code_module_category_name', 'LIKE'], ['cmc.code_module_category_ps', 'LIKE'], ['cmc.code_module_category_library_type', '='], ['cust.customer_name|cust.customer_account', 'LIKE', 'customer'], ['cmc.code_module_category_audit', '='], ); if (isset($params['code_module_category_global_mode']) && $params['code_module_category_global_mode']) { $con[] = ['cmc.code_module_category_global_mode', 'REGEXP', implode('|', $params['code_module_category_global_mode'])]; } $tree_data = []; //只针对主级类目进行的分页处理 $query = ModelCodeModuleCategory::alias('cmc')->leftjoin('customer cust', 'cmc.customer_guid = cust.customer_guid') ->scope('master')->where($con); $module_category_guids = self::pageWrapper($query)->column('code_module_category_guid'); if ($module_category_guids) { //分页后的主级类目开始构建树形结构(此时才会获取到各个父级类目所包含的子级类目) $data = ModelCodeModuleCategory::alias('cmc') ->whereOr([ ['cmc.code_module_category_guid', 'in', $module_category_guids], ['cmc.code_module_category_parent_guid', 'in', $module_category_guids], ])->field([ 'cmc.code_module_category_id', 'cmc.code_module_category_guid', 'cmc.customer_guid', 'cmc.code_module_category_audit', 'cmc.code_module_category_sort', 'cmc.code_module_category_parent_guid', 'cmc.code_module_category_name', 'cmc.code_module_category_audit', 'cmc.code_module_category_global_mode', 'cmc.code_module_category_library_type', 'cmc.code_module_category_ps', 'cmcp.code_module_category_name' => "code_module_category_parent_name", 'cust.customer_name', ]) ->leftjoin('code_module_category cmcp', 'cmc.code_module_category_parent_guid = cmcp.code_module_category_guid') ->leftjoin('customer cust', 'cmc.customer_guid = cust.customer_guid') ->order('code_module_category_sort') ->select() ->toArray(); $Traverse = new Traverse('code_module_category_guid', 'code_module_category_parent_guid'); $tree_data = $Traverse->tree($data, ModelCodeModuleCategory::MASTER_DEFAULT, function ($v) { return [ 'code_module_category_name' => $v['code_module_category_name'], 'code_module_category_parent_name' => $v['code_module_category_parent_name'], 'code_module_category_guid' => $v['code_module_category_guid'], 'code_module_category_parent_guid' => $v['code_module_category_parent_guid'], 'code_module_category_sort' => $v['code_module_category_sort'], 'code_module_category_ps' => $v['code_module_category_ps'], 'code_module_category_global_mode' => $v['code_module_category_global_mode'], 'code_module_category_audit' => $v['code_module_category_audit'], 'code_module_category_library_type' => $v['code_module_category_library_type'], 'customer_guid' => $v['customer_guid'], 'customer_name' => $v['customer_name'], ]; }); } return msg(0, "获取代码块类目列表成功!", [ 'count' => $query->count(), 'data' => $tree_data, ]); } /** * 添加代码块类目接口 * * @param Request $request * @return array * @date 2023-06-28 * @author xjh * @since 1.0.0 */ public function addCodeModuleCategory(Request $request): array { $params = $request->param(); $this->validate($params, [ 'code_module_category_name|类目名' => 'require', 'code_module_category_ps|补充' => 'require', 'code_module_category_sort|排序' => 'require', 'code_module_category_global_mode|全局模式' => 'require', 'code_module_category_library_type|库类型' => 'require', ]); ModelCodeModuleCategory::create($params, [ 'code_module_category_name', 'code_module_category_ps', 'code_module_category_parent_guid', 'code_module_category_sort', 'code_module_category_global_mode', 'code_module_category_library_type', 'customer_guid', 'code_module_category_audit', 'code_module_category_guid', 'code_module_category_create_user_guid', 'code_module_category_update_user_guid' ]); return msg('添加成功!'); } /** * 编辑代码块类目接口 * * @param Request $request * @return array * @date 2023-06-28 * @author xjh * @since 1.0.0 */ public function editCodeModuleCategory(Request $request): array { $params = $request->param(); $this->validate($params, [ 'code_module_category_name|类目名' => 'require', 'code_module_category_ps|补充' => 'require', 'code_module_category_parent_guid|父级guid' => 'require', 'code_module_category_sort|排序' => 'require', 'code_module_category_global_mode|全局模式' => 'require', 'code_module_category_library_type|库类型' => 'require', ]); $model = ModelCodeModuleCategory::where('code_module_category_guid', $params['code_module_category_guid'])->find(); if (!$model) throwErrorMsg("该代码块类目不存在", 1); $model->allowField([ 'code_module_category_name', 'code_module_category_ps', 'code_module_category_parent_guid', 'code_module_category_sort', 'code_module_category_global_mode', 'code_module_category_library_type', 'customer_guid', 'code_module_category_audit', 'code_module_category_update_user_guid' ])->save($params); return msg('编辑成功!'); } /** * 删除代码块类目接口 * * @param Request $request * @return array * @date 2023-06-28 * @author xjh * @since 1.0.0 */ public function deleteCodeModuleCategory(Request $request): array { $params = $request->param(); $this->validate($params, [ 'code_module_category_guid|类目guid' => 'require', ]); $code_module_category = ModelCodeModuleCategory::where([ 'code_module_category_guid' => explode(',', $params['code_module_category_guid']) ])->select(); $code_module_category->delete(); return msg('删除成功!'); } /** * 获取父子类目共用信息返回接口 * * @param Request $request * @return array * @date 2023-06-29 * @author xjh * @since 1.0.0 */ public function getCodeModuleCategoryInfo(Request $request): array { $params = $request->param(); $this->validate($params, [ 'code_module_category_guid|类目guid' => 'require', ]); $find = ModelCodeModuleCategory::field(ModelCodeModuleCategory::Common_INFO_FIELDS)->find($params['code_module_category_guid']); if (!$find) { throwErrorMsg("该类目不存在!"); } return msg(0, '', ['data' => $find]); } }