提交 9c4a5630 作者: 张小凤

role(add)

上级 74249421
package com.mmc.iuav.user.model.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
/**
* @Author small
* @Date 2023/7/10 16:03
* @Version 1.0
*/
@Builder
@Data
@AllArgsConstructor
@NoArgsConstructor
public class RoleInfoDTO implements Serializable {
private static final long serialVersionUID = -4791023169682602298L;
@ApiModelProperty(value = "角色ID")
private Integer id;
@ApiModelProperty(value = "角色编号")
private String roleNo;
@ApiModelProperty(value = "角色名称/权限角色")
private String roleName;
@ApiModelProperty(value = "备注")
private String remark;
@ApiModelProperty(value = "账号名称/创建人")
private String userName;
}
package com.mmc.iuav.user.model.qo;
import com.mmc.iuav.group.Freeze;
import com.mmc.iuav.group.Page;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
/**
* @Author small
* @Date 2023/7/10 16:02
* @Version 1.0
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class RoleInfoQO implements Serializable {
private static final long serialVersionUID = -3729786590325257669L;
@ApiModelProperty(value = "权限角色/或者编号", required = false)
private String NumberOrName;
@ApiModelProperty(value = "当前页", required = true, example = "1")
@NotNull(message = "当前页不能为空", groups = {Page.class, Freeze.class})
@Min(value = 1, groups = Page.class)
private Integer pageNo;
@ApiModelProperty(value = "页大小", required = true, example = "10")
@NotNull(message = "页大小不能为空", groups = {Page.class, Freeze.class})
@Min(value = 1, groups = Page.class)
private Integer pageSize;
public void buildCurrentPage() {
this.pageNo = (pageNo - 1) * pageSize;
}
}
package com.mmc.iuav.user.model.vo;
import com.mmc.iuav.group.Create;
import com.mmc.iuav.group.Update;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.io.Serializable;
/**
* @Author small
* @Date 2023/7/10 16:02
* @Version 1.0
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class RoleInfoVO implements Serializable {
private static final long serialVersionUID = -5814724843819090363L;
@ApiModelProperty(value = "角色id", example = "1")
@NotNull(message = "角色ID不能为空", groups = Update.class)
private Integer id;
@ApiModelProperty(value = "角色名称", example = "超级管理员")
@NotBlank(message = "角色名称不能为空", groups = {Create.class, Update.class})
@Size(max = 10, message = "权限角色不得超过10个字符")
private String roleName;
@ApiModelProperty(value = "备注", example = "备注")
@Size(max = 225, message = "备注不得超过225个字符")
private String remark;
}
...@@ -29,4 +29,11 @@ public class CodeUtil { ...@@ -29,4 +29,11 @@ public class CodeUtil {
public static String removeUserAccount() { public static String removeUserAccount() {
return "DELETE" + CodeUtil.getRandomNum(15); return "DELETE" + CodeUtil.getRandomNum(15);
} }
public static String createRoleNo() {
StringBuffer sb = new StringBuffer();
sb.append("JS");
sb.append(CodeUtil.getRandomNum(4));
return sb.toString();
}
} }
...@@ -38,7 +38,10 @@ public enum ResultEnum implements BaseErrorInfoInterface{ ...@@ -38,7 +38,10 @@ public enum ResultEnum implements BaseErrorInfoInterface{
APPLET_PORT_TYPE_ERROR("7001", "小程序端口类型错误"), APPLET_PORT_TYPE_ERROR("7001", "小程序端口类型错误"),
APPLET_LOGIN_ERROR("7002", "获取小程序登录信息失败"), APPLET_LOGIN_ERROR("7002", "获取小程序登录信息失败"),
UPDATE_USER_ACCOUNT_REPEAT("7003", "修改后的账户名已存在"), UPDATE_USER_ACCOUNT_REPEAT("7003", "修改后的账户名已存在"),
ADD_USER_ACCOUNT_NAME_EXISTS("7004", "新增账户名已经存在"); ADD_USER_ACCOUNT_NAME_EXISTS("7004", "新增账户名已经存在"),
ROLE_NAME_REPEAT_ERROR("8004", "角色名已存在"),
ROLE_AVL_USER_DELETE_ERROR("8005", "此角色尚有可用账号,请将所有账号移除后在进行操作");
/** /**
* 错误码 * 错误码
......
package com.mmc.iuav.user.controller;
import com.mmc.iuav.group.Create;
import com.mmc.iuav.group.Page;
import com.mmc.iuav.group.Update;
import com.mmc.iuav.response.ResultBody;
import com.mmc.iuav.user.model.dto.RoleInfoDTO;
import com.mmc.iuav.user.model.qo.RoleInfoQO;
import com.mmc.iuav.user.model.vo.RoleInfoVO;
import com.mmc.iuav.user.service.RoleService;
import io.swagger.annotations.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
/**
* @Author small
* @Date 2023/7/7 17:53
* @Version 1.0
*/
@Api(tags = "角色管理")
@RequestMapping("/role")
@RestController
public class RoleController extends BaseController {
@Autowired
private RoleService roleService;
@ApiOperation(value = "角色管理-新增")
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = ResultBody.class)})
@PostMapping("insertRoleInfo")
public ResultBody insertRoleInfo(HttpServletRequest request, @Validated(value = {Create.class}) @RequestBody RoleInfoVO role) {
return roleService.insertRoleInfo(role, this.getUserLoginInfoFromRedis(request));
}
@ApiOperation(value = "角色管理-修改")
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = ResultBody.class)})
@PostMapping("updateRoleInfo")
public ResultBody updateRoleInfo(HttpServletRequest request, @Validated(value = {Update.class}) @RequestBody RoleInfoVO role) {
return roleService.updateRoleInfo(role, this.getUserLoginInfoFromRedis(request));
}
@ApiOperation(value = "角色管理-删除")
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = ResultBody.class)})
@GetMapping("removeRoleInfo")
public ResultBody removeRoleInfo(@ApiParam(value = "角色id", required = true) @RequestParam Integer id) {
return roleService.removeRoleInfo(id);
}
@ApiOperation(value = "角色管理-分页")
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = RoleInfoDTO.class)})
@PostMapping("listRoleInfoPage")
public ResultBody listRoleInfoPage(HttpServletRequest request,
@Validated(value = {Page.class}) @ApiParam(value = "角色查询QO", required = true) @RequestBody RoleInfoQO param) {
return ResultBody.success(roleService.listPageRoleInfo(param, this.getUserLoginInfoFromRedis(request)));
}
}
package com.mmc.iuav.user.dao;
import com.mmc.iuav.user.entity.RoleInfoDO;
import com.mmc.iuav.user.model.qo.RoleInfoQO;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
/**
* @Author small
* @Date 2023/7/10 16:06
* @Version 1.0
*/
@Mapper
public interface RoleDao {
Integer countRoleName(String roleName);
void insertRoleInfo(RoleInfoDO rd);
void updateRoleInfo(RoleInfoDO rd);
List<Integer> listUserRoleInfo(Integer id);
void removeRoleInfo(Integer id);
RoleInfoDO getRoleInfo(Integer id);
int countPageRoleInfo(RoleInfoQO param);
List<RoleInfoDO> listPageRoleInfo(RoleInfoQO param);
Integer countRoleNameId(RoleInfoDO rd);
Integer countNotDelUserAccountByRole(Integer id);
}
package com.mmc.iuav.user.entity;
import com.mmc.iuav.user.model.dto.RoleInfoDTO;
import com.mmc.iuav.user.model.vo.RoleInfoVO;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Date;
/**
* @Author small
* @Date 2023/7/10 16:07
* @Version 1.0
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class RoleInfoDO {
private static final long serialVersionUID = -9173631450897624325L;
private Integer id;
/**
* 角色编号
*/
private String roleNo;
/**
* 角色名称
*/
private String roleName;
/**
* 是否删除
*/
private Integer isDeleted;
/**
* 备注
*/
private String remark;
/**
* 创建时间
*/
private Date createTime;
/**
* 更新时间
*/
private Date updateTime;
/**
* 账号id
*/
private Integer userAccountId;
/**
* 账号名称
*/
private String userName;
/**
* DTO转换
*
* @return
*/
public RoleInfoDTO buildRoleInfoDTO() {
return RoleInfoDTO.builder().id(this.id).roleNo(this.roleNo).roleName(this.roleName)
.userName(this.userName)
.remark(this.remark).build();
}
/**
* VO类转换
*/
public RoleInfoDO(RoleInfoVO role) {
this.id = role.getId();
this.roleName = role.getRoleName();
this.remark = role.getRemark();
}
}
package com.mmc.iuav.user.service;
import com.mmc.iuav.page.PageResult;
import com.mmc.iuav.response.ResultBody;
import com.mmc.iuav.user.model.dto.LoginSuccessDTO;
import com.mmc.iuav.user.model.qo.RoleInfoQO;
import com.mmc.iuav.user.model.vo.RoleInfoVO;
/**
* @Author small
* @Date 2023/7/8 9:53
* @Version 1.0
*/
public interface RoleService {
ResultBody insertRoleInfo(RoleInfoVO role, LoginSuccessDTO userLoginInfoFromRedis);
ResultBody updateRoleInfo(RoleInfoVO role, LoginSuccessDTO userLoginInfoFromRedis);
ResultBody removeRoleInfo(Integer id);
PageResult listPageRoleInfo(RoleInfoQO param, LoginSuccessDTO userLoginInfoFromRedis);
}
package com.mmc.iuav.user.service.impl;
import com.mmc.iuav.general.CodeUtil;
import com.mmc.iuav.page.PageResult;
import com.mmc.iuav.response.ResultBody;
import com.mmc.iuav.response.ResultEnum;
import com.mmc.iuav.user.dao.RoleDao;
import com.mmc.iuav.user.entity.RoleInfoDO;
import com.mmc.iuav.user.model.dto.LoginSuccessDTO;
import com.mmc.iuav.user.model.qo.RoleInfoQO;
import com.mmc.iuav.user.model.vo.RoleInfoVO;
import com.mmc.iuav.user.service.RoleService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.stream.Collectors;
/**
* @Author small
* @Date 2023/7/10 16:05
* @Version 1.0
*/
@Service
public class RoleServiceImpl implements RoleService {
@Autowired
private RoleDao roleDao;
@Override
public ResultBody insertRoleInfo(RoleInfoVO roleInfo, LoginSuccessDTO userLoginInfoFromRedis) {
int count = roleDao.countRoleName(roleInfo.getRoleName());
if (count > 0) {
return ResultBody.error(ResultEnum.ROLE_NAME_REPEAT_ERROR);
}
RoleInfoDO rd = new RoleInfoDO(roleInfo);
rd.setUserAccountId(userLoginInfoFromRedis.getUserAccountId());
rd.setRoleNo(CodeUtil.createRoleNo());
roleDao.insertRoleInfo(rd);
return ResultBody.success();
}
@Override
public ResultBody updateRoleInfo(RoleInfoVO roleInfo, LoginSuccessDTO userLoginInfoFromRedis) {
RoleInfoDO rd = new RoleInfoDO(roleInfo);
int count = roleDao.countRoleNameId(rd);
if (count > 0) {
return ResultBody.error(ResultEnum.ROLE_NAME_REPEAT_ERROR);
}
rd.setUserAccountId(userLoginInfoFromRedis.getUserAccountId());
roleDao.updateRoleInfo(rd);
return ResultBody.success();
}
@Override
public ResultBody removeRoleInfo(Integer id) {
Integer count = roleDao.countNotDelUserAccountByRole(id);
if (count > 0) {
return ResultBody.error(ResultEnum.ROLE_AVL_USER_DELETE_ERROR);
}
roleDao.removeRoleInfo(id);
return ResultBody.success();
}
@Override
public PageResult listPageRoleInfo(RoleInfoQO param, LoginSuccessDTO userLoginInfoFromRedis) {
int count = roleDao.countPageRoleInfo(param);
if (count == 0) {
return PageResult.buildPage(param.getPageNo(), param.getPageSize(), count);
}
Integer pageNo = param.getPageNo();
param.buildCurrentPage();
return PageResult.buildPage(pageNo, param.getPageSize(), count,
roleDao.listPageRoleInfo(param).stream().map(d -> {
return d.buildRoleInfoDTO();
}).collect(Collectors.toList()));
}
}
<?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.mmc.iuav.user.dao.RoleDao">
<resultMap type="com.mmc.iuav.user.entity.RoleInfoDO"
id="roleInfoResultMap">
<id property="id" column="id"/>
<result property="roleNo" column="role_no"/>
<result property="roleName" column="role_name"/>
<result property="isDeleted" column="is_deleted"/>
<result property="remark" column="remark"/>
<result property="createTime" column="create_time"/>
<result property="updateTime" column="update_time"/>
<result property="userAccountId" column="user_account_id"/>
<result property="userName" column="user_name"/>
</resultMap>
<select id="countRoleName" resultType="int">
select count(*)
from role_info r
where r.is_deleted=0
<if test=" roleName != null and roleName != '' ">
and role_name = #{roleName}
</if>
</select>
<select id="countRoleNameId" resultType="java.lang.Integer">
select count(*)
from role_info r
where r.is_deleted=0
<if test=" roleName != null and roleName != '' ">
and role_name = #{roleName}
</if>
<if test=" id != null and id != '' ">
and id != #{id}
</if>
</select>
<insert id="insertRoleInfo" useGeneratedKeys="true"
keyProperty="id" parameterType="com.mmc.iuav.user.entity.RoleInfoDO">
insert into role_info(role_no, role_name, user_account_id, remark, create_time)
values (#{roleNo}, #{roleName}, #{userAccountId}, #{remark}, NOW())
</insert>
<update id="updateRoleInfo"
parameterType="com.mmc.iuav.user.entity.RoleInfoDO">
UPDATE role_info
<set>
<if test=" roleName != null and roleName != '' ">
role_name = #{roleName},
</if>
remark = #{remark},
update_time=NOW()
</set>
where id = #{id}
</update>
<select id="listUserRoleInfo" resultType="int"
parameterType="int">
select user_account_id
from user_role_rel
where role_id = #{roleId}
</select>
<update id="removeRoleInfo" parameterType="int">
UPDATE role_info
<set>
is_deleted = 1
</set>
where id = #{id}
</update>
<select id="getRoleInfo" resultMap="roleInfoResultMap"
parameterType="int">
select r.id,
r.role_no,
r.role_name,
r.is_operate,
r.is_admin,
r.is_system,
r.role_status,
r.remark,
r.create_time
from role_info r
where r.id = #{id}
and r.is_deleted = 0
</select>
<select id="countPageRoleInfo" resultType="int"
parameterType="com.mmc.iuav.user.model.qo.RoleInfoQO">
SELECT count(*)
FROM
role_info r
INNER JOIN user_account ua ON r.user_account_id = ua.id
WHERE
r.is_deleted =0
<if test=" NumberOrName != null and NumberOrName != '' ">
and (role_no like CONCAT('%',#{NumberOrName},'%') or role_name
like CONCAT('%',#{NumberOrName},'%'))
</if>
</select>
<select id="listPageRoleInfo" resultMap="roleInfoResultMap"
parameterType="com.mmc.iuav.user.model.qo.RoleInfoQO">
SELECT
r.id,
r.role_no,
r.role_name,
r.remark,
r.create_time,
r.user_account_id,
ua.user_name
FROM
role_info r
INNER JOIN user_account ua ON r.user_account_id = ua.id
WHERE
r.is_deleted =0
<if test=" NumberOrName != null and NumberOrName != '' ">
and (r.role_no like CONCAT('%',#{NumberOrName},'%') or
r.role_name like CONCAT('%',#{NumberOrName},'%'))
</if>
order by r.create_time ASC
limit #{pageNo},#{pageSize}
</select>
<select id="countNotDelUserAccountByRole" resultType="java.lang.Integer">
select count(*)
from user_role_rel
where role_id = #{id}
</select>
</mapper>
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论