diff --git a/src/main/java/com/youlai/boot/common/result/ResultCode.java b/src/main/java/com/youlai/boot/common/result/ResultCode.java index 4f046f6e..7491e913 100644 --- a/src/main/java/com/youlai/boot/common/result/ResultCode.java +++ b/src/main/java/com/youlai/boot/common/result/ResultCode.java @@ -9,6 +9,10 @@ import java.io.Serializable; * 响应码枚举 *

* 参考阿里巴巴开发手册响应码规范 + * 00000 正常 + * A**** 用户端错误 + * B**** 系统执行出错 + * C**** 调用第三方服务出错 * * @author Ray.Hao * @since 2020/6/23 @@ -57,6 +61,7 @@ public enum ResultCode implements IResultCode, Serializable { USER_PASSWORD_ERROR("A0210", "用户名或密码错误"), USER_INPUT_PASSWORD_ERROR_LIMIT_EXCEEDED("A0211", "用户输入密码错误次数超限"), + USER_NOT_EXIST("A0212", "用户不存在"), USER_IDENTITY_VERIFICATION_FAILED("A0220", "用户身份校验失败"), USER_FINGERPRINT_RECOGNITION_FAILED("A0221", "用户指纹识别失败"), diff --git a/src/main/java/com/youlai/boot/system/controller/DictController.java b/src/main/java/com/youlai/boot/system/controller/DictController.java index 8cf20f75..5009f3a2 100644 --- a/src/main/java/com/youlai/boot/system/controller/DictController.java +++ b/src/main/java/com/youlai/boot/system/controller/DictController.java @@ -4,12 +4,16 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.youlai.boot.common.result.PageResult; import com.youlai.boot.common.result.Result; import com.youlai.boot.common.enums.LogModuleEnum; +import com.youlai.boot.system.model.form.DictItemForm; +import com.youlai.boot.system.model.query.DictItemPageQuery; import com.youlai.boot.system.model.query.DictPageQuery; +import com.youlai.boot.system.model.vo.DictItemOptionVO; +import com.youlai.boot.system.model.vo.DictItemPageVO; import com.youlai.boot.system.model.vo.DictPageVO; import com.youlai.boot.common.annotation.RepeatSubmit; import com.youlai.boot.system.model.form.DictForm; import com.youlai.boot.common.annotation.Log; -import com.youlai.boot.system.model.vo.DictVO; +import com.youlai.boot.system.service.DictItemService; import com.youlai.boot.system.service.DictService; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.tags.Tag; @@ -25,17 +29,23 @@ import java.util.List; /** * 字典控制层 * - * @author Ray + * @author Ray.Hao * @since 2.9.0 */ @Tag(name = "06.字典接口") @RestController -@RequestMapping("/api/v1/dict") +@SuppressWarnings("SpellCheckingInspection") +@RequestMapping("/api/v1/dicts") @RequiredArgsConstructor public class DictController { private final DictService dictService; + private final DictItemService dictItemService; + + //--------------------------------------------------- + // 字典相关接口 + //--------------------------------------------------- @Operation(summary = "字典分页列表") @GetMapping("/page") @Log( value = "字典分页列表",module = LogModuleEnum.DICT) @@ -46,14 +56,7 @@ public class DictController { return PageResult.success(result); } - @Operation(summary = "所有字典列表") - @GetMapping("/list") - public Result> getAllDictWithData() { - List list = dictService.getAllDictWithData(); - return Result.success(list); - } - - @Operation(summary = "字典表单") + @Operation(summary = "字典表单数据") @GetMapping("/{id}/form") public Result getDictForm( @Parameter(description = "字典ID") @PathVariable Long id @@ -92,4 +95,76 @@ public class DictController { return Result.success(); } + + //--------------------------------------------------- + // 字典项相关接口 + //--------------------------------------------------- + @Operation(summary = "字典项分页") + @GetMapping("/{dictCode}/items/page") + public PageResult getDictItemPage( + @PathVariable String dictCode, + DictItemPageQuery queryParams + ) { + queryParams.setDictCode(dictCode); + Page result = dictItemService.getDictItemPage(queryParams); + return PageResult.success(result); + } + + @Operation(summary = "字典项列表") + @GetMapping("/{dictCode}/items") + public Result> getDictItems( + @Parameter(description = "字典编码") @PathVariable String dictCode + ) { + List list = dictService.getDictItems(dictCode); + return Result.success(list); + } + + @Operation(summary = "新增字典项") + @PostMapping("/{dictCode}/items") + @PreAuthorize("@ss.hasPerm('sys:dict-item:add')") + @RepeatSubmit + public Result saveDictItem( + @PathVariable String dictCode, + @Valid @RequestBody DictItemForm formData + ) { + formData.setDictCode(dictCode); + boolean result = dictItemService.saveDictItem(formData); + return Result.judge(result); + } + + @Operation(summary = "字典项表单数据") + @GetMapping("/{dictCode}/items/{itemId}/form") + public Result getDictItemForm( + @PathVariable String dictCode, + @Parameter(description = "字典项ID") @PathVariable Long itemId + ) { + DictItemForm formData = dictItemService.getDictItemForm(dictCode,itemId); + return Result.success(formData); + } + + @Operation(summary = "修改字典项") + @PutMapping("/{dictCode}/items/{itemId}") + @PreAuthorize("@ss.hasPerm('sys:dict-item:edit')") + @RepeatSubmit + public Result updateDictItem( + @PathVariable String dictCode, + @PathVariable Long itemId, + @RequestBody DictItemForm formData + ) { + formData.setId(itemId); + formData.setDictCode(dictCode); + boolean status = dictItemService.updateDictItem(formData); + return Result.judge(status); + } + + @Operation(summary = "删除字典项") + @DeleteMapping("/{dictCode}/items/{itemIds}") + @PreAuthorize("@ss.hasPerm('sys:dict-item:delete')") + public Result deleteDictItems( + @Parameter(description = "字典ID,多个以英文逗号(,)拼接") @PathVariable String ids + ) { + dictItemService.deleteDictItemByIds(ids); + return Result.success(); + } + } diff --git a/src/main/java/com/youlai/boot/system/controller/DictDataController.java b/src/main/java/com/youlai/boot/system/controller/DictDataController.java deleted file mode 100644 index f99c8256..00000000 --- a/src/main/java/com/youlai/boot/system/controller/DictDataController.java +++ /dev/null @@ -1,96 +0,0 @@ -package com.youlai.boot.system.controller; - -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.youlai.boot.common.annotation.Log; -import com.youlai.boot.common.annotation.RepeatSubmit; -import com.youlai.boot.common.enums.LogModuleEnum; -import com.youlai.boot.common.model.Option; -import com.youlai.boot.common.result.PageResult; -import com.youlai.boot.common.result.Result; -import com.youlai.boot.system.model.form.DictDataForm; -import com.youlai.boot.system.model.query.DictDataPageQuery; -import com.youlai.boot.system.model.vo.DictDataPageVO; -import com.youlai.boot.system.service.DictDataService; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.Parameter; -import io.swagger.v3.oas.annotations.tags.Tag; -import jakarta.validation.Valid; -import lombok.RequiredArgsConstructor; -import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.web.bind.annotation.*; - -import java.util.List; - -/** - * 字典数据控制层 - * - * @author Ray - * @since 2.9.0 - */ -@Tag(name = "07.字典数据接口") -@RestController -@RequestMapping("/api/v1/dict-data") -@RequiredArgsConstructor -public class DictDataController { - - private final DictDataService dictDataService; - - @Operation(summary = "字典数据分页列表") - @GetMapping("/page") - @Log( value = "字典数据分页列表",module = LogModuleEnum.DICT) - public PageResult getDictDataPage( - DictDataPageQuery queryParams - ) { - Page result = dictDataService.getDictDataPage(queryParams); - return PageResult.success(result); - } - - @Operation(summary = "获取字典数据表单") - @GetMapping("/{id}/form") - public Result getDictDataForm( - @Parameter(description = "字典数据ID") @PathVariable Long id - ) { - DictDataForm formData = dictDataService.getDictDataForm(id); - return Result.success(formData); - } - - @Operation(summary = "新增字典数据") - @PostMapping - @PreAuthorize("@ss.hasPerm('sys:dict-data:add')") - @RepeatSubmit - public Result saveDictData(@Valid @RequestBody DictDataForm formData) { - boolean result = dictDataService.saveDictData(formData); - return Result.judge(result); - } - - @Operation(summary = "修改字典数据") - @PutMapping("/{id}") - @PreAuthorize("@ss.hasPerm('sys:dict-data:edit')") - public Result updateDictData( - @PathVariable Long id, - @RequestBody DictDataForm formData - ) { - boolean status = dictDataService.updateDictData(formData); - return Result.judge(status); - } - - @Operation(summary = "删除字典数据") - @DeleteMapping("/{ids}") - @PreAuthorize("@ss.hasPerm('sys:dict-data:delete')") - public Result deleteDictionaries( - @Parameter(description = "字典ID,多个以英文逗号(,)拼接") @PathVariable String ids - ) { - dictDataService.deleteDictDataByIds(ids); - return Result.success(); - } - - @Operation(summary = "字典数据列表") - @GetMapping("/{dictCode}/options") - public Result>> getDictDataList( - @Parameter(description = "字典编码") @PathVariable String dictCode - ) { - List> options = dictDataService.getDictDataList(dictCode); - return Result.success(options); - } - -} diff --git a/src/main/java/com/youlai/boot/system/controller/UserController.java b/src/main/java/com/youlai/boot/system/controller/UserController.java index 0b5e39fa..f94082af 100644 --- a/src/main/java/com/youlai/boot/system/controller/UserController.java +++ b/src/main/java/com/youlai/boot/system/controller/UserController.java @@ -191,7 +191,7 @@ public class UserController { @Operation(summary = "重置用户密码") @PutMapping(value = "/{userId}/password/reset") - @PreAuthorize("@ss.hasPerm('sys:user:password:reset')") + @PreAuthorize("@ss.hasPerm('sys:user:reset-password')") public Result resetPassword( @Parameter(description = "用户ID") @PathVariable Long userId, @RequestParam String password diff --git a/src/main/java/com/youlai/boot/system/converter/DictDataConverter.java b/src/main/java/com/youlai/boot/system/converter/DictDataConverter.java index b469f624..c2480f78 100644 --- a/src/main/java/com/youlai/boot/system/converter/DictDataConverter.java +++ b/src/main/java/com/youlai/boot/system/converter/DictDataConverter.java @@ -1,11 +1,10 @@ package com.youlai.boot.system.converter; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.youlai.boot.system.model.entity.DictData; -import com.youlai.boot.system.model.form.DictDataForm; +import com.youlai.boot.system.model.entity.DictItem; +import com.youlai.boot.system.model.form.DictItemForm; import com.youlai.boot.system.model.vo.DictPageVO; import com.youlai.boot.common.model.Option; -import com.youlai.boot.system.model.form.DictForm; import org.mapstruct.Mapper; import java.util.List; @@ -19,12 +18,12 @@ import java.util.List; @Mapper(componentModel = "spring") public interface DictDataConverter { - Page toPageVo(Page page); + Page toPageVo(Page page); - DictDataForm toForm(DictData entity); + DictItemForm toForm(DictItem entity); - DictData toEntity(DictDataForm formFata); + DictItem toEntity(DictItemForm formFata); - Option toOption(DictData dictData); - List> toOption(List dictData); + Option toOption(DictItem dictItem); + List> toOption(List dictData); } diff --git a/src/main/java/com/youlai/boot/system/listener/UserImportListener.java b/src/main/java/com/youlai/boot/system/listener/UserImportListener.java index 62463c6f..522ecfb0 100644 --- a/src/main/java/com/youlai/boot/system/listener/UserImportListener.java +++ b/src/main/java/com/youlai/boot/system/listener/UserImportListener.java @@ -50,7 +50,7 @@ public class UserImportListener extends AnalysisEventListener { private final List roleList; private final List deptList; - private final List genderList; + private final List genderList; /** * 当前行 @@ -71,8 +71,8 @@ public class UserImportListener extends AnalysisEventListener { .select(Role::getId, Role::getCode)); this.deptList = SpringUtil.getBean(DeptService.class) .list(new LambdaQueryWrapper().select(Dept::getId, Dept::getCode)); - this.genderList = SpringUtil.getBean(DictDataService.class) - .list(new LambdaQueryWrapper().eq(DictData::getDictCode, DictCodeEnum.GENDER.getValue())); + this.genderList = SpringUtil.getBean(DictItemService.class) + .list(new LambdaQueryWrapper().eq(DictItem::getDictCode, DictCodeEnum.GENDER.getValue())); this.excelResult = new ExcelResult(); } @@ -202,7 +202,7 @@ public class UserImportListener extends AnalysisEventListener { return this.genderList.stream() .filter(r -> r.getLabel().equals(genderLabel)) .findFirst() - .map(DictData::getValue) + .map(DictItem::getValue) .map(Convert::toInt) .orElse(null); } diff --git a/src/main/java/com/youlai/boot/system/mapper/DictDataMapper.java b/src/main/java/com/youlai/boot/system/mapper/DictDataMapper.java deleted file mode 100644 index 8755cbde..00000000 --- a/src/main/java/com/youlai/boot/system/mapper/DictDataMapper.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.youlai.boot.system.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.youlai.boot.common.model.Option; -import com.youlai.boot.system.model.entity.DictData; -import com.youlai.boot.system.model.query.DictDataPageQuery; -import com.youlai.boot.system.model.vo.DictDataPageVO; -import org.apache.ibatis.annotations.Mapper; - -/** - * 字典数据映射层 - * - * @author Ray Hao - * @since 2.9.0 - */ -@Mapper -public interface DictDataMapper extends BaseMapper { - - /** - * 字典数据分页列表 - */ - Page getDictDataPage(Page page, DictDataPageQuery queryParams); -} - - - - diff --git a/src/main/java/com/youlai/boot/system/mapper/DictItemMapper.java b/src/main/java/com/youlai/boot/system/mapper/DictItemMapper.java new file mode 100644 index 00000000..96a1fa98 --- /dev/null +++ b/src/main/java/com/youlai/boot/system/mapper/DictItemMapper.java @@ -0,0 +1,27 @@ +package com.youlai.boot.system.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.youlai.boot.system.model.entity.DictItem; +import com.youlai.boot.system.model.query.DictItemPageQuery; +import com.youlai.boot.system.model.vo.DictItemPageVO; +import org.apache.ibatis.annotations.Mapper; + +/** + * 字典数据映射层 + * + * @author Ray Hao + * @since 2.9.0 + */ +@Mapper +public interface DictItemMapper extends BaseMapper { + + /** + * 字典数据分页列表 + */ + Page getDictItemPage(Page page, DictItemPageQuery queryParams); +} + + + + diff --git a/src/main/java/com/youlai/boot/system/mapper/DictMapper.java b/src/main/java/com/youlai/boot/system/mapper/DictMapper.java index 0a1050ba..a94bbb43 100644 --- a/src/main/java/com/youlai/boot/system/mapper/DictMapper.java +++ b/src/main/java/com/youlai/boot/system/mapper/DictMapper.java @@ -29,13 +29,6 @@ public interface DictMapper extends BaseMapper { */ Page getDictPage(Page page, DictPageQuery queryParams); - /** - * 获取字典列表(包含字典数据) - * - * @return 字典列表 - */ - List getAllDictWithData(); - } diff --git a/src/main/java/com/youlai/boot/system/mapper/RoleMapper.java b/src/main/java/com/youlai/boot/system/mapper/RoleMapper.java index b546cc98..69a2cff4 100644 --- a/src/main/java/com/youlai/boot/system/mapper/RoleMapper.java +++ b/src/main/java/com/youlai/boot/system/mapper/RoleMapper.java @@ -6,14 +6,19 @@ import org.apache.ibatis.annotations.Mapper; import java.util.Set; +/** + * 角色持久层接口 + * + * @author Ray.Hao + * @since 2022/1/14 + */ @Mapper public interface RoleMapper extends BaseMapper { - /** * 获取最大范围的数据权限 * - * @param roles + * @param roles 角色编码集合 * @return */ Integer getMaximumDataScope(Set roles); diff --git a/src/main/java/com/youlai/boot/system/model/entity/DictData.java b/src/main/java/com/youlai/boot/system/model/entity/DictItem.java similarity index 77% rename from src/main/java/com/youlai/boot/system/model/entity/DictData.java rename to src/main/java/com/youlai/boot/system/model/entity/DictItem.java index 22e07144..8a86cd88 100644 --- a/src/main/java/com/youlai/boot/system/model/entity/DictData.java +++ b/src/main/java/com/youlai/boot/system/model/entity/DictItem.java @@ -1,23 +1,20 @@ package com.youlai.boot.system.model.entity; -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableId; - import com.baomidou.mybatisplus.annotation.TableName; import com.youlai.boot.common.base.BaseEntity; import lombok.Data; import lombok.EqualsAndHashCode; /** - * 字典数据实体对象 + * 字典项实体对象 * - * @author haoxr + * @author Ray.Hao * @since 2022/12/17 */ @EqualsAndHashCode(callSuper = false) -@TableName("sys_dict_data") +@TableName("sys_dict_item") @Data -public class DictData extends BaseEntity { +public class DictItem extends BaseEntity { /** * 字典编码 diff --git a/src/main/java/com/youlai/boot/system/model/form/DictDataForm.java b/src/main/java/com/youlai/boot/system/model/form/DictItemForm.java similarity index 50% rename from src/main/java/com/youlai/boot/system/model/form/DictDataForm.java rename to src/main/java/com/youlai/boot/system/model/form/DictItemForm.java index 7b6409ce..373a5216 100644 --- a/src/main/java/com/youlai/boot/system/model/form/DictDataForm.java +++ b/src/main/java/com/youlai/boot/system/model/form/DictItemForm.java @@ -3,41 +3,36 @@ package com.youlai.boot.system.model.form; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; -import lombok.Getter; -import lombok.Setter; -import org.hibernate.validator.constraints.Range; - -import java.util.List; /** - * 字典数据表单对象 + * 字典项表单对象 * * @author Ray Hao * @since 2.9.0 */ -@Schema(description = "字典数据表单") +@Schema(description = "字典项表单") @Data -public class DictDataForm { +public class DictItemForm { - @Schema(description = "字典ID") + @Schema(description = "字典项ID") private Long id; @Schema(description = "字典编码") private String dictCode; - @Schema(description = "字典值") + @Schema(description = "字典项值") private String value; - @Schema(description = "字典标签") + @Schema(description = "字典项标签") private String label; @Schema(description = "排序") private Integer sort; - @Schema(description = "状态(1-启用,0-禁用)") + @Schema(description = "状态(0:禁用,1:启用)") private Integer status; - @Schema(description = "字典类型") + @Schema(description = "字典类型(用于显示样式)") private String tagType; } diff --git a/src/main/java/com/youlai/boot/system/model/query/DictDataPageQuery.java b/src/main/java/com/youlai/boot/system/model/query/DictItemPageQuery.java similarity index 66% rename from src/main/java/com/youlai/boot/system/model/query/DictDataPageQuery.java rename to src/main/java/com/youlai/boot/system/model/query/DictItemPageQuery.java index 00944a3e..24adabf1 100644 --- a/src/main/java/com/youlai/boot/system/model/query/DictDataPageQuery.java +++ b/src/main/java/com/youlai/boot/system/model/query/DictItemPageQuery.java @@ -8,10 +8,10 @@ import lombok.EqualsAndHashCode; @Data @EqualsAndHashCode(callSuper = false) -@Schema(description ="字典数据分页查询对象") -public class DictDataPageQuery extends BasePageQuery { +@Schema(description ="字典项分页查询对象") +public class DictItemPageQuery extends BasePageQuery { - @Schema(description="关键字(字典数据标签/值)") + @Schema(description="关键字(字典项值/字典项名称)") private String keywords; @Schema(description="字典编码") diff --git a/src/main/java/com/youlai/boot/system/model/query/DictPageQuery.java b/src/main/java/com/youlai/boot/system/model/query/DictPageQuery.java index d432be2e..a9bbe4ee 100644 --- a/src/main/java/com/youlai/boot/system/model/query/DictPageQuery.java +++ b/src/main/java/com/youlai/boot/system/model/query/DictPageQuery.java @@ -1,6 +1,5 @@ package com.youlai.boot.system.model.query; - import com.youlai.boot.common.base.BasePageQuery; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; @@ -8,13 +7,10 @@ import lombok.EqualsAndHashCode; @Data @EqualsAndHashCode(callSuper = false) -@Schema(description ="字典数据项分页查询对象") +@Schema(description ="字典分页查询对象") public class DictPageQuery extends BasePageQuery { @Schema(description="关键字(字典名称)") private String keywords; - @Schema(description="字典编码") - private String typeCode; - } diff --git a/src/main/java/com/youlai/boot/system/model/vo/DictItemOptionVO.java b/src/main/java/com/youlai/boot/system/model/vo/DictItemOptionVO.java new file mode 100644 index 00000000..856ae80e --- /dev/null +++ b/src/main/java/com/youlai/boot/system/model/vo/DictItemOptionVO.java @@ -0,0 +1,27 @@ +package com.youlai.boot.system.model.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Getter; +import lombok.Setter; + +/** + * 字典数据项 + * + * @author Ray + * @since 0.0.1 + */ +@Schema(description = "字典数据项") +@Getter +@Setter +public class DictItemOptionVO { + + @Schema(description = "字典数据值") + private String value; + + @Schema(description = "字典数据标签") + private String label; + + @Schema(description = "标签类型") + private String tagType; + +} diff --git a/src/main/java/com/youlai/boot/system/model/vo/DictDataPageVO.java b/src/main/java/com/youlai/boot/system/model/vo/DictItemPageVO.java similarity index 92% rename from src/main/java/com/youlai/boot/system/model/vo/DictDataPageVO.java rename to src/main/java/com/youlai/boot/system/model/vo/DictItemPageVO.java index 3a100c5b..3d76c6de 100644 --- a/src/main/java/com/youlai/boot/system/model/vo/DictDataPageVO.java +++ b/src/main/java/com/youlai/boot/system/model/vo/DictItemPageVO.java @@ -7,7 +7,7 @@ import lombok.Setter; /** - * 字典数据项分页VO + * 字典项分页VO * * @author Ray * @since 0.0.1 @@ -15,7 +15,7 @@ import lombok.Setter; @Schema(description = "字典数据分页对象") @Getter @Setter -public class DictDataPageVO { +public class DictItemPageVO { @Schema(description = "字典数据ID") private Long id; diff --git a/src/main/java/com/youlai/boot/system/service/DictDataService.java b/src/main/java/com/youlai/boot/system/service/DictItemService.java similarity index 55% rename from src/main/java/com/youlai/boot/system/service/DictDataService.java rename to src/main/java/com/youlai/boot/system/service/DictItemService.java index 609d0c14..7ffa3f0b 100644 --- a/src/main/java/com/youlai/boot/system/service/DictDataService.java +++ b/src/main/java/com/youlai/boot/system/service/DictItemService.java @@ -3,22 +3,20 @@ package com.youlai.boot.system.service; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.youlai.boot.common.model.Option; -import com.youlai.boot.system.model.entity.DictData; -import com.youlai.boot.system.model.form.DictDataForm; -import com.youlai.boot.system.model.form.DictForm; -import com.youlai.boot.system.model.query.DictDataPageQuery; -import com.youlai.boot.system.model.query.DictPageQuery; -import com.youlai.boot.system.model.vo.DictDataPageVO; +import com.youlai.boot.system.model.entity.DictItem; +import com.youlai.boot.system.model.form.DictItemForm; +import com.youlai.boot.system.model.query.DictItemPageQuery; +import com.youlai.boot.system.model.vo.DictItemPageVO; import java.util.List; /** - * 字典数据接口 + * 字典项接口 * * @author Ray Hao * @since 2023/3/4 */ -public interface DictDataService extends IService { +public interface DictItemService extends IService { /** * 字典数据分页列表 @@ -26,23 +24,24 @@ public interface DictDataService extends IService { * @param queryParams * @return */ - Page getDictDataPage(DictDataPageQuery queryParams); + Page getDictItemPage(DictItemPageQuery queryParams); /** * 获取字典数据表单 * - * @param id 字典数据ID + * @param dictCode 字典编码 + * @param itemId 字典数据ID * @return */ - DictDataForm getDictDataForm(Long id); + DictItemForm getDictItemForm(String dictCode,Long itemId); /** - * 保存字典数据 + * 保存字典项 * * @param formData * @return */ - boolean saveDictData(DictDataForm formData); + boolean saveDictItem(DictItemForm formData); /** * 更新字典数据 @@ -50,14 +49,14 @@ public interface DictDataService extends IService { * @param formData 字典数据表单 * @return */ - boolean updateDictData(DictDataForm formData); + boolean updateDictItem(DictItemForm formData); /** * 删除字典数据 * * @param ids 字典数据ID,多个逗号分隔 */ - void deleteDictDataByIds(String ids); + void deleteDictItemByIds(String ids); /** * 获取字典数据列表 diff --git a/src/main/java/com/youlai/boot/system/service/DictService.java b/src/main/java/com/youlai/boot/system/service/DictService.java index bfcbc113..c2ff8175 100644 --- a/src/main/java/com/youlai/boot/system/service/DictService.java +++ b/src/main/java/com/youlai/boot/system/service/DictService.java @@ -2,10 +2,10 @@ package com.youlai.boot.system.service; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; -import com.youlai.boot.common.model.Option; import com.youlai.boot.system.model.entity.Dict; import com.youlai.boot.system.model.form.DictForm; import com.youlai.boot.system.model.query.DictPageQuery; +import com.youlai.boot.system.model.vo.DictItemOptionVO; import com.youlai.boot.system.model.vo.DictPageVO; import com.youlai.boot.system.model.vo.DictVO; @@ -59,11 +59,11 @@ public interface DictService extends IService { */ void deleteDictByIds(List ids); - /** - * 获取字典列表(包含字典数据) + * 获取字典项列表 * - * @return 字典列表 + * @param dictCode 字典编码 + * @return 字典项列表 */ - List getAllDictWithData(); + List getDictItems(String dictCode); } diff --git a/src/main/java/com/youlai/boot/system/service/impl/DictDataServiceImpl.java b/src/main/java/com/youlai/boot/system/service/impl/DictItemServiceImpl.java similarity index 58% rename from src/main/java/com/youlai/boot/system/service/impl/DictDataServiceImpl.java rename to src/main/java/com/youlai/boot/system/service/impl/DictItemServiceImpl.java index ec76a193..7652a3da 100644 --- a/src/main/java/com/youlai/boot/system/service/impl/DictDataServiceImpl.java +++ b/src/main/java/com/youlai/boot/system/service/impl/DictItemServiceImpl.java @@ -5,13 +5,12 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.youlai.boot.common.model.Option; import com.youlai.boot.system.converter.DictDataConverter; -import com.youlai.boot.system.mapper.DictDataMapper; -import com.youlai.boot.system.model.entity.DictData; -import com.youlai.boot.system.model.form.DictDataForm; -import com.youlai.boot.system.model.query.DictDataPageQuery; -import com.youlai.boot.system.model.query.DictPageQuery; -import com.youlai.boot.system.model.vo.DictDataPageVO; -import com.youlai.boot.system.service.DictDataService; +import com.youlai.boot.system.mapper.DictItemMapper; +import com.youlai.boot.system.model.entity.DictItem; +import com.youlai.boot.system.model.form.DictItemForm; +import com.youlai.boot.system.model.query.DictItemPageQuery; +import com.youlai.boot.system.model.vo.DictItemPageVO; +import com.youlai.boot.system.service.DictItemService; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -26,7 +25,7 @@ import java.util.List; */ @Service @RequiredArgsConstructor -public class DictDataServiceImpl extends ServiceImpl implements DictDataService { +public class DictItemServiceImpl extends ServiceImpl implements DictItemService { private final DictDataConverter dictDataConverter; @@ -37,23 +36,24 @@ public class DictDataServiceImpl extends ServiceImpl i * @return */ @Override - public Page getDictDataPage(DictDataPageQuery queryParams) { + public Page getDictItemPage(DictItemPageQuery queryParams) { int pageNum = queryParams.getPageNum(); int pageSize = queryParams.getPageSize(); - Page page = new Page<>(pageNum, pageSize); + Page page = new Page<>(pageNum, pageSize); - return this.baseMapper.getDictDataPage(page, queryParams); + return this.baseMapper.getDictItemPage(page, queryParams); } /** - * 获取字典数据表单 + * 获取字典项表单 * - * @param id 字典数据ID + * @param dictCode 字典编码 + * @param itemId 字典数据ID * @return */ @Override - public DictDataForm getDictDataForm(Long id) { - DictData entity = this.getById(id); + public DictItemForm getDictItemForm(String dictCode,Long itemId) { + DictItem entity = this.getById(itemId); return dictDataConverter.toForm(entity); } @@ -64,8 +64,8 @@ public class DictDataServiceImpl extends ServiceImpl i * @return */ @Override - public boolean saveDictData(DictDataForm formData) { - DictData entity = dictDataConverter.toEntity(formData); + public boolean saveDictItem(DictItemForm formData) { + DictItem entity = dictDataConverter.toEntity(formData); return this.save(entity); } @@ -76,8 +76,8 @@ public class DictDataServiceImpl extends ServiceImpl i * @return */ @Override - public boolean updateDictData(DictDataForm formData) { - DictData entity = dictDataConverter.toEntity(formData); + public boolean updateDictItem(DictItemForm formData) { + DictItem entity = dictDataConverter.toEntity(formData); return this.updateById(entity); } @@ -87,7 +87,7 @@ public class DictDataServiceImpl extends ServiceImpl i * @param ids 字典数据ID集合 */ @Override - public void deleteDictDataByIds(String ids) { + public void deleteDictItemByIds(String ids) { List idList = Arrays.stream(ids.split(",")).map(Long::parseLong).toList(); this.removeByIds(idList); } @@ -100,9 +100,9 @@ public class DictDataServiceImpl extends ServiceImpl i */ @Override public List> getDictDataList(String dictCode) { - return this.list(new LambdaQueryWrapper() - .eq(DictData::getDictCode, dictCode) - .eq(DictData::getStatus, 1) + return this.list(new LambdaQueryWrapper() + .eq(DictItem::getDictCode, dictCode) + .eq(DictItem::getStatus, 1) ).stream().map(item -> new Option<>(item.getValue(), item.getLabel(),item.getTagType())) .toList(); } diff --git a/src/main/java/com/youlai/boot/system/service/impl/DictServiceImpl.java b/src/main/java/com/youlai/boot/system/service/impl/DictServiceImpl.java index 84348af2..8fc1a5bc 100644 --- a/src/main/java/com/youlai/boot/system/service/impl/DictServiceImpl.java +++ b/src/main/java/com/youlai/boot/system/service/impl/DictServiceImpl.java @@ -6,15 +6,14 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.youlai.boot.common.exception.BusinessException; import com.youlai.boot.system.converter.DictConverter; -import com.youlai.boot.system.converter.DictDataConverter; import com.youlai.boot.system.mapper.DictMapper; import com.youlai.boot.system.model.entity.Dict; -import com.youlai.boot.system.model.entity.DictData; +import com.youlai.boot.system.model.entity.DictItem; import com.youlai.boot.system.model.form.DictForm; import com.youlai.boot.system.model.query.DictPageQuery; +import com.youlai.boot.system.model.vo.DictItemOptionVO; import com.youlai.boot.system.model.vo.DictPageVO; -import com.youlai.boot.system.model.vo.DictVO; -import com.youlai.boot.system.service.DictDataService; +import com.youlai.boot.system.service.DictItemService; import com.youlai.boot.system.service.DictService; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -32,9 +31,8 @@ import java.util.List; @RequiredArgsConstructor public class DictServiceImpl extends ServiceImpl implements DictService { - private final DictDataService dictDataService; + private final DictItemService dictItemService; private final DictConverter dictConverter; - private final DictDataConverter dictDataConverter; /** * 字典分页列表 @@ -65,7 +63,7 @@ public class DictServiceImpl extends ServiceImpl implements Di String dictCode = entity.getDictCode(); long count = this.count(new LambdaQueryWrapper() - .eq(Dict::getDictCode, dictCode) + .eq(Dict::getDictCode, dictCode) ); Assert.isTrue(count == 0, "字典编码已存在"); @@ -127,9 +125,9 @@ public class DictServiceImpl extends ServiceImpl implements Di boolean removeResult = this.removeById(id); // 删除字典下的字典项 if (removeResult) { - dictDataService.remove( - new LambdaQueryWrapper() - .eq(DictData::getDictCode, dict.getDictCode()) + dictItemService.remove( + new LambdaQueryWrapper() + .eq(DictItem::getDictCode, dict.getDictCode()) ); } @@ -137,13 +135,28 @@ public class DictServiceImpl extends ServiceImpl implements Di } } - /** - * 获取字典列表(包含字典数据) - */ - @Override - public List getAllDictWithData() { - return this.baseMapper.getAllDictWithData(); - } + + /** + * 获取字典项列表 + * + * @param dictCode 字典编码 + */ + @Override + public List getDictItems(String dictCode) { + return dictItemService.list( + new LambdaQueryWrapper() + .eq(DictItem::getDictCode, dictCode) + .eq(DictItem::getStatus, 1) + .orderByAsc(DictItem::getSort) + ).stream() + .map(item -> { + DictItemOptionVO dictItemOptionVO = new DictItemOptionVO(); + dictItemOptionVO.setLabel(item.getLabel()); + dictItemOptionVO.setValue(item.getValue()); + dictItemOptionVO.setTagType(item.getTagType()); + return dictItemOptionVO; + }).toList(); + } } diff --git a/src/main/java/com/youlai/boot/system/service/impl/UserServiceImpl.java b/src/main/java/com/youlai/boot/system/service/impl/UserServiceImpl.java index 171fb8c7..2e1f056c 100644 --- a/src/main/java/com/youlai/boot/system/service/impl/UserServiceImpl.java +++ b/src/main/java/com/youlai/boot/system/service/impl/UserServiceImpl.java @@ -24,7 +24,7 @@ import com.youlai.boot.system.mapper.UserMapper; import com.youlai.boot.system.model.bo.UserBO; import com.youlai.boot.system.model.dto.UserAuthInfo; import com.youlai.boot.system.model.dto.UserExportDTO; -import com.youlai.boot.system.model.entity.DictData; +import com.youlai.boot.system.model.entity.DictItem; import com.youlai.boot.system.model.entity.User; import com.youlai.boot.system.model.entity.UserRole; import com.youlai.boot.system.model.form.*; @@ -69,7 +69,7 @@ public class UserServiceImpl extends ServiceImpl implements Us private final TokenManager tokenManager; - private final DictDataService dictDataService; + private final DictItemService dictItemService; private final UserConverter userConverter; @@ -287,11 +287,11 @@ public class UserServiceImpl extends ServiceImpl implements Us List exportUsers = this.baseMapper.listExportUsers(queryParams); if (CollectionUtil.isNotEmpty(exportUsers)) { //获取角色的字典数据 - Map genderMap = dictDataService.list( - new LambdaQueryWrapper().eq(DictData::getDictCode, + Map genderMap = dictItemService.list( + new LambdaQueryWrapper().eq(DictItem::getDictCode, DictCodeEnum.GENDER.getValue()) ).stream() - .collect(Collectors.toMap(DictData::getValue, DictData::getLabel) + .collect(Collectors.toMap(DictItem::getValue, DictItem::getLabel) ); exportUsers.forEach(item -> { diff --git a/src/main/resources/mapper/system/DictDataMapper.xml b/src/main/resources/mapper/system/DictItemMapper.xml similarity index 85% rename from src/main/resources/mapper/system/DictDataMapper.xml rename to src/main/resources/mapper/system/DictItemMapper.xml index 5ddd6b8b..222b91f4 100644 --- a/src/main/resources/mapper/system/DictDataMapper.xml +++ b/src/main/resources/mapper/system/DictItemMapper.xml @@ -2,10 +2,10 @@ - + - SELECT id, dict_code, @@ -14,7 +14,7 @@ sort, status FROM - sys_dict_data + sys_dict_item AND ( @@ -36,7 +36,7 @@ label, tag_type FROM - sys_dict_data + sys_dict_item WHERE status = 1 AND dict_code = #{dictCode} ORDER BY diff --git a/src/main/resources/mapper/system/DictMapper.xml b/src/main/resources/mapper/system/DictMapper.xml index 09240f47..7cbe631d 100644 --- a/src/main/resources/mapper/system/DictMapper.xml +++ b/src/main/resources/mapper/system/DictMapper.xml @@ -26,25 +26,4 @@ t1.create_time DESC - - - - - - - - - diff --git a/src/main/resources/mapper/system/UserMapper.xml b/src/main/resources/mapper/system/UserMapper.xml index d810841f..32e0832c 100644 --- a/src/main/resources/mapper/system/UserMapper.xml +++ b/src/main/resources/mapper/system/UserMapper.xml @@ -25,6 +25,7 @@ LEFT JOIN sys_role r ON sur.role_id = r.id u.is_deleted = 0 + AND NOT EXISTS ( SELECT