数据字典模块部分提交
							parent
							
								
									5b07634cfd
								
							
						
					
					
						commit
						8089319f64
					
				|  | @ -1,4 +1,4 @@ | ||||||
| package cn.iocoder.mall.admin.application.controller; | package cn.iocoder.mall.admin.application.controller.admins; | ||||||
| 
 | 
 | ||||||
| import cn.iocoder.common.framework.vo.CommonResult; | import cn.iocoder.common.framework.vo.CommonResult; | ||||||
| import cn.iocoder.mall.admin.api.AdminService; | import cn.iocoder.mall.admin.api.AdminService; | ||||||
|  | @ -0,0 +1,57 @@ | ||||||
|  | package cn.iocoder.mall.admin.application.controller.admins; | ||||||
|  | 
 | ||||||
|  | import cn.iocoder.common.framework.vo.CommonResult; | ||||||
|  | import cn.iocoder.mall.admin.api.DataDictService; | ||||||
|  | import cn.iocoder.mall.admin.api.bo.DataDictBO; | ||||||
|  | import cn.iocoder.mall.admin.api.dto.DataDictAddDTO; | ||||||
|  | import cn.iocoder.mall.admin.application.convert.DataDictConvert; | ||||||
|  | import cn.iocoder.mall.admin.application.vo.DataDictVO; | ||||||
|  | import cn.iocoder.mall.admin.sdk.context.AdminSecurityContextHolder; | ||||||
|  | import com.alibaba.dubbo.config.annotation.Reference; | ||||||
|  | import io.swagger.annotations.Api; | ||||||
|  | import io.swagger.annotations.ApiImplicitParam; | ||||||
|  | import io.swagger.annotations.ApiImplicitParams; | ||||||
|  | import io.swagger.annotations.ApiOperation; | ||||||
|  | import org.springframework.web.bind.annotation.*; | ||||||
|  | 
 | ||||||
|  | import java.util.List; | ||||||
|  | 
 | ||||||
|  | @RestController | ||||||
|  | @RequestMapping("admins/data_dict") | ||||||
|  | @Api("数据字典模块") | ||||||
|  | public class DataDictController { | ||||||
|  | 
 | ||||||
|  |     @Reference(validation = "true") | ||||||
|  |     private DataDictService dataDictService; | ||||||
|  | 
 | ||||||
|  |     @GetMapping("/list") | ||||||
|  |     @ApiOperation(value = "数据字典全列表") | ||||||
|  |     public CommonResult<List<DataDictVO>> list() { | ||||||
|  |         CommonResult<List<DataDictBO>> result = dataDictService.selectDataDictList(); | ||||||
|  |         return DataDictConvert.INSTANCE.convert(result); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     @PostMapping("/add") | ||||||
|  |     @ApiOperation(value = "创建数据字典") | ||||||
|  |     @ApiImplicitParams({ | ||||||
|  |             @ApiImplicitParam(name = "enumValue", value = "大类枚举值", required = true, example = "gender"), | ||||||
|  |             @ApiImplicitParam(name = "value", value = "小类数值", required = true, example = "1"), | ||||||
|  |             @ApiImplicitParam(name = "displayName", value = "展示名", required = true, example = "男"), | ||||||
|  |             @ApiImplicitParam(name = "sort", required = true, value = "排序值", defaultValue = "10"), | ||||||
|  |             @ApiImplicitParam(name = "memo", value = "备注", example = "你猜我猜不猜"), | ||||||
|  |     }) | ||||||
|  |     public CommonResult<DataDictVO> add(@RequestParam("enumValue") String enumValue, | ||||||
|  |                                         @RequestParam("value") String value, | ||||||
|  |                                         @RequestParam("displayName") String displayName, | ||||||
|  |                                         @RequestParam("sort") Integer sort, | ||||||
|  |                                         @RequestParam(value = "memo", required = false) String memo) { | ||||||
|  |         // 创建 DataDictAddDTO 对象
 | ||||||
|  |         DataDictAddDTO dataDictAddDTO = new DataDictAddDTO().setEnumValue(enumValue).setValue(value).setDisplayName(displayName) | ||||||
|  |                 .setSort(sort).setMemo(memo); | ||||||
|  |         // 保存数据字典
 | ||||||
|  |         CommonResult<DataDictBO> result = dataDictService.addDataDict(AdminSecurityContextHolder.getContext().getAdminId(), dataDictAddDTO); | ||||||
|  |         // 返回结果
 | ||||||
|  |         return DataDictConvert.INSTANCE.convert2(result); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  | } | ||||||
|  | @ -1,4 +1,4 @@ | ||||||
| package cn.iocoder.mall.admin.application.controller; | package cn.iocoder.mall.admin.application.controller.admins; | ||||||
| 
 | 
 | ||||||
| import cn.iocoder.common.framework.vo.CommonResult; | import cn.iocoder.common.framework.vo.CommonResult; | ||||||
| import cn.iocoder.mall.admin.api.OAuth2Service; | import cn.iocoder.mall.admin.api.OAuth2Service; | ||||||
|  | @ -1,4 +1,4 @@ | ||||||
| package cn.iocoder.mall.admin.application.controller; | package cn.iocoder.mall.admin.application.controller.admins; | ||||||
| 
 | 
 | ||||||
| import cn.iocoder.common.framework.vo.CommonResult; | import cn.iocoder.common.framework.vo.CommonResult; | ||||||
| import cn.iocoder.mall.admin.api.ResourceService; | import cn.iocoder.mall.admin.api.ResourceService; | ||||||
|  | @ -1,4 +1,4 @@ | ||||||
| package cn.iocoder.mall.admin.application.controller; | package cn.iocoder.mall.admin.application.controller.admins; | ||||||
| 
 | 
 | ||||||
| import cn.iocoder.common.framework.util.CollectionUtil; | import cn.iocoder.common.framework.util.CollectionUtil; | ||||||
| import cn.iocoder.common.framework.vo.CommonResult; | import cn.iocoder.common.framework.vo.CommonResult; | ||||||
|  | @ -0,0 +1,29 @@ | ||||||
|  | package cn.iocoder.mall.admin.application.convert; | ||||||
|  | 
 | ||||||
|  | import cn.iocoder.common.framework.vo.CommonResult; | ||||||
|  | import cn.iocoder.mall.admin.api.bo.DataDictBO; | ||||||
|  | import cn.iocoder.mall.admin.application.vo.DataDictVO; | ||||||
|  | import org.mapstruct.Mapper; | ||||||
|  | import org.mapstruct.Mappings; | ||||||
|  | import org.mapstruct.factory.Mappers; | ||||||
|  | 
 | ||||||
|  | import java.util.List; | ||||||
|  | 
 | ||||||
|  | @Mapper | ||||||
|  | public interface DataDictConvert { | ||||||
|  | 
 | ||||||
|  |     DataDictConvert INSTANCE = Mappers.getMapper(DataDictConvert.class); | ||||||
|  | 
 | ||||||
|  |     @Mappings({}) | ||||||
|  |     DataDictVO convert(DataDictBO dataDictBO); | ||||||
|  | 
 | ||||||
|  |     @Mappings({}) | ||||||
|  |     List<DataDictVO> convert(List<DataDictBO> dataDictBOs); | ||||||
|  | 
 | ||||||
|  |     @Mappings({}) | ||||||
|  |     CommonResult<List<DataDictVO>> convert(CommonResult<List<DataDictBO>> result); | ||||||
|  | 
 | ||||||
|  |     @Mappings({}) | ||||||
|  |     CommonResult<DataDictVO> convert2(CommonResult<DataDictBO> result); | ||||||
|  | 
 | ||||||
|  | } | ||||||
|  | @ -0,0 +1,76 @@ | ||||||
|  | package cn.iocoder.mall.admin.application.vo; | ||||||
|  | 
 | ||||||
|  | import io.swagger.annotations.ApiModel; | ||||||
|  | import io.swagger.annotations.ApiModelProperty; | ||||||
|  | 
 | ||||||
|  | @ApiModel("数据字典 VO") | ||||||
|  | public class DataDictVO { | ||||||
|  | 
 | ||||||
|  |     @ApiModelProperty(value = "编号", required = true, example = "1") | ||||||
|  |     private Integer id; | ||||||
|  |     @ApiModelProperty(value = "大类枚举值", required = true, example = "gender") | ||||||
|  |     private String enumValue; | ||||||
|  |     @ApiModelProperty(value = "小类数值", required = true, example = "1") | ||||||
|  |     private String value; | ||||||
|  |     @ApiModelProperty(value = "展示名", required = true, example = "男") | ||||||
|  |     private String displayName; | ||||||
|  |     @ApiModelProperty(value = "排序值", required = true, example = "10") | ||||||
|  |     private Integer sort; | ||||||
|  |     @ApiModelProperty(value = "备注", example = "你猜") | ||||||
|  |     private Integer memo; | ||||||
|  | 
 | ||||||
|  |     public Integer getId() { | ||||||
|  |         return id; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public DataDictVO setId(Integer id) { | ||||||
|  |         this.id = id; | ||||||
|  |         return this; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public String getEnumValue() { | ||||||
|  |         return enumValue; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public DataDictVO setEnumValue(String enumValue) { | ||||||
|  |         this.enumValue = enumValue; | ||||||
|  |         return this; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public String getValue() { | ||||||
|  |         return value; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public DataDictVO setValue(String value) { | ||||||
|  |         this.value = value; | ||||||
|  |         return this; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public String getDisplayName() { | ||||||
|  |         return displayName; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public DataDictVO setDisplayName(String displayName) { | ||||||
|  |         this.displayName = displayName; | ||||||
|  |         return this; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public Integer getSort() { | ||||||
|  |         return sort; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public DataDictVO setSort(Integer sort) { | ||||||
|  |         this.sort = sort; | ||||||
|  |         return this; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public Integer getMemo() { | ||||||
|  |         return memo; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public DataDictVO setMemo(Integer memo) { | ||||||
|  |         this.memo = memo; | ||||||
|  |         return this; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  | } | ||||||
|  | @ -0,0 +1,20 @@ | ||||||
|  | package cn.iocoder.mall.admin.api; | ||||||
|  | 
 | ||||||
|  | import cn.iocoder.common.framework.vo.CommonResult; | ||||||
|  | import cn.iocoder.mall.admin.api.bo.DataDictBO; | ||||||
|  | import cn.iocoder.mall.admin.api.dto.DataDictAddDTO; | ||||||
|  | import cn.iocoder.mall.admin.api.dto.DataDictUpdateDTO; | ||||||
|  | 
 | ||||||
|  | import java.util.List; | ||||||
|  | 
 | ||||||
|  | public interface DataDictService { | ||||||
|  | 
 | ||||||
|  |     CommonResult<List<DataDictBO>> selectDataDictList(); | ||||||
|  | 
 | ||||||
|  |     CommonResult<DataDictBO> addDataDict(Integer adminId, DataDictAddDTO dataDictAddDTO); | ||||||
|  | 
 | ||||||
|  |     CommonResult<Boolean> updateDataDict(Integer adminId, DataDictUpdateDTO dataDictUpdateDTO); | ||||||
|  | 
 | ||||||
|  |     CommonResult<Boolean> deleteDataDict(Integer adminId, Integer dataDictId); | ||||||
|  | 
 | ||||||
|  | } | ||||||
|  | @ -0,0 +1,102 @@ | ||||||
|  | package cn.iocoder.mall.admin.api.bo; | ||||||
|  | 
 | ||||||
|  | import java.util.Date; | ||||||
|  | 
 | ||||||
|  | /** | ||||||
|  |  * 数据字典 BO | ||||||
|  |  */ | ||||||
|  | public class DataDictBO { | ||||||
|  | 
 | ||||||
|  |     /** | ||||||
|  |      * 编号 | ||||||
|  |      */ | ||||||
|  |     private Integer id; | ||||||
|  |     /** | ||||||
|  |      * 大类枚举值 | ||||||
|  |      */ | ||||||
|  |     private String enumValue; | ||||||
|  |     /** | ||||||
|  |      * 小类数值 | ||||||
|  |      */ | ||||||
|  |     private String value; | ||||||
|  |     /** | ||||||
|  |      * 展示名 | ||||||
|  |      */ | ||||||
|  |     private String displayName; | ||||||
|  |     /** | ||||||
|  |      * 排序值 | ||||||
|  |      */ | ||||||
|  |     private Integer sort; | ||||||
|  |     /** | ||||||
|  |      * 备注 | ||||||
|  |      */ | ||||||
|  |     private String memo; | ||||||
|  |     /** | ||||||
|  |      * 创建时间 | ||||||
|  |      */ | ||||||
|  |     private Date createTime; | ||||||
|  | 
 | ||||||
|  |     public Integer getId() { | ||||||
|  |         return id; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public DataDictBO setId(Integer id) { | ||||||
|  |         this.id = id; | ||||||
|  |         return this; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public String getEnumValue() { | ||||||
|  |         return enumValue; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public DataDictBO setEnumValue(String enumValue) { | ||||||
|  |         this.enumValue = enumValue; | ||||||
|  |         return this; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public String getValue() { | ||||||
|  |         return value; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public DataDictBO setValue(String value) { | ||||||
|  |         this.value = value; | ||||||
|  |         return this; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public String getDisplayName() { | ||||||
|  |         return displayName; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public DataDictBO setDisplayName(String displayName) { | ||||||
|  |         this.displayName = displayName; | ||||||
|  |         return this; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public Integer getSort() { | ||||||
|  |         return sort; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public DataDictBO setSort(Integer sort) { | ||||||
|  |         this.sort = sort; | ||||||
|  |         return this; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public String getMemo() { | ||||||
|  |         return memo; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public DataDictBO setMemo(String memo) { | ||||||
|  |         this.memo = memo; | ||||||
|  |         return this; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public Date getCreateTime() { | ||||||
|  |         return createTime; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public DataDictBO setCreateTime(Date createTime) { | ||||||
|  |         this.createTime = createTime; | ||||||
|  |         return this; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  | } | ||||||
|  | @ -38,6 +38,11 @@ public enum AdminErrorCodeEnum { | ||||||
|     // ========== 角色模块 1002004000 ==========
 |     // ========== 角色模块 1002004000 ==========
 | ||||||
|     ROLE_NOT_EXISTS(1002004000, "角色不存在"), |     ROLE_NOT_EXISTS(1002004000, "角色不存在"), | ||||||
|     ROLE_ASSIGN_RESOURCE_NOT_EXISTS(1002004001, "分配角色资源时,有资源不存在"), |     ROLE_ASSIGN_RESOURCE_NOT_EXISTS(1002004001, "分配角色资源时,有资源不存在"), | ||||||
|  | 
 | ||||||
|  |     // ========== 数据字典模块 1002005000 ==========
 | ||||||
|  |     DATA_DICT_EXISTS(1002005000, "该数据字典已经存在"), | ||||||
|  |     DATA_DICT_NOT_EXISTS(1002005001, "该数据字典已经存在"), | ||||||
|  | 
 | ||||||
|     ; |     ; | ||||||
| 
 | 
 | ||||||
|     private final int code; |     private final int code; | ||||||
|  |  | ||||||
|  | @ -0,0 +1,81 @@ | ||||||
|  | package cn.iocoder.mall.admin.api.dto; | ||||||
|  | 
 | ||||||
|  | import javax.validation.constraints.NotEmpty; | ||||||
|  | import javax.validation.constraints.NotNull; | ||||||
|  | 
 | ||||||
|  | /** | ||||||
|  |  * 数据字典添加 DTO | ||||||
|  |  */ | ||||||
|  | public class DataDictAddDTO { | ||||||
|  | 
 | ||||||
|  |     /** | ||||||
|  |      * 大类枚举值 | ||||||
|  |      */ | ||||||
|  |     @NotEmpty(message = "大类枚举值不能为空") | ||||||
|  |     private String enumValue; | ||||||
|  |     /** | ||||||
|  |      * 小类数值 | ||||||
|  |      */ | ||||||
|  |     @NotEmpty(message = "小类数值不能为空") | ||||||
|  |     private String value; | ||||||
|  |     /** | ||||||
|  |      * 展示名 | ||||||
|  |      */ | ||||||
|  |     @NotEmpty(message = "展示名不能为空") | ||||||
|  |     private String displayName; | ||||||
|  |     /** | ||||||
|  |      * 排序值 | ||||||
|  |      */ | ||||||
|  |     @NotNull(message = "排序值不能为空") | ||||||
|  |     private Integer sort; | ||||||
|  |     /** | ||||||
|  |      * 备注 | ||||||
|  |      */ | ||||||
|  |     private String memo; | ||||||
|  | 
 | ||||||
|  |     public String getEnumValue() { | ||||||
|  |         return enumValue; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public DataDictAddDTO setEnumValue(String enumValue) { | ||||||
|  |         this.enumValue = enumValue; | ||||||
|  |         return this; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public String getValue() { | ||||||
|  |         return value; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public DataDictAddDTO setValue(String value) { | ||||||
|  |         this.value = value; | ||||||
|  |         return this; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public String getDisplayName() { | ||||||
|  |         return displayName; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public DataDictAddDTO setDisplayName(String displayName) { | ||||||
|  |         this.displayName = displayName; | ||||||
|  |         return this; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public Integer getSort() { | ||||||
|  |         return sort; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public DataDictAddDTO setSort(Integer sort) { | ||||||
|  |         this.sort = sort; | ||||||
|  |         return this; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public String getMemo() { | ||||||
|  |         return memo; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public DataDictAddDTO setMemo(String memo) { | ||||||
|  |         this.memo = memo; | ||||||
|  |         return this; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  | } | ||||||
|  | @ -0,0 +1,81 @@ | ||||||
|  | package cn.iocoder.mall.admin.api.dto; | ||||||
|  | 
 | ||||||
|  | import javax.validation.constraints.NotEmpty; | ||||||
|  | import javax.validation.constraints.NotNull; | ||||||
|  | 
 | ||||||
|  | /** | ||||||
|  |  * 数据字典更新 DTO | ||||||
|  |  */ | ||||||
|  | public class DataDictUpdateDTO { | ||||||
|  | 
 | ||||||
|  |     /** | ||||||
|  |      * 编号 | ||||||
|  |      */ | ||||||
|  |     @NotNull(message = "编号不能为空") | ||||||
|  |     private Integer id; | ||||||
|  |     /** | ||||||
|  |      * 小类数值 | ||||||
|  |      */ | ||||||
|  |     @NotEmpty(message = "小类数值不能为空") | ||||||
|  |     private String value; | ||||||
|  |     /** | ||||||
|  |      * 展示名 | ||||||
|  |      */ | ||||||
|  |     @NotEmpty(message = "展示名不能为空") | ||||||
|  |     private String displayName; | ||||||
|  |     /** | ||||||
|  |      * 排序值 | ||||||
|  |      */ | ||||||
|  |     @NotNull(message = "排序值不能为空") | ||||||
|  |     private Integer sort; | ||||||
|  |     /** | ||||||
|  |      * 备注 | ||||||
|  |      */ | ||||||
|  |     private String memo; | ||||||
|  | 
 | ||||||
|  |     public Integer getId() { | ||||||
|  |         return id; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public DataDictUpdateDTO setId(Integer id) { | ||||||
|  |         this.id = id; | ||||||
|  |         return this; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public String getValue() { | ||||||
|  |         return value; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public DataDictUpdateDTO setValue(String value) { | ||||||
|  |         this.value = value; | ||||||
|  |         return this; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public String getDisplayName() { | ||||||
|  |         return displayName; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public DataDictUpdateDTO setDisplayName(String displayName) { | ||||||
|  |         this.displayName = displayName; | ||||||
|  |         return this; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public Integer getSort() { | ||||||
|  |         return sort; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public DataDictUpdateDTO setSort(Integer sort) { | ||||||
|  |         this.sort = sort; | ||||||
|  |         return this; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public String getMemo() { | ||||||
|  |         return memo; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public DataDictUpdateDTO setMemo(String memo) { | ||||||
|  |         this.memo = memo; | ||||||
|  |         return this; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  | } | ||||||
|  | @ -0,0 +1,25 @@ | ||||||
|  | package cn.iocoder.mall.admin.convert; | ||||||
|  | 
 | ||||||
|  | import cn.iocoder.mall.admin.api.bo.DataDictBO; | ||||||
|  | import cn.iocoder.mall.admin.api.dto.DataDictAddDTO; | ||||||
|  | import cn.iocoder.mall.admin.api.dto.DataDictUpdateDTO; | ||||||
|  | import cn.iocoder.mall.admin.dataobject.DataDictDO; | ||||||
|  | import org.mapstruct.Mapper; | ||||||
|  | import org.mapstruct.factory.Mappers; | ||||||
|  | 
 | ||||||
|  | import java.util.List; | ||||||
|  | 
 | ||||||
|  | @Mapper | ||||||
|  | public interface DataDictConvert { | ||||||
|  | 
 | ||||||
|  |     DataDictConvert INSTANCE = Mappers.getMapper(DataDictConvert.class); | ||||||
|  | 
 | ||||||
|  |     DataDictDO convert(DataDictAddDTO dataDictAddDTO); | ||||||
|  | 
 | ||||||
|  |     DataDictDO convert(DataDictUpdateDTO dataDictUpdateDTO); | ||||||
|  | 
 | ||||||
|  |     DataDictBO convert(DataDictDO dataDictDO); | ||||||
|  | 
 | ||||||
|  |     List<DataDictBO> convert(List<DataDictDO> dataDictDOs); | ||||||
|  | 
 | ||||||
|  | } | ||||||
|  | @ -0,0 +1,23 @@ | ||||||
|  | package cn.iocoder.mall.admin.dao; | ||||||
|  | 
 | ||||||
|  | import cn.iocoder.mall.admin.dataobject.DataDictDO; | ||||||
|  | import org.apache.ibatis.annotations.Param; | ||||||
|  | import org.springframework.stereotype.Repository; | ||||||
|  | 
 | ||||||
|  | import java.util.List; | ||||||
|  | 
 | ||||||
|  | @Repository | ||||||
|  | public interface DataDictMapper { | ||||||
|  | 
 | ||||||
|  |     DataDictDO selectById(@Param("id") Integer id); | ||||||
|  | 
 | ||||||
|  |     DataDictDO selectByEnumValueAndValue(@Param("enumValue") String enumValue, | ||||||
|  |                                          @Param("value") String value); | ||||||
|  | 
 | ||||||
|  |     List<DataDictDO> selectList(); | ||||||
|  | 
 | ||||||
|  |     void insert(DataDictDO dataDict); | ||||||
|  | 
 | ||||||
|  |     int update(DataDictDO dataDict); | ||||||
|  | 
 | ||||||
|  | } | ||||||
|  | @ -0,0 +1,94 @@ | ||||||
|  | package cn.iocoder.mall.admin.dataobject; | ||||||
|  | 
 | ||||||
|  | import cn.iocoder.common.framework.dataobject.BaseDO; | ||||||
|  | 
 | ||||||
|  | /** | ||||||
|  |  * 数据字典 | ||||||
|  |  * | ||||||
|  |  * 使用 {@link #enumValue} 作为聚合。例如说: | ||||||
|  |  * | ||||||
|  |  * enumValue :gender 性别 | ||||||
|  |  *      value:1 男 | ||||||
|  |  *      value:2 女 | ||||||
|  |  */ | ||||||
|  | public class DataDictDO extends BaseDO { | ||||||
|  | 
 | ||||||
|  |     /** | ||||||
|  |      * 编号 | ||||||
|  |      */ | ||||||
|  |     private Integer id; | ||||||
|  |     /** | ||||||
|  |      * 大类枚举值 | ||||||
|  |      */ | ||||||
|  |     private String enumValue; | ||||||
|  |     /** | ||||||
|  |      * 小类数值 | ||||||
|  |      */ | ||||||
|  |     private String value; | ||||||
|  |     /** | ||||||
|  |      * 展示名 | ||||||
|  |      */ | ||||||
|  |     private String displayName; | ||||||
|  |     /** | ||||||
|  |      * 排序值 | ||||||
|  |      */ | ||||||
|  |     private Integer sort; | ||||||
|  |     /** | ||||||
|  |      * 备注 | ||||||
|  |      */ | ||||||
|  |     private String memo; | ||||||
|  | 
 | ||||||
|  |     public String getEnumValue() { | ||||||
|  |         return enumValue; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public DataDictDO setEnumValue(String enumValue) { | ||||||
|  |         this.enumValue = enumValue; | ||||||
|  |         return this; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public String getValue() { | ||||||
|  |         return value; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public DataDictDO setValue(String value) { | ||||||
|  |         this.value = value; | ||||||
|  |         return this; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public String getDisplayName() { | ||||||
|  |         return displayName; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public DataDictDO setDisplayName(String displayName) { | ||||||
|  |         this.displayName = displayName; | ||||||
|  |         return this; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public Integer getSort() { | ||||||
|  |         return sort; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public DataDictDO setSort(Integer sort) { | ||||||
|  |         this.sort = sort; | ||||||
|  |         return this; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public String getMemo() { | ||||||
|  |         return memo; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public DataDictDO setMemo(String memo) { | ||||||
|  |         this.memo = memo; | ||||||
|  |         return this; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public Integer getId() { | ||||||
|  |         return id; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public DataDictDO setId(Integer id) { | ||||||
|  |         this.id = id; | ||||||
|  |         return this; | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | @ -28,7 +28,7 @@ import java.util.Set; | ||||||
| import java.util.stream.Collectors; | import java.util.stream.Collectors; | ||||||
| 
 | 
 | ||||||
| @Service | @Service | ||||||
| @com.alibaba.dubbo.config.annotation.Service | @com.alibaba.dubbo.config.annotation.Service(validation = "true") | ||||||
| public class AdminServiceImpl implements AdminService { | public class AdminServiceImpl implements AdminService { | ||||||
| 
 | 
 | ||||||
|     @Autowired |     @Autowired | ||||||
|  |  | ||||||
|  | @ -0,0 +1,89 @@ | ||||||
|  | package cn.iocoder.mall.admin.service; | ||||||
|  | 
 | ||||||
|  | import cn.iocoder.common.framework.dataobject.BaseDO; | ||||||
|  | import cn.iocoder.common.framework.util.ServiceExceptionUtil; | ||||||
|  | import cn.iocoder.common.framework.vo.CommonResult; | ||||||
|  | import cn.iocoder.mall.admin.api.DataDictService; | ||||||
|  | import cn.iocoder.mall.admin.api.bo.DataDictBO; | ||||||
|  | import cn.iocoder.mall.admin.api.constant.AdminErrorCodeEnum; | ||||||
|  | import cn.iocoder.mall.admin.api.dto.DataDictAddDTO; | ||||||
|  | import cn.iocoder.mall.admin.api.dto.DataDictUpdateDTO; | ||||||
|  | import cn.iocoder.mall.admin.convert.DataDictConvert; | ||||||
|  | import cn.iocoder.mall.admin.dao.DataDictMapper; | ||||||
|  | import cn.iocoder.mall.admin.dataobject.DataDictDO; | ||||||
|  | import org.springframework.beans.factory.annotation.Autowired; | ||||||
|  | import org.springframework.stereotype.Service; | ||||||
|  | 
 | ||||||
|  | import java.util.Date; | ||||||
|  | import java.util.List; | ||||||
|  | 
 | ||||||
|  | /** | ||||||
|  |  * 数据字典 Service | ||||||
|  |  */ | ||||||
|  | @Service | ||||||
|  | @com.alibaba.dubbo.config.annotation.Service(validation = "true") | ||||||
|  | public class DataDictServiceImpl implements DataDictService { | ||||||
|  | 
 | ||||||
|  |     @Autowired | ||||||
|  |     private DataDictMapper dataDictMapper; | ||||||
|  | 
 | ||||||
|  |     @Override | ||||||
|  |     public CommonResult<List<DataDictBO>> selectDataDictList() { | ||||||
|  |         List<DataDictDO> dataDicts = dataDictMapper.selectList(); | ||||||
|  |         return CommonResult.success(DataDictConvert.INSTANCE.convert(dataDicts)); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     @Override | ||||||
|  |     public CommonResult<DataDictBO> addDataDict(Integer adminId, DataDictAddDTO dataDictAddDTO) { | ||||||
|  |         // 校验数据字典重复
 | ||||||
|  |         if (dataDictMapper.selectByEnumValueAndValue(dataDictAddDTO.getEnumValue(), dataDictAddDTO.getValue()) != null) { | ||||||
|  |             return ServiceExceptionUtil.error(AdminErrorCodeEnum.DATA_DICT_EXISTS.getCode()); | ||||||
|  |         } | ||||||
|  |         // 保存到数据库
 | ||||||
|  |         DataDictDO dataDict = DataDictConvert.INSTANCE.convert(dataDictAddDTO); | ||||||
|  |         dataDict.setCreateTime(new Date()).setDeleted(BaseDO.DELETED_NO); | ||||||
|  |         dataDictMapper.insert(dataDict); | ||||||
|  |         // TODO 插入操作日志
 | ||||||
|  |         // 返回成功
 | ||||||
|  |         return CommonResult.success(DataDictConvert.INSTANCE.convert(dataDict)); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     @Override | ||||||
|  |     public CommonResult<Boolean> updateDataDict(Integer adminId, DataDictUpdateDTO dataDictUpdateDTO) { | ||||||
|  |         // 校验数据字典不存在
 | ||||||
|  |         DataDictDO existsDataDict = dataDictMapper.selectById(dataDictUpdateDTO.getId()); | ||||||
|  |         if (existsDataDict == null) { | ||||||
|  |             return ServiceExceptionUtil.error(AdminErrorCodeEnum.DATA_DICT_NOT_EXISTS.getCode()); | ||||||
|  |         } | ||||||
|  |         // 校验数据字典重复
 | ||||||
|  |         DataDictDO duplicateDataDict = dataDictMapper.selectByEnumValueAndValue(existsDataDict.getEnumValue(), dataDictUpdateDTO.getValue()); | ||||||
|  |         if (duplicateDataDict != null && duplicateDataDict.getId().equals(dataDictUpdateDTO.getId())) { | ||||||
|  |             return ServiceExceptionUtil.error(AdminErrorCodeEnum.DATA_DICT_EXISTS.getCode()); | ||||||
|  |         } | ||||||
|  |         // 更新到数据库
 | ||||||
|  |         DataDictDO updateDataDict = DataDictConvert.INSTANCE.convert(dataDictUpdateDTO); | ||||||
|  |         dataDictMapper.update(updateDataDict); | ||||||
|  |         // TODO 插入操作日志
 | ||||||
|  |         // 返回成功
 | ||||||
|  |         return CommonResult.success(true); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     // 一般情况下,不要删除数据字典。
 | ||||||
|  |     // 因为,业务数据正在使用该数据字典,删除后,可能有不可预知的问题。
 | ||||||
|  |     @Override | ||||||
|  |     public CommonResult<Boolean> deleteDataDict(Integer adminId, Integer dataDictId) { | ||||||
|  |         // 校验数据字典不存在
 | ||||||
|  |         DataDictDO existsDataDict = dataDictMapper.selectById(dataDictId); | ||||||
|  |         if (existsDataDict == null) { | ||||||
|  |             return ServiceExceptionUtil.error(AdminErrorCodeEnum.DATA_DICT_NOT_EXISTS.getCode()); | ||||||
|  |         } | ||||||
|  |         // 更新到数据库
 | ||||||
|  |         DataDictDO updateDataDict = new DataDictDO().setId(dataDictId); | ||||||
|  |         updateDataDict.setDeleted(BaseDO.DELETED_YES); | ||||||
|  |         dataDictMapper.update(updateDataDict); | ||||||
|  |         // TODO 插入操作日志
 | ||||||
|  |         // 返回成功
 | ||||||
|  |         return CommonResult.success(true); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  | } | ||||||
|  | @ -21,7 +21,7 @@ import java.util.Set; | ||||||
| import java.util.UUID; | import java.util.UUID; | ||||||
| 
 | 
 | ||||||
| @Service | @Service | ||||||
| @com.alibaba.dubbo.config.annotation.Service | @com.alibaba.dubbo.config.annotation.Service(validation = "true") | ||||||
| public class OAuth2ServiceImpl implements OAuth2Service { | public class OAuth2ServiceImpl implements OAuth2Service { | ||||||
| 
 | 
 | ||||||
|     /** |     /** | ||||||
|  |  | ||||||
|  | @ -30,7 +30,7 @@ import java.util.Set; | ||||||
| import java.util.stream.Collectors; | import java.util.stream.Collectors; | ||||||
| 
 | 
 | ||||||
| @Service | @Service | ||||||
| @com.alibaba.dubbo.config.annotation.Service | @com.alibaba.dubbo.config.annotation.Service(validation = "true") | ||||||
| public class RoleServiceImpl implements RoleService { | public class RoleServiceImpl implements RoleService { | ||||||
| 
 | 
 | ||||||
|     @Autowired |     @Autowired | ||||||
|  |  | ||||||
|  | @ -0,0 +1,70 @@ | ||||||
|  | <?xml version="1.0" encoding="UTF-8"?> | ||||||
|  | <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> | ||||||
|  | <mapper namespace="cn.iocoder.mall.admin.dao.DataDictMapper"> | ||||||
|  | 
 | ||||||
|  |     <sql id="FIELDS"> | ||||||
|  |         id, enum_value, value, display_name, sort, | ||||||
|  |         memo, create_time | ||||||
|  |     </sql> | ||||||
|  | 
 | ||||||
|  |     <select id="selectByEnumValueAndValue" resultType="DataDictDO"> | ||||||
|  |         SELECT | ||||||
|  |           <include refid="FIELDS"/> | ||||||
|  |         FROM data_dict | ||||||
|  |         WHERE enum_value = #{enumValue} | ||||||
|  |         AND value = #{value} | ||||||
|  |         AND deleted = 0 | ||||||
|  |         LIMIT 1 | ||||||
|  |     </select> | ||||||
|  | 
 | ||||||
|  |     <select id="selectById" resultType="DataDictDO"> | ||||||
|  |         SELECT | ||||||
|  |             <include refid="FIELDS"/> | ||||||
|  |         FROM data_dict | ||||||
|  |         WHERE id = #{id} | ||||||
|  |         AND deleted = 0 | ||||||
|  |     </select> | ||||||
|  | 
 | ||||||
|  |     <select id="selectList" resultType="DataDictDO"> | ||||||
|  |         SELECT | ||||||
|  |             <include refid="FIELDS"/> | ||||||
|  |         FROM data_dict | ||||||
|  |         WHERE deleted = 0 | ||||||
|  |     </select> | ||||||
|  | 
 | ||||||
|  |     <insert id="insert" parameterType="DataDictDO" useGeneratedKeys="true" keyColumn="id" keyProperty="id"> | ||||||
|  |         INSERT INTO data_dict ( | ||||||
|  |           id, enum_value, value, display_name, sort, | ||||||
|  |           memo, create_time, deleted | ||||||
|  |         ) VALUES ( | ||||||
|  |           #{id}, #{enumValue}, #{value}, #{displayName}, #{sort}, | ||||||
|  |           #{memo}, #{createTime}, #{deleted} | ||||||
|  |         ) | ||||||
|  |     </insert> | ||||||
|  | 
 | ||||||
|  |     <update id="update" parameterType="DataDictDO"> | ||||||
|  |         UPDATE data_dict | ||||||
|  |         <set> | ||||||
|  |             <if test="enumValue != null"> | ||||||
|  |                 enum_value = #{enumValue}, | ||||||
|  |             </if> | ||||||
|  |             <if test="value != null"> | ||||||
|  |                 value = #{value}, | ||||||
|  |             </if> | ||||||
|  |             <if test="displayName != null"> | ||||||
|  |                 display_name = #{displayName}, | ||||||
|  |             </if> | ||||||
|  |             <if test="sort != null"> | ||||||
|  |                 sort = #{sort}, | ||||||
|  |             </if> | ||||||
|  |             <if test="memo != null"> | ||||||
|  |                 memo = #{memo}, | ||||||
|  |             </if> | ||||||
|  |             <if test="deleted != null"> | ||||||
|  |                 deleted = #{deleted} | ||||||
|  |             </if> | ||||||
|  |         </set> | ||||||
|  |         WHERE id = #{id} | ||||||
|  |     </update> | ||||||
|  | 
 | ||||||
|  | </mapper> | ||||||
		Loading…
	
		Reference in New Issue
	
	 YunaiV
						YunaiV