Merge remote-tracking branch 'origin/boot3.0' into boot3.0

# Conflicts:
#	cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/impl/SysPostServiceImpl.java
boot3.0
21407 2025-02-24 11:53:47 +08:00
commit 11d790a0f4
22 changed files with 1127 additions and 74 deletions

View File

@ -102,4 +102,5 @@ public class SysDictData extends BaseEntity {
public boolean getDefault () {
return SysWhetherEnum.isYes(this.isDefault);
}
}

View File

@ -11,8 +11,13 @@ import com.muyu.common.log.enums.BusinessType;
import com.muyu.common.security.annotation.RequiresPermissions;
import com.muyu.common.security.utils.SecurityUtils;
import com.muyu.common.system.domain.SysDictData;
import com.muyu.system.domain.model.SysDictDataAddModel;
import com.muyu.system.domain.model.SysDictDataPageQueryModel;
import com.muyu.system.domain.model.SysDictDataUpdModel;
import com.muyu.system.domain.rep.SysDictDataAddReq;
import com.muyu.system.domain.rep.SysDictDataListReq;
import com.muyu.system.domain.rep.SysDictDataUpdReq;
import com.muyu.system.domain.resp.SysDictDataListResp;
import com.muyu.system.service.SysDictDataService;
import com.muyu.system.service.SysDictTypeService;
import jakarta.servlet.http.HttpServletResponse;
@ -22,6 +27,7 @@ import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
/**
*
@ -37,15 +43,31 @@ public class SysDictDataController extends BaseController {
@Autowired
private SysDictTypeService dictTypeService;
/**
*
* @param sysDictDataListReq
* @return
*/
@RequiresPermissions("system:dict:list")
@PostMapping("/list")
public Result<DataPageResp<SysDictData>> list (@RequestBody SysDictDataListReq sysDictDataListReq) {
PageQueryModel<SysDictData> sysDictDataPageQueryModel = dictDataService.selectDictDataList(SysDictDataPageQueryModel.reqBuild(sysDictDataListReq));
public Result<DataPageResp<SysDictDataListResp>> list (@RequestBody SysDictDataListReq sysDictDataListReq) {
List<SysDictData> sysDictDataList = dictDataService.selectDictDataList(SysDictDataPageQueryModel.reqBuild(sysDictDataListReq)).getDataList();
List<SysDictDataListResp> sysDictDataListRespList = sysDictDataList.stream().map(
sysDictData -> SysDictDataListResp.buildResp(sysDictData)
).distinct().collect(Collectors.toList());
PageQueryModel<SysDictDataListResp> sysDictDataListRespPageQueryModel = new PageQueryModel<>();
sysDictDataListRespPageQueryModel.setTotal(sysDictDataListRespList.size());
sysDictDataListRespPageQueryModel.setDataList(sysDictDataListRespList);
return Result.success(
DataPageResp.of(sysDictDataPageQueryModel)
DataPageResp.of(sysDictDataListRespPageQueryModel)
);
}
/**
*
* @param response
* @param sysDictDataListReq
*/
@Log(title = "字典数据", businessType = BusinessType.EXPORT)
@RequiresPermissions("system:dict:export")
@PostMapping("/export")
@ -83,21 +105,21 @@ public class SysDictDataController extends BaseController {
@RequiresPermissions("system:dict:add")
@Log(title = "字典数据", businessType = BusinessType.INSERT)
@PostMapping
public Result<String> add (@Validated @RequestBody SysDictData dict) {
dict.setCreateBy(SecurityUtils.getUsername());
dictDataService.insertDictData(dict);
public Result<String> add (@Validated @RequestBody SysDictDataAddReq sysDictDataAddReq) {
sysDictDataAddReq.setCreateBy(SecurityUtils.getUsername());
dictDataService.insertDictData(SysDictDataAddModel.buildAddModel(sysDictDataAddReq));
return Result.success();
}
/**
*
*/
@RequiresPermissions("system:dict:edit")
//@RequiresPermissions("system:dict:edit")
@Log(title = "字典数据", businessType = BusinessType.UPDATE)
@PutMapping
public Result<String> edit (@Validated @RequestBody SysDictData dict) {
dict.setUpdateBy(SecurityUtils.getUsername());
dictDataService.updateDictData(dict);
public Result<String> edit (@Validated @RequestBody SysDictDataUpdReq sysDictDataUpdReq) {
sysDictDataUpdReq.setUpdateBy(SecurityUtils.getUsername());
dictDataService.updateDictData(SysDictDataUpdModel.buildUpdModel(sysDictDataUpdReq));
return Result.success();
}

View File

@ -9,6 +9,14 @@ import com.muyu.common.log.enums.BusinessType;
import com.muyu.common.security.annotation.RequiresPermissions;
import com.muyu.common.security.utils.SecurityUtils;
import com.muyu.common.system.domain.SysDictType;
import com.muyu.system.domain.model.SysDictTypeAddModel;
import com.muyu.system.domain.model.SysDictTypeListModel;
import com.muyu.system.domain.model.SysDictTypePageQueryModel;
import com.muyu.system.domain.model.SysDictTypeUpdModel;
import com.muyu.system.domain.rep.SysDictTypeAddReq;
import com.muyu.system.domain.rep.SysDictTypeListReq;
import com.muyu.system.domain.rep.SysDictTypeUpdReq;
import com.muyu.system.domain.resp.SysDictTypeListResp;
import com.muyu.system.service.SysDictTypeService;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.beans.factory.annotation.Autowired;
@ -16,6 +24,7 @@ import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.stream.Collectors;
/**
*
@ -30,18 +39,24 @@ public class SysDictTypeController extends BaseController {
@RequiresPermissions("system:dict:list")
@PostMapping("/list")
public Result<DataPageResp<SysDictType>> list (@RequestBody SysDictType dictType) {
List<SysDictType> list = dictTypeService.selectDictTypeList(dictType);
return Result.success(new DataPageResp<>(0,list));
public Result<DataPageResp<SysDictTypeListResp>> list (@RequestBody SysDictTypeListReq sysDictTypeListReq) {
List<SysDictTypeListResp> dictTypeListResps = dictTypeService.selectDictTypeList(SysDictTypePageQueryModel.reqBuild(sysDictTypeListReq))
.stream()
.map(SysDictTypeListResp::buildResp)
.collect(Collectors.toList());
return Result.success(new DataPageResp<>(dictTypeListResps.size(), dictTypeListResps));
}
@Log(title = "字典类型", businessType = BusinessType.EXPORT)
@RequiresPermissions("system:dict:export")
@PostMapping("/export")
public void export (HttpServletResponse response, SysDictType dictType) {
List<SysDictType> list = dictTypeService.selectDictTypeList(dictType);
ExcelUtil<SysDictType> util = new ExcelUtil<SysDictType>(SysDictType.class);
util.exportExcel(response, list, "字典类型");
public void export (HttpServletResponse response, SysDictTypeListReq sysDictTypeListReq) {
List<SysDictTypeListResp> dictTypeListResps = dictTypeService.selectDictTypeList(SysDictTypePageQueryModel.reqBuild(sysDictTypeListReq))
.stream()
.map(SysDictTypeListResp::buildResp)
.collect(Collectors.toList());
ExcelUtil<SysDictTypeListResp> util = new ExcelUtil<SysDictTypeListResp>(SysDictTypeListResp.class);
util.exportExcel(response, dictTypeListResps, "字典类型");
}
/**
@ -59,12 +74,12 @@ public class SysDictTypeController extends BaseController {
@RequiresPermissions("system:dict:add")
@Log(title = "字典类型", businessType = BusinessType.INSERT)
@PostMapping
public Result add (@Validated @RequestBody SysDictType dict) {
if (!dictTypeService.checkDictTypeUnique(dict)) {
return error("新增字典'" + dict.getDictName() + "'失败,字典类型已存在");
public Result add (@Validated @RequestBody SysDictTypeAddReq sysDictTypeAddReq) {
if (!dictTypeService.checkDictTypeUnique(SysDictTypeAddModel.buildModel(sysDictTypeAddReq))) {
return error("新增字典'" + sysDictTypeAddReq.getDictName() + "'失败,字典类型已存在");
}
dict.setCreateBy(SecurityUtils.getUsername());
dictTypeService.insertDictType(dict);
sysDictTypeAddReq.setCreateBy(SecurityUtils.getUsername());
dictTypeService.insertDictType(SysDictTypeAddModel.buildModel(sysDictTypeAddReq));
return Result.success();
}
@ -74,12 +89,12 @@ public class SysDictTypeController extends BaseController {
@RequiresPermissions("system:dict:edit")
@Log(title = "字典类型", businessType = BusinessType.UPDATE)
@PutMapping
public Result edit (@Validated @RequestBody SysDictType dict) {
if (!dictTypeService.checkDictTypeUnique(dict)) {
return error("修改字典'" + dict.getDictName() + "'失败,字典类型已存在");
public Result edit (@Validated @RequestBody SysDictTypeUpdReq sysDictTypeUpdReq) {
if (!dictTypeService.checkDictTypeUnique(SysDictTypeUpdModel.buildUpdModel(sysDictTypeUpdReq))) {
return error("修改字典'" + sysDictTypeUpdReq.getDictName() + "'失败,字典类型已存在");
}
dict.setUpdateBy(SecurityUtils.getUsername());
dictTypeService.updateDictType(dict);
sysDictTypeUpdReq.setUpdateBy(SecurityUtils.getUsername());
dictTypeService.updateDictType(SysDictTypeUpdModel.buildUpdModel(sysDictTypeUpdReq));
return Result.success();
}

View File

@ -0,0 +1,85 @@
package com.muyu.system.domain.model;
import com.muyu.system.domain.rep.SysDictDataAddReq;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
*
*
* @author
* @version 1.0
* @date 2025/2/23 19:29
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class SysDictDataAddModel {
/**
*
*/
private Long dictCode;
/**
*
*/
private Long dictSort;
/**
*
*/
private String dictLabel;
/**
*
*/
private String dictValue;
/**
*
*/
private String dictType;
/**
*
*/
private String cssClass;
/**
*
*/
private String listClass;
/**
* Y N
*/
private String isDefault;
/**
* 0 1
*/
private String status;
/**
*
*
* @param sysDictDataAddReq
* @return
*/
public static SysDictDataAddModel buildAddModel(SysDictDataAddReq sysDictDataAddReq) {
return SysDictDataAddModel.builder()
.dictCode(sysDictDataAddReq.getDictCode())
.dictSort(sysDictDataAddReq.getDictSort())
.dictLabel(sysDictDataAddReq.getDictLabel())
.dictValue(sysDictDataAddReq.getDictValue())
.dictType(sysDictDataAddReq.getDictType())
.cssClass(sysDictDataAddReq.getCssClass())
.listClass(sysDictDataAddReq.getListClass())
.isDefault(sysDictDataAddReq.getIsDefault())
.status(sysDictDataAddReq.getStatus())
.build();
}
}

View File

@ -0,0 +1,69 @@
package com.muyu.system.domain.model;
import com.muyu.common.core.annotation.Excel;
import com.muyu.common.core.web.domain.BaseEntity;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
/**
*
*
* @author SunLY
* @version 1.0
* @date 2025/2/23 21:24
*/
@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
public class SysDictDataListModel extends BaseEntity {
/**
*
*/
@Excel(name = "字典编码", cellType = Excel.ColumnType.NUMERIC)
private Long dictCode;
/**
*
*/
@Excel(name = "字典排序", cellType = Excel.ColumnType.NUMERIC)
private Long dictSort;
/**
*
*/
@Excel(name = "字典标签")
private String dictLabel;
/**
*
*/
@Excel(name = "字典键值")
private String dictValue;
/**
*
*/
@Excel(name = "字典类型")
private String dictType;
/**
*
*/
private String cssClass;
/**
*
*/
private String listClass;
/**
* Y N
*/
@Excel(name = "是否默认", readConverterExp = "Y=是,N=否")
private String isDefault;
}

View File

@ -31,6 +31,9 @@ public class SysDictDataPageQueryModel extends QueryModel<SysDictDataPageQueryMo
*/
private String status;
public static SysDictDataPageQueryModel reqBuild(SysDictDataListReq sysDictDataListReq) {
SysDictDataPageQueryModel sysDictDataPageQueryModel = SysDictDataPageQueryModel.builder()
.dictType(sysDictDataListReq.getDictType())

View File

@ -0,0 +1,113 @@
package com.muyu.system.domain.model;
import com.muyu.common.core.enums.SysWhetherEnum;
import com.muyu.common.core.web.domain.BaseEntity;
import com.muyu.system.domain.rep.SysDictDataUpdReq;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.Size;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
/**
*
*
* @author SunLY
* @version 1.0
* @date 2025/2/23 19:29
*/
@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
public class SysDictDataUpdModel extends BaseEntity {
/**
*
*/
private Long dictCode;
/**
*
*/
private Long dictSort;
/**
*
*/
private String dictLabel;
/**
*
*/
private String dictValue;
/**
*
*/
private String dictType;
/**
*
*/
private String cssClass;
/**
*
*/
private String listClass;
/**
* Y N
*/
private String isDefault;
/**
* 0 1
*/
private String status;
@NotBlank(message = "字典标签不能为空")
@Size(min = 0, max = 100, message = "字典标签长度不能超过100个字符")
public String getDictLabel () {
return dictLabel;
}
@NotBlank(message = "字典键值不能为空")
@Size(min = 0, max = 100, message = "字典键值长度不能超过100个字符")
public String getDictValue () {
return dictValue;
}
@NotBlank(message = "字典类型不能为空")
@Size(min = 0, max = 100, message = "字典类型长度不能超过100个字符")
public String getDictType () {
return dictType;
}
@Size(min = 0, max = 100, message = "样式属性长度不能超过100个字符")
public String getCssClass () {
return cssClass;
}
public boolean getDefault () {
return SysWhetherEnum.isYes(this.isDefault);
}
public static SysDictDataUpdModel buildUpdModel(SysDictDataUpdReq sysDictDataUpdReq){
return SysDictDataUpdModel.builder()
.dictCode(sysDictDataUpdReq.getDictCode())
.dictSort(sysDictDataUpdReq.getDictSort())
.dictLabel(sysDictDataUpdReq.getDictLabel())
.dictValue(sysDictDataUpdReq.getDictValue())
.dictType(sysDictDataUpdReq.getDictType())
.cssClass(sysDictDataUpdReq.getCssClass())
.listClass(sysDictDataUpdReq.getListClass())
.isDefault(sysDictDataUpdReq.getIsDefault())
.status(sysDictDataUpdReq.getStatus())
.build();
}
}

View File

@ -0,0 +1,58 @@
package com.muyu.system.domain.model;
import com.muyu.common.core.web.domain.BaseEntity;
import com.muyu.system.domain.rep.SysDictTypeAddReq;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.Pattern;
import jakarta.validation.constraints.Size;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
/**
*
*
* @author
* @version 1.0
* @date 2025/2/24 1:35
*/
@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
public class SysDictTypeAddModel extends BaseEntity {
private static final long serialVersionUID = 1L;
/**
*
*/
private Long dictId;
/**
*
*/
private String dictName;
/**
*
*/
private String dictType;
/**
* 0 1
*/
private String status;
public static SysDictTypeAddModel buildModel(SysDictTypeAddReq sysDictTypeAddReq){
return SysDictTypeAddModel.builder()
.dictId(sysDictTypeAddReq.getDictId())
.dictName(sysDictTypeAddReq.getDictName())
.dictType(sysDictTypeAddReq.getDictType())
.status(sysDictTypeAddReq.getStatus())
.build();
}
}

View File

@ -0,0 +1,59 @@
package com.muyu.system.domain.model;
import com.muyu.common.core.annotation.Excel;
import com.muyu.common.core.annotation.Excel.ColumnType;
import com.muyu.common.core.web.domain.BaseEntity;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.Pattern;
import jakarta.validation.constraints.Size;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
/**
*
*
* @author
*/
@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
public class SysDictTypeListModel extends BaseEntity {
private static final long serialVersionUID = 1L;
/**
*
*/
@Excel(name = "字典主键", cellType = ColumnType.NUMERIC)
private Long dictId;
/**
*
*/
@Excel(name = "字典名称")
private String dictName;
/**
*
*/
@Excel(name = "字典类型")
private String dictType;
/**
* 0 1
*/
@Excel(name = "状态", readConverterExp = "0=正常,1=停用")
private String status;
@NotBlank(message = "字典名称不能为空")
@Size(min = 0, max = 100, message = "字典类型名称长度不能超过100个字符")
public String getDictName () {
return dictName;
}
}

View File

@ -1,5 +1,7 @@
package com.muyu.system.domain.model;
import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.muyu.common.core.web.model.QueryModel;
import com.muyu.system.domain.rep.SysDictTypeListReq;
import lombok.AllArgsConstructor;
@ -9,6 +11,8 @@ import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
/**
*
@ -45,6 +49,24 @@ public class SysDictTypePageQueryModel extends QueryModel<SysDictTypePageQueryMo
*/
private Date endTime;
/**
*
*/
@JsonInclude(JsonInclude.Include.NON_EMPTY)
@TableField(exist = false)
private Map<String, Object> params;
public Map<String, Object> getParams () {
if (params == null) {
params = new HashMap<>();
}
return params;
}
public void setParams (Map<String, Object> params) {
this.params = params;
}
public static SysDictTypePageQueryModel reqBuild(SysDictTypeListReq sysDictTypeListReq) {
SysDictTypePageQueryModel sysDictTypePageQueryModel = SysDictTypePageQueryModel.builder()
.dictName(sysDictTypeListReq.getDictName())

View File

@ -0,0 +1,58 @@
package com.muyu.system.domain.model;
import com.muyu.common.core.web.domain.BaseEntity;
import com.muyu.system.domain.rep.SysDictTypeUpdReq;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.Pattern;
import jakarta.validation.constraints.Size;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
/**
*
*
* @author
* @version 1.0
* @date 2025/2/24 1:35
*/
@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
public class SysDictTypeUpdModel extends BaseEntity {
private static final long serialVersionUID = 1L;
/**
*
*/
private Long dictId;
/**
*
*/
private String dictName;
/**
*
*/
private String dictType;
/**
* 0 1
*/
private String status;
public static SysDictTypeUpdModel buildUpdModel(SysDictTypeUpdReq sysDictTypeUpdReq) {
return SysDictTypeUpdModel.builder()
.dictId(sysDictTypeUpdReq.getDictId())
.dictName(sysDictTypeUpdReq.getDictName())
.dictType(sysDictTypeUpdReq.getDictType())
.status(sysDictTypeUpdReq.getStatus())
.build();
}
}

View File

@ -41,4 +41,6 @@ public class SysConfigAddReq {
*
*/
private String remark;
}

View File

@ -0,0 +1,96 @@
package com.muyu.system.domain.rep;
import com.muyu.common.core.annotation.Excel;
import com.muyu.common.core.enums.SysWhetherEnum;
import com.muyu.common.core.web.domain.BaseEntity;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.Size;
import lombok.*;
import lombok.experimental.SuperBuilder;
/**
*
*
* @author
* @version 1.0
* @date 2025/2/23 19:29
*/
@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
public class SysDictDataAddReq extends BaseEntity {
/**
*
*/
private Long dictCode;
/**
*
*/
private Long dictSort;
/**
*
*/
private String dictLabel;
/**
*
*/
private String dictValue;
/**
*
*/
private String dictType;
/**
*
*/
private String cssClass;
/**
*
*/
private String listClass;
/**
* Y N
*/
private String isDefault;
/**
* 0 1
*/
private String status;
@NotBlank(message = "字典标签不能为空")
@Size(min = 0, max = 100, message = "字典标签长度不能超过100个字符")
public String getDictLabel () {
return dictLabel;
}
@NotBlank(message = "字典键值不能为空")
@Size(min = 0, max = 100, message = "字典键值长度不能超过100个字符")
public String getDictValue () {
return dictValue;
}
@NotBlank(message = "字典类型不能为空")
@Size(min = 0, max = 100, message = "字典类型长度不能超过100个字符")
public String getDictType () {
return dictType;
}
@Size(min = 0, max = 100, message = "样式属性长度不能超过100个字符")
public String getCssClass () {
return cssClass;
}
public boolean getDefault () {
return SysWhetherEnum.isYes(this.isDefault);
}
}

View File

@ -0,0 +1,98 @@
package com.muyu.system.domain.rep;
import com.muyu.common.core.enums.SysWhetherEnum;
import com.muyu.common.core.web.domain.BaseEntity;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.Size;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
/**
*
*
* @author
* @version 1.0
* @date 2025/2/23 19:29
*/
@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
public class SysDictDataUpdReq extends BaseEntity {
/**
*
*/
private Long dictCode;
/**
*
*/
private Long dictSort;
/**
*
*/
private String dictLabel;
/**
*
*/
private String dictValue;
/**
*
*/
private String dictType;
/**
*
*/
private String cssClass;
/**
*
*/
private String listClass;
/**
* Y N
*/
private String isDefault;
/**
* 0 1
*/
private String status;
@NotBlank(message = "字典标签不能为空")
@Size(min = 0, max = 100, message = "字典标签长度不能超过100个字符")
public String getDictLabel () {
return dictLabel;
}
@NotBlank(message = "字典键值不能为空")
@Size(min = 0, max = 100, message = "字典键值长度不能超过100个字符")
public String getDictValue () {
return dictValue;
}
@NotBlank(message = "字典类型不能为空")
@Size(min = 0, max = 100, message = "字典类型长度不能超过100个字符")
public String getDictType () {
return dictType;
}
@Size(min = 0, max = 100, message = "样式属性长度不能超过100个字符")
public String getCssClass () {
return cssClass;
}
public boolean getDefault () {
return SysWhetherEnum.isYes(this.isDefault);
}
}

View File

@ -0,0 +1,62 @@
package com.muyu.system.domain.rep;
import com.muyu.common.core.annotation.Excel;
import com.muyu.common.core.web.domain.BaseEntity;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.Pattern;
import jakarta.validation.constraints.Size;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
/**
*
*
* @author
* @version 1.0
* @date 2025/2/24 1:35
*/
@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
public class SysDictTypeAddReq extends BaseEntity {
private static final long serialVersionUID = 1L;
/**
*
*/
private Long dictId;
/**
*
*/
private String dictName;
/**
*
*/
private String dictType;
/**
* 0 1
*/
private String status;
@NotBlank(message = "字典名称不能为空")
@Size(min = 0, max = 100, message = "字典类型名称长度不能超过100个字符")
public String getDictName () {
return dictName;
}
@NotBlank(message = "字典类型不能为空")
@Size(min = 0, max = 100, message = "字典类型类型长度不能超过100个字符")
@Pattern(regexp = "^[a-z][a-z0-9_]*$", message = "字典类型必须以字母开头,且只能为(小写字母,数字,下滑线)")
public String getDictType () {
return dictType;
}
}

View File

@ -0,0 +1,60 @@
package com.muyu.system.domain.rep;
import com.muyu.common.core.web.domain.BaseEntity;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.Pattern;
import jakarta.validation.constraints.Size;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
/**
*
*
* @author
* @version 1.0
* @date 2025/2/24 1:35
*/
@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
public class SysDictTypeUpdReq extends BaseEntity {
private static final long serialVersionUID = 1L;
/**
*
*/
private Long dictId;
/**
*
*/
private String dictName;
/**
*
*/
private String dictType;
/**
* 0 1
*/
private String status;
@NotBlank(message = "字典名称不能为空")
@Size(min = 0, max = 100, message = "字典类型名称长度不能超过100个字符")
public String getDictName () {
return dictName;
}
@NotBlank(message = "字典类型不能为空")
@Size(min = 0, max = 100, message = "字典类型类型长度不能超过100个字符")
@Pattern(regexp = "^[a-z][a-z0-9_]*$", message = "字典类型必须以字母开头,且只能为(小写字母,数字,下滑线)")
public String getDictType () {
return dictType;
}
}

View File

@ -0,0 +1,88 @@
package com.muyu.system.domain.resp;
import com.muyu.common.core.annotation.Excel;
import com.muyu.common.core.web.domain.BaseEntity;
import com.muyu.common.system.domain.SysDictData;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
/**
* @author SunLY
* @version 1.0
* @date 2025/2/23 21:24
*/
@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
public class SysDictDataListResp extends BaseEntity {
/**
*
*/
@Excel(name = "字典编码", cellType = Excel.ColumnType.NUMERIC)
private Long dictCode;
/**
*
*/
@Excel(name = "字典排序", cellType = Excel.ColumnType.NUMERIC)
private Long dictSort;
/**
*
*/
@Excel(name = "字典标签")
private String dictLabel;
/**
*
*/
@Excel(name = "字典键值")
private String dictValue;
/**
*
*/
@Excel(name = "字典类型")
private String dictType;
/**
*
*/
private String cssClass;
/**
*
*/
private String listClass;
/**
* Y N
*/
@Excel(name = "是否默认", readConverterExp = "Y=是,N=否")
private String isDefault;
/**
* 0 1
*/
@Excel(name = "状态", readConverterExp = "0=正常,1=停用")
private String status;
public static SysDictDataListResp buildResp(SysDictData sysDictData){
return SysDictDataListResp.builder()
.dictCode(sysDictData.getDictCode())
.dictSort(sysDictData.getDictSort())
.dictLabel(sysDictData.getDictLabel())
.dictValue(sysDictData.getDictValue())
.dictType(sysDictData.getDictType())
.cssClass(sysDictData.getCssClass())
.listClass(sysDictData.getListClass())
.isDefault(sysDictData.getIsDefault())
.status(sysDictData.getStatus())
.build();
}
}

View File

@ -0,0 +1,68 @@
package com.muyu.system.domain.resp;
import com.muyu.common.core.annotation.Excel;
import com.muyu.common.core.annotation.Excel.ColumnType;
import com.muyu.common.core.web.domain.BaseEntity;
import com.muyu.system.domain.model.SysDictTypeListModel;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.Pattern;
import jakarta.validation.constraints.Size;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
/**
*
*
* @author
*/
@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
public class SysDictTypeListResp extends BaseEntity {
private static final long serialVersionUID = 1L;
/**
*
*/
@Excel(name = "字典主键", cellType = ColumnType.NUMERIC)
private Long dictId;
/**
*
*/
@Excel(name = "字典名称")
private String dictName;
/**
*
*/
@Excel(name = "字典类型")
private String dictType;
/**
* 0 1
*/
@Excel(name = "状态", readConverterExp = "0=正常,1=停用")
private String status;
@NotBlank(message = "字典名称不能为空")
@Size(min = 0, max = 100, message = "字典类型名称长度不能超过100个字符")
public String getDictName () {
return dictName;
}
public static SysDictTypeListResp buildResp(SysDictTypeListModel sysDictTypeListModel) {
return SysDictTypeListResp.builder()
.dictId(sysDictTypeListModel.getDictId())
.dictName(sysDictTypeListModel.getDictName())
.dictType(sysDictTypeListModel.getDictType())
.status(sysDictTypeListModel.getStatus())
.build();
}
}

View File

@ -3,7 +3,10 @@ package com.muyu.system.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.muyu.common.core.web.page.PageQueryModel;
import com.muyu.common.system.domain.SysDictData;
import com.muyu.system.domain.model.SysDictDataAddModel;
import com.muyu.system.domain.model.SysDictDataPageQueryModel;
import com.muyu.system.domain.model.SysDictDataUpdModel;
import com.muyu.system.domain.rep.SysDictDataUpdReq;
import java.util.List;
@ -51,16 +54,16 @@ public interface SysDictDataService extends IService<SysDictData> {
/**
*
*
* @param dictData
* @param sysDictDataAddModel
*/
public void insertDictData (SysDictData dictData);
public void insertDictData (SysDictDataAddModel sysDictDataAddModel);
/**
*
*
* @param dictData
* @param sysDictDataUpdModel
*/
public void updateDictData (SysDictData dictData);
public void updateDictData (SysDictDataUpdModel sysDictDataUpdModel);
PageQueryModel<SysDictData> pageQuery(SysDictDataPageQueryModel sysDictDataPageQueryModel);

View File

@ -4,7 +4,10 @@ import com.baomidou.mybatisplus.extension.service.IService;
import com.muyu.common.core.web.page.PageQueryModel;
import com.muyu.common.system.domain.SysDictData;
import com.muyu.common.system.domain.SysDictType;
import com.muyu.system.domain.model.SysDictTypeAddModel;
import com.muyu.system.domain.model.SysDictTypeListModel;
import com.muyu.system.domain.model.SysDictTypePageQueryModel;
import com.muyu.system.domain.model.SysDictTypeUpdModel;
import java.util.List;
@ -17,11 +20,11 @@ public interface SysDictTypeService extends IService<SysDictType> {
/**
*
*
* @param dictType
* @param sysDictTypePageQueryModel
*
* @return
*/
public List<SysDictType> selectDictTypeList (SysDictType dictType);
public List<SysDictTypeListModel> selectDictTypeList (SysDictTypePageQueryModel sysDictTypePageQueryModel);
/**
*
@ -82,27 +85,36 @@ public interface SysDictTypeService extends IService<SysDictType> {
/**
*
*
* @param dictType
* @param sysDictTypeAddModel
*
* @return
*/
public void insertDictType (SysDictType dictType);
public void insertDictType (SysDictTypeAddModel sysDictTypeAddModel);
/**
*
*
* @param dictType
* @param sysDictTypeUpdModel
*/
public void updateDictType (SysDictType dictType);
public void updateDictType (SysDictTypeUpdModel sysDictTypeUpdModel);
/**
*
*
* @param dictType
* @param sysDictTypeAddModel
*
* @return
*/
public boolean checkDictTypeUnique (SysDictType dictType);
public boolean checkDictTypeUnique (SysDictTypeAddModel sysDictTypeAddModel);
/**
*
*
* @param sysDictTypeUpdModel
*
* @return
*/
public boolean checkDictTypeUnique (SysDictTypeUpdModel sysDictTypeUpdModel);
PageQueryModel<SysDictType> pageQuery(SysDictTypePageQueryModel sysDictTypePageQueryModel);

View File

@ -9,7 +9,9 @@ import com.muyu.common.core.utils.StringUtils;
import com.muyu.common.core.web.page.PageQueryModel;
import com.muyu.common.security.utils.DictUtils;
import com.muyu.common.system.domain.SysDictData;
import com.muyu.system.domain.model.SysDictDataAddModel;
import com.muyu.system.domain.model.SysDictDataPageQueryModel;
import com.muyu.system.domain.model.SysDictDataUpdModel;
import com.muyu.system.mapper.SysDictDataMapper;
import com.muyu.system.service.SysDictDataService;
import org.springframework.beans.factory.annotation.Autowired;
@ -25,15 +27,12 @@ import java.util.List;
*/
@Service
public class SysDictDataServiceImpl extends ServiceImpl<SysDictDataMapper, SysDictData> implements SysDictDataService {
@Autowired
private SysDictDataMapper dictDataMapper;
/**
*
*
* @param dictData
* @param pageQueryModel
*
* @return
*/
@ -101,26 +100,48 @@ public class SysDictDataServiceImpl extends ServiceImpl<SysDictDataMapper, SysDi
/**
*
*
* @param data
* @param sysDictDataAddModel
*/
@Override
public void insertDictData (SysDictData data) {
if (this.save(data)) {
List<SysDictData> dictDataList = this.selectDictDataByType(data.getDictType());
DictUtils.setDictCache(data.getDictType(), dictDataList);
public void insertDictData (SysDictDataAddModel sysDictDataAddModel) {
SysDictData sysDictData = SysDictData.builder()
.dictCode(sysDictDataAddModel.getDictCode())
.dictSort(sysDictDataAddModel.getDictSort())
.dictLabel(sysDictDataAddModel.getDictLabel())
.dictValue(sysDictDataAddModel.getDictValue())
.dictType(sysDictDataAddModel.getDictType())
.cssClass(sysDictDataAddModel.getCssClass())
.listClass(sysDictDataAddModel.getListClass())
.isDefault(sysDictDataAddModel.getIsDefault())
.status(sysDictDataAddModel.getStatus())
.build();
if (this.save(sysDictData)) {
List<SysDictData> dictDataList = this.selectDictDataByType(sysDictData.getDictType());
DictUtils.setDictCache(sysDictData.getDictType(), dictDataList);
}
}
/**
*
*
* @param data
* @param sysDictDataUpdModel
*/
@Override
public void updateDictData (SysDictData data) {
if (this.updateById(data)) {
List<SysDictData> dictDataList = this.selectDictDataByType(data.getDictType());
DictUtils.setDictCache(data.getDictType(), dictDataList);
public void updateDictData (SysDictDataUpdModel sysDictDataUpdModel) {
SysDictData sysDictData = SysDictData.builder()
.dictCode(sysDictDataUpdModel.getDictCode())
.dictSort(sysDictDataUpdModel.getDictSort())
.dictLabel(sysDictDataUpdModel.getDictLabel())
.dictValue(sysDictDataUpdModel.getDictValue())
.dictType(sysDictDataUpdModel.getDictType())
.cssClass(sysDictDataUpdModel.getCssClass())
.listClass(sysDictDataUpdModel.getListClass())
.isDefault(sysDictDataUpdModel.getIsDefault())
.status(sysDictDataUpdModel.getStatus())
.build();
if (this.updateById(sysDictData)) {
List<SysDictData> dictDataList = this.selectDictDataByType(sysDictData.getDictType());
DictUtils.setDictCache(sysDictData.getDictType(), dictDataList);
}
}

View File

@ -10,7 +10,10 @@ import com.muyu.common.core.web.page.PageQueryModel;
import com.muyu.common.security.utils.DictUtils;
import com.muyu.common.system.domain.SysDictData;
import com.muyu.common.system.domain.SysDictType;
import com.muyu.system.domain.model.SysDictTypeAddModel;
import com.muyu.system.domain.model.SysDictTypeListModel;
import com.muyu.system.domain.model.SysDictTypePageQueryModel;
import com.muyu.system.domain.model.SysDictTypeUpdModel;
import com.muyu.system.mapper.SysDictTypeMapper;
import com.muyu.system.service.SysDictDataService;
import com.muyu.system.service.SysDictTypeService;
@ -30,8 +33,7 @@ import java.util.stream.Collectors;
*/
@Service
public class SysDictTypeServiceImpl extends ServiceImpl<SysDictTypeMapper, SysDictType> implements SysDictTypeService {
@Autowired
private SysDictTypeMapper dictTypeMapper;
@Autowired
private SysDictDataService sysDictDataService;
@ -59,24 +61,34 @@ public class SysDictTypeServiceImpl extends ServiceImpl<SysDictTypeMapper, SysDi
/**
*
*
* @param dictType
* @param sysDictTypePageQueryModel
*
* @return
*/
@Override
public List<SysDictType> selectDictTypeList (SysDictType dictType) {
public List<SysDictTypeListModel> selectDictTypeList (SysDictTypePageQueryModel sysDictTypePageQueryModel) {
LambdaQueryWrapper<SysDictType> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.like(StringUtils.isNotEmpty(dictType.getDictName()),SysDictType::getDictName, dictType.getDictName());
lambdaQueryWrapper.eq(StringUtils.isNotEmpty(dictType.getStatus()),SysDictType::getStatus, dictType.getStatus());
lambdaQueryWrapper.like(StringUtils.isNotEmpty(dictType.getDictType()),SysDictType::getDictType, dictType.getDictType());
Map<String, Object> params = dictType.getParams();
lambdaQueryWrapper.like(StringUtils.isNotEmpty(sysDictTypePageQueryModel.getDictName()),SysDictType::getDictName, sysDictTypePageQueryModel.getDictName());
lambdaQueryWrapper.eq(StringUtils.isNotEmpty(sysDictTypePageQueryModel.getStatus()),SysDictType::getStatus, sysDictTypePageQueryModel.getStatus());
lambdaQueryWrapper.like(StringUtils.isNotEmpty(sysDictTypePageQueryModel.getDictType()),SysDictType::getDictType, sysDictTypePageQueryModel.getDictType());
Map<String, Object> params = sysDictTypePageQueryModel.getParams();
Date beginTime = (Date) params.get("beginTime");
Date endTime = (Date) params.get("endTime");
lambdaQueryWrapper.between(
beginTime != null && endTime != null,
SysDictType::getCreateTime, beginTime, endTime
);
return this.list(lambdaQueryWrapper);
List<SysDictType> sysDictTypeList = this.list(lambdaQueryWrapper);
List<SysDictTypeListModel> sysDictTypeListModelList = sysDictTypeList.stream().map(
sysDictType -> SysDictTypeListModel.builder()
.dictId(sysDictType.getDictId())
.dictName(sysDictType.getDictName())
.dictType(sysDictType.getDictType())
.status(sysDictType.getStatus())
.remark(sysDictType.getRemark())
.build()
).distinct().collect(Collectors.toList());
return sysDictTypeListModelList;
}
/**
@ -191,25 +203,38 @@ public class SysDictTypeServiceImpl extends ServiceImpl<SysDictTypeMapper, SysDi
/**
*
*
* @param dict
* @param sysDictTypeAddModel
*
* @return
*/
@Override
public void insertDictType (SysDictType dict) {
if (this.save(dict)) {
DictUtils.setDictCache(dict.getDictType(), null);
public void insertDictType (SysDictTypeAddModel sysDictTypeAddModel) {
SysDictType sysDictType = SysDictType.builder()
.dictName(sysDictTypeAddModel.getDictName())
.dictType(sysDictTypeAddModel.getDictType())
.status(sysDictTypeAddModel.getStatus())
.remark(sysDictTypeAddModel.getRemark())
.build();
if (this.save(sysDictType)) {
DictUtils.setDictCache(sysDictType.getDictType(), null);
}
}
/**
*
*
* @param dict
* @param sysDictTypeUpdModel
*/
@Override
@Transactional(rollbackFor = Exception.class)
public void updateDictType (SysDictType dict) {
public void updateDictType (SysDictTypeUpdModel sysDictTypeUpdModel) {
SysDictType dict = SysDictType.builder()
.dictId(sysDictTypeUpdModel.getDictId())
.dictName(sysDictTypeUpdModel.getDictName())
.dictType(sysDictTypeUpdModel.getDictType())
.status(sysDictTypeUpdModel.getStatus())
.remark(sysDictTypeUpdModel.getRemark())
.build();
SysDictType oldDict = this.getById(dict.getDictId());
sysDictDataService.updateDictDataType(oldDict.getDictType(), dict.getDictType());
if (this.updateById(dict)) {
@ -221,17 +246,30 @@ public class SysDictTypeServiceImpl extends ServiceImpl<SysDictTypeMapper, SysDi
/**
*
*
* @param dict
* @param sysDictTypeAddModel
*
* @return
*/
@Override
public boolean checkDictTypeUnique (SysDictType dict) {
Assert.notNull(dict.getDictType(), "字典类型不可为空");
Long dictId = StringUtils.isNull(dict.getDictId()) ? -1L : dict.getDictId();
public boolean checkDictTypeUnique (SysDictTypeAddModel sysDictTypeAddModel) {
Assert.notNull(sysDictTypeAddModel.getDictType(), "字典类型不可为空");
Long dictId = StringUtils.isNull(sysDictTypeAddModel.getDictId()) ? -1L : sysDictTypeAddModel.getDictId();
LambdaQueryWrapper<SysDictType> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.eq(SysDictType::getDictType, dict.getDictType());
lambdaQueryWrapper.ne(dict.getDictId() != null, SysDictType::getDictId, dictId);
lambdaQueryWrapper.eq(SysDictType::getDictType, sysDictTypeAddModel.getDictType());
lambdaQueryWrapper.ne(sysDictTypeAddModel.getDictId() != null, SysDictType::getDictId, dictId);
if (this.count(lambdaQueryWrapper) > 0) {
return UserConstants.NOT_UNIQUE;
}
return UserConstants.UNIQUE;
}
@Override
public boolean checkDictTypeUnique(SysDictTypeUpdModel sysDictTypeUpdModel) {
Assert.notNull(sysDictTypeUpdModel.getDictType(), "字典类型不可为空");
Long dictId = StringUtils.isNull(sysDictTypeUpdModel.getDictId()) ? -1L : sysDictTypeUpdModel.getDictId();
LambdaQueryWrapper<SysDictType> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.eq(SysDictType::getDictType, sysDictTypeUpdModel.getDictType());
lambdaQueryWrapper.ne(sysDictTypeUpdModel.getDictId() != null, SysDictType::getDictId, dictId);
if (this.count(lambdaQueryWrapper) > 0) {
return UserConstants.NOT_UNIQUE;
}