diff --git a/core/pom.xml b/core/pom.xml index 5c9a597..83b2460 100644 --- a/core/pom.xml +++ b/core/pom.xml @@ -156,6 +156,18 @@ mapstruct-processor 1.4.1.Final + + javax.sip + jain-sip-ri + 1.3.0-91 + compile + + + javax.sip + jain-sip-ri + 1.3.0-91 + compile + diff --git a/core/src/main/java/com/dite/znpt/constant/Message.java b/core/src/main/java/com/dite/znpt/constant/Message.java index 24a5037..e0ab24e 100644 --- a/core/src/main/java/com/dite/znpt/constant/Message.java +++ b/core/src/main/java/com/dite/znpt/constant/Message.java @@ -19,12 +19,19 @@ public class Message implements Serializable { public static final String PROJECT_ID_IS_NOT_EXIST = "项目id不存在"; public static final String TURBINE_ID_IS_NOT_EXIST = "机组id不存在"; public static final String PART_ID_IS_NOT_EXIST = "部件id不存在"; - public static final String IMAGE_SOURCE_ID_NOT_EXIST_OR_ILLEGAL = "部件id不存在"; + public static final String IMAGE_SOURCE_ID_NOT_EXIST_OR_ILLEGAL = "部件id不存在或者不合法"; public static final String USER_ID_NOT_EXIST = "用户id不存在"; + public static final String USER_ID_NOT_EXIST_OR_ILLEGAL = "用户id不存在或者不合法"; public static final String ACCOUNT_EXIST = "用户账号已经存在,请重新输入"; public static final String MOBILE_EXIST = "手机号码已经存在,请重新输入"; public static final String EMAIL_EXIST = "邮箱已经存在,请重新输入"; - public static final String DEPT_PARENT_NOT_EXISTS = "父级部门不存在"; - public static final String DEPT_ID_NOT_EXISTS = "部门id不存在"; - public static final String POST_ID_NOT_EXISTS = "岗位id不存在"; + public static final String IDENTITY_CARD_EXIST = "身份证已经存在,请重新输入"; + public static final String DEPT_PARENT_NOT_EXIST = "父级部门不存在"; + public static final String DEPT_ID_NOT_EXIST = "部门id不存在"; + public static final String POST_ID_NOT_EXIST = "岗位id不存在"; + public static final String POST_ID_NOT_EXIST_OR_ILLEGAL = "岗位id不存在或者不合法"; + public static final String ROLE_ID_NOT_EXIST = "角色id不存在"; + public static final String ROLE_ID_NOT_EXIST_OR_ILLEGAL = "角色id不存在或者不合法"; + public static final String MENU_ID_NOT_EXIST = "菜单id不存在"; + public static final String MENU_ID_NOT_EXIST_OR_ILLEGAL = "菜单id不存在或者不合法"; } diff --git a/core/src/main/java/com/dite/znpt/converts/Converts.java b/core/src/main/java/com/dite/znpt/converts/Converts.java index de30c63..ca16bd4 100644 --- a/core/src/main/java/com/dite/znpt/converts/Converts.java +++ b/core/src/main/java/com/dite/znpt/converts/Converts.java @@ -53,5 +53,15 @@ public interface Converts { PostResp toPostResp(PostEntity entity); + RoleResp toRoleResp(RoleEntity entity); + + List toRoleResp(List list); + + RoleEntity toRoleEntity(RoleReq req); + + MenuEntity toMenuEntity(MenuReq req); + + MenuResp toMenuResp(MenuEntity entity); + } diff --git a/core/src/main/java/com/dite/znpt/domain/entity/MenuEntity.java b/core/src/main/java/com/dite/znpt/domain/entity/MenuEntity.java index 85abe4a..4758cd4 100644 --- a/core/src/main/java/com/dite/znpt/domain/entity/MenuEntity.java +++ b/core/src/main/java/com/dite/znpt/domain/entity/MenuEntity.java @@ -63,8 +63,6 @@ public class MenuEntity extends AuditableEntity implements Serializable { @TableField("visible") private String visible; - - @ExcelProperty("权限标识") @ApiModelProperty("权限标识") @TableField("perms") diff --git a/core/src/main/java/com/dite/znpt/domain/entity/RoleEntity.java b/core/src/main/java/com/dite/znpt/domain/entity/RoleEntity.java index 28ea120..fbdbe5a 100644 --- a/core/src/main/java/com/dite/znpt/domain/entity/RoleEntity.java +++ b/core/src/main/java/com/dite/znpt/domain/entity/RoleEntity.java @@ -48,9 +48,15 @@ public class RoleEntity extends AuditableEntity implements Serializable { @TableField("status") private Integer status; + + @ExcelProperty("备注") + @ApiModelProperty("备注") + @TableField("remark") + private String remark; + @ExcelProperty("删除标志(0代表存在 1代表删除)") @ApiModelProperty("删除标志(0代表存在 1代表删除)") @TableField("del_flag") - private Integer delFlag; + private String delFlag; } diff --git a/core/src/main/java/com/dite/znpt/domain/entity/UserEntity.java b/core/src/main/java/com/dite/znpt/domain/entity/UserEntity.java index 4681578..cabdef5 100644 --- a/core/src/main/java/com/dite/znpt/domain/entity/UserEntity.java +++ b/core/src/main/java/com/dite/znpt/domain/entity/UserEntity.java @@ -65,6 +65,10 @@ public class UserEntity extends AuditableEntity implements Serializable { @TableField("name") private String name; + @ApiModelProperty("所属部门") + @TableField("dept_id") + private String deptId; + @ExcelProperty("身份证") @ApiModelProperty("身份证") @TableField("identity_card") diff --git a/core/src/main/java/com/dite/znpt/domain/entity/UserPostEntity.java b/core/src/main/java/com/dite/znpt/domain/entity/UserPostEntity.java new file mode 100644 index 0000000..a32e5ff --- /dev/null +++ b/core/src/main/java/com/dite/znpt/domain/entity/UserPostEntity.java @@ -0,0 +1,35 @@ +package com.dite.znpt.domain.entity; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.dite.znpt.domain.AuditableEntity; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serial; +import java.io.Serializable; + +/** + * @Author: gaoxiong + * @Date: 2025/5/15 23:33 + * @Description: + */ +@Data +@EqualsAndHashCode(callSuper = false) +@TableName("user_post") +@ApiModel(value="UserPostEntity对象", description="用户和岗位信息表") +public class UserPostEntity extends AuditableEntity implements Serializable { + + @Serial + private static final long serialVersionUID = -4046474045225600954L; + + @ApiModelProperty("用户id") + @TableField("user_id") + private String userId; + + @ApiModelProperty("岗位id") + @TableField("post_id") + private String postId; +} diff --git a/core/src/main/java/com/dite/znpt/domain/vo/MenuReq.java b/core/src/main/java/com/dite/znpt/domain/vo/MenuReq.java new file mode 100644 index 0000000..5783322 --- /dev/null +++ b/core/src/main/java/com/dite/znpt/domain/vo/MenuReq.java @@ -0,0 +1,52 @@ +package com.dite.znpt.domain.vo; + +import com.dite.znpt.util.ValidationGroup; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.Size; +import java.io.Serial; +import java.io.Serializable; + +/** + * @author Bear.G + * @date 2025/5/21/周三 12:31 + * @description + */ +@Data +@ApiModel("菜单信息请求实体") +public class MenuReq implements Serializable { + @Serial + private static final long serialVersionUID = -7141367511437222477L; + + @NotBlank(groups = {ValidationGroup.Insert.class, ValidationGroup.Update.class}, message = "菜单名称不能为空") + @Size(max = 10, message = "菜单名称不能超过10个字符") + @ApiModelProperty("菜单名称") + private String menuName; + + @ApiModelProperty("父级菜单id") + private String parentId; + + @ApiModelProperty("显示顺序") + private Integer orderNum; + + @Size(groups = {ValidationGroup.Insert.class, ValidationGroup.Update.class}, max = 100, message = "请求地址不能超过100个字符") + @ApiModelProperty("请求地址") + private String url; + + @NotBlank(groups = {ValidationGroup.Insert.class, ValidationGroup.Update.class}, message = "菜单类型不能为空") + @ApiModelProperty("菜单类型") + private String menuType; + + @ApiModelProperty("显示状态") + private String visible; + + @Size(groups = {ValidationGroup.Insert.class, ValidationGroup.Update.class}, max = 50, message = "备注不能超过50个字符") + @ApiModelProperty("参数") + private String perms; + + + +} diff --git a/core/src/main/java/com/dite/znpt/domain/vo/MenuResp.java b/core/src/main/java/com/dite/znpt/domain/vo/MenuResp.java new file mode 100644 index 0000000..f533983 --- /dev/null +++ b/core/src/main/java/com/dite/znpt/domain/vo/MenuResp.java @@ -0,0 +1,45 @@ +package com.dite.znpt.domain.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; + +/** + * @author Bear.G + * @date 2025/5/21/周三 12:31 + * @description + */ +@Data +@ApiModel("菜单信息响应实体") +public class MenuResp implements Serializable { + @Serial + private static final long serialVersionUID = -153724438320680595L; + + @ApiModelProperty("菜单id") + private String menuId; + + @ApiModelProperty("菜单名称") + private String menuName; + + @ApiModelProperty("父级菜单id") + private String parentId; + + @ApiModelProperty("显示顺序") + private String orderNum; + + @ApiModelProperty("请求地址") + private String url; + + @ApiModelProperty("菜单类型") + private String menuType; + + @ApiModelProperty("显示状态") + private String visible; + + @ApiModelProperty("参数") + private String perms; + +} diff --git a/core/src/main/java/com/dite/znpt/domain/vo/RoleMenuReq.java b/core/src/main/java/com/dite/znpt/domain/vo/RoleMenuReq.java new file mode 100644 index 0000000..f7b6663 --- /dev/null +++ b/core/src/main/java/com/dite/znpt/domain/vo/RoleMenuReq.java @@ -0,0 +1,32 @@ +package com.dite.znpt.domain.vo; + +import com.dite.znpt.util.ValidationGroup; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotEmpty; +import java.io.Serial; +import java.io.Serializable; +import java.util.List; + +/** + * @author Bear.G + * @date 2025/5/21/周三 17:33 + * @description + */ +@Data +@ApiModel("角色菜单绑定请求实体") +public class RoleMenuReq implements Serializable { + @Serial + private static final long serialVersionUID = -7759529835730562338L; + + @NotBlank(groups = {ValidationGroup.Insert.class, ValidationGroup.Update.class}, message = "角色id不能为空") + @ApiModelProperty(value = "角色id", required = true) + private String roleId; + + @NotEmpty(groups = {ValidationGroup.Insert.class, ValidationGroup.Update.class}, message = "菜单id不能为空") + @ApiModelProperty(value = "菜单id", required = true) + private List menuIds; +} diff --git a/core/src/main/java/com/dite/znpt/domain/vo/RoleReq.java b/core/src/main/java/com/dite/znpt/domain/vo/RoleReq.java new file mode 100644 index 0000000..40134e0 --- /dev/null +++ b/core/src/main/java/com/dite/znpt/domain/vo/RoleReq.java @@ -0,0 +1,40 @@ +package com.dite.znpt.domain.vo; + +import com.dite.znpt.util.ValidationGroup; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.Size; +import java.io.Serial; +import java.io.Serializable; + +/** + * @author Bear.G + * @date 2025/5/21/周三 12:29 + * @description + */ +@Data +@ApiModel("角色信息请求实体") +public class RoleReq implements Serializable { + @Serial + private static final long serialVersionUID = -4581059117664119614L; + + @NotBlank(groups = {ValidationGroup.Insert.class, ValidationGroup.Update.class}, message = "角色名称不能为空") + @Size(max = 30, message = "角色名称不能超过30个字符") + @ApiModelProperty("角色名称") + private String roleName; + + @NotBlank(groups = {ValidationGroup.Insert.class}, message = "角色权限字符不能为空") + @Size(groups = {ValidationGroup.Insert.class}, max = 20, message = "角色权限字符不能超过20个字符") + @ApiModelProperty("角色权限字符") + private String roleKey; + + @ApiModelProperty("状态") + private Integer status; + + @Size(groups = {ValidationGroup.Insert.class, ValidationGroup.Update.class}, max = 200, message = "备注不能超过200个字符") + @ApiModelProperty("备注") + private String remark; +} diff --git a/core/src/main/java/com/dite/znpt/domain/vo/RoleResp.java b/core/src/main/java/com/dite/znpt/domain/vo/RoleResp.java new file mode 100644 index 0000000..a8c5390 --- /dev/null +++ b/core/src/main/java/com/dite/znpt/domain/vo/RoleResp.java @@ -0,0 +1,36 @@ +package com.dite.znpt.domain.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; + +/** + * @author Bear.G + * @date 2025/5/21/周三 12:26 + * @description + */ +@Data +@ApiModel("角色信息响应实体") +public class RoleResp implements Serializable { + + @Serial + private static final long serialVersionUID = -144489103121775926L; + + @ApiModelProperty("角色id") + private String roleId; + + @ApiModelProperty("角色名称") + private String roleName; + + @ApiModelProperty("角色权限字符") + private String roleKey; + + @ApiModelProperty("状态") + private String status; + + @ApiModelProperty("备注") + private String remark; +} diff --git a/core/src/main/java/com/dite/znpt/domain/vo/UserListReq.java b/core/src/main/java/com/dite/znpt/domain/vo/UserListReq.java index 4916041..6d60091 100644 --- a/core/src/main/java/com/dite/znpt/domain/vo/UserListReq.java +++ b/core/src/main/java/com/dite/znpt/domain/vo/UserListReq.java @@ -23,6 +23,12 @@ public class UserListReq implements Serializable { @ApiModelProperty("姓名") private String name; + @ApiModelProperty("所属部门id") + private String deptId; + + @ApiModelProperty("岗位id") + private String postId; + @ApiModelProperty("手机号码") private String mobile; diff --git a/core/src/main/java/com/dite/znpt/domain/vo/UserListResp.java b/core/src/main/java/com/dite/znpt/domain/vo/UserListResp.java index 155c991..f99c724 100644 --- a/core/src/main/java/com/dite/znpt/domain/vo/UserListResp.java +++ b/core/src/main/java/com/dite/znpt/domain/vo/UserListResp.java @@ -1,5 +1,6 @@ package com.dite.znpt.domain.vo; +import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -26,38 +27,34 @@ public class UserListResp implements Serializable { @ApiModelProperty("账号") private String account; - @ApiModelProperty("头像地址") - private String avatar; - @ApiModelProperty("1正常0禁用") private Integer status; @ApiModelProperty("姓名") private String name; + @ApiModelProperty("所属部门名称") + private String deptName; + + @ApiModelProperty("岗位名称") + private String postName; + @ApiModelProperty("身份证") private String identityCard; - @ApiModelProperty("性别") - private String gender; - @ApiModelProperty("手机号码") private String mobile; @ApiModelProperty("邮箱") private String email; + @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty("入职日期") private LocalDate hiredate; + @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty("出生日期") private LocalDate birthdate; - @ApiModelProperty("学历") - private String education; - - @ApiModelProperty("专业方向") - private String majorField; - } diff --git a/core/src/main/java/com/dite/znpt/domain/vo/UserReq.java b/core/src/main/java/com/dite/znpt/domain/vo/UserReq.java index 1ca16c3..cee022c 100644 --- a/core/src/main/java/com/dite/znpt/domain/vo/UserReq.java +++ b/core/src/main/java/com/dite/znpt/domain/vo/UserReq.java @@ -10,6 +10,7 @@ import javax.validation.constraints.*; import java.io.Serial; import java.io.Serializable; import java.time.LocalDate; +import java.util.List; /** * @Author: gaoxiong @@ -38,6 +39,12 @@ public class UserReq implements Serializable { @ApiModelProperty("姓名") private String name; + @ApiModelProperty("所属部门") + private String deptId; + + @ApiModelProperty("岗位") + private List postIds; + @Pattern(groups = {ValidationGroup.Insert.class, ValidationGroup.Update.class}, regexp = "^$|\\d(?:\\d{15}|\\d{17})$", message = "身份证号码格式不正确") @ApiModelProperty("身份证") private String identityCard; diff --git a/core/src/main/java/com/dite/znpt/domain/vo/UserResp.java b/core/src/main/java/com/dite/znpt/domain/vo/UserResp.java index 27d825c..fe1bf6d 100644 --- a/core/src/main/java/com/dite/znpt/domain/vo/UserResp.java +++ b/core/src/main/java/com/dite/znpt/domain/vo/UserResp.java @@ -25,6 +25,12 @@ public class UserResp extends UserReq implements Serializable{ @ApiModelProperty("账号") private String account; + @ApiModelProperty("所属部门") + private String deptName; + + @ApiModelProperty("岗位,多个岗位英文逗号隔开") + private String postName; + @ApiModelProperty("学历描述") private String educationLabel; diff --git a/core/src/main/java/com/dite/znpt/domain/vo/UserRoleReq.java b/core/src/main/java/com/dite/znpt/domain/vo/UserRoleReq.java new file mode 100644 index 0000000..4f7502d --- /dev/null +++ b/core/src/main/java/com/dite/znpt/domain/vo/UserRoleReq.java @@ -0,0 +1,32 @@ +package com.dite.znpt.domain.vo; + +import com.dite.znpt.util.ValidationGroup; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotEmpty; +import java.io.Serial; +import java.io.Serializable; +import java.util.List; + +/** + * @author Bear.G + * @date 2025/5/21/周三 17:41 + * @description + */ +@Data +@ApiModel("用户角色绑定请求实体") +public class UserRoleReq implements Serializable { + @Serial + private static final long serialVersionUID = -1334908025320245685L; + + @NotBlank(groups = {ValidationGroup.Insert.class, ValidationGroup.Update.class}, message = "用户id不能为空") + @ApiModelProperty("用户id") + private String userId; + + @NotEmpty(groups = {ValidationGroup.Insert.class, ValidationGroup.Update.class}, message = "角色id不能为空") + @ApiModelProperty("角色id") + private List roleIds; +} diff --git a/core/src/main/java/com/dite/znpt/enums/EducationEnum.java b/core/src/main/java/com/dite/znpt/enums/EducationEnum.java index 7e4880a..fef6b8a 100644 --- a/core/src/main/java/com/dite/znpt/enums/EducationEnum.java +++ b/core/src/main/java/com/dite/znpt/enums/EducationEnum.java @@ -46,7 +46,7 @@ public enum EducationEnum { return null == e ? null : e.desc; } - public static List list(){ + public static List listAll(){ List list = new ArrayList<>(EducationEnum.values().length); for (EducationEnum e : EducationEnum.values() ) { JSONObject jsonObject = new JSONObject(); diff --git a/core/src/main/java/com/dite/znpt/enums/GenderEnum.java b/core/src/main/java/com/dite/znpt/enums/GenderEnum.java index 957fb95..11a57bc 100644 --- a/core/src/main/java/com/dite/znpt/enums/GenderEnum.java +++ b/core/src/main/java/com/dite/znpt/enums/GenderEnum.java @@ -39,7 +39,7 @@ public enum GenderEnum { return null == e ? null : e.desc; } - public static List list(){ + public static List listAll(){ List list = new ArrayList<>(GenderEnum.values().length); for (GenderEnum e : GenderEnum.values() ) { JSONObject jsonObject = new JSONObject(); diff --git a/core/src/main/java/com/dite/znpt/enums/MenuTypeEnum.java b/core/src/main/java/com/dite/znpt/enums/MenuTypeEnum.java new file mode 100644 index 0000000..3cd0543 --- /dev/null +++ b/core/src/main/java/com/dite/znpt/enums/MenuTypeEnum.java @@ -0,0 +1,52 @@ +package com.dite.znpt.enums; + +import cn.hutool.json.JSONObject; +import lombok.Getter; + +import java.util.ArrayList; +import java.util.List; + +/** + * @author Bear.G + * @date 2025/5/21/周三 14:44 + * @description + */ +@Getter +public enum MenuTypeEnum { + + DEFECT("catalog", "目录"), + TYPICAL("route", "菜单"), + OTHER("button", "按钮"); + + private final String code; + private final String desc; + + MenuTypeEnum(String code, String desc){ + this.code = code; + this.desc = desc; + } + + public static MenuTypeEnum getByCode(String code){ + for (MenuTypeEnum e : MenuTypeEnum.values() ) { + if(e.code.equals(code)){ + return e; + } + } + return null; + } + + public static String getDescByCode(String code){ + MenuTypeEnum e = getByCode(code); + return null == e ? null : e.desc; + } + + public static List listAll(){ + List list = new ArrayList<>(MenuTypeEnum.values().length); + for (MenuTypeEnum e : MenuTypeEnum.values() ) { + JSONObject jsonObject = new JSONObject(); + jsonObject.set(e.code, e.desc); + list.add(jsonObject); + } + return list; + } +} diff --git a/core/src/main/java/com/dite/znpt/mapper/MenuMapper.java b/core/src/main/java/com/dite/znpt/mapper/MenuMapper.java new file mode 100644 index 0000000..831a489 --- /dev/null +++ b/core/src/main/java/com/dite/znpt/mapper/MenuMapper.java @@ -0,0 +1,33 @@ +package com.dite.znpt.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.dite.znpt.domain.entity.DeptEntity; +import com.dite.znpt.domain.entity.MenuEntity; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @author Bear.G + * @date 2025/5/21/周三 10:16 + * @description + */ +public interface MenuMapper extends BaseMapper { + /** + * @Author Bear.G + * @Date 2025/5/20/周二 15:49 + * @description 向上递归查询菜单树 + * @param menuName + * @return + **/ + List upwardRecursionSelect(@Param("menuName") String menuName); + + /** + * @Author Bear.G + * @Date 2025/5/20/周二 15:49 + * @description 向下递归查询菜单树 + * @param menuId + * @return + **/ + List downwardRecursionSelect(@Param("menuId") String menuId); +} diff --git a/core/src/main/java/com/dite/znpt/mapper/RoleMapper.java b/core/src/main/java/com/dite/znpt/mapper/RoleMapper.java new file mode 100644 index 0000000..e1cfdbf --- /dev/null +++ b/core/src/main/java/com/dite/znpt/mapper/RoleMapper.java @@ -0,0 +1,12 @@ +package com.dite.znpt.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.dite.znpt.domain.entity.RoleEntity; + +/** + * @author Bear.G + * @date 2025/5/21/周三 10:16 + * @description + */ +public interface RoleMapper extends BaseMapper { +} diff --git a/core/src/main/java/com/dite/znpt/mapper/RoleMenuMapper.java b/core/src/main/java/com/dite/znpt/mapper/RoleMenuMapper.java new file mode 100644 index 0000000..227df93 --- /dev/null +++ b/core/src/main/java/com/dite/znpt/mapper/RoleMenuMapper.java @@ -0,0 +1,12 @@ +package com.dite.znpt.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.dite.znpt.domain.entity.RoleMenuEntity; + +/** + * @author Bear.G + * @date 2025/5/21/周三 10:17 + * @description + */ +public interface RoleMenuMapper extends BaseMapper { +} diff --git a/core/src/main/java/com/dite/znpt/mapper/UserMapper.java b/core/src/main/java/com/dite/znpt/mapper/UserMapper.java index 51cd24b..ac20a77 100644 --- a/core/src/main/java/com/dite/znpt/mapper/UserMapper.java +++ b/core/src/main/java/com/dite/znpt/mapper/UserMapper.java @@ -3,6 +3,7 @@ package com.dite.znpt.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.dite.znpt.domain.entity.UserEntity; import com.dite.znpt.domain.vo.UserListReq; +import com.dite.znpt.domain.vo.UserListResp; import com.dite.znpt.domain.vo.UserResp; import java.util.List; @@ -13,6 +14,6 @@ import java.util.List; * @Description: 用户信息表数据库访问层 */ public interface UserMapper extends BaseMapper { - List queryBySelective(UserListReq req); + List queryBySelective(UserListReq req); } diff --git a/core/src/main/java/com/dite/znpt/mapper/UserPostMapper.java b/core/src/main/java/com/dite/znpt/mapper/UserPostMapper.java new file mode 100644 index 0000000..fee40fd --- /dev/null +++ b/core/src/main/java/com/dite/znpt/mapper/UserPostMapper.java @@ -0,0 +1,12 @@ +package com.dite.znpt.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.dite.znpt.domain.entity.UserPostEntity; + +/** + * @author Bear.G + * @date 2025/5/21/周三 10:15 + * @description + */ +public interface UserPostMapper extends BaseMapper { +} diff --git a/core/src/main/java/com/dite/znpt/mapper/UserRoleMapper.java b/core/src/main/java/com/dite/znpt/mapper/UserRoleMapper.java new file mode 100644 index 0000000..0e0065c --- /dev/null +++ b/core/src/main/java/com/dite/znpt/mapper/UserRoleMapper.java @@ -0,0 +1,12 @@ +package com.dite.znpt.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.dite.znpt.domain.entity.UserRoleEntity; + +/** + * @author Bear.G + * @date 2025/5/21/周三 10:16 + * @description + */ +public interface UserRoleMapper extends BaseMapper { +} diff --git a/core/src/main/java/com/dite/znpt/service/MenuService.java b/core/src/main/java/com/dite/znpt/service/MenuService.java new file mode 100644 index 0000000..d57c773 --- /dev/null +++ b/core/src/main/java/com/dite/znpt/service/MenuService.java @@ -0,0 +1,23 @@ +package com.dite.znpt.service; + +import cn.hutool.core.lang.tree.Tree; +import com.baomidou.mybatisplus.extension.service.IService; +import com.dite.znpt.domain.entity.MenuEntity; +import com.dite.znpt.domain.vo.MenuReq; +import com.dite.znpt.domain.vo.MenuResp; + +import java.util.List; + +/** + * @author Bear.G + * @date 2025/5/21/周三 10:24 + * @description + */ +public interface MenuService extends IService { + + List> tree(String menuName); + MenuResp detail(String menuId); + void save(MenuReq req); + void update(String menuId, MenuReq req); + void deleteById(String menuId); +} diff --git a/core/src/main/java/com/dite/znpt/service/RoleMenuService.java b/core/src/main/java/com/dite/znpt/service/RoleMenuService.java new file mode 100644 index 0000000..f7f150b --- /dev/null +++ b/core/src/main/java/com/dite/znpt/service/RoleMenuService.java @@ -0,0 +1,17 @@ +package com.dite.znpt.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.dite.znpt.domain.entity.RoleMenuEntity; +import com.dite.znpt.domain.vo.RoleMenuReq; + +import java.util.List; + +/** + * @author Bear.G + * @date 2025/5/21/周三 16:01 + * @description + */ +public interface RoleMenuService extends IService { + + void bindRoleMenu(RoleMenuReq req); +} diff --git a/core/src/main/java/com/dite/znpt/service/RoleService.java b/core/src/main/java/com/dite/znpt/service/RoleService.java new file mode 100644 index 0000000..2cd626a --- /dev/null +++ b/core/src/main/java/com/dite/znpt/service/RoleService.java @@ -0,0 +1,28 @@ +package com.dite.znpt.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.dite.znpt.domain.entity.RoleEntity; +import com.dite.znpt.domain.vo.RoleReq; +import com.dite.znpt.domain.vo.RoleResp; + +import java.util.List; + +/** + * @author Bear.G + * @date 2025/5/21/周三 10:24 + * @description + */ +public interface RoleService extends IService { + + List page(String roleName); + + List list(String roleName); + + void save(RoleReq req); + + void update(String roleId, RoleReq req); + + void deleteById(String id); + + RoleResp detail(String roleId); +} diff --git a/core/src/main/java/com/dite/znpt/service/UserPostService.java b/core/src/main/java/com/dite/znpt/service/UserPostService.java new file mode 100644 index 0000000..4b67fd3 --- /dev/null +++ b/core/src/main/java/com/dite/znpt/service/UserPostService.java @@ -0,0 +1,16 @@ +package com.dite.znpt.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.dite.znpt.domain.entity.UserPostEntity; + +import java.util.List; + +/** + * @author Bear.G + * @date 2025/5/21/周三 15:39 + * @description + */ +public interface UserPostService extends IService { + void bindUserPost(String userId, List postIds); + void bindPostUser(String postId, List userIds); +} diff --git a/core/src/main/java/com/dite/znpt/service/UserRoleService.java b/core/src/main/java/com/dite/znpt/service/UserRoleService.java new file mode 100644 index 0000000..37dcd06 --- /dev/null +++ b/core/src/main/java/com/dite/znpt/service/UserRoleService.java @@ -0,0 +1,19 @@ +package com.dite.znpt.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.dite.znpt.domain.entity.UserRoleEntity; +import com.dite.znpt.domain.vo.UserRoleReq; + +import java.util.List; + +/** + * @author Bear.G + * @date 2025/5/21/周三 15:33 + * @description + */ +public interface UserRoleService extends IService { + + void bindUserRole(UserRoleReq req); + + void bindRoleUser(String roleId, List userIds); +} diff --git a/core/src/main/java/com/dite/znpt/service/UserService.java b/core/src/main/java/com/dite/znpt/service/UserService.java index 85f83dc..46a1c8d 100644 --- a/core/src/main/java/com/dite/znpt/service/UserService.java +++ b/core/src/main/java/com/dite/znpt/service/UserService.java @@ -3,6 +3,7 @@ package com.dite.znpt.service; import com.baomidou.mybatisplus.extension.service.IService; import com.dite.znpt.domain.entity.UserEntity; import com.dite.znpt.domain.vo.UserListReq; +import com.dite.znpt.domain.vo.UserListResp; import com.dite.znpt.domain.vo.UserReq; import com.dite.znpt.domain.vo.UserResp; @@ -23,7 +24,7 @@ public interface UserService extends IService { * @author huise23 * @date 2025/04/11 23:17 **/ - List page(UserListReq req); + List page(UserListReq req); /** * 功能描述:查询用户信息列表 * @@ -32,7 +33,7 @@ public interface UserService extends IService { * @author huise23 * @date 2025/04/11 23:17 **/ - List list(UserListReq req); + List list(UserListReq req); /** * 功能描述:查询用户信息详情 diff --git a/core/src/main/java/com/dite/znpt/service/impl/DefectServiceImpl.java b/core/src/main/java/com/dite/znpt/service/impl/DefectServiceImpl.java index b2cd108..9259bb5 100644 --- a/core/src/main/java/com/dite/znpt/service/impl/DefectServiceImpl.java +++ b/core/src/main/java/com/dite/znpt/service/impl/DefectServiceImpl.java @@ -107,7 +107,7 @@ public class DefectServiceImpl extends ServiceImpl i List imageEntityList = imageService.batchSaveByImageSimpleReq(imageSimpleReqList); Map imageMap = imageEntityList.stream().collect(Collectors.toMap(k->k.getPartId().concat(StrUtil.COLON).concat(k.getImagePath()), Function.identity())); List defectEntityList = new ArrayList<>(); - list.stream().forEach(req -> { + list.forEach(req -> { String key = req.getPartId().concat(StrUtil.COLON).concat(req.getImagePath()); if(imageMap.containsKey(key)){ DefectEntity defectEntity = Converts.INSTANCE.toDefectEntity(req); diff --git a/core/src/main/java/com/dite/znpt/service/impl/DeptServiceImpl.java b/core/src/main/java/com/dite/znpt/service/impl/DeptServiceImpl.java index 804d199..583e11e 100644 --- a/core/src/main/java/com/dite/znpt/service/impl/DeptServiceImpl.java +++ b/core/src/main/java/com/dite/znpt/service/impl/DeptServiceImpl.java @@ -57,7 +57,7 @@ public class DeptServiceImpl extends ServiceImpl impleme public DeptResp detail(String deptId) { DeptEntity entity = this.getById(deptId); if (null == entity || !entity.getDelFlag().equals(Constants.DEL_FLAG_0)){ - throw new ServiceException(Message.DEPT_ID_NOT_EXISTS); + throw new ServiceException(Message.DEPT_ID_NOT_EXIST); } return Converts.INSTANCE.toDeptResp(entity); } @@ -73,7 +73,7 @@ public class DeptServiceImpl extends ServiceImpl impleme public void update(String deptId, DeptReq req) { DeptEntity originalEntity = this.getById(deptId); if (null == originalEntity || !originalEntity.getDelFlag().equals(Constants.DEL_FLAG_0)){ - throw new ServiceException(Message.DEPT_ID_NOT_EXISTS); + throw new ServiceException(Message.DEPT_ID_NOT_EXIST); } DeptEntity entity = dealDept(req); entity.setDeptId(deptId); @@ -91,7 +91,7 @@ public class DeptServiceImpl extends ServiceImpl impleme if(StrUtil.isNotBlank(req.getParentId())){ DeptEntity parent = this.getById(req.getParentId()); if(null == parent || !parent.getDelFlag().equals(Constants.DEL_FLAG_0)){ - throw new ServiceException(Message.DEPT_PARENT_NOT_EXISTS); + throw new ServiceException(Message.DEPT_PARENT_NOT_EXIST); } entity.setAncestors(parent.getAncestors() + StrUtil.COMMA + parent.getDeptId()); entity.setDeptFullName(parent.getDeptFullName() + StrUtil.SLASH + entity.getDeptName()); @@ -108,7 +108,7 @@ public class DeptServiceImpl extends ServiceImpl impleme public void deleteById(String deptId) { DeptEntity entity = this.getById(deptId); if (null == entity || !entity.getDelFlag().equals(Constants.DEL_FLAG_0)){ - throw new ServiceException(Message.DEPT_ID_NOT_EXISTS); + throw new ServiceException(Message.DEPT_ID_NOT_EXIST); } entity.setDelFlag(Constants.DEL_FLAG_1); this.updateById(entity); diff --git a/core/src/main/java/com/dite/znpt/service/impl/ImageCollectServiceImpl.java b/core/src/main/java/com/dite/znpt/service/impl/ImageCollectServiceImpl.java index 8c66217..cb8f22c 100644 --- a/core/src/main/java/com/dite/znpt/service/impl/ImageCollectServiceImpl.java +++ b/core/src/main/java/com/dite/znpt/service/impl/ImageCollectServiceImpl.java @@ -59,7 +59,7 @@ public class ImageCollectServiceImpl extends ServiceImpl imageList = Converts.INSTANCE.toImageEntity(req.getImageList()); String permPathPrefix = permPath.concat(ImageSourceEnum.COLLECT.getCode()).concat(FileUtil.FILE_SEPARATOR).concat(partId).concat(FileUtil.FILE_SEPARATOR).concat(dateStr).concat(FileUtil.FILE_SEPARATOR); String temPathPrefix = tempPath.concat(ImageSourceEnum.COLLECT.getCode()).concat(FileUtil.FILE_SEPARATOR).concat(partId).concat(FileUtil.FILE_SEPARATOR); - imageList.stream().forEach(image -> { + imageList.forEach(image -> { image.setPartId(partId); image.setCollectId(imageCollect.getCollectId()); String path = permPathPrefix + image.getImageName(); diff --git a/core/src/main/java/com/dite/znpt/service/impl/ImageServiceImpl.java b/core/src/main/java/com/dite/znpt/service/impl/ImageServiceImpl.java index bc25def..886c7de 100644 --- a/core/src/main/java/com/dite/znpt/service/impl/ImageServiceImpl.java +++ b/core/src/main/java/com/dite/znpt/service/impl/ImageServiceImpl.java @@ -84,7 +84,7 @@ public class ImageServiceImpl extends ServiceImpl impl List imageList = new ArrayList<>(); List partIds = list.stream().map(ImageSimpleReq::getPartId).collect(Collectors.toList()); Map partIdMap= partService.listByIds(partIds).stream().collect(Collectors.toMap(PartEntity::getPartId, Function.identity())); - list.stream().forEach(req -> { + list.forEach(req -> { if(partIdMap.containsKey(req.getPartId())){ String path_prefix = permPath.concat(StrUtil.BACKSLASH).concat(req.getImageSource()).concat(StrUtil.BACKSLASH).concat(req.getPartId()).concat(StrUtil.BACKSLASH); String temp_path_prefix = tempPath.concat(StrUtil.BACKSLASH).concat(req.getImageSource()).concat(StrUtil.BACKSLASH).concat(req.getPartId()).concat(StrUtil.BACKSLASH); diff --git a/core/src/main/java/com/dite/znpt/service/impl/MenuServiceImpl.java b/core/src/main/java/com/dite/znpt/service/impl/MenuServiceImpl.java new file mode 100644 index 0000000..b6c93a3 --- /dev/null +++ b/core/src/main/java/com/dite/znpt/service/impl/MenuServiceImpl.java @@ -0,0 +1,84 @@ +package com.dite.znpt.service.impl; + +import cn.hutool.core.lang.tree.Tree; +import cn.hutool.core.lang.tree.TreeNodeConfig; +import cn.hutool.core.lang.tree.TreeUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.dite.znpt.constant.Message; +import com.dite.znpt.converts.Converts; +import com.dite.znpt.domain.entity.DeptEntity; +import com.dite.znpt.domain.entity.MenuEntity; +import com.dite.znpt.domain.vo.MenuReq; +import com.dite.znpt.domain.vo.MenuResp; +import com.dite.znpt.exception.ServiceException; +import com.dite.znpt.mapper.MenuMapper; +import com.dite.znpt.service.MenuService; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; + +/** + * @author Bear.G + * @date 2025/5/21/周三 10:27 + * @description + */ +@Service +public class MenuServiceImpl extends ServiceImpl implements MenuService { + + @Override + public List> tree(String menuName) { + List menuList = StrUtil.isBlank(menuName) ? this.baseMapper.downwardRecursionSelect(null) : this.baseMapper.upwardRecursionSelect(menuName); + //配置 + TreeNodeConfig treeNodeConfig = new TreeNodeConfig(); + treeNodeConfig.setIdKey("menuId"); + treeNodeConfig.setNameKey("menuName"); + treeNodeConfig.setParentIdKey("parentId"); + treeNodeConfig.setWeightKey("orderNum"); + //转换器 + return TreeUtil.build(menuList, "0", treeNodeConfig, + (treeNode, tree) -> { + tree.setId(treeNode.getMenuId()); + tree.setParentId(treeNode.getParentId()); + tree.setName(treeNode.getMenuName()); + tree.putExtra("menuType",treeNode.getMenuType()); + tree.putExtra("visible",treeNode.getVisible()); + tree.putExtra("orderNum",treeNode.getOrderNum()); + }); + } + + @Override + public MenuResp detail(String menuId) { + return Converts.INSTANCE.toMenuResp(this.getById(menuId)); + } + + @Transactional(rollbackFor = Exception.class) + @Override + public void save(MenuReq req) { + MenuEntity entity = Converts.INSTANCE.toMenuEntity(req); + entity.setParentId(StrUtil.isBlank(req.getParentId()) ? "0" : req.getParentId()); + entity.setVisible(StrUtil.isBlank(req.getVisible()) ? "0" : req.getVisible()); + this.save(entity); + } + + @Transactional(rollbackFor = Exception.class) + @Override + public void update(String menuId, MenuReq req) { + if(null == this.getById(menuId)){ + throw new ServiceException(Message.MENU_ID_NOT_EXIST); + } + MenuEntity entity = Converts.INSTANCE.toMenuEntity(req); + entity.setMenuId(menuId); + if(StrUtil.isBlank(entity.getParentId())){ + entity.setParentId("0"); + } + this.updateById(entity); + } + + @Transactional(rollbackFor = Exception.class) + @Override + public void deleteById(String menuId) { + this.removeById(menuId); + } +} diff --git a/core/src/main/java/com/dite/znpt/service/impl/PostServiceImpl.java b/core/src/main/java/com/dite/znpt/service/impl/PostServiceImpl.java index e952e4e..6e321df 100644 --- a/core/src/main/java/com/dite/znpt/service/impl/PostServiceImpl.java +++ b/core/src/main/java/com/dite/znpt/service/impl/PostServiceImpl.java @@ -1,20 +1,28 @@ package com.dite.znpt.service.impl; +import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.dite.znpt.constant.Constants; import com.dite.znpt.constant.Message; import com.dite.znpt.converts.Converts; import com.dite.znpt.domain.entity.PostEntity; +import com.dite.znpt.domain.entity.UserEntity; +import com.dite.znpt.domain.entity.UserPostEntity; import com.dite.znpt.domain.vo.PostReq; import com.dite.znpt.domain.vo.PostResp; import com.dite.znpt.exception.ServiceException; import com.dite.znpt.mapper.PostMapper; +import com.dite.znpt.mapper.UserPostMapper; import com.dite.znpt.service.PostService; +import com.dite.znpt.service.UserService; import com.dite.znpt.util.PageUtil; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import javax.annotation.Resource; +import java.util.ArrayList; import java.util.List; /** @@ -24,6 +32,10 @@ import java.util.List; */ @Service public class PostServiceImpl extends ServiceImpl implements PostService { + @Resource + private UserService userService; + @Resource + private UserPostMapper userPostMapper; @Override public List page(String postName) { @@ -52,7 +64,7 @@ public class PostServiceImpl extends ServiceImpl impleme @Override public void update(String postId, PostReq req) { if(null == this.getById(postId)){ - throw new ServiceException(Message.POST_ID_NOT_EXISTS); + throw new ServiceException(Message.POST_ID_NOT_EXIST); } PostEntity entity = Converts.INSTANCE.toPostEntity(req); entity.setPostId(postId); @@ -63,7 +75,7 @@ public class PostServiceImpl extends ServiceImpl impleme @Override public void deleteById(String postId) { if(null == this.getById(postId)){ - throw new ServiceException(Message.POST_ID_NOT_EXISTS); + throw new ServiceException(Message.POST_ID_NOT_EXIST); } this.removeById(postId); } diff --git a/core/src/main/java/com/dite/znpt/service/impl/RoleMenuServiceImpl.java b/core/src/main/java/com/dite/znpt/service/impl/RoleMenuServiceImpl.java new file mode 100644 index 0000000..aaeca56 --- /dev/null +++ b/core/src/main/java/com/dite/znpt/service/impl/RoleMenuServiceImpl.java @@ -0,0 +1,59 @@ +package com.dite.znpt.service.impl; + +import cn.hutool.core.collection.CollUtil; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.dite.znpt.constant.Constants; +import com.dite.znpt.constant.Message; +import com.dite.znpt.converts.Converts; +import com.dite.znpt.domain.entity.MenuEntity; +import com.dite.znpt.domain.entity.RoleEntity; +import com.dite.znpt.domain.entity.RoleMenuEntity; +import com.dite.znpt.domain.vo.RoleMenuReq; +import com.dite.znpt.exception.ServiceException; +import com.dite.znpt.mapper.RoleMenuMapper; +import com.dite.znpt.service.MenuService; +import com.dite.znpt.service.RoleMenuService; +import com.dite.znpt.service.RoleService; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; + +/** + * @author Bear.G + * @date 2025/5/21/周三 16:02 + * @description + */ +@Service +public class RoleMenuServiceImpl extends ServiceImpl implements RoleMenuService { + + @Resource + private RoleService roleService; + @Resource + private MenuService menuService; + + @Transactional(rollbackFor = Exception.class) + @Override + public void bindRoleMenu(RoleMenuReq req) { + RoleEntity role = roleService.getById(req.getRoleId()); + if (role == null || !Constants.DEL_FLAG_0.equals(role.getDelFlag())) { + throw new ServiceException(Message.ROLE_ID_NOT_EXIST_OR_ILLEGAL); + } + List menuList = menuService.listByIds(req.getMenuIds()); + if(CollUtil.isEmpty(menuList) || menuList.size() != req.getMenuIds().size()){ + throw new ServiceException(Message.MENU_ID_NOT_EXIST_OR_ILLEGAL); + } + this.remove(Wrappers.lambdaQuery(RoleMenuEntity.class).eq(RoleMenuEntity::getRoleId, req.getRoleId())); + List roleMenuList =new ArrayList<>(req.getMenuIds().size()); + for (String menuId : req.getMenuIds()) { + RoleMenuEntity roleMenu = new RoleMenuEntity(); + roleMenu.setRoleId(req.getRoleId()); + roleMenu.setMenuId(menuId); + roleMenuList.add(roleMenu); + } + this.saveBatch(roleMenuList); + } +} diff --git a/core/src/main/java/com/dite/znpt/service/impl/RoleServiceImpl.java b/core/src/main/java/com/dite/znpt/service/impl/RoleServiceImpl.java new file mode 100644 index 0000000..fa1cb66 --- /dev/null +++ b/core/src/main/java/com/dite/znpt/service/impl/RoleServiceImpl.java @@ -0,0 +1,81 @@ +package com.dite.znpt.service.impl; + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.dite.znpt.constant.Constants; +import com.dite.znpt.constant.Message; +import com.dite.znpt.converts.Converts; +import com.dite.znpt.domain.entity.RoleEntity; +import com.dite.znpt.domain.vo.RoleReq; +import com.dite.znpt.domain.vo.RoleResp; +import com.dite.znpt.exception.ServiceException; +import com.dite.znpt.mapper.RoleMapper; +import com.dite.znpt.service.RoleService; +import com.dite.znpt.util.PageUtil; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; + +/** + * @author Bear.G + * @date 2025/5/21/周三 10:25 + * @description + */ +@Service +public class RoleServiceImpl extends ServiceImpl implements RoleService { + + @Override + public List page(String roleName) { + PageUtil.startPage(); + return this.list(roleName); + } + + @Override + public List list(String roleName) { + List list = this.list( + Wrappers.lambdaQuery(RoleEntity.class) + .eq(RoleEntity::getDelFlag, Constants.DEL_FLAG_0) + .like(StrUtil.isNotBlank(roleName), RoleEntity::getRoleName, roleName) + ); + return Converts.INSTANCE.toRoleResp(list); + } + + @Transactional(rollbackFor = Exception.class) + @Override + public void save(RoleReq req) { + RoleEntity entity = Converts.INSTANCE.toRoleEntity(req); + this.save(entity); + } + + @Transactional(rollbackFor = Exception.class) + @Override + public void update(String roleId, RoleReq req) { + RoleEntity originEntity = this.getById(roleId); + if(null == originEntity || !Constants.DEL_FLAG_0.equals(originEntity.getDelFlag())) { + throw new ServiceException(Message.ROLE_ID_NOT_EXIST); + } + RoleEntity entity = Converts.INSTANCE.toRoleEntity(req); + entity.setRoleId(roleId); + entity.setRoleKey(null); + this.updateById(entity); + } + + @Transactional(rollbackFor = Exception.class) + @Override + public void deleteById(String roleId) { + RoleEntity entity = this.getById(roleId); + if(null == entity || !Constants.DEL_FLAG_0.equals(entity.getDelFlag())) { + throw new ServiceException(Message.ROLE_ID_NOT_EXIST); + } + entity.setDelFlag(Constants.DEL_FLAG_1); + this.updateById(entity); + } + + @Override + public RoleResp detail(String roleId) { + return Converts.INSTANCE.toRoleResp(this.getById(roleId)); + } + +} diff --git a/core/src/main/java/com/dite/znpt/service/impl/UserPostServiceImpl.java b/core/src/main/java/com/dite/znpt/service/impl/UserPostServiceImpl.java new file mode 100644 index 0000000..8e6410e --- /dev/null +++ b/core/src/main/java/com/dite/znpt/service/impl/UserPostServiceImpl.java @@ -0,0 +1,79 @@ +package com.dite.znpt.service.impl; + +import cn.hutool.core.collection.CollUtil; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.dite.znpt.constant.Constants; +import com.dite.znpt.constant.Message; +import com.dite.znpt.domain.entity.PostEntity; +import com.dite.znpt.domain.entity.UserEntity; +import com.dite.znpt.domain.entity.UserPostEntity; +import com.dite.znpt.exception.ServiceException; +import com.dite.znpt.mapper.UserPostMapper; +import com.dite.znpt.service.PostService; +import com.dite.znpt.service.UserPostService; +import com.dite.znpt.service.UserService; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; + +/** + * @author Bear.G + * @date 2025/5/21/周三 15:40 + * @description + */ +@Service +public class UserPostServiceImpl extends ServiceImpl implements UserPostService { + + @Resource + private PostService postService; + @Resource + private UserService userService; + + @Override + @Transactional(rollbackFor = Exception.class) + public void bindUserPost(String userId, List postIds) { + List postList = postService.listByIds(postIds); + if(CollUtil.isEmpty(postList) || postList.size() != postIds.size()){ + throw new ServiceException(Message.POST_ID_NOT_EXIST_OR_ILLEGAL); + } + UserEntity user = userService.getById(userId); + if(null == user || Constants.DEL_FLAG_1.equals(user.getDelFlag())){ + throw new ServiceException(Message.USER_ID_NOT_EXIST); + } + this.remove(Wrappers.lambdaQuery(UserPostEntity.class).eq(UserPostEntity::getUserId, userId)); + List userPostList = new ArrayList<>(); + postIds.forEach(postId -> { + UserPostEntity userPostEntity = new UserPostEntity(); + userPostEntity.setUserId(userId); + userPostEntity.setPostId(postId); + userPostList.add(userPostEntity); + }); + this.saveBatch(userPostList); + } + + @Transactional(rollbackFor = Exception.class) + @Override + public void bindPostUser(String postId, List userIds) { + PostEntity post = postService.getById(postId); + if(null == post || !Constants.STATUS_0.equals(post.getStatus())){ + throw new ServiceException(Message.POST_ID_NOT_EXIST_OR_ILLEGAL); + } + List userList = userService.listByIds(userIds).stream().filter(userEntity -> !Constants.DEL_FLAG_1.equals(userEntity.getDelFlag())).toList(); + if(CollUtil.isEmpty(userList) || userIds.size() != userList.size()){ + throw new ServiceException(Message.USER_ID_NOT_EXIST_OR_ILLEGAL); + } + this.remove(Wrappers.lambdaQuery(UserPostEntity.class).eq(UserPostEntity::getPostId, postId)); + List userPostList = new ArrayList<>(); + userIds.forEach(userId -> { + UserPostEntity userPostEntity = new UserPostEntity(); + userPostEntity.setUserId(userId); + userPostEntity.setPostId(postId); + userPostList.add(userPostEntity); + }); + this.saveBatch(userPostList); + } +} diff --git a/core/src/main/java/com/dite/znpt/service/impl/UserRoleServiceImpl.java b/core/src/main/java/com/dite/znpt/service/impl/UserRoleServiceImpl.java new file mode 100644 index 0000000..c08c3c0 --- /dev/null +++ b/core/src/main/java/com/dite/znpt/service/impl/UserRoleServiceImpl.java @@ -0,0 +1,78 @@ +package com.dite.znpt.service.impl; + +import cn.hutool.core.collection.CollUtil; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.dite.znpt.constant.Constants; +import com.dite.znpt.constant.Message; +import com.dite.znpt.domain.entity.RoleEntity; +import com.dite.znpt.domain.entity.UserEntity; +import com.dite.znpt.domain.entity.UserRoleEntity; +import com.dite.znpt.domain.vo.UserRoleReq; +import com.dite.znpt.exception.ServiceException; +import com.dite.znpt.mapper.UserRoleMapper; +import com.dite.znpt.service.RoleService; +import com.dite.znpt.service.UserRoleService; +import com.dite.znpt.service.UserService; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; + +/** + * @author Bear.G + * @date 2025/5/21/周三 15:33 + * @description + */ +@Service +public class UserRoleServiceImpl extends ServiceImpl implements UserRoleService { + + @Resource + private UserService userService; + + @Resource + private RoleService roleService; + + @Transactional(rollbackFor = Exception.class) + @Override + public void bindUserRole(UserRoleReq req) { + UserEntity user = userService.getById(req.getUserId()); + if(null == user || !Constants.DEL_FLAG_0.equals(user.getDelFlag())){ + throw new ServiceException(Message.USER_ID_NOT_EXIST_OR_ILLEGAL); + } + List roleList = roleService.listByIds(req.getRoleIds()).stream().filter(role -> Constants.DEL_FLAG_0.equals(role.getDelFlag())).toList(); + if(CollUtil.isEmpty(roleList) || req.getRoleIds().size() != roleList.size()){ + throw new ServiceException(Message.ROLE_ID_NOT_EXIST_OR_ILLEGAL); + } + List userRoleList = new ArrayList<>(); + req.getRoleIds().forEach(roleId -> { + UserRoleEntity userRole = new UserRoleEntity(); + userRole.setUserId(req.getUserId()); + userRole.setRoleId(roleId); + userRoleList.add(userRole); + }); + this.saveBatch(userRoleList); + } + + @Transactional(rollbackFor = Exception.class) + @Override + public void bindRoleUser(String roleId, List userIds) { + RoleEntity role = roleService.getById(roleId); + if(role == null || !Constants.DEL_FLAG_0.equals(role.getDelFlag())){ + throw new ServiceException(Message.ROLE_ID_NOT_EXIST_OR_ILLEGAL); + } + List userList = userService.listByIds(userIds).stream().filter(user -> Constants.DEL_FLAG_0.equals(user.getDelFlag())).toList(); + if(CollUtil.isEmpty(userList) || userIds.size()!= userList.size()){ + throw new ServiceException(Message.USER_ID_NOT_EXIST_OR_ILLEGAL); + } + List userRoleList = new ArrayList<>(); + userIds.forEach(userId -> { + UserRoleEntity userRole = new UserRoleEntity(); + userRole.setUserId(userId); + userRole.setRoleId(roleId); + userRoleList.add(userRole); + }); + this.saveBatch(userRoleList); + } +} diff --git a/core/src/main/java/com/dite/znpt/service/impl/UserServiceImpl.java b/core/src/main/java/com/dite/znpt/service/impl/UserServiceImpl.java index e576f9b..6197865 100644 --- a/core/src/main/java/com/dite/znpt/service/impl/UserServiceImpl.java +++ b/core/src/main/java/com/dite/znpt/service/impl/UserServiceImpl.java @@ -2,31 +2,38 @@ package com.dite.znpt.service.impl; import cn.dev33.satoken.secure.SaBase64Util; import cn.dev33.satoken.secure.SaSecureUtil; +import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.RandomUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.dite.znpt.constant.Constants; import com.dite.znpt.constant.Message; import com.dite.znpt.converts.Converts; +import com.dite.znpt.domain.entity.PostEntity; import com.dite.znpt.domain.entity.UserEntity; +import com.dite.znpt.domain.entity.UserPostEntity; import com.dite.znpt.domain.vo.UserListReq; +import com.dite.znpt.domain.vo.UserListResp; import com.dite.znpt.domain.vo.UserReq; import com.dite.znpt.domain.vo.UserResp; -import com.dite.znpt.enums.EducationEnum; import com.dite.znpt.exception.ServiceException; -import com.dite.znpt.service.UserService; import com.dite.znpt.mapper.UserMapper; +import com.dite.znpt.service.DeptService; +import com.dite.znpt.service.PostService; +import com.dite.znpt.service.UserPostService; +import com.dite.znpt.service.UserService; +import com.dite.znpt.util.PageUtil; import com.dite.znpt.util.PasswordUtil; +import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; -import lombok.RequiredArgsConstructor; -import com.dite.znpt.util.PageUtil; import org.springframework.transaction.annotation.Transactional; +import javax.annotation.Resource; import java.util.List; +import java.util.stream.Collectors; /** * @author huise23 @@ -43,6 +50,15 @@ public class UserServiceImpl extends ServiceImpl impleme @Value("${password.enable-default:true}") private Boolean enableDefaultPassword; + @Resource + private DeptService deptService; + + @Resource + private PostService postService; + + @Resource + private UserPostService userPostService; + /** * 功能描述:分页查询用户信息列表 * @@ -52,7 +68,7 @@ public class UserServiceImpl extends ServiceImpl impleme * @date 2025/04/11 23:17 **/ @Override - public List page(UserListReq req) { + public List page(UserListReq req) { PageUtil.startPage(); return this.list(req); } @@ -66,13 +82,8 @@ public class UserServiceImpl extends ServiceImpl impleme * @date 2025/04/11 23:17 **/ @Override - public List list(UserListReq req) { - PageUtil.startPage(); - List userRespList= this.baseMapper.queryBySelective(req); - userRespList.forEach(resp -> { - resp.setEducationLabel(EducationEnum.getDescByCode(resp.getEducation())); - }); - return userRespList; + public List list(UserListReq req) { + return this.baseMapper.queryBySelective(req); } /** @@ -86,7 +97,18 @@ public class UserServiceImpl extends ServiceImpl impleme @Override public UserResp detail(String userId) { UserEntity entity = this.getById(userId); - return Converts.INSTANCE.toUserResp(entity); + UserResp userResp= Converts.INSTANCE.toUserResp(entity); + if(StrUtil.isNotBlank(userResp.getDeptId())){ + userResp.setUserId(deptService.getById(userResp.getDeptId()).getDeptName()); + } + List userPostList = userPostService.list(Wrappers.lambdaQuery(UserPostEntity.class).eq(UserPostEntity::getUserId, userId)); + if(CollUtil.isNotEmpty(userPostList)){ + String postName = postService.listByIds( + userPostList.stream().map(UserPostEntity::getPostId).toList() + ).stream().map(PostEntity::getPostName).collect(Collectors.joining(StrUtil.COMMA)); + userResp.setPostName(postName); + } + return userResp; } /** @@ -106,6 +128,9 @@ public class UserServiceImpl extends ServiceImpl impleme String password = enableDefaultPassword ? defaultPassword : PasswordUtil.generatePassword(); entity.setPassword(SaSecureUtil.md5(req.getAccount().concat(password).concat(salt))); this.save(entity); + if(CollUtil.isNotEmpty(req.getPostIds())){ + userPostService.bindUserPost(entity.getUserId(), req.getPostIds()); + } return SaBase64Util.encode(password); } @@ -128,27 +153,39 @@ public class UserServiceImpl extends ServiceImpl impleme entity.setUserId(userId); entity.setAccount(null); validate(req, originalEntity); + if(CollUtil.isNotEmpty(req.getPostIds())){ + userPostService.bindUserPost(userId, req.getPostIds()); + } this.updateById(entity); } private void validate(UserReq req, UserEntity originalEntity){ + if(StrUtil.isNotBlank(req.getDeptId()) && deptService.getById(req.getDeptId()) == null){ + throw new ServiceException(Message.DEPT_ID_NOT_EXIST); + } LambdaQueryWrapper accountWrapper = Wrappers.lambdaQuery(UserEntity.class).eq(UserEntity::getAccount, req.getAccount()).eq(UserEntity::getDelFlag, Constants.DEL_FLAG_0); if(this.getOne(accountWrapper) != null && originalEntity == null){ throw new ServiceException(Message.ACCOUNT_EXIST); } - if(originalEntity == null || !originalEntity.getMobile().equals(req.getMobile())){ + if(originalEntity == null || (StrUtil.isNotBlank(req.getMobile()) && !originalEntity.getMobile().equals(req.getMobile()))){ LambdaQueryWrapper mobileWrapper = Wrappers.lambdaQuery(UserEntity.class).eq(StrUtil.isNotBlank(req.getMobile()), UserEntity::getMobile, req.getMobile()).eq(UserEntity::getDelFlag, Constants.DEL_FLAG_0); if(this.getOne(mobileWrapper) != null){ throw new ServiceException(Message.MOBILE_EXIST); } } - if(originalEntity == null || !originalEntity.getEmail().equals(req.getEmail())){ - LambdaQueryWrapper emailWrapper = Wrappers.lambdaQuery(UserEntity.class).eq(StrUtil.isNotBlank(req.getEmail()), UserEntity::getEmail, req.getMobile()).eq(UserEntity::getDelFlag, Constants.DEL_FLAG_0); + if(originalEntity == null || (StrUtil.isNotBlank(req.getEmail()) && !originalEntity.getEmail().equals(req.getEmail()))){ + LambdaQueryWrapper emailWrapper = Wrappers.lambdaQuery(UserEntity.class).eq(StrUtil.isNotBlank(req.getEmail()), UserEntity::getEmail, req.getEmail()).eq(UserEntity::getDelFlag, Constants.DEL_FLAG_0); if(this.getOne(emailWrapper) != null){ throw new ServiceException(Message.EMAIL_EXIST); } } + if(originalEntity == null || (StrUtil.isNotBlank(req.getIdentityCard()) && !originalEntity.getIdentityCard().equals(req.getIdentityCard()))){ + LambdaQueryWrapper emailWrapper = Wrappers.lambdaQuery(UserEntity.class).eq(StrUtil.isNotBlank(req.getIdentityCard()), UserEntity::getIdentityCard, req.getIdentityCard()).eq(UserEntity::getDelFlag, Constants.DEL_FLAG_0); + if(this.getOne(emailWrapper) != null){ + throw new ServiceException(Message.IDENTITY_CARD_EXIST); + } + } } /** diff --git a/core/src/main/resources/mapper/DeptMapper.xml b/core/src/main/resources/mapper/DeptMapper.xml index 2830fe0..0ab4fda 100644 --- a/core/src/main/resources/mapper/DeptMapper.xml +++ b/core/src/main/resources/mapper/DeptMapper.xml @@ -16,8 +16,7 @@ UNION ALL SELECT d.* FROM dept d INNER JOIN DeptPath dp ON d.dept_id = dp.parent_id WHERE d.del_flag = '0' - ) - SELECT DISTINCT * FROM DeptPath; + )SELECT DISTINCT * FROM DeptPath; diff --git a/core/src/main/resources/mapper/MenuMapper.xml b/core/src/main/resources/mapper/MenuMapper.xml new file mode 100644 index 0000000..f2a0ca3 --- /dev/null +++ b/core/src/main/resources/mapper/MenuMapper.xml @@ -0,0 +1,41 @@ + + + + + + + + + \ No newline at end of file diff --git a/core/src/main/resources/mapper/RoleMapper.xml b/core/src/main/resources/mapper/RoleMapper.xml new file mode 100644 index 0000000..0aebfc8 --- /dev/null +++ b/core/src/main/resources/mapper/RoleMapper.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/core/src/main/resources/mapper/RoleMenuMapper.xml b/core/src/main/resources/mapper/RoleMenuMapper.xml new file mode 100644 index 0000000..884c0f4 --- /dev/null +++ b/core/src/main/resources/mapper/RoleMenuMapper.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/core/src/main/resources/mapper/UserMapper.xml b/core/src/main/resources/mapper/UserMapper.xml index 910b0c4..343fefb 100644 --- a/core/src/main/resources/mapper/UserMapper.xml +++ b/core/src/main/resources/mapper/UserMapper.xml @@ -7,27 +7,37 @@ a.password, a.status - SELECT - u.user_id, u.account, u.avatar, u.status, u.name, u.identity_card, u.gender, u.mobile, u.email, u.hiredate, u.birthdate, u.education, major_field + u.user_id, u.account, u.status, u.name, d.dept_name, u.identity_card, u.mobile, u.email, u.hiredate, u.birthdate, GROUP_CONCAT(p.post_name) AS post_name FROM user u + LEFT JOIN dept d ON u.dept_id = d.dept_id + LEFT JOIN user_post up ON u.user_id = up.user_id + LEFT JOIN post p ON up.post_id = p.post_id - AND a.account LIKE concat ('%', #{account}, '%') + AND u.account LIKE concat ('%', #{account}, '%') - AND a.name LIKE concat ('%', #{name}, '%') + AND u.name LIKE concat ('%', #{name}, '%') - AND a.mobile LIKE concat ('%', #{mobile}, '%') + AND u.mobile LIKE concat ('%', #{mobile}, '%') - AND a.email LIKE concat ('%', #{email}, '%') + AND u.email LIKE concat ('%', #{email}, '%') + + + AND d.dept_id = #{deptId} + + + AND p.post_id = #{postId} - AND a.status = #{status} + AND u.status = #{status} + GROUP BY u.user_id, u.account, u.status, u.name, d.dept_name, u.identity_card, u.mobile, u.email, u.hiredate, u.birthdate diff --git a/core/src/main/resources/mapper/UserPostMapper.xml b/core/src/main/resources/mapper/UserPostMapper.xml new file mode 100644 index 0000000..fdae37b --- /dev/null +++ b/core/src/main/resources/mapper/UserPostMapper.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/core/src/main/resources/mapper/UserRoleMapper.xml b/core/src/main/resources/mapper/UserRoleMapper.xml new file mode 100644 index 0000000..f00a8db --- /dev/null +++ b/core/src/main/resources/mapper/UserRoleMapper.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/web/src/main/java/com/dite/znpt/web/controller/CommonController.java b/web/src/main/java/com/dite/znpt/web/controller/CommonController.java index c9620f7..0405b14 100644 --- a/web/src/main/java/com/dite/znpt/web/controller/CommonController.java +++ b/web/src/main/java/com/dite/znpt/web/controller/CommonController.java @@ -45,11 +45,13 @@ public class CommonController { public Result listDefectType(){ return Result.ok(DefectTypeEnum.listAll()); } + @ApiOperation(value = "查询图像类型", httpMethod = "GET") @GetMapping("/list/image-type") public Result listImageType(){ return Result.ok(ImageTypeEnum.listAll()); } + @ApiOperation(value = "查询项目状态", httpMethod = "GET") @GetMapping("/list/project-status") public Result listProjectStatus(){ @@ -95,12 +97,13 @@ public class CommonController { @ApiOperation(value = "查询学历", httpMethod = "GET") @GetMapping("/list/education") public Result listEducation(){ - return Result.ok(EducationEnum.list()); + return Result.ok(EducationEnum.listAll()); } + @ApiOperation(value = "查询性别", httpMethod = "GET") @GetMapping("/list/gender") public Result listGender(){ - return Result.ok(GenderEnum.list()); + return Result.ok(GenderEnum.listAll()); } @ApiOperation(value = "上传图片", httpMethod = "POST") @@ -138,4 +141,11 @@ public class CommonController { return Result.ok(imageService.batchUploadCommonImage(imageSource, workReq, files)); } + @ApiOperation(value = "查询菜单类型", httpMethod = "GET") + @GetMapping("/list/menu-type") + public Result listMenuType(){ + return Result.ok(MenuTypeEnum.listAll()); + } + + } diff --git a/web/src/main/java/com/dite/znpt/web/controller/MenuController.java b/web/src/main/java/com/dite/znpt/web/controller/MenuController.java new file mode 100644 index 0000000..cc39b84 --- /dev/null +++ b/web/src/main/java/com/dite/znpt/web/controller/MenuController.java @@ -0,0 +1,58 @@ +package com.dite.znpt.web.controller; + +import com.dite.znpt.domain.Result; +import com.dite.znpt.domain.vo.MenuReq; +import com.dite.znpt.domain.vo.MenuResp; +import com.dite.znpt.service.MenuService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; + +/** + * @author Bear.G + * @date 2025/5/21/周三 15:01 + * @description + */ +@Api(tags = "菜单信息") +@RestController +@RequestMapping("/menu") +public class MenuController { + + @Resource + private MenuService menuService; + + @ApiOperation(value = "查询菜单树", httpMethod = "GET") + @GetMapping("/tree") + public Result tree (@RequestParam(name = "menuName", required = false) String menuName) { + return Result.ok(menuService.tree(menuName)); + } + + @ApiOperation(value = "查询菜单详情", httpMethod = "GET") + @GetMapping("/detail/{menuId}") + public Result detail(@PathVariable String menuId) { + return Result.ok(menuService.detail(menuId)); + } + + @ApiOperation(value = "新增菜单", httpMethod = "POST") + @PostMapping + public Result add(@RequestBody MenuReq req) { + menuService.save(req); + return Result.ok(); + } + + @ApiOperation(value = "修改菜单", httpMethod = "PUT") + @PutMapping("/{menuId}") + public Result update(@PathVariable String menuId, @RequestBody MenuReq req) { + menuService.update(menuId, req); + return Result.ok(); + } + + @ApiOperation(value = "删除菜单", httpMethod = "DELETE") + @DeleteMapping("/{menuId}") + public Result delete(@PathVariable String menuId) { + menuService.deleteById(menuId); + return Result.ok(); + } +} diff --git a/web/src/main/java/com/dite/znpt/web/controller/RoleController.java b/web/src/main/java/com/dite/znpt/web/controller/RoleController.java new file mode 100644 index 0000000..866a0f3 --- /dev/null +++ b/web/src/main/java/com/dite/znpt/web/controller/RoleController.java @@ -0,0 +1,82 @@ +package com.dite.znpt.web.controller; + +import com.dite.znpt.domain.PageResult; +import com.dite.znpt.domain.Result; +import com.dite.znpt.domain.vo.RoleMenuReq; +import com.dite.znpt.domain.vo.RoleReq; +import com.dite.znpt.domain.vo.RoleResp; +import com.dite.znpt.service.RoleMenuService; +import com.dite.znpt.service.RoleService; +import com.dite.znpt.service.UserRoleService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +/** + * @author Bear.G + * @date 2025/5/21/周三 15:00 + * @description + */ +@Api(tags = "角色信息") +@RestController +@RequestMapping("/role") +public class RoleController { + + @Resource + private RoleService roleService; + + @Resource + private RoleMenuService roleMenuService; + + @ApiOperation(value = "分页查询角色信息列表", httpMethod = "GET") + @GetMapping("/page") + public PageResult page(@RequestParam(value = "roleName", required = false) String roleName){ + return PageResult.ok(roleService.page(roleName)); + } + + @ApiOperation(value = "查询角色信息列表", httpMethod = "GET") + @GetMapping("/list") + public Result> list(@RequestParam(value = "roleName", required = false) String roleName){ + return Result.ok(roleService.list(roleName)); + } + + @ApiOperation(value = "查询角色信息详情", httpMethod = "GET") + @GetMapping("/detail/{roleId}") + public Result detail(@PathVariable String roleId){ + return Result.ok(roleService.detail(roleId)); + } + + @ApiOperation(value = "新增角色信息", httpMethod = "POST") + @PostMapping + public Result add(@RequestBody RoleReq req){ + roleService.save(req); + return Result.ok(); + } + + @ApiOperation(value = "修改角色信息", httpMethod = "PUT") + @PutMapping("/{roleId}") + public Result edit(@PathVariable String roleId, @RequestBody RoleReq req){ + roleService.update(roleId, req); + return Result.ok(); + } + + @ApiOperation(value = "删除角色信息", httpMethod = "DELETE") + @DeleteMapping("/{roleId}") + public Result delete(@PathVariable String roleId){ + roleService.deleteById(roleId); + return Result.ok(); + } + + @ApiOperation(value = "绑定菜单", httpMethod = "PUT") + @PutMapping("/bind-menu") + public Result bindMenu(@Validated @RequestBody RoleMenuReq req){ + roleMenuService.bindRoleMenu(req); + return Result.ok(); + } +} diff --git a/web/src/main/java/com/dite/znpt/web/controller/UserController.java b/web/src/main/java/com/dite/znpt/web/controller/UserController.java index 13b5e87..1ba33e6 100644 --- a/web/src/main/java/com/dite/znpt/web/controller/UserController.java +++ b/web/src/main/java/com/dite/znpt/web/controller/UserController.java @@ -1,25 +1,19 @@ package com.dite.znpt.web.controller; -import com.dite.znpt.domain.vo.UserListReq; -import com.dite.znpt.domain.vo.UserReq; -import com.dite.znpt.domain.vo.UserResp; -import com.dite.znpt.domain.entity.UserEntity; +import com.dite.znpt.domain.vo.*; +import com.dite.znpt.service.RoleService; +import com.dite.znpt.service.UserRoleService; import com.dite.znpt.service.UserService; import com.dite.znpt.domain.Result; import com.dite.znpt.domain.PageResult; import com.dite.znpt.util.ValidationGroup; -import com.pig4cloud.plugin.excel.annotation.RequestExcel; -import com.pig4cloud.plugin.excel.annotation.ResponseExcel; -import com.pig4cloud.plugin.excel.vo.ErrorMessage; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; -import org.springframework.validation.BindingResult; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; -import javax.validation.Valid; import java.util.List; /** @@ -32,16 +26,18 @@ import java.util.List; public class UserController { @Resource private UserService userService; + @Resource + private UserRoleService userRoleService; @ApiOperation(value = "分页查询用户信息列表", httpMethod = "GET") @GetMapping("/page") - public PageResult page(UserListReq req) { + public PageResult page(UserListReq req) { return PageResult.ok(userService.page(req)); } @ApiOperation(value = "查询用户信息列表", httpMethod = "GET") @GetMapping("/list") - public PageResult list(UserListReq req) { + public PageResult list(UserListReq req) { return PageResult.ok(userService.list(req)); } @@ -64,33 +60,18 @@ public class UserController { return Result.ok(); } + @ApiOperation(value = "绑定角色", httpMethod = "PUT") + @PutMapping("/bind-role") + public Result bindRole(@Validated @RequestBody UserRoleReq req){ + userRoleService.bindUserRole(req); + return Result.ok(); + } + @ApiOperation(value = "删除用户信息", httpMethod = "DELETE") @DeleteMapping("/{userId}") public Result remove(@PathVariable String userId) { userService.deleteById(userId); return Result.ok(); } - - @ApiOperation(value = "导出用户信息-需求待明确", httpMethod = "GET") - @GetMapping("/export") - @ResponseExcel(name = "用户信息") - public List export(UserListReq req) { -// return userService.selectList(req); - // TODO - return null; - } - - @ApiOperation(value = "导入用户信息-需求待明确", httpMethod = "POST") - @PostMapping("/import") - public Result importData(@RequestExcel List dataList, BindingResult bindingResult) { - // JSR 303 校验通用校验获取失败的数据 - List errorMessageList = (List) bindingResult.getTarget(); -// if (errorMessageList != null && !errorMessageList.isEmpty()) { -// return Result.error(Constants.SERVICE_EXCEPTION, "导入失败"); -// } -// return Result.okM("导入"+dataList.size()+"条数据"); - // TODO - return null; - } }