diff --git a/xs-api/src/main/java/com/xiang/xservice/auth/api/dto/resp/RoleDTO.java b/xs-api/src/main/java/com/xiang/xservice/auth/api/dto/resp/RoleDTO.java index 63da712..7819527 100644 --- a/xs-api/src/main/java/com/xiang/xservice/auth/api/dto/resp/RoleDTO.java +++ b/xs-api/src/main/java/com/xiang/xservice/auth/api/dto/resp/RoleDTO.java @@ -1,4 +1,48 @@ package com.xiang.xservice.auth.api.dto.resp; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.time.LocalDateTime; + +@Data +@AllArgsConstructor +@NoArgsConstructor public class RoleDTO { + /** + * id + */ + private Long id; + + /** + * 名称 + */ + private String name; + + /** + * 编码 + */ + private String code; + + /** + * 状态(0:禁用 1:启用) + */ + private Integer status; + + /** + * data_scope + */ + private Integer dataScope; + + /** + * 修改时间 + */ + private LocalDateTime updatedTime; + + /** + * 修改人 + */ + private String updateBy; + } diff --git a/xs-server/src/main/java/com/xiang/xservice/auth/server/controller/RoleController.java b/xs-server/src/main/java/com/xiang/xservice/auth/server/controller/RoleController.java index 1cbee35..572454e 100644 --- a/xs-server/src/main/java/com/xiang/xservice/auth/server/controller/RoleController.java +++ b/xs-server/src/main/java/com/xiang/xservice/auth/server/controller/RoleController.java @@ -1,12 +1,16 @@ package com.xiang.xservice.auth.server.controller; +import com.alibaba.fastjson.JSON; import com.xiang.xservice.auth.api.dto.req.role.RoleAddRequest; import com.xiang.xservice.auth.api.dto.req.role.RoleQueryRequest; import com.xiang.xservice.auth.api.dto.req.role.RoleUpdateRequest; import com.xiang.xservice.auth.api.dto.req.role.RoleUserUpdateRequest; import com.xiang.xservice.auth.api.dto.resp.RoleDTO; +import com.xiang.xservice.auth.service.service.RoleService; import com.xiang.xservice.basic.common.resp.Result; +import com.xiang.xservice.basic.exception.BusinessException; import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; @@ -22,33 +26,60 @@ import java.util.List; /** * 角色控制器 */ +@Slf4j @RestController @RequiredArgsConstructor public class RoleController { + private final RoleService roleService; + @PostMapping("/private/role/list") public Result getRoleList(@RequestBody @Valid @NotNull(message = "请求参数不能为空") RoleQueryRequest request) { - return Result.success(new RoleDTO()); + return Result.success(roleService.getRoleList(request)); } @GetMapping("/private/role/info/{id}") public Result getRoleInfo(@PathVariable Long id) { - return Result.success(new RoleDTO()); + return Result.success(roleService.getRoleInfo(id)); } @PostMapping("/private/role/add") - public Result addRole(@RequestBody @Valid @NotNull(message = "请求参数不能为空") RoleAddRequest request) { - return Result.success(); + public Result addRole(@RequestBody @Valid @NotNull(message = "请求参数不能为空") RoleAddRequest request) { + try { + return Result.success(roleService.addRole(request)); + } catch (BusinessException e) { + log.error("角色新增异常,请求:{}", JSON.toJSONString(request), e); + return Result.error(e.getMessage()); + } catch (Exception e) { + log.error("角色新增异常,请求:{}", JSON.toJSONString(request), e); + } + return Result.error(); } @PostMapping("/private/role/update") - public Result updateRole(@RequestBody @Valid @NotNull(message = "请求参数不能为空") RoleUpdateRequest request) { - return Result.success(); + public Result updateRole(@RequestBody @Valid @NotNull(message = "请求参数不能为空") RoleUpdateRequest request) { + try { + return Result.success(roleService.updateRole(request)); + } catch (BusinessException e) { + log.error("角色编辑异常,请求:{}", JSON.toJSONString(request), e); + return Result.error(e.getMessage()); + } catch (Exception e) { + log.error("角色编辑异常,请求:{}", JSON.toJSONString(request), e); + } + return Result.error(); } @PostMapping("/private/role/del") - public Result delRole(@RequestParam @Valid @NotEmpty(message = "请求参数不能为空") List ids) { - return Result.success(); + public Result delRole(@RequestParam @Valid @NotEmpty(message = "请求参数不能为空") List ids) { + try { + return Result.success(roleService.delRole(ids)); + } catch (BusinessException e) { + log.error("角色删除异常,请求:{}", ids, e); + return Result.error(e.getMessage()); + } catch (Exception e) { + log.error("角色删除异常,请求:{}", ids, e); + } + return Result.error(); } @PostMapping("/private/role/setUser") diff --git a/xs-service/src/main/java/com/xiang/xservice/auth/service/convert/XRoleConvert.java b/xs-service/src/main/java/com/xiang/xservice/auth/service/convert/XRoleConvert.java new file mode 100644 index 0000000..e018fc5 --- /dev/null +++ b/xs-service/src/main/java/com/xiang/xservice/auth/service/convert/XRoleConvert.java @@ -0,0 +1,24 @@ +package com.xiang.xservice.auth.service.convert; + +import com.xiang.xservice.auth.api.dto.req.role.RoleAddRequest; +import com.xiang.xservice.auth.api.dto.req.role.RoleQueryRequest; +import com.xiang.xservice.auth.api.dto.req.role.RoleUpdateRequest; +import com.xiang.xservice.auth.api.dto.resp.RoleDTO; +import com.xiang.xservice.auth.service.entity.XRole; +import org.mapstruct.Mapper; +import org.mapstruct.factory.Mappers; + +import java.util.List; + +@Mapper(componentModel = "spring") +public interface XRoleConvert { + XRoleConvert INSTANCE = Mappers.getMapper(XRoleConvert.class); + + XRole toDO(RoleQueryRequest request); + XRole toDO(RoleAddRequest request); + XRole toDO(RoleUpdateRequest request); + + List toDTOList(List roleList); + + RoleDTO toDTO(XRole role); +} diff --git a/xs-service/src/main/java/com/xiang/xservice/auth/service/entity/XRole.java b/xs-service/src/main/java/com/xiang/xservice/auth/service/entity/XRole.java new file mode 100644 index 0000000..86235e2 --- /dev/null +++ b/xs-service/src/main/java/com/xiang/xservice/auth/service/entity/XRole.java @@ -0,0 +1,67 @@ +package com.xiang.xservice.auth.service.entity; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serial; +import java.io.Serializable; +import java.time.LocalDateTime; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class XRole implements Serializable { + @Serial + private static final long serialVersionUID = 1L; + + /** + * id + */ + private Long id; + + /** + * 名称 + */ + private String name; + + /** + * 编码 + */ + private String code; + + /** + * 状态(0:禁用 1:启用) + */ + private Integer status; + + /** + * data_scope + */ + private Integer dataScope; + + /** + * 创建时间 + */ + private LocalDateTime createdTime; + + /** + * 创建人 + */ + private String createBy; + + /** + * 修改时间 + */ + private LocalDateTime updatedTime; + + /** + * 修改人 + */ + private String updateBy; + + /** + * 删除标识(0:未删除 1:已删除) + */ + private Integer delFlag; +} diff --git a/xs-service/src/main/java/com/xiang/xservice/auth/service/repository/mapper/XRoleMapper.java b/xs-service/src/main/java/com/xiang/xservice/auth/service/repository/mapper/XRoleMapper.java new file mode 100644 index 0000000..b111b11 --- /dev/null +++ b/xs-service/src/main/java/com/xiang/xservice/auth/service/repository/mapper/XRoleMapper.java @@ -0,0 +1,21 @@ +package com.xiang.xservice.auth.service.repository.mapper; + +import com.xiang.xservice.auth.service.entity.XRole; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.springframework.stereotype.Repository; + +import java.time.LocalDateTime; +import java.util.List; + +@Mapper +@Repository +public interface XRoleMapper { + + int insert(XRole record); + int update(XRole record); + int delBatch(@Param("ids") List ids, @Param("time") LocalDateTime time, @Param("operator") String operator); + List getRoleList(XRole record); + XRole getRoleById(Long id); + +} diff --git a/xs-service/src/main/java/com/xiang/xservice/auth/service/service/RoleService.java b/xs-service/src/main/java/com/xiang/xservice/auth/service/service/RoleService.java new file mode 100644 index 0000000..af7c76f --- /dev/null +++ b/xs-service/src/main/java/com/xiang/xservice/auth/service/service/RoleService.java @@ -0,0 +1,25 @@ +package com.xiang.xservice.auth.service.service; + + +import com.xiang.xservice.auth.api.dto.req.role.RoleAddRequest; +import com.xiang.xservice.auth.api.dto.req.role.RoleQueryRequest; +import com.xiang.xservice.auth.api.dto.req.role.RoleUpdateRequest; +import com.xiang.xservice.auth.api.dto.req.role.RoleUserUpdateRequest; +import com.xiang.xservice.auth.api.dto.resp.RoleDTO; + +import java.util.List; + +public interface RoleService { + List getRoleList(RoleQueryRequest request); + + RoleDTO getRoleInfo(Long id); + + Boolean addRole(RoleAddRequest request); + + Boolean updateRole(RoleUpdateRequest request); + + Boolean delRole(List ids); + + Boolean setUserDept(RoleUserUpdateRequest request); + +} diff --git a/xs-service/src/main/java/com/xiang/xservice/auth/service/service/impl/XRoleServiceImpl.java b/xs-service/src/main/java/com/xiang/xservice/auth/service/service/impl/XRoleServiceImpl.java new file mode 100644 index 0000000..1a9fa3d --- /dev/null +++ b/xs-service/src/main/java/com/xiang/xservice/auth/service/service/impl/XRoleServiceImpl.java @@ -0,0 +1,60 @@ +package com.xiang.xservice.auth.service.service.impl; + +import com.google.common.collect.Lists; +import com.xiang.xservice.auth.api.dto.req.role.RoleAddRequest; +import com.xiang.xservice.auth.api.dto.req.role.RoleQueryRequest; +import com.xiang.xservice.auth.api.dto.req.role.RoleUpdateRequest; +import com.xiang.xservice.auth.api.dto.req.role.RoleUserUpdateRequest; +import com.xiang.xservice.auth.api.dto.resp.RoleDTO; +import com.xiang.xservice.auth.service.convert.XRoleConvert; +import com.xiang.xservice.auth.service.entity.XRole; +import com.xiang.xservice.auth.service.repository.mapper.XRoleMapper; +import com.xiang.xservice.auth.service.service.RoleService; +import lombok.RequiredArgsConstructor; +import org.apache.commons.collections4.CollectionUtils; +import org.springframework.stereotype.Service; + +import java.time.LocalDateTime; +import java.util.List; + +@Service +@RequiredArgsConstructor +public class XRoleServiceImpl implements RoleService { + private final XRoleMapper roleMapper; + private final XRoleConvert roleConvert; + + @Override + public List getRoleList(RoleQueryRequest request) { + List roleList = roleMapper.getRoleList(roleConvert.toDO(request)); + if (CollectionUtils.isEmpty(roleList)) { + return Lists.newArrayList(); + } + return roleConvert.toDTOList(roleList); + } + + @Override + public RoleDTO getRoleInfo(Long id) { + XRole role = roleMapper.getRoleById(id); + return roleConvert.toDTO(role); + } + + @Override + public Boolean addRole(RoleAddRequest request) { + return roleMapper.insert(roleConvert.toDO(request)) > 0; + } + + @Override + public Boolean updateRole(RoleUpdateRequest request) { + return roleMapper.update(roleConvert.toDO(request)) > 0; + } + + @Override + public Boolean delRole(List ids) { + return roleMapper.delBatch(ids, LocalDateTime.now(), "System") > 0; + } + + @Override + public Boolean setUserDept(RoleUserUpdateRequest request) { + return null; + } +} diff --git a/xs-service/src/main/resources/mapper/user/XRoleMapper.xml b/xs-service/src/main/resources/mapper/user/XRoleMapper.xml new file mode 100644 index 0000000..abfd071 --- /dev/null +++ b/xs-service/src/main/resources/mapper/user/XRoleMapper.xml @@ -0,0 +1,142 @@ + + + + + + + + + + + + + + + + + + + id, + name, + code, + status, + data_scope, + created_time, + create_by, + updated_time, + update_by, + del_flag + + + + INSERT INTO x_role + + + name, + + + code, + + + status, + + + data_scope, + + + created_time, + + + create_by, + + + updated_time, + + + update_by, + + + del_flag + + + + + #{name}, + + + #{code}, + + + #{status}, + + + #{dataScope}, + + + #{createdTime}, + + + #{createBy}, + + + #{updatedTime}, + + + #{updateBy}, + + + #{delFlag} + + + + + + update x_role set del_flag = 0, update_time = #{time}, update_by = #{operator} where id in + + #{id} + + + + + UPDATE x_role + + name = #{name}, + code = #{code}, + status = #{status}, + data_scope = #{dataScope}, + created_time = #{createdTime}, + create_by = #{createBy}, + updated_time = #{updatedTime}, + update_by = #{updateBy}, + del_flag = #{delFlag} + + WHERE id = #{id} + + + + + + + \ No newline at end of file