diff --git a/adc-da-report/src/main/java/com/adc/da/report/controller/ReportManageConroller.java b/adc-da-report/src/main/java/com/adc/da/report/controller/ReportManageConroller.java index 2916ee5..a5b957d 100644 --- a/adc-da-report/src/main/java/com/adc/da/report/controller/ReportManageConroller.java +++ b/adc-da-report/src/main/java/com/adc/da/report/controller/ReportManageConroller.java @@ -93,7 +93,9 @@ public class ReportManageConroller { if (count>0){ return Result.error("报告名称已存在"); } - String name = reportService.insert(entity, vo.getLabelList()); + String name = reportService.insert(entity, vo.getLabelList(), + vo.getReportPreviewUserIdList(), + vo.getReportPreviewAndDownloadUserIdList()); map.put("reportName", name); return Result.success(map); } diff --git a/adc-da-report/src/main/java/com/adc/da/report/eo/PowerApply.java b/adc-da-report/src/main/java/com/adc/da/report/eo/PowerApply.java index 2784e97..9ef92b0 100644 --- a/adc-da-report/src/main/java/com/adc/da/report/eo/PowerApply.java +++ b/adc-da-report/src/main/java/com/adc/da/report/eo/PowerApply.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; +import lombok.experimental.Accessors; import java.util.Date; @@ -16,6 +17,7 @@ import java.util.Date; */ @Data @TableName("power_apply") +@Accessors(chain = true) public class PowerApply { /** @@ -85,4 +87,11 @@ public class PowerApply { */ @TableField("del_flag") private Integer delFlag; + + /** + * 权限来源 1 上传报告时添加的 + * 2 单独申请的权限 + */ + @TableField("power_source") + private Integer powerSource; } diff --git a/adc-da-report/src/main/java/com/adc/da/report/eo/ReportContentEntity.java b/adc-da-report/src/main/java/com/adc/da/report/eo/ReportContentEntity.java index 86feeb8..0fedacb 100644 --- a/adc-da-report/src/main/java/com/adc/da/report/eo/ReportContentEntity.java +++ b/adc-da-report/src/main/java/com/adc/da/report/eo/ReportContentEntity.java @@ -42,5 +42,5 @@ public class ReportContentEntity implements Serializable { private String reportContent; @TableField(exist = false) - private static final long serialVersionUID = 1L; + private static final long serialVersionUID = 1213467213486L; } \ No newline at end of file diff --git a/adc-da-report/src/main/java/com/adc/da/report/eo/ReportLabelEntity.java b/adc-da-report/src/main/java/com/adc/da/report/eo/ReportLabelEntity.java index 30ebb29..5cf91d5 100644 --- a/adc-da-report/src/main/java/com/adc/da/report/eo/ReportLabelEntity.java +++ b/adc-da-report/src/main/java/com/adc/da/report/eo/ReportLabelEntity.java @@ -41,6 +41,6 @@ public class ReportLabelEntity implements Serializable { private String labelId; @TableField(exist = false) - private static final long serialVersionUID = 1L; + private static final long serialVersionUID = 121348721347890417L; } \ No newline at end of file diff --git a/adc-da-report/src/main/java/com/adc/da/report/eo/TreeLabelEntity.java b/adc-da-report/src/main/java/com/adc/da/report/eo/TreeLabelEntity.java index 3c96c87..ec036f2 100644 --- a/adc-da-report/src/main/java/com/adc/da/report/eo/TreeLabelEntity.java +++ b/adc-da-report/src/main/java/com/adc/da/report/eo/TreeLabelEntity.java @@ -59,6 +59,6 @@ public class TreeLabelEntity implements Serializable { private Double orderNum; @TableField(exist = false) - private static final long serialVersionUID = 1L; + private static final long serialVersionUID = 11283747892134701L; } \ No newline at end of file diff --git a/adc-da-report/src/main/java/com/adc/da/report/service/IPowerApplyService.java b/adc-da-report/src/main/java/com/adc/da/report/service/IPowerApplyService.java index 0e273a0..408d774 100644 --- a/adc-da-report/src/main/java/com/adc/da/report/service/IPowerApplyService.java +++ b/adc-da-report/src/main/java/com/adc/da/report/service/IPowerApplyService.java @@ -5,10 +5,11 @@ import com.adc.da.report.eo.PowerApplyAct; import com.adc.da.report.vo.DeleteParamRequestVO; import com.adc.da.report.vo.PowerApplyPageVO; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; import java.util.List; -public interface IPowerApplyService { +public interface IPowerApplyService extends IService { /** * @param powerApplyPageVO @@ -58,4 +59,11 @@ public interface IPowerApplyService { public void deleteById(DeleteParamRequestVO deleteParamVO); void saveBatch(List powerApplyActs); + + /** + * 根据报告id删除权限 + * + * @param reportId 报表id + */ + void deleteByReportId(String reportId); } diff --git a/adc-da-report/src/main/java/com/adc/da/report/service/IReportService.java b/adc-da-report/src/main/java/com/adc/da/report/service/IReportService.java index b253118..3680738 100644 --- a/adc-da-report/src/main/java/com/adc/da/report/service/IReportService.java +++ b/adc-da-report/src/main/java/com/adc/da/report/service/IReportService.java @@ -21,7 +21,9 @@ public interface IReportService { * @param labelList * @return 报告名称 */ - String insert(ReportEntity entity, List labelList) throws IOException; + String insert(ReportEntity entity, List labelList, + List reportPreviewUserIdList, + List reportPreviewAndDownloadUserIdList) throws IOException; /** * 删除报告 diff --git a/adc-da-report/src/main/java/com/adc/da/report/service/impl/IReportServiceImpl.java b/adc-da-report/src/main/java/com/adc/da/report/service/impl/IReportServiceImpl.java index 1270449..b9c9c6d 100644 --- a/adc-da-report/src/main/java/com/adc/da/report/service/impl/IReportServiceImpl.java +++ b/adc-da-report/src/main/java/com/adc/da/report/service/impl/IReportServiceImpl.java @@ -7,24 +7,20 @@ import com.adc.da.report.dao.mysql.FileDao; import com.adc.da.report.dao.mysql.ReportDao; import com.adc.da.report.dao.mysql.ReportLabelDao; import com.adc.da.report.dao.mysql.ReportUserDao; -import com.adc.da.report.eo.FileEntity; -import com.adc.da.report.eo.ReportEntity; -import com.adc.da.report.eo.ReportLabelEntity; -import com.adc.da.report.eo.ReportUserEntity; -import com.adc.da.report.service.IReportContentService; -import com.adc.da.report.service.IReportLabelService; -import com.adc.da.report.service.IReportService; -import com.adc.da.report.service.ITreeLabelService; +import com.adc.da.report.eo.*; +import com.adc.da.report.service.*; import com.adc.da.report.util.*; import com.adc.da.report.vo.ReportQueryVo; import com.adc.da.report.vo.ReportVo; import com.adc.da.sys.dao.mysql.RoleEODao; import com.adc.da.sys.entity.RoleEO; +import com.adc.da.util.utils.CollectionUtils; import com.adc.da.util.utils.FileUtil; import com.adc.da.util.utils.StringUtils; import com.adc.da.util.utils.UUID; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @@ -98,6 +94,10 @@ public class IReportServiceImpl extends ServiceImpl @Autowired private LocalFileUtil localFileUtil; + @Resource + private IPowerApplyService iPowerApplyService; + + /** * 新增或编辑报告 * @@ -107,9 +107,12 @@ public class IReportServiceImpl extends ServiceImpl */ @Override @Transactional(rollbackFor = Exception.class) - public String insert(ReportEntity entity, List labelList) throws IOException { + public String insert(ReportEntity entity, List labelList, + List reportPreviewUserIdList, + List reportPreviewAndDownloadUserIdList) throws IOException { SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + if (StringUtils.isEmpty(entity.getId())) { entity.setId(UUID.randomUUID10()); entity.setCreateDate(format.format(new Date())); @@ -118,13 +121,36 @@ public class IReportServiceImpl extends ServiceImpl entity.setUpdateDate(format.format(new Date())); reportDao.insert(entity); - //插入用户关系表 - entity.getReportUserIdList().forEach(c -> { - ReportUserEntity reportUserEntity = new ReportUserEntity(); - reportUserEntity.setReportId(entity.getId()); - reportUserEntity.setUserId(c); - reportUserDao.insert(reportUserEntity); - }); + //插入power_apply权限表 + if (CollectionUtils.isNotEmpty(reportPreviewUserIdList)) { + reportPreviewUserIdList.forEach(userId -> { + PowerApply powerApply = new PowerApply(); + powerApply.setId(UUID.randomUUID10()) + .setPower(1) + .setReportId(entity.getId()) + .setUserId(userId) + .setCreateDate(new Date()) + .setCreateUserId(UserUtils.getUserId()) + .setDelFlag(0) + .setPowerSource(1); + iPowerApplyService.save(powerApply); + }); + } + + if (CollectionUtils.isNotEmpty(reportPreviewAndDownloadUserIdList)) { + reportPreviewAndDownloadUserIdList.forEach(userId -> { + PowerApply powerApply = new PowerApply(); + powerApply.setId(UUID.randomUUID10()) + .setPower(2) + .setReportId(entity.getId()) + .setUserId(userId) + .setCreateDate(new Date()) + .setCreateUserId(UserUtils.getUserId()) + .setDelFlag(0) + .setPowerSource(1); + iPowerApplyService.save(powerApply); + }); + } //插入报表标签关系表 labelList.forEach((label) -> { @@ -133,7 +159,7 @@ public class IReportServiceImpl extends ServiceImpl }); //插入报表内容表 - iReportContentService.insertReportContent(entity.getId() ,entity.getFileId()); + iReportContentService.insertReportContent(entity.getId(), entity.getFileId()); CommonUtils.threadPoolExecutor().execute(() -> { //生成html @@ -157,14 +183,6 @@ public class IReportServiceImpl extends ServiceImpl reportUserDao.delete(new QueryWrapper() .eq("reportId", entity.getId())); - //插入用户关系表 - entity.getReportUserIdList().forEach(c -> { - ReportUserEntity reportUserEntity = new ReportUserEntity(); - reportUserEntity.setReportId(entity.getId()); - reportUserEntity.setUserId(c); - reportUserDao.insert(reportUserEntity); - }); - //修改报表标签关系表(先删后增) iReportLabelService.deleteReportLabelByReportId(new String[]{entity.getId()}); @@ -174,6 +192,42 @@ public class IReportServiceImpl extends ServiceImpl reportLabelDao.insert(reportLabelEntity); }); + //TODO 插入报表内容表(先删后增) + + //删除power_apply表中的对应权限 + iPowerApplyService.deleteByReportId(entity.getId()); + + //插入power_apply权限表 + if (CollectionUtils.isNotEmpty(reportPreviewUserIdList)) { + reportPreviewUserIdList.forEach(userId -> { + PowerApply powerApply = new PowerApply(); + powerApply.setId(UUID.randomUUID10()) + .setPower(1) + .setReportId(entity.getId()) + .setUserId(userId) + .setUpdateDate(new Date()) + .setUpdateUserId(UserUtils.getUserId()) + .setDelFlag(0) + .setPowerSource(1); + iPowerApplyService.save(powerApply); + }); + } + + if (CollectionUtils.isNotEmpty(reportPreviewAndDownloadUserIdList)) { + reportPreviewAndDownloadUserIdList.forEach(userId -> { + PowerApply powerApply = new PowerApply(); + powerApply.setId(UUID.randomUUID10()) + .setPower(2) + .setReportId(entity.getId()) + .setUserId(userId) + .setUpdateDate(new Date()) + .setUpdateUserId(UserUtils.getUserId()) + .setDelFlag(0) + .setPowerSource(1); + iPowerApplyService.save(powerApply); + }); + } + CommonUtils.threadPoolExecutor().execute(() -> { String key = entity.getId() + "-" + entity.getFileId(); Boolean hasKey = stringRedisTemplate.hasKey(key); @@ -375,7 +429,6 @@ public class IReportServiceImpl extends ServiceImpl List userIdList = reportUserDao.selectList( new QueryWrapper().eq("reportId", c.getId())) .stream().map(ReportUserEntity::getUserId).collect(Collectors.toList()); - c.setReportUserIdList(userIdList); }); return list; } @@ -448,7 +501,6 @@ public class IReportServiceImpl extends ServiceImpl List userIdList = reportUserDao.selectList( new QueryWrapper().eq("reportId", c.getId())) .stream().map(ReportUserEntity::getUserId).collect(Collectors.toList()); - c.setReportUserIdList(userIdList); }); return list; } diff --git a/adc-da-report/src/main/java/com/adc/da/report/service/impl/IpowerApplyServiceImpl.java b/adc-da-report/src/main/java/com/adc/da/report/service/impl/IpowerApplyServiceImpl.java index 9f038eb..986c8d1 100644 --- a/adc-da-report/src/main/java/com/adc/da/report/service/impl/IpowerApplyServiceImpl.java +++ b/adc-da-report/src/main/java/com/adc/da/report/service/impl/IpowerApplyServiceImpl.java @@ -10,6 +10,7 @@ import com.adc.da.report.vo.DeleteParamRequestVO; import com.adc.da.report.vo.PowerApplyPageVO; import com.adc.da.util.utils.StringUtils; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.extern.slf4j.Slf4j; @@ -124,5 +125,12 @@ public class IpowerApplyServiceImpl extends ServiceImpl updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("report_id", reportId); + PowerApply updatePowerApply = new PowerApply(); + updatePowerApply.setDelFlag(1); + getBaseMapper().update(updatePowerApply, updateWrapper); + } } diff --git a/adc-da-report/src/main/java/com/adc/da/report/vo/ReportVo.java b/adc-da-report/src/main/java/com/adc/da/report/vo/ReportVo.java index e108dc8..e7cd7aa 100644 --- a/adc-da-report/src/main/java/com/adc/da/report/vo/ReportVo.java +++ b/adc-da-report/src/main/java/com/adc/da/report/vo/ReportVo.java @@ -68,7 +68,12 @@ public class ReportVo { /** * 报告用户id */ - private List reportUserIdList; + private List reportPreviewUserIdList; + + /** + * 报告用户id + */ + private List reportPreviewAndDownloadUserIdList; /** * 报告涉密等级 diff --git a/adc-da-sys/src/main/java/com/adc/da/eo/ConfigEntity.java b/adc-da-sys/src/main/java/com/adc/da/eo/ConfigEntity.java new file mode 100644 index 0000000..c99b422 --- /dev/null +++ b/adc-da-sys/src/main/java/com/adc/da/eo/ConfigEntity.java @@ -0,0 +1,44 @@ +package com.adc.da.eo; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import java.io.Serializable; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * + * @author ThinkBook + * @TableName ts_config + */ +@TableName(value ="ts_config") +@Data +@NoArgsConstructor +@AllArgsConstructor +public class ConfigEntity implements Serializable { + + private static final long serialVersionUID = 23487320957329L; + + /** + * 主键id + */ + @TableId(value = "id", type = IdType.INPUT) + private String id; + + /** + * 配置名 + */ + @TableField(value = "config_key") + private String configKey; + + /** + * 配置信息 + */ + @TableField(value = "config_value") + private String configValue; + +} \ No newline at end of file diff --git a/adc-da-sys/src/main/java/com/adc/da/eo/DictEntity.java b/adc-da-sys/src/main/java/com/adc/da/eo/DictEntity.java new file mode 100644 index 0000000..c7dd7cc --- /dev/null +++ b/adc-da-sys/src/main/java/com/adc/da/eo/DictEntity.java @@ -0,0 +1,82 @@ +package com.adc.da.eo; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import java.io.Serializable; +import java.util.Date; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.Accessors; + +/** + * + * @author ThinkBook + * @TableName ts_dict + */ +@TableName(value ="ts_dict") +@Data +@Accessors(chain = true) +@NoArgsConstructor +@AllArgsConstructor +public class DictEntity implements Serializable { + /** + * 主键id + */ + @TableId(value = "id", type = IdType.INPUT) + private String id; + + /** + * 字典名称 + */ + @TableField(value = "dic_name") + private String dicName; + + /** + * 字典编码 + */ + @TableField(value = "dic_code") + private String dicCode; + + /** + * 描述 + */ + @TableField(value = "description") + private String description; + + /** + * 创建用户id + */ + @TableField(value = "create_user") + private String createUser; + + /** + * 创建时间 + */ + @TableField(value = "create_time") + private Date createTime; + + /** + * 更新用户id + */ + @TableField(value = "update_user") + private String updateUser; + + /** + * 更新时间 + */ + @TableField(value = "update_time") + private Date updateTime; + + /** + * 删除标志 0存在 1删除 + */ + @TableField(value = "del_flag") + private Integer delFlag; + + @TableField(exist = false) + private static final long serialVersionUID = 1564756474576568768L; +} \ No newline at end of file diff --git a/adc-da-sys/src/main/java/com/adc/da/eo/DictItemEntity.java b/adc-da-sys/src/main/java/com/adc/da/eo/DictItemEntity.java new file mode 100644 index 0000000..f8cb85d --- /dev/null +++ b/adc-da-sys/src/main/java/com/adc/da/eo/DictItemEntity.java @@ -0,0 +1,98 @@ +package com.adc.da.eo; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import java.io.Serializable; +import java.util.Date; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * + * @author Caihaohan + * @TableName ts_dict_item + */ +@TableName(value ="ts_dict_item") +@Data +@NoArgsConstructor +@AllArgsConstructor +public class DictItemEntity implements Serializable { + /** + * 主键id + */ + @TableId(value = "id", type = IdType.INPUT) + private String id; + + /** + * 字典id + */ + @TableField(value = "type_id") + private String typeId; + + /** + * 数据名称 + */ + @TableField(value = "item_name") + private String itemName; + + /** + * 数据值 + */ + @TableField(value = "item_value") + private String itemValue; + + /** + * 描述 + */ + @TableField(value = "item_description") + private String itemDescription; + + /** + * 排序 + */ + @TableField(value = "item_order") + private Double itemOrder; + + /** + * 启用标志 0不启用 1启用 + */ + @TableField(value = "item_status") + private Integer itemStatus; + + /** + * 创建用户id + */ + @TableField(value = "create_user") + private String createUser; + + /** + * 创建时间 + */ + @TableField(value = "create_time") + private Date createTime; + + /** + * 更新用户id + */ + @TableField(value = "update_user") + private String updateUser; + + /** + * 更新时间 + */ + @TableField(value = "update_time") + private Date updateTime; + + /** + * 删除标志 0存在 1删除 + */ + @TableField(value = "del_flag") + private Integer delFlag; + + @TableField(exist = false) + private static final long serialVersionUID = 12134213414324536L; +} \ No newline at end of file diff --git a/adc-da-sys/src/main/java/com/adc/da/sys/constant/TsConfigKeyEnum.java b/adc-da-sys/src/main/java/com/adc/da/sys/constant/TsConfigKeyEnum.java new file mode 100644 index 0000000..5e5f952 --- /dev/null +++ b/adc-da-sys/src/main/java/com/adc/da/sys/constant/TsConfigKeyEnum.java @@ -0,0 +1,37 @@ +package com.adc.da.sys.constant; + +/** + * @author CaiHaohan + */ + +public enum TsConfigKeyEnum { + + /** + * 水印前缀 + */ + WATERMARK_PREFIX("WATERMARK_PREFIX", "水印前缀"); + + + /** + * 对应Key + */ + private String value; + + /** + * 代表意义 + */ + private String label; + + TsConfigKeyEnum(String value, String label) { + this.value = value; + this.label = label; + } + + public String getValue() { + return value; + } + + public String getLabel() { + return label; + } +} diff --git a/adc-da-sys/src/main/java/com/adc/da/sys/controller/ConfigController.java b/adc-da-sys/src/main/java/com/adc/da/sys/controller/ConfigController.java new file mode 100644 index 0000000..9ea8845 --- /dev/null +++ b/adc-da-sys/src/main/java/com/adc/da/sys/controller/ConfigController.java @@ -0,0 +1,58 @@ +package com.adc.da.sys.controller; + +import com.adc.da.sys.service.iservice.IConfigService; +import com.adc.da.sys.vo.ConfigVo; +import com.adc.da.util.http.ResponseMessage; +import com.adc.da.util.http.Result; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.validation.constraints.NotNull; + +/** + * @author Caihaohan + */ +@Slf4j +@RestController +@RequestMapping("/${restPath}/sys/config") +@Api(tags = {"Sys-基础设置"}) +public class ConfigController { + + @Resource + private IConfigService iConfigService; + + /** + * 获取一个基本设置项 + */ + @ApiOperation(value = "获取一个基本设置项") + @GetMapping("/{key}") + public ResponseMessage findConfig(@NotNull @PathVariable String key) { + return iConfigService.findConfig(key); + } + + /** + * 获取所有基本设置项 + */ + @ApiOperation(value = "获取所有基本设置项") + @GetMapping("/all") + public ResponseMessage findAllConfig() { + try { + return Result.success(iConfigService.findAllConfig()); + } catch (Exception e) { + log.error("获取所有基本设置项", e); + return Result.error("获取失败"); + } + } + + /** + * 保存基本设置项 + */ + @ApiOperation(value = "保存/更新 基本设置项") + @PostMapping("/save") + public ResponseMessage saveConfig(@RequestBody ConfigVo configVo) { + return iConfigService.saveOrUpdateConfig(configVo); + } +} diff --git a/adc-da-sys/src/main/java/com/adc/da/sys/controller/DictController.java b/adc-da-sys/src/main/java/com/adc/da/sys/controller/DictController.java new file mode 100644 index 0000000..d362bcf --- /dev/null +++ b/adc-da-sys/src/main/java/com/adc/da/sys/controller/DictController.java @@ -0,0 +1,67 @@ +package com.adc.da.sys.controller; + + +import com.adc.da.sys.service.iservice.IDictService; +import com.adc.da.sys.vo.DictQueryVo; +import com.adc.da.sys.vo.DictVo; +import com.adc.da.util.http.ResponseMessage; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.validation.Valid; +import java.util.List; + + +/** + * @author CaiHaohan + */ +@Slf4j +@RestController +@RequestMapping("/${restPath}/sys/dict") +@Api(tags = {"Sys-数据字典"}) +public class DictController { + + @Resource + private IDictService dictService; + + /** + * 获取一个基本设置项 + */ + @ApiOperation(value = "分页获取所有数据字典") + @GetMapping("/page") + public ResponseMessage page(@Valid DictQueryVo dictQueryVo) { + return dictService.pageByCondition(dictQueryVo); + } + + /** + * 修改一个字典 + */ + @ApiOperation(value = "修改数据字典") + @PutMapping("/edit") + public ResponseMessage edit(@RequestBody DictVo dictVo) { + return dictService.edit(dictVo); + } + + /** + * 删除一个字典 + */ + @ApiOperation(value = "删除数据字典") + @DeleteMapping("/delete") + public ResponseMessage delete(@RequestParam("ids") List ids) { + return dictService.delete(ids); + } + + /** + * 删除一个字典 + */ + @ApiOperation(value = "新增数据字典") + @PostMapping("/add") + public ResponseMessage add(@RequestBody DictVo dictVo) { + return dictService.add(dictVo); + } + + +} diff --git a/adc-da-sys/src/main/java/com/adc/da/sys/controller/DictItemController.java b/adc-da-sys/src/main/java/com/adc/da/sys/controller/DictItemController.java new file mode 100644 index 0000000..e832337 --- /dev/null +++ b/adc-da-sys/src/main/java/com/adc/da/sys/controller/DictItemController.java @@ -0,0 +1,13 @@ +package com.adc.da.sys.controller; + +import io.swagger.annotations.Api; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@Slf4j +@RestController +@RequestMapping("/${restPath}/sys/dictItem") +@Api(tags = {"Sys-数据字典配置项设置"}) +public class DictItemController { +} diff --git a/adc-da-sys/src/main/java/com/adc/da/sys/dao/mysql/ConfigDao.java b/adc-da-sys/src/main/java/com/adc/da/sys/dao/mysql/ConfigDao.java new file mode 100644 index 0000000..2647b63 --- /dev/null +++ b/adc-da-sys/src/main/java/com/adc/da/sys/dao/mysql/ConfigDao.java @@ -0,0 +1,19 @@ +package com.adc.da.sys.dao.mysql; + + +import com.adc.da.eo.ConfigEntity; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** +* @author ThinkBook +* @description 针对表【ts_config】的数据库操作Mapper +* @createDate 2023-05-04 09:45:30 +* @Entity generator.eo.ConfigEntity +*/ +public interface ConfigDao extends BaseMapper { + +} + + + + diff --git a/adc-da-sys/src/main/java/com/adc/da/sys/dao/mysql/DictDao.java b/adc-da-sys/src/main/java/com/adc/da/sys/dao/mysql/DictDao.java new file mode 100644 index 0000000..5118893 --- /dev/null +++ b/adc-da-sys/src/main/java/com/adc/da/sys/dao/mysql/DictDao.java @@ -0,0 +1,18 @@ +package com.adc.da.sys.dao.mysql; + +import com.adc.da.eo.DictEntity; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** +* @author ThinkBook +* @description 针对表【ts_dict】的数据库操作Mapper +* @createDate 2023-05-05 10:28:12 +* @Entity com.adc.da.eo.DictEntity +*/ +public interface DictDao extends BaseMapper { + +} + + + + diff --git a/adc-da-sys/src/main/java/com/adc/da/sys/dao/mysql/DictItemDao.java b/adc-da-sys/src/main/java/com/adc/da/sys/dao/mysql/DictItemDao.java new file mode 100644 index 0000000..cd3bbbc --- /dev/null +++ b/adc-da-sys/src/main/java/com/adc/da/sys/dao/mysql/DictItemDao.java @@ -0,0 +1,18 @@ +package com.adc.da.sys.dao.mysql; + +import com.adc.da.eo.DictItemEntity; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** +* @author ThinkBook +* @description 针对表【ts_dict_item】的数据库操作Mapper +* @createDate 2023-05-05 10:28:25 +* @Entity com.adc.da.eo.DictItemEntity +*/ +public interface DictItemDao extends BaseMapper { + +} + + + + diff --git a/adc-da-sys/src/main/java/com/adc/da/sys/service/ConfigServiceImpl.java b/adc-da-sys/src/main/java/com/adc/da/sys/service/ConfigServiceImpl.java new file mode 100644 index 0000000..5c8328b --- /dev/null +++ b/adc-da-sys/src/main/java/com/adc/da/sys/service/ConfigServiceImpl.java @@ -0,0 +1,98 @@ +package com.adc.da.sys.service; + +import cn.hutool.core.bean.BeanUtil; +import com.adc.da.sys.constant.TsConfigKeyEnum; +import com.adc.da.sys.vo.ConfigVo; +import com.adc.da.util.http.ResponseMessage; +import com.adc.da.util.http.Result; +import com.adc.da.util.utils.UUID; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.adc.da.eo.ConfigEntity; +import com.adc.da.sys.service.iservice.IConfigService; +import com.adc.da.sys.dao.mysql.ConfigDao; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.List; + + +/** + * @author ThinkBook + * @description 针对表【ts_config】的数据库操作Service实现 + * @createDate 2023-05-04 09:45:30 + */ +@Service +public class ConfigServiceImpl extends ServiceImpl + implements IConfigService { + + @Override + public ResponseMessage saveOrUpdateConfig(ConfigVo configVo) { + try { + // 先查询 + ConfigEntity configEntity = new ConfigEntity(); + BeanUtil.copyProperties(configVo, configEntity); + + //判断Key是否是后端预设好的 + if (isKeyValid(configEntity.getConfigKey())) { + List configEntityList = query().eq("config_key", configEntity.getConfigKey()).list(); + if (!configEntityList.isEmpty()){ + ConfigEntity existDbConfig = configEntityList.get(0); + configEntity.setId(existDbConfig.getId()); + updateById(configEntity); + } else { + configEntity.setId(UUID.randomUUID10()); + save(configEntity); + } + return Result.success("保存成功"); + } + return Result.error("配置项Key不存在"); + } catch (Exception e) { + log.error("保存基本设置项失败", e); + return Result.error("保存失败"); + } + } + + @Override + public List findAllConfig() { + List result = new ArrayList<>(); + for (TsConfigKeyEnum configKey : TsConfigKeyEnum.values()) { + List configEntityList = query().eq("config_key", configKey.getValue()).list(); + if (!configEntityList.isEmpty()){ + ConfigVo configVo = new ConfigVo(); + BeanUtil.copyProperties(configEntityList.get(0), configVo); + result.add(configVo); + } + } + return result; + } + + @Override + public ResponseMessage findConfig(String key) { + if (isKeyValid(key)) { + ConfigEntity configEntity = query().eq("config_key", key).one(); + ConfigVo configVo = new ConfigVo(); + BeanUtil.copyProperties(configEntity, configVo); + return Result.success(configVo); + } + return Result.error("配置项Key不存在"); + } + + /** + * 判断传入的key是否是后端预设好的key + * + * @param key + * @return + */ + private boolean isKeyValid(String key) { + for (TsConfigKeyEnum configKey : TsConfigKeyEnum.values()) { + if (configKey.getValue().equals(key)) { + return true; + } + } + return false; + } +} + + + + diff --git a/adc-da-sys/src/main/java/com/adc/da/sys/service/DictItemServiceImpl.java b/adc-da-sys/src/main/java/com/adc/da/sys/service/DictItemServiceImpl.java new file mode 100644 index 0000000..ac21d60 --- /dev/null +++ b/adc-da-sys/src/main/java/com/adc/da/sys/service/DictItemServiceImpl.java @@ -0,0 +1,23 @@ +package com.adc.da.sys.service; + +import com.adc.da.eo.DictItemEntity; +import com.adc.da.sys.service.iservice.IDictItemService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; + +import com.adc.da.sys.dao.mysql.DictItemDao; +import org.springframework.stereotype.Service; + +/** +* @author ThinkBook +* @description 针对表【ts_dict_item】的数据库操作Service实现 +* @createDate 2023-05-05 10:28:25 +*/ +@Service +public class DictItemServiceImpl extends ServiceImpl + implements IDictItemService { + +} + + + + diff --git a/adc-da-sys/src/main/java/com/adc/da/sys/service/DictServiceImpl.java b/adc-da-sys/src/main/java/com/adc/da/sys/service/DictServiceImpl.java new file mode 100644 index 0000000..5d159ae --- /dev/null +++ b/adc-da-sys/src/main/java/com/adc/da/sys/service/DictServiceImpl.java @@ -0,0 +1,120 @@ +package com.adc.da.sys.service; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.util.StrUtil; +import com.adc.da.eo.DictEntity; +import com.adc.da.sys.util.BeanCopyUtils; +import com.adc.da.sys.vo.DictQueryVo; +import com.adc.da.sys.vo.DictVo; +import com.adc.da.util.http.ResponseMessage; +import com.adc.da.util.http.Result; +import com.adc.da.util.utils.UUID; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.adc.da.sys.service.iservice.IDictService; +import com.adc.da.sys.dao.mysql.DictDao; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +/** + * @author ThinkBook + * @description 针对表【ts_dict】的数据库操作Service实现 + * @createDate 2023-05-05 10:28:12 + */ +@Service +@Slf4j +public class DictServiceImpl extends ServiceImpl + implements IDictService { + + @Resource + private DictDao dictDao; + + @Override + public ResponseMessage pageByCondition(DictQueryVo dictQueryVo) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.like(StrUtil.isNotBlank(dictQueryVo.getDicName()), DictEntity::getDicName, dictQueryVo.getDicName()); + wrapper.eq(StrUtil.isNotBlank(dictQueryVo.getDicCode()), DictEntity::getDicCode, dictQueryVo.getDicCode()); + wrapper.eq(DictEntity::getDelFlag, 0); + wrapper.orderByAsc(DictEntity::getCreateTime); + IPage page = new Page<>(dictQueryVo.getPageNo(), dictQueryVo.getPageSize()); + page(page, wrapper); + + Page returnPage = BeanCopyUtils.copyBean(page, Page.class); + List dictVos = BeanCopyUtils.copyBeanList(page.getRecords(), DictVo.class); + + returnPage.setRecords(dictVos); + return Result.success(returnPage); + } + + @Override + public ResponseMessage edit(DictVo dictVo) { + try { + DictEntity dictEntity = new DictEntity(); + //字典编码不可变 + BeanUtil.copyProperties(dictVo, dictEntity); + dictEntity.setDicCode(null); + dictEntity.setUpdateTime(new Date()); + dictDao.updateById(dictEntity); + log.info("编辑数据字典{}成功", dictEntity.getDicName()); + return Result.success("编辑成功"); + } catch (Exception e) { + log.info("编辑数据字典失败", e); + } + return Result.error("编辑失败"); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public ResponseMessage delete(List ids) { + List dictEntities = new ArrayList<>(); + ids.forEach(id -> { + DictEntity dictEntity = new DictEntity(); + dictEntity.setId(id); + dictEntity.setUpdateTime(new Date()); + dictEntity.setDelFlag(1); + dictEntities.add(dictEntity); + }); + updateBatchById(dictEntities); + return Result.success("删除成功"); + } + + @Override + public ResponseMessage add(DictVo dictVo) { + //判断字典名是否重复 + Integer dicNameCount = query().eq("dic_name", dictVo.getDicName()).count(); + if (dicNameCount > 0) { + return Result.error("字典名重复"); + } + //判断字典编码是否重复 + Integer dicCodeCount = query().eq("dic_code", dictVo.getDicCode()).count(); + if (dicCodeCount > 0) { + return Result.error("字典编码重复"); + } + try { + DictEntity dictEntity = BeanCopyUtils.copyBean(dictVo, DictEntity.class); + dictEntity.setId(UUID.randomUUID10()) + .setCreateTime(new Date()) + .setUpdateTime(new Date()) + .setDelFlag(0); + save(dictEntity); + return Result.success("新增成功"); + } catch (Exception e) { + log.info("新增字典失败", e); + } + return Result.error("新增失败"); + } + +} + + + + diff --git a/adc-da-sys/src/main/java/com/adc/da/sys/service/iservice/IConfigService.java b/adc-da-sys/src/main/java/com/adc/da/sys/service/iservice/IConfigService.java new file mode 100644 index 0000000..6d13654 --- /dev/null +++ b/adc-da-sys/src/main/java/com/adc/da/sys/service/iservice/IConfigService.java @@ -0,0 +1,39 @@ +package com.adc.da.sys.service.iservice; + +import com.adc.da.eo.ConfigEntity; +import com.adc.da.sys.vo.ConfigVo; +import com.adc.da.util.http.ResponseMessage; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** +* @author ThinkBook +* @description 针对表【ts_config】的数据库操作Service +* @createDate 2023-05-04 09:45:30 +*/ +public interface IConfigService extends IService { + + /** + * 新增或更新配置项 + * + * @param configVo + * @return + */ + ResponseMessage saveOrUpdateConfig(ConfigVo configVo); + + /** + * 获取所有配置项 + * + * @return + */ + List findAllConfig(); + + /** + * 返回一个配置项 + * + * @param key + * @return + */ + ResponseMessage findConfig(String key); +} diff --git a/adc-da-sys/src/main/java/com/adc/da/sys/service/iservice/IDictItemService.java b/adc-da-sys/src/main/java/com/adc/da/sys/service/iservice/IDictItemService.java new file mode 100644 index 0000000..feeed27 --- /dev/null +++ b/adc-da-sys/src/main/java/com/adc/da/sys/service/iservice/IDictItemService.java @@ -0,0 +1,13 @@ +package com.adc.da.sys.service.iservice; + +import com.adc.da.eo.DictItemEntity; +import com.baomidou.mybatisplus.extension.service.IService; + +/** +* @author ThinkBook +* @description 针对表【ts_dict_item】的数据库操作Service +* @createDate 2023-05-05 10:28:25 +*/ +public interface IDictItemService extends IService { + +} diff --git a/adc-da-sys/src/main/java/com/adc/da/sys/service/iservice/IDictService.java b/adc-da-sys/src/main/java/com/adc/da/sys/service/iservice/IDictService.java new file mode 100644 index 0000000..b3970ce --- /dev/null +++ b/adc-da-sys/src/main/java/com/adc/da/sys/service/iservice/IDictService.java @@ -0,0 +1,49 @@ +package com.adc.da.sys.service.iservice; + + +import com.adc.da.eo.DictEntity; +import com.adc.da.sys.vo.DictQueryVo; +import com.adc.da.sys.vo.DictVo; +import com.adc.da.util.http.ResponseMessage; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + + +/** +* @author ThinkBook +* @description 针对表【ts_dict】的数据库操作Service +* @createDate 2023-05-05 10:28:12 +*/ +public interface IDictService extends IService { + + /** + * 获取字典列表 + * + * @param dictQueryVo + * @return + */ + ResponseMessage pageByCondition(DictQueryVo dictQueryVo); + + /** + * 编辑字典 + * + * @param dictVo + * @return + */ + ResponseMessage edit(DictVo dictVo); + + /** + * 删除字典 + * @param id + * @return + */ + ResponseMessage delete(List id); + + /** + * 新增字典 + * @param dictVo + * @return + */ + ResponseMessage add(DictVo dictVo); +} diff --git a/adc-da-sys/src/main/java/com/adc/da/sys/util/BeanCopyUtils.java b/adc-da-sys/src/main/java/com/adc/da/sys/util/BeanCopyUtils.java new file mode 100644 index 0000000..a001852 --- /dev/null +++ b/adc-da-sys/src/main/java/com/adc/da/sys/util/BeanCopyUtils.java @@ -0,0 +1,36 @@ +package com.adc.da.sys.util; + +import org.springframework.beans.BeanUtils; + +import java.util.List; +import java.util.stream.Collectors; + +/** + * @author Mzaxd + * @since 2022-11-22 15:36 + */ +public class BeanCopyUtils { + + private BeanCopyUtils() { + } + + public static V copyBean(Object source, Class clazz){ + V result = null; + //创建目标对象 + try { + result = clazz.newInstance(); + //实现属性copy + BeanUtils.copyProperties(source, result); + } catch (Exception e) { + e.printStackTrace(); + } + //返回结果 + return result; + } + + public static List copyBeanList(List list, Class clazz) { + return list.stream() + .map(o -> copyBean(o, clazz)) + .collect(Collectors.toList()); + } +} diff --git a/adc-da-sys/src/main/java/com/adc/da/sys/vo/ConfigVo.java b/adc-da-sys/src/main/java/com/adc/da/sys/vo/ConfigVo.java new file mode 100644 index 0000000..a5f21ed --- /dev/null +++ b/adc-da-sys/src/main/java/com/adc/da/sys/vo/ConfigVo.java @@ -0,0 +1,24 @@ +package com.adc.da.sys.vo; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @author CaiHaohan + */ +@Data +@NoArgsConstructor +@AllArgsConstructor +public class ConfigVo { + + /** + * 配置项key + */ + private String configKey; + + /** + * 配置项value + */ + private String configValue; +} diff --git a/adc-da-sys/src/main/java/com/adc/da/sys/vo/DictQueryVo.java b/adc-da-sys/src/main/java/com/adc/da/sys/vo/DictQueryVo.java new file mode 100644 index 0000000..53e4c1a --- /dev/null +++ b/adc-da-sys/src/main/java/com/adc/da/sys/vo/DictQueryVo.java @@ -0,0 +1,35 @@ +package com.adc.da.sys.vo; + +import lombok.Data; + +import javax.validation.constraints.Min; +import javax.validation.constraints.NotNull; + +/** + * @author CaiHaohan + */ +@Data +public class DictQueryVo { + + /** + * 字典名称 + */ + private String dicName; + + /** + * 字典编码 + */ + private String dicCode; + + /** + * 页数 + */ + @Min(1) + private int pageNo; + + /** + * 每页数量 + */ + @NotNull + private int pageSize; +} \ No newline at end of file diff --git a/adc-da-sys/src/main/java/com/adc/da/sys/vo/DictVo.java b/adc-da-sys/src/main/java/com/adc/da/sys/vo/DictVo.java new file mode 100644 index 0000000..200b77f --- /dev/null +++ b/adc-da-sys/src/main/java/com/adc/da/sys/vo/DictVo.java @@ -0,0 +1,36 @@ +package com.adc.da.sys.vo; + + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @author CaiHaohan + */ +@Data +@NoArgsConstructor +@AllArgsConstructor +public class DictVo { + + /** + * 主键id + */ + private String id; + + /** + * 字典名称 + */ + private String dicName; + + /** + * 字典编码 + */ + private String dicCode; + + /** + * 描述 + */ + private String description; + +}