feat:角色接口开发v1

This commit is contained in:
xiang
2025-08-25 23:16:41 +08:00
parent 32783ecb0b
commit c6592f2e5d
8 changed files with 422 additions and 8 deletions

View File

@@ -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);
}

View File

@@ -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;
}

View File

@@ -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);
}

View File

@@ -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);
}

View File

@@ -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;
}
}

View 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>