feat:角色接口开发v1
This commit is contained in:
@@ -1,4 +1,48 @@
|
|||||||
package com.xiang.xservice.auth.api.dto.resp;
|
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 {
|
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;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,12 +1,16 @@
|
|||||||
package com.xiang.xservice.auth.server.controller;
|
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.RoleAddRequest;
|
||||||
import com.xiang.xservice.auth.api.dto.req.role.RoleQueryRequest;
|
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.RoleUpdateRequest;
|
||||||
import com.xiang.xservice.auth.api.dto.req.role.RoleUserUpdateRequest;
|
import com.xiang.xservice.auth.api.dto.req.role.RoleUserUpdateRequest;
|
||||||
import com.xiang.xservice.auth.api.dto.resp.RoleDTO;
|
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.common.resp.Result;
|
||||||
|
import com.xiang.xservice.basic.exception.BusinessException;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.web.bind.annotation.GetMapping;
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
import org.springframework.web.bind.annotation.PathVariable;
|
import org.springframework.web.bind.annotation.PathVariable;
|
||||||
import org.springframework.web.bind.annotation.PostMapping;
|
import org.springframework.web.bind.annotation.PostMapping;
|
||||||
@@ -22,33 +26,60 @@ import java.util.List;
|
|||||||
/**
|
/**
|
||||||
* 角色控制器
|
* 角色控制器
|
||||||
*/
|
*/
|
||||||
|
@Slf4j
|
||||||
@RestController
|
@RestController
|
||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
public class RoleController {
|
public class RoleController {
|
||||||
|
|
||||||
|
private final RoleService roleService;
|
||||||
|
|
||||||
@PostMapping("/private/role/list")
|
@PostMapping("/private/role/list")
|
||||||
public Result<RoleDTO> getRoleList(@RequestBody @Valid @NotNull(message = "请求参数不能为空") RoleQueryRequest request) {
|
public Result<RoleDTO> getRoleList(@RequestBody @Valid @NotNull(message = "请求参数不能为空") RoleQueryRequest request) {
|
||||||
return Result.success(new RoleDTO());
|
return Result.success(roleService.getRoleList(request));
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/private/role/info/{id}")
|
@GetMapping("/private/role/info/{id}")
|
||||||
public Result<RoleDTO> getRoleInfo(@PathVariable Long id) {
|
public Result<RoleDTO> getRoleInfo(@PathVariable Long id) {
|
||||||
return Result.success(new RoleDTO());
|
return Result.success(roleService.getRoleInfo(id));
|
||||||
}
|
}
|
||||||
|
|
||||||
@PostMapping("/private/role/add")
|
@PostMapping("/private/role/add")
|
||||||
public Result<Void> addRole(@RequestBody @Valid @NotNull(message = "请求参数不能为空") RoleAddRequest request) {
|
public Result<Boolean> addRole(@RequestBody @Valid @NotNull(message = "请求参数不能为空") RoleAddRequest request) {
|
||||||
return Result.success();
|
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")
|
@PostMapping("/private/role/update")
|
||||||
public Result<Void> updateRole(@RequestBody @Valid @NotNull(message = "请求参数不能为空") RoleUpdateRequest request) {
|
public Result<Boolean> updateRole(@RequestBody @Valid @NotNull(message = "请求参数不能为空") RoleUpdateRequest request) {
|
||||||
return Result.success();
|
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")
|
@PostMapping("/private/role/del")
|
||||||
public Result<Void> delRole(@RequestParam @Valid @NotEmpty(message = "请求参数不能为空") List<Long> ids) {
|
public Result<Boolean> delRole(@RequestParam @Valid @NotEmpty(message = "请求参数不能为空") List<Long> ids) {
|
||||||
return Result.success();
|
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")
|
@PostMapping("/private/role/setUser")
|
||||||
|
|||||||
@@ -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<RoleDTO> toDTOList(List<XRole> roleList);
|
||||||
|
|
||||||
|
RoleDTO toDTO(XRole role);
|
||||||
|
}
|
||||||
@@ -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;
|
||||||
|
}
|
||||||
@@ -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<Long> ids, @Param("time") LocalDateTime time, @Param("operator") String operator);
|
||||||
|
List<XRole> getRoleList(XRole record);
|
||||||
|
XRole getRoleById(Long id);
|
||||||
|
|
||||||
|
}
|
||||||
@@ -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<RoleDTO> getRoleList(RoleQueryRequest request);
|
||||||
|
|
||||||
|
RoleDTO getRoleInfo(Long id);
|
||||||
|
|
||||||
|
Boolean addRole(RoleAddRequest request);
|
||||||
|
|
||||||
|
Boolean updateRole(RoleUpdateRequest request);
|
||||||
|
|
||||||
|
Boolean delRole(List<Long> ids);
|
||||||
|
|
||||||
|
Boolean setUserDept(RoleUserUpdateRequest request);
|
||||||
|
|
||||||
|
}
|
||||||
@@ -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<RoleDTO> getRoleList(RoleQueryRequest request) {
|
||||||
|
List<XRole> 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<Long> ids) {
|
||||||
|
return roleMapper.delBatch(ids, LocalDateTime.now(), "System") > 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Boolean setUserDept(RoleUserUpdateRequest request) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
142
xs-service/src/main/resources/mapper/user/XRoleMapper.xml
Normal file
142
xs-service/src/main/resources/mapper/user/XRoleMapper.xml
Normal file
@@ -0,0 +1,142 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||||
|
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||||
|
<mapper namespace="com.xiang.xservice.auth.service.repository.mapper.XRoleMapper">
|
||||||
|
|
||||||
|
<resultMap id="BaseResultMap" type="com.xiang.xservice.auth.service.entity.XRole" >
|
||||||
|
<result column="id" property="id" />
|
||||||
|
<result column="name" property="name" />
|
||||||
|
<result column="code" property="code" />
|
||||||
|
<result column="status" property="status" />
|
||||||
|
<result column="data_scope" property="dataScope" />
|
||||||
|
<result column="created_time" property="createdTime" />
|
||||||
|
<result column="create_by" property="createBy" />
|
||||||
|
<result column="updated_time" property="updatedTime" />
|
||||||
|
<result column="update_by" property="updateBy" />
|
||||||
|
<result column="del_flag" property="delFlag" />
|
||||||
|
</resultMap>
|
||||||
|
|
||||||
|
<sql id="Base_Column_List">
|
||||||
|
id,
|
||||||
|
name,
|
||||||
|
code,
|
||||||
|
status,
|
||||||
|
data_scope,
|
||||||
|
created_time,
|
||||||
|
create_by,
|
||||||
|
updated_time,
|
||||||
|
update_by,
|
||||||
|
del_flag
|
||||||
|
</sql>
|
||||||
|
|
||||||
|
<insert id="insert" useGeneratedKeys="true" keyColumn="id" keyProperty="id" parameterType="com.xiang.xservice.auth.service.entity.XRole">
|
||||||
|
INSERT INTO x_role
|
||||||
|
<trim prefix="(" suffix=")" suffixOverrides=",">
|
||||||
|
<if test="null != name and '' != name">
|
||||||
|
name,
|
||||||
|
</if>
|
||||||
|
<if test="null != code and '' != code">
|
||||||
|
code,
|
||||||
|
</if>
|
||||||
|
<if test="null != status ">
|
||||||
|
status,
|
||||||
|
</if>
|
||||||
|
<if test="null != dataScope ">
|
||||||
|
data_scope,
|
||||||
|
</if>
|
||||||
|
<if test="null != createdTime ">
|
||||||
|
created_time,
|
||||||
|
</if>
|
||||||
|
<if test="null != createBy and '' != createBy">
|
||||||
|
create_by,
|
||||||
|
</if>
|
||||||
|
<if test="null != updatedTime ">
|
||||||
|
updated_time,
|
||||||
|
</if>
|
||||||
|
<if test="null != updateBy and '' != updateBy">
|
||||||
|
update_by,
|
||||||
|
</if>
|
||||||
|
<if test="null != delFlag ">
|
||||||
|
del_flag
|
||||||
|
</if>
|
||||||
|
</trim>
|
||||||
|
<trim prefix="values (" suffix=")" suffixOverrides=",">
|
||||||
|
<if test="null != name and '' != name">
|
||||||
|
#{name},
|
||||||
|
</if>
|
||||||
|
<if test="null != code and '' != code">
|
||||||
|
#{code},
|
||||||
|
</if>
|
||||||
|
<if test="null != status ">
|
||||||
|
#{status},
|
||||||
|
</if>
|
||||||
|
<if test="null != dataScope ">
|
||||||
|
#{dataScope},
|
||||||
|
</if>
|
||||||
|
<if test="null != createdTime ">
|
||||||
|
#{createdTime},
|
||||||
|
</if>
|
||||||
|
<if test="null != createBy and '' != createBy">
|
||||||
|
#{createBy},
|
||||||
|
</if>
|
||||||
|
<if test="null != updatedTime ">
|
||||||
|
#{updatedTime},
|
||||||
|
</if>
|
||||||
|
<if test="null != updateBy and '' != updateBy">
|
||||||
|
#{updateBy},
|
||||||
|
</if>
|
||||||
|
<if test="null != delFlag ">
|
||||||
|
#{delFlag}
|
||||||
|
</if>
|
||||||
|
</trim>
|
||||||
|
</insert>
|
||||||
|
|
||||||
|
<update id="delBatch" >
|
||||||
|
update x_role set del_flag = 0, update_time = #{time}, update_by = #{operator} where id in
|
||||||
|
<foreach collection="ids" item="id" open="(" close=")" separator=",">
|
||||||
|
#{id}
|
||||||
|
</foreach>
|
||||||
|
</update>
|
||||||
|
|
||||||
|
<update id="update" parameterType="com.xiang.xservice.auth.service.entity.XRole">
|
||||||
|
UPDATE x_role
|
||||||
|
<set>
|
||||||
|
<if test="null != name and '' != name">name = #{name},</if>
|
||||||
|
<if test="null != code and '' != code">code = #{code},</if>
|
||||||
|
<if test="null != status ">status = #{status},</if>
|
||||||
|
<if test="null != dataScope ">data_scope = #{dataScope},</if>
|
||||||
|
<if test="null != createdTime ">created_time = #{createdTime},</if>
|
||||||
|
<if test="null != createBy and '' != createBy">create_by = #{createBy},</if>
|
||||||
|
<if test="null != updatedTime ">updated_time = #{updatedTime},</if>
|
||||||
|
<if test="null != updateBy and '' != updateBy">update_by = #{updateBy},</if>
|
||||||
|
<if test="null != delFlag ">del_flag = #{delFlag}</if>
|
||||||
|
</set>
|
||||||
|
WHERE id = #{id}
|
||||||
|
</update>
|
||||||
|
|
||||||
|
<select id="getRoleById" resultMap="BaseResultMap">
|
||||||
|
select <include refid="Base_Column_List"/>
|
||||||
|
from x_role
|
||||||
|
where id = #{id}
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<select id="getRoleList" resultMap="BaseResultMap">
|
||||||
|
select <include refid="Base_Column_List"/>
|
||||||
|
from x_role
|
||||||
|
<trim prefix="AND">
|
||||||
|
<if test="name != null and name != ''">
|
||||||
|
AND name = #{name}
|
||||||
|
</if>
|
||||||
|
<if test="code != null and code != ''">
|
||||||
|
AND code = #{code}
|
||||||
|
</if>
|
||||||
|
<if test="status != null">
|
||||||
|
AND status = #{status}
|
||||||
|
</if>
|
||||||
|
<if test="dataScope != null">
|
||||||
|
AND data_scope = #{dataScope}
|
||||||
|
</if>
|
||||||
|
</trim>
|
||||||
|
</select>
|
||||||
|
|
||||||
|
</mapper>
|
||||||
Reference in New Issue
Block a user