package jnpf.base.controller; import cn.dev33.satoken.annotation.SaCheckPermission; import cn.dev33.satoken.annotation.SaMode; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.Parameters; import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.Operation; import jnpf.base.ModuleColumnApi; import jnpf.base.model.form.ModuleFormApiModel; import jnpf.base.model.moduledataauthorizescheme.ModuleDataAuthorizeSchemeModel; import jnpf.base.vo.PageListVO; import jnpf.base.vo.PaginationVO; import jnpf.constant.JnpfConst; import jnpf.onlinedev.VisualdevOnlineApi; import jnpf.base.entity.ModuleEntity; import jnpf.base.entity.VisualdevEntity; import jnpf.base.model.ColumnDataModel; import jnpf.base.model.Template6.ColumnListField; import jnpf.base.model.module.PropertyJsonModel; import jnpf.base.service.ModuleService; import jnpf.constant.MsgCode; import jnpf.exception.DataException; import jnpf.util.JsonUtil; import jnpf.base.ActionResult; import jnpf.base.vo.ListVO; import jnpf.base.Pagination; import jnpf.base.model.column.*; import jnpf.base.entity.ModuleColumnEntity; import jnpf.base.service.ModuleColumnService; import jnpf.util.JsonUtilEx; import jnpf.util.StringUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import jakarta.validation.Valid; import java.util.*; /** * 列表权限 * * @author JNPF开发平台组 * @version V3.1.0 * @copyright 引迈信息技术有限公司(https://www.jnpfsoft.com) * @date 2019年9月27日 上午9:18 */ @Tag(name = "列表权限", description = "ModuleColumn") @Validated @RestController @RequestMapping("/ModuleColumn") public class ModuleColumnController extends SuperController implements ModuleColumnApi { @Autowired private ModuleColumnService moduleColumnService; @Autowired private ModuleService moduleService; @Autowired private VisualdevOnlineApi visualdevApi; /** * 获取列表权限信息列表 * * @param moduleId 功能主键 * @param pagination 分页参数 * @return ignore */ @Operation(summary = "获取列表权限列表") @Parameters({ @Parameter(name = "moduleId", description = "功能主键", required = true) }) @SaCheckPermission(value = {"permission.resource", "appConfig.appResource"}, mode = SaMode.OR) @GetMapping("/{moduleId}/Fields") public ActionResult> getList(@PathVariable("moduleId") String moduleId, Pagination pagination) { List list = moduleColumnService.getList(moduleId, pagination); List voList = JsonUtil.getJsonToList(list, ColumnListVO.class); voList.stream().forEach(t -> { String enCode = t.getEnCode(); if (StringUtil.isNotEmpty(enCode)) { if (enCode.contains("-")) { enCode = enCode.substring(enCode.indexOf("-") + 1); } t.setEnCode(enCode.replace(JnpfConst.SIDE_MARK_PRE + t.getBindTable() + JnpfConst.SIDE_MARK, "")); } }); PaginationVO paginationVO = JsonUtil.getJsonToBean(pagination, PaginationVO.class); return ActionResult.page(voList, paginationVO); } /** * 菜单列表权限 * * @param moduleId 功能主键 * @return ignore */ @Operation(summary = "菜单列表权限") @Parameters({ @Parameter(name = "moduleId", description = "功能主键", required = true) }) @SaCheckPermission(value = {"permission.resource", "appConfig.appResource"}, mode = SaMode.OR) @GetMapping("/{moduleId}/FieldList") public ActionResult>> fieldList(@PathVariable("moduleId") String moduleId) { List> list = new ArrayList<>(); // 得到菜单id ModuleEntity entity = moduleService.getInfo(moduleId); if (entity != null) { PropertyJsonModel model = JsonUtil.getJsonToBean(entity.getPropertyJson(), PropertyJsonModel.class); if (model == null) { model = new PropertyJsonModel(); } VisualdevEntity info = visualdevApi.getFormConfig(model.getModuleId()); boolean isPc = entity.getCategory().equalsIgnoreCase("web"); if (info!=null){ Object columnData = isPc ? info.getColumnData() : info.getAppColumnData() ; if (Objects.nonNull(columnData)){ ColumnDataModel columnDataModel = JsonUtil.getJsonToBean(columnData.toString(), ColumnDataModel.class); List columnListFields = JsonUtil.getJsonToList(columnDataModel.getDefaultColumnList(), ColumnListField.class); if (Objects.nonNull(columnListFields)) { columnListFields.stream().forEach(col -> { Map dataMap = new HashMap<>(); dataMap.put("field", col.getProp()); dataMap.put("fieldName", col.getLabel()); list.add(dataMap); }); } } } } return ActionResult.success(list); } /** * 获取列表权限信息 * * @param id 主键值 * @return ignore * @throws DataException ignore */ @Operation(summary = "获取列表权限信息") @Parameters({ @Parameter(name = "id", description = "主键值", required = true) }) @GetMapping("/{id}") public ActionResult info(@PathVariable("id") String id) throws DataException { ModuleColumnEntity entity = moduleColumnService.getInfo(id); String enCode = entity.getEnCode(); if (StringUtil.isNotEmpty(enCode)) { if (enCode.contains("-") && entity.getFieldRule()==2){ enCode = enCode.substring(enCode.indexOf("-")+1); entity.setEnCode(enCode); } if (Objects.equals(entity.getFieldRule(),1) && entity.getBindTable()!=null){ entity.setEnCode(enCode.replace("jnpf_" + entity.getBindTable() + "_jnpf_", "")); } } ModuleColumnInfoVO vo = JsonUtilEx.getJsonToBeanEx(entity, ModuleColumnInfoVO.class); return ActionResult.success(vo); } /** * 新建列表权限 * * @param moduleColumnCrForm 实体对象 * @return ignore */ @Operation(summary = "新建列表权限") @Parameters({ @Parameter(name = "moduleColumnCrForm", description = "实体对象", required = true) }) @SaCheckPermission(value = {"permission.resource", "appConfig.appResource"}, mode = SaMode.OR) @PostMapping public ActionResult create(@RequestBody @Valid ModuleColumnCrForm moduleColumnCrForm) { ModuleEntity moduleEntity = moduleService.getInfo(moduleColumnCrForm.getModuleId()); ModuleColumnEntity entity = JsonUtil.getJsonToBean(moduleColumnCrForm, ModuleColumnEntity.class); if (moduleEntity != null){ PropertyJsonModel model = JsonUtil.getJsonToBean(moduleEntity.getPropertyJson(), PropertyJsonModel.class); if (model == null) { model = new PropertyJsonModel(); } if (entity.getFieldRule() == 1 && StringUtil.isNotEmpty(moduleColumnCrForm.getBindTable())) { String enCode = "jnpf_" + moduleColumnCrForm.getBindTable() + "_jnpf_" + entity.getEnCode(); entity.setEnCode(enCode); } if (entity.getFieldRule() == 2 && StringUtil.isNotEmpty(moduleColumnCrForm.getChildTableKey())) { // 得到bean // Object bean = SpringContext.getBean("visualdevServiceImpl"); // Object method = ReflectionUtil.invokeMethod(bean, "getTableNameToKey", new Class[]{String.class}, new Object[]{model.getModuleId()}); // Map map = JsonUtil.entityToMap(method); // // String enCode = map.get(moduleColumnCrForm.getBindTable().toLowerCase()) + "-" + entity.getEnCode(); String enCode = moduleColumnCrForm.getChildTableKey() + "-" + entity.getEnCode(); entity.setEnCode(enCode); } } if (moduleColumnService.isExistByEnCode(entity.getModuleId(), entity.getEnCode(), entity.getId())) { return ActionResult.fail(MsgCode.EXIST002.get()); } moduleColumnService.create(entity); return ActionResult.success(MsgCode.SU001.get()); } /** * 更新列表权限 * * @param id 主键值 * @param moduleColumnUpForm 实体对象 * @return ignore */ @Operation(summary = "更新列表权限") @Parameters({ @Parameter(name = "id", description = "主键值", required = true), @Parameter(name = "moduleColumnUpForm", description = "实体对象", required = true) }) @SaCheckPermission(value = {"permission.resource", "appConfig.appResource"}, mode = SaMode.OR) @PutMapping("/{id}") public ActionResult update(@PathVariable("id") String id, @RequestBody @Valid ModuleColumnUpForm moduleColumnUpForm) { ModuleEntity moduleEntity = moduleService.getInfo(moduleColumnUpForm.getModuleId()); ModuleColumnEntity entity = JsonUtil.getJsonToBean(moduleColumnUpForm, ModuleColumnEntity.class); if (moduleEntity != null){ PropertyJsonModel model = JsonUtil.getJsonToBean(moduleEntity.getPropertyJson(), PropertyJsonModel.class); if (model == null) { model = new PropertyJsonModel(); } if (entity.getFieldRule() == 1 && StringUtil.isNotEmpty(moduleColumnUpForm.getBindTable())) { String enCode = "jnpf_" + moduleColumnUpForm.getBindTable() + "_jnpf_" + entity.getEnCode(); entity.setEnCode(enCode); } if (entity.getFieldRule() == 2 && StringUtil.isNotEmpty(moduleColumnUpForm.getChildTableKey())) { // // 得到bean // Object bean = SpringContext.getBean("visualdevServiceImpl"); // Object method = ReflectionUtil.invokeMethod(bean, "getTableNameToKey", new Class[]{String.class}, new Object[]{model.getModuleId()}); // Map map = JsonUtil.entityToMap(method); // String enCode = map.get(moduleColumnUpForm.getBindTable().toLowerCase()) + "-" + entity.getEnCode(); String enCode = moduleColumnUpForm.getChildTableKey() + "-" + entity.getEnCode(); entity.setEnCode(enCode); } } if (moduleColumnService.isExistByEnCode(entity.getModuleId(), entity.getEnCode(), id)) { return ActionResult.fail(MsgCode.EXIST002.get()); } boolean flag = moduleColumnService.update(id, entity); if (!flag) { return ActionResult.success(MsgCode.FA002.get()); } return ActionResult.success(MsgCode.SU004.get()); } /** * 删除列表权限 * * @param id 主键值 * @return ignore */ @Operation(summary = "删除列表权限") @Parameters({ @Parameter(name = "id", description = "主键值", required = true) }) @SaCheckPermission(value = {"permission.resource", "appConfig.appResource"}, mode = SaMode.OR) @DeleteMapping("/{id}") public ActionResult delete(@PathVariable("id") String id) { ModuleColumnEntity entity = moduleColumnService.getInfo(id); if (entity != null) { moduleColumnService.delete(entity); return ActionResult.success(MsgCode.SU003.get()); } return ActionResult.fail(MsgCode.FA003.get()); } /** * 更新列表权限状态 * * @param id 主键值 * @return ignore */ @Operation(summary = "更新列表权限状态") @Parameters({ @Parameter(name = "id", description = "主键值", required = true) }) @SaCheckPermission(value = {"permission.resource", "appConfig.appResource"}, mode = SaMode.OR) @PutMapping("/{id}/Actions/State") public ActionResult upState(@PathVariable("id") String id) { ModuleColumnEntity entity = moduleColumnService.getInfo(id); if (entity.getEnabledMark() == null || "1".equals(String.valueOf(entity.getEnabledMark()))) { entity.setEnabledMark(0); } else { entity.setEnabledMark(1); } boolean flag = moduleColumnService.update(id, entity); if (!flag) { return ActionResult.success(MsgCode.FA002.get()); } return ActionResult.success(MsgCode.SU004.get()); } /** * 批量新建 * * @param columnBatchForm 权限模型 * @return ignore */ @Operation(summary = "批量新建列表权限") @Parameters({ @Parameter(name = "columnBatchForm", description = "权限模型", required = true) }) @SaCheckPermission(value = {"permission.resource", "appConfig.appResource"}, mode = SaMode.OR) @PostMapping("/Actions/Batch") public ActionResult batchCreate(@RequestBody @Valid ColumnBatchForm columnBatchForm) { List entitys = columnBatchForm.getColumnJson() != null ? JsonUtil.getJsonToList(columnBatchForm.getColumnJson(), ModuleColumnEntity.class) : new ArrayList<>(); List name = new ArrayList<>(); for (ModuleColumnEntity entity : entitys) { entity.setModuleId(columnBatchForm.getModuleId()); if (entity.getFieldRule() == 1 ) { String enCode = "jnpf_" + entity.getBindTable() + "_jnpf_" + entity.getEnCode(); entity.setEnCode(enCode); } if (entity.getFieldRule() == 2 ) { String enCode = entity.getChildTableKey() + "-" + entity.getEnCode(); entity.setEnCode(enCode); } if (moduleColumnService.isExistByEnCode(entity.getModuleId(), entity.getEnCode(), null)) { return ActionResult.fail(MsgCode.EXIST002.get()); } if (name.contains(entity.getEnCode())) { return ActionResult.fail(MsgCode.EXIST002.get()); } name.add(entity.getEnCode()); } moduleColumnService.create(entitys); return ActionResult.success(MsgCode.SU001.get()); } @Override @GetMapping("/getList") public List getList() { return moduleColumnService.getList(); } @Override @PostMapping("/getListByModuleId") public List getListByModuleId(@RequestBody ModuleFormApiModel model) { return moduleColumnService.getListByModuleId(model); } @Override @PostMapping("/getListByIds") public List getListByIds(@RequestBody List ids) { return moduleColumnService.getListByIds(ids); } }