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 index 9d3c462..c7dd7cc 100644 --- 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 @@ -6,7 +6,11 @@ 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; /** * @@ -15,6 +19,9 @@ import lombok.Data; */ @TableName(value ="ts_dict") @Data +@Accessors(chain = true) +@NoArgsConstructor +@AllArgsConstructor public class DictEntity implements Serializable { /** * 主键id 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 index 88eca1a..92e2aa3 100644 --- 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 @@ -11,6 +11,7 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; +import javax.validation.Valid; /** @@ -30,7 +31,7 @@ public class DictController { */ @ApiOperation(value = "分页获取所有数据字典") @GetMapping("/page") - public ResponseMessage page(@RequestBody DictQueryVo dictQueryVo) { + public ResponseMessage page(@Valid DictQueryVo dictQueryVo) { return dictService.list(dictQueryVo); } @@ -38,7 +39,7 @@ public class DictController { * 修改一个字典 */ @ApiOperation(value = "修改数据字典") - @PostMapping("/edit") + @PutMapping("/edit") public ResponseMessage edit(@RequestBody DictVo dictVo) { return dictService.edit(dictVo); } @@ -47,7 +48,7 @@ public class DictController { * 删除一个字典 */ @ApiOperation(value = "删除数据字典") - @PostMapping("/{id}") + @DeleteMapping("/{id}") public ResponseMessage delete(@PathVariable String id) { return dictService.delete(id); } @@ -58,7 +59,7 @@ public class DictController { @ApiOperation(value = "新增数据字典") @PostMapping("/add") public ResponseMessage add(@RequestBody DictVo dictVo) { - return dictService.add(id); + return dictService.add(dictVo); } 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 index 66cbe1d..b3412e8 100644 --- 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 @@ -2,10 +2,12 @@ package com.adc.da.sys.service; import cn.hutool.core.bean.BeanUtil; 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; @@ -17,18 +19,19 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import javax.annotation.Resource; +import java.util.Date; import java.util.List; import java.util.stream.Collectors; /** -* @author ThinkBook -* @description 针对表【ts_dict】的数据库操作Service实现 -* @createDate 2023-05-05 10:28:12 -*/ + * @author ThinkBook + * @description 针对表【ts_dict】的数据库操作Service实现 + * @createDate 2023-05-05 10:28:12 + */ @Service @Slf4j public class DictServiceImpl extends ServiceImpl - implements IDictService { + implements IDictService { @Resource private DictDao dictDao; @@ -37,27 +40,22 @@ public class DictServiceImpl extends ServiceImpl public ResponseMessage list(DictQueryVo dictQueryVo) { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(DictEntity::getDelFlag, 0); - IPage page = new Page<>(); - page.setCurrent(dictQueryVo.getPageNo()); - page.setSize(dictQueryVo.getPageSize()); + IPage page = new Page<>(dictQueryVo.getPageNo(), dictQueryVo.getPageSize()); page(page, wrapper); - IPage dictVoPage = new Page<>(); - BeanUtil.copyProperties(page, dictVoPage); - List dictVos = page.getRecords().stream().map(dict -> { - DictVo dictVo = new DictVo(); - BeanUtil.copyProperties(dict, dictVo); - return dictVo; - }).collect(Collectors.toList()); + IPage returnPage = new Page<>(); + List dictVos = BeanCopyUtils.copyBeanList(page.getRecords(), DictVo.class); - dictVoPage.setRecords(dictVos); - return Result.success(dictVoPage); + returnPage.setRecords(dictVos); + return Result.success(returnPage); } @Override public ResponseMessage edit(DictVo dictVo) { try { DictEntity dictEntity = new DictEntity(); + //字典编码不可变 + dictVo.setDicCode(null); BeanUtil.copyProperties(dictVo, dictEntity); dictDao.updateById(dictEntity); log.info("编辑数据字典{}成功", dictEntity.getDicName()); @@ -70,7 +68,13 @@ public class DictServiceImpl extends ServiceImpl @Override public ResponseMessage delete(String id) { + DictEntity entity = getById(id); + if (entity == null) { + return Result.error("字典不存在"); + } + DictEntity dictEntity = new DictEntity(); + dictEntity.setId(id); dictEntity.setDelFlag(1); if (updateById(dictEntity)) { return Result.success("删除成功"); @@ -78,6 +82,31 @@ public class DictServiceImpl extends ServiceImpl return Result.error("删除失败"); } + @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()) + .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/IDictService.java b/adc-da-sys/src/main/java/com/adc/da/sys/service/iservice/IDictService.java index c5baa6c..420d422 100644 --- 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 @@ -1,9 +1,11 @@ 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; /** @@ -35,4 +37,11 @@ public interface IDictService extends IService { * @return */ ResponseMessage delete(String 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/DictQueryVo.java b/adc-da-sys/src/main/java/com/adc/da/sys/vo/DictQueryVo.java index 989404c..d9741e6 100644 --- 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 @@ -2,6 +2,9 @@ package com.adc.da.sys.vo; import lombok.Data; +import javax.validation.constraints.Min; +import javax.validation.constraints.NotNull; + /** * @author CaiHaohan */ @@ -11,10 +14,12 @@ public class DictQueryVo { /** * 页数 */ + @Min(1) private int pageNo; /** * 每页数量 */ + @NotNull private int pageSize; } \ No newline at end of file