用户管理,部门管理,角色管理

This commit is contained in:
马三炮 2025-09-09 09:30:25 +08:00
parent 047177c910
commit deafebfc26
15 changed files with 656 additions and 127 deletions

View File

@ -6,6 +6,7 @@ import javax.servlet.http.HttpServletResponse;
import com.bonus.common.annotation.SysLog;
import com.bonus.common.enums.OperaType;
import com.bonus.common.utils.encryption.Sm4Utils;
import org.apache.commons.lang3.ArrayUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
@ -37,7 +38,7 @@ import com.bonus.system.service.ISysUserService;
/**
* 用户信息
*
*
* @author bonus
*/
@RestController
@ -143,6 +144,7 @@ public class SysUserController extends BaseController
return error("新增用户'" + user.getUserName() + "'失败,邮箱账号已存在");
}
user.setCreateBy(getUsername());
user.setPhonenumber(Sm4Utils.encrypt(user.getPhonenumber()));
user.setPassword(SecurityUtils.encryptPassword(user.getPassword()));
return toAjax(userService.insertUser(user));
}

View File

@ -0,0 +1,117 @@
package com.bonus.web.controller.tool;
import com.bonus.common.annotation.Log;
import com.bonus.common.annotation.SysLog;
import com.bonus.common.core.controller.BaseController;
import com.bonus.common.core.domain.AjaxResult;
import com.bonus.common.core.domain.entity.SysUser;
import com.bonus.common.core.page.TableDataInfo;
import com.bonus.common.enums.BusinessType;
import com.bonus.common.enums.OperaType;
import com.bonus.common.utils.DateUtils;
import com.bonus.common.utils.SecurityUtils;
import com.bonus.common.utils.StringUtils;
import com.bonus.system.domain.KyDataClassify;
import com.bonus.system.service.KyDataClassifyService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.List;
/**
* 数据分类管理
* @author 马三炮
* @date 2025/9/1
*/
@RestController
@RequestMapping("/data/classify")
@Slf4j
public class KyDataClassifyController extends BaseController {
@Resource
private KyDataClassifyService kyDataClassifyService;
/**
* 获取数据分类管理列表
* @param kyDataClassify
* @return
*/
@SysLog(title = "数据集成", businessType = OperaType.QUERY, logType = 0, module = "数据集成->数据分类管理", details = "查询数据分类列表")
@PreAuthorize("@ss.hasPermi('data:classify:list')")
@GetMapping("/list")
public TableDataInfo list(KyDataClassify kyDataClassify)
{
startPage();
List<KyDataClassify> list = kyDataClassifyService.selectKyDataClassifyList(kyDataClassify);
return getDataTable(list);
}
/**
* 新增数据分类
* @param kyDataClassify
* @return
*/
@PreAuthorize("@ss.hasPermi('data:classify:add')")
@SysLog(title = "数据集成", businessType = OperaType.QUERY, logType = 0, module = "数据集成->数据分类管理", details = "新增数据分类")
@PostMapping("/addKyDataClassify")
public AjaxResult addKyDataClassify(@Validated @RequestBody KyDataClassify kyDataClassify)
{
kyDataClassify.setCreateUserId(getUserId());
kyDataClassify.setCreateUserName(getUsername());
kyDataClassify.setCreateTime(DateUtils.getNowDate());
kyDataClassify.setUpdateUserId(getUserId());
kyDataClassify.setUpdateUserName(getUsername());
kyDataClassify.setUpdateTime(DateUtils.getNowDate());
return toAjax(kyDataClassifyService.addKyDataClassify(kyDataClassify));
}
/**
* 修改数据分类
* @param kyDataClassify
* @return
*/
@PreAuthorize("@ss.hasPermi('data:classify:update')")
@SysLog(title = "数据集成", businessType = OperaType.QUERY, logType = 0, module = "数据集成->数据分类管理", details = "修改数据分类")
@PostMapping("/updateKyDataClassify")
public AjaxResult updateKyDataClassify(@Validated @RequestBody KyDataClassify kyDataClassify)
{
kyDataClassify.setUpdateUserId(getUserId());
kyDataClassify.setUpdateUserName(getUsername());
kyDataClassify.setUpdateTime(DateUtils.getNowDate());
return toAjax(kyDataClassifyService.updateKyDataClassify(kyDataClassify));
}
/**
* 删除数据分类
* @param kyDataClassify
* @return
*/
@PreAuthorize("@ss.hasPermi('data:classify:del')")
@SysLog(title = "数据集成", businessType = OperaType.QUERY, logType = 0, module = "数据集成->数据分类管理", details = "删除数据分类")
@PostMapping("/delKyDataClassify")
public AjaxResult delKyDataClassify(@Validated @RequestBody KyDataClassify kyDataClassify)
{
return toAjax(kyDataClassifyService.delKyDataClassify(kyDataClassify));
}
/**
* 获取数据分类管理下拉框
* @param kyDataClassify
* @return
*/
/*@PreAuthorize("@ss.hasPermi('data:classify:list')")*/
@GetMapping("/listAll")
public TableDataInfo listAll(KyDataClassify kyDataClassify)
{
List<KyDataClassify> list = kyDataClassifyService.listAll(kyDataClassify);
return getDataTable(list);
}
}

View File

@ -12,7 +12,7 @@ import com.bonus.common.core.domain.BaseEntity;
/**
* 部门表 sys_dept
*
*
* @author bonus
*/
public class SysDept extends BaseEntity
@ -51,7 +51,10 @@ public class SysDept extends BaseEntity
/** 父部门名称 */
private String parentName;
/** 部门描述 */
private String remark;
/** 子部门 */
private List<SysDept> children = new ArrayList<SysDept>();
@ -97,7 +100,7 @@ public class SysDept extends BaseEntity
this.deptName = deptName;
}
@NotNull(message = "显示顺序不能为空")
/*@NotNull(message = "显示顺序不能为空")*/
public Integer getOrderNum()
{
return orderNum;
@ -181,6 +184,16 @@ public class SysDept extends BaseEntity
this.children = children;
}
@Override
public String getRemark() {
return remark;
}
@Override
public void setRemark(String remark) {
this.remark = remark;
}
@Override
public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)

View File

@ -14,7 +14,7 @@ import com.bonus.common.xss.Xss;
/**
* 用户对象 sys_user
*
*
* @author bonus
*/
public class SysUser extends BaseEntity
@ -95,6 +95,9 @@ public class SysUser extends BaseEntity
/**用户密钥*/
private String secret;
/** 角色名称 */
private String roleName;
public SysUser()
{
@ -321,6 +324,14 @@ public class SysUser extends BaseEntity
this.secret = secret;
}
public String getRoleName() {
return roleName;
}
public void setRoleName(String roleName) {
this.roleName = roleName;
}
@Override
public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)

View File

@ -12,7 +12,7 @@ import java.util.Base64;
*/
public class GenerateUtil {
private static String generateRandomSecret(int length) {
public static String generateRandomSecret(int length) {
SecureRandom random = new SecureRandom();
byte[] bytes = new byte[length];
random.nextBytes(bytes);

View File

@ -6,13 +6,15 @@ import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.regex.Pattern;
import org.springframework.util.AntPathMatcher;
import com.bonus.common.constant.Constants;
import com.bonus.common.core.text.StrFormatter;
/**
* 字符串工具类
*
*
* @author bonus
*/
public class StringUtils extends org.apache.commons.lang3.StringUtils
@ -28,7 +30,7 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils
/**
* 获取参数不为空值
*
*
* @param value defaultValue 要判断的value
* @return value 返回值
*/
@ -39,7 +41,7 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils
/**
* * 判断一个Collection是否为空 包含ListSetQueue
*
*
* @param coll 要判断的Collection
* @return true为空 false非空
*/
@ -50,7 +52,7 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils
/**
* * 判断一个Collection是否非空包含ListSetQueue
*
*
* @param coll 要判断的Collection
* @return true非空 false
*/
@ -61,7 +63,7 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils
/**
* * 判断一个对象数组是否为空
*
*
* @param objects 要判断的对象数组
** @return true为空 false非空
*/
@ -72,7 +74,7 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils
/**
* * 判断一个对象数组是否非空
*
*
* @param objects 要判断的对象数组
* @return true非空 false
*/
@ -83,7 +85,7 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils
/**
* * 判断一个Map是否为空
*
*
* @param map 要判断的Map
* @return true为空 false非空
*/
@ -94,7 +96,7 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils
/**
* * 判断一个Map是否为空
*
*
* @param map 要判断的Map
* @return true非空 false
*/
@ -105,7 +107,7 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils
/**
* * 判断一个字符串是否为空串
*
*
* @param str String
* @return true为空 false非空
*/
@ -116,7 +118,7 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils
/**
* * 判断一个字符串是否为非空串
*
*
* @param str String
* @return true非空串 false空串
*/
@ -127,7 +129,7 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils
/**
* * 判断一个对象是否为空
*
*
* @param object Object
* @return true为空 false非空
*/
@ -138,7 +140,7 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils
/**
* * 判断一个对象是否非空
*
*
* @param object Object
* @return true非空 false
*/
@ -149,7 +151,7 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils
/**
* * 判断一个对象是否是数组类型Java基本型别的数组
*
*
* @param object 对象
* @return true是数组 false不是数组
*/
@ -211,7 +213,7 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils
/**
* 截取字符串
*
*
* @param str 字符串
* @param start 开始
* @return 结果
@ -242,7 +244,7 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils
/**
* 截取字符串
*
*
* @param str 字符串
* @param start 开始
* @param end 结束
@ -288,7 +290,7 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils
/**
* 在字符串中查找第一个出现的 `open` 和最后一个出现的 `close` 之间的子字符串
*
*
* @param str 要截取的字符串
* @param open 起始字符串
* @param close 结束字符串
@ -314,7 +316,7 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils
/**
* 判断是否为空并且不是空白字符
*
*
* @param str 要判断的value
* @return 结果
*/
@ -344,7 +346,7 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils
* 通常使用format("this is {} for {}", "a", "b") -> this is a for b<br>
* 转义{} format("this is \\{} for {}", "a", "b") -> this is \{} for a<br>
* 转义\ format("this is \\\\{} for {}", "a", "b") -> this is \a for b<br>
*
*
* @param template 文本模板被替换的部分用 {} 表示
* @param params 参数值
* @return 格式化后的文本
@ -360,7 +362,7 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils
/**
* 是否为http(s)://开头
*
*
* @param link 链接
* @return 结果
*/
@ -371,7 +373,7 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils
/**
* 字符串转set
*
*
* @param str 字符串
* @param sep 分隔符
* @return set集合
@ -383,7 +385,7 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils
/**
* 字符串转list
*
*
* @param str 字符串
* @param sep 分隔符
* @return list集合
@ -395,7 +397,7 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils
/**
* 字符串转list
*
*
* @param str 字符串
* @param sep 分隔符
* @param filterBlank 过滤纯空白
@ -532,7 +534,7 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils
/**
* 是否包含字符串
*
*
* @param str 验证字符串
* @param strs 字符串组
* @return 包含返回true
@ -554,7 +556,7 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils
/**
* 将下划线大写方式命名的字符串转换为驼峰式如果转换前的下划线大写方式命名的字符串为空则返回空字符串 例如HELLO_WORLD->HelloWorld
*
*
* @param name 转换前的下划线大写方式命名的字符串
* @return 转换后的驼峰式命名的字符串
*/
@ -628,7 +630,7 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils
/**
* 查找指定字符串是否匹配指定字符串列表中的任意一个字符串
*
*
* @param str 指定字符串
* @param strs 需要检查的字符串数组
* @return 是否匹配
@ -650,11 +652,11 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils
}
/**
* 判断url是否与规则配置:
* ? 表示单个字符;
* * 表示一层路径内的任意字符串不可跨层级;
* 判断url是否与规则配置:
* ? 表示单个字符;
* * 表示一层路径内的任意字符串不可跨层级;
* ** 表示任意层路径;
*
*
* @param pattern 匹配规则
* @param url 需要匹配的url
* @return
@ -673,7 +675,7 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils
/**
* 数字左边补齐0使之达到指定长度注意如果数字转换为字符串后长度大于size则只保留 最后size个字符
*
*
* @param num 数字对象
* @param size 字符串指定长度
* @return 返回数字的字符串格式该字符串为指定长度
@ -685,7 +687,7 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils
/**
* 字符串左补齐如果原始字符串s长度大于size则只保留最后size个字符
*
*
* @param s 原始字符串
* @param size 字符串指定长度
* @param c 用于补齐的字符
@ -719,4 +721,104 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils
}
return sb.toString();
}
}
// 手机号正则表达式
// 规则11位数字以1开头第二位为3-9
private static final String PHONE_REGEX = "^1[3-9]\\d{9}$";
// 编译正则表达式为Pattern对象提高效率
private static final Pattern PHONE_PATTERN = Pattern.compile(PHONE_REGEX);
/**
* 校验手机号是否合法
* @param phoneNumber 待校验的手机号
* @return 合法返回true否则返回false
*/
public static boolean phoneNumberIsValid(String phoneNumber) {
// 先判断是否为空
if (phoneNumber == null || phoneNumber.trim().isEmpty()) {
return false;
}
// 使用正则匹配
return PHONE_PATTERN.matcher(phoneNumber).matches();
}
// 身份证号正则表达式18位
private static final String ID_CARD_REGEX = "^[1-9]\\d{5}(18|19|20)\\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\\d|3[01])\\d{3}[0-9Xx]$";
// 编译正则表达式
private static final Pattern ID_CARD_PATTERN = Pattern.compile(ID_CARD_REGEX);
// 加权因子
private static final int[] WEIGHT_FACTOR = {7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2};
// 校验码对应值
private static final char[] CHECK_CODE = {'1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'};
/**
* 校验身份证号是否合法
* @param idCard 待校验的身份证号
* @return 合法返回true否则返回false
*/
public static boolean idCardIsValid(String idCard) {
// 校验空值
if (idCard == null || idCard.trim().isEmpty()) {
return false;
}
// 移除空格并转为大写
String trimmedId = idCard.trim().toUpperCase();
// 校验格式
if (!ID_CARD_PATTERN.matcher(trimmedId).matches()) {
return false;
}
// 校验出生日期这里简化处理完整实现需要验证月份天数合法性
if (!isValidBirthDate(trimmedId)) {
return false;
}
// 校验校验码
return isValidCheckCode(trimmedId);
}
/**
* 校验出生日期格式
*/
private static boolean isValidBirthDate(String idCard) {
try {
// 从身份证号中提取出生年月日第7-14位
int year = Integer.parseInt(idCard.substring(6, 10));
int month = Integer.parseInt(idCard.substring(10, 12));
int day = Integer.parseInt(idCard.substring(12, 14));
// 简单校验范围
if (year < 1900 || year > 2100) return false;
if (month < 1 || month > 12) return false;
if (day < 1 || day > 31) return false;
// 更详细的日期校验可以在这里添加
return true;
} catch (NumberFormatException e) {
return false;
}
}
/**
* 校验身份证号的校验码
*/
private static boolean isValidCheckCode(String idCard) {
// 计算前17位与对应加权因子乘积的和
int sum = 0;
for (int i = 0; i < 17; i++) {
sum += Character.getNumericValue(idCard.charAt(i)) * WEIGHT_FACTOR[i];
}
// 计算校验码
int remainder = sum % 11;
char checkCode = CHECK_CODE[remainder];
// 比较校验码
return idCard.charAt(17) == checkCode;
}
}

View File

@ -0,0 +1,63 @@
package com.bonus.system.domain;
import lombok.Data;
import java.util.Date;
/**
* @author 马三炮
* @date 2025/9/1
*/
@Data
public class KyDataClassify {
/**
* id
*/
private Long id;
/**
* 数据类型名称
*/
private String dataTypeName;
/**
* 备注
*/
private String remark;
/**
* 创建时间
*/
private Date createTime;
/**
* 修改时间
*/
private Date updateTime;
/**
* 创建人
*/
private Long createUserId;
/**
* 创建人
*/
private String createUserName;
/**
* 修改人
*/
private Long updateUserId;
/**
* 修改人姓名
*/
private String updateUserName;
/**
* 是否删除 0. 删除 1.未删除
*/
private String delFlag;
}

View File

@ -0,0 +1,43 @@
package com.bonus.system.mapper;
import com.bonus.system.domain.KyDataClassify;
import java.util.List;
public interface KyDataClassifyMapper {
/**
* 获取数据分类管理列表
* @param kyDataClassify
* @return
*/
List<KyDataClassify> selectKyDataClassifyList(KyDataClassify kyDataClassify);
/**
* 新增数据分类
* @param kyDataClassify
* @return
*/
int addKyDataClassify(KyDataClassify kyDataClassify);
/**
* 修改数据分类
* @param kyDataClassify
* @return
*/
int updateKyDataClassify(KyDataClassify kyDataClassify);
/**
* 删除数据分类
* @param kyDataClassify
* @return
*/
int delKyDataClassify(KyDataClassify kyDataClassify);
/**
* 获取数据分类管理下拉框
* @param kyDataClassify
* @return
*/
List<KyDataClassify> listAll(KyDataClassify kyDataClassify);
}

View File

@ -0,0 +1,43 @@
package com.bonus.system.service;
import com.bonus.system.domain.KyDataClassify;
import java.util.List;
public interface KyDataClassifyService {
/**
* 获取数据分类管理列表
* @param kyDataClassify
* @return
*/
List<KyDataClassify> selectKyDataClassifyList(KyDataClassify kyDataClassify);
/**
* 新增数据分类
* @param kyDataClassify
* @return
*/
int addKyDataClassify(KyDataClassify kyDataClassify);
/**
* 修改数据分类
* @param kyDataClassify
* @return
*/
int updateKyDataClassify(KyDataClassify kyDataClassify);
/**
* 删除数据分类
* @param kyDataClassify
* @return
*/
int delKyDataClassify(KyDataClassify kyDataClassify);
/**
* 获取数据分类管理下拉框
* @param kyDataClassify
* @return
*/
List<KyDataClassify> listAll(KyDataClassify kyDataClassify);
}

View File

@ -0,0 +1,75 @@
package com.bonus.system.service.impl;
import com.bonus.common.core.domain.entity.SysUser;
import com.bonus.common.utils.DateUtils;
import com.bonus.common.utils.SecurityUtils;
import com.bonus.system.domain.KyDataClassify;
import com.bonus.system.mapper.KyDataClassifyMapper;
import com.bonus.system.service.KyDataClassifyService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
/**
* @author 马三炮
* @date 2025/9/1
*/
@Service
@Slf4j
public class KyDataClassifyServiceImpl implements KyDataClassifyService {
@Resource
private KyDataClassifyMapper kyDataClassifyMapper;
/**
* 获取数据分类管理列表
* @param kyDataClassify
* @return
*/
@Override
public List<KyDataClassify> selectKyDataClassifyList(KyDataClassify kyDataClassify) {
return kyDataClassifyMapper.selectKyDataClassifyList(kyDataClassify);
}
/**
* 新增数据分类
* @param kyDataClassify
* @return
*/
@Override
public int addKyDataClassify(KyDataClassify kyDataClassify) {
return kyDataClassifyMapper.addKyDataClassify(kyDataClassify);
}
/**
* 修改数据分类
* @param kyDataClassify
* @return
*/
@Override
public int updateKyDataClassify(KyDataClassify kyDataClassify) {
return kyDataClassifyMapper.updateKyDataClassify(kyDataClassify);
}
/**
* 删除数据分类
* @param kyDataClassify
* @return
*/
@Override
public int delKyDataClassify(KyDataClassify kyDataClassify) {
return kyDataClassifyMapper.delKyDataClassify(kyDataClassify);
}
/**
* 获取数据分类管理下拉框
* @param kyDataClassify
* @return
*/
@Override
public List<KyDataClassify> listAll(KyDataClassify kyDataClassify) {
return kyDataClassifyMapper.listAll(kyDataClassify);
}
}

View File

@ -23,7 +23,7 @@ import com.bonus.system.service.ISysDeptService;
/**
* 部门管理 服务实现
*
*
* @author bonus
*/
@Service
@ -37,7 +37,7 @@ public class SysDeptServiceImpl implements ISysDeptService
/**
* 查询部门管理数据
*
*
* @param dept 部门信息
* @return 部门信息集合
*/
@ -50,7 +50,7 @@ public class SysDeptServiceImpl implements ISysDeptService
/**
* 查询部门树结构信息
*
*
* @param dept 部门信息
* @return 部门树信息集合
*/
@ -63,7 +63,7 @@ public class SysDeptServiceImpl implements ISysDeptService
/**
* 构建前端所需要树结构
*
*
* @param depts 部门列表
* @return 树结构列表
*/
@ -90,7 +90,7 @@ public class SysDeptServiceImpl implements ISysDeptService
/**
* 构建前端所需要下拉树结构
*
*
* @param depts 部门列表
* @return 下拉树结构列表
*/
@ -103,7 +103,7 @@ public class SysDeptServiceImpl implements ISysDeptService
/**
* 根据角色ID查询部门树信息
*
*
* @param roleId 角色ID
* @return 选中部门列表
*/
@ -116,7 +116,7 @@ public class SysDeptServiceImpl implements ISysDeptService
/**
* 根据部门ID查询信息
*
*
* @param deptId 部门ID
* @return 部门信息
*/
@ -128,7 +128,7 @@ public class SysDeptServiceImpl implements ISysDeptService
/**
* 根据ID查询所有子部门正常状态
*
*
* @param deptId 部门ID
* @return 子部门数
*/
@ -140,7 +140,7 @@ public class SysDeptServiceImpl implements ISysDeptService
/**
* 是否存在子节点
*
*
* @param deptId 部门ID
* @return 结果
*/
@ -153,7 +153,7 @@ public class SysDeptServiceImpl implements ISysDeptService
/**
* 查询部门是否存在用户
*
*
* @param deptId 部门ID
* @return 结果 true 存在 false 不存在
*/
@ -166,7 +166,7 @@ public class SysDeptServiceImpl implements ISysDeptService
/**
* 校验部门名称是否唯一
*
*
* @param dept 部门信息
* @return 结果
*/
@ -184,7 +184,7 @@ public class SysDeptServiceImpl implements ISysDeptService
/**
* 校验部门是否有数据权限
*
*
* @param deptId 部门id
*/
@Override
@ -204,26 +204,30 @@ public class SysDeptServiceImpl implements ISysDeptService
/**
* 新增保存部门信息
*
*
* @param dept 部门信息
* @return 结果
*/
@Override
public int insertDept(SysDept dept)
{
SysDept info = deptMapper.selectDeptById(dept.getParentId());
// 如果父节点不为正常状态,则不允许新增子节点
if (!UserConstants.DEPT_NORMAL.equals(info.getStatus()))
{
throw new ServiceException("部门停用,不允许新增");
if (dept.getParentId()==0){
dept.setAncestors("0");
}else {
SysDept info = deptMapper.selectDeptById(dept.getParentId());
// 如果父节点不为正常状态,则不允许新增子节点
if (!UserConstants.DEPT_NORMAL.equals(info.getStatus()))
{
throw new ServiceException("部门停用,不允许新增");
}
dept.setAncestors(info.getAncestors() + "," + dept.getParentId());
}
dept.setAncestors(info.getAncestors() + "," + dept.getParentId());
return deptMapper.insertDept(dept);
}
/**
* 修改保存部门信息
*
*
* @param dept 部门信息
* @return 结果
*/
@ -251,7 +255,7 @@ public class SysDeptServiceImpl implements ISysDeptService
/**
* 修改该部门的父级部门状态
*
*
* @param dept 当前部门
*/
private void updateParentDeptStatusNormal(SysDept dept)
@ -263,7 +267,7 @@ public class SysDeptServiceImpl implements ISysDeptService
/**
* 修改子元素关系
*
*
* @param deptId 被修改的部门ID
* @param newAncestors 新的父ID集合
* @param oldAncestors 旧的父ID集合
@ -283,7 +287,7 @@ public class SysDeptServiceImpl implements ISysDeptService
/**
* 删除部门管理信息
*
*
* @param deptId 部门ID
* @return 结果
*/

View File

@ -4,6 +4,8 @@ import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
import javax.validation.Validator;
import com.bonus.common.utils.GenerateUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@ -33,7 +35,7 @@ import com.bonus.system.service.ISysUserService;
/**
* 用户 业务层处理
*
*
* @author bonus
*/
@Service
@ -67,7 +69,7 @@ public class SysUserServiceImpl implements ISysUserService
/**
* 根据条件分页查询用户列表
*
*
* @param user 用户信息
* @return 用户信息集合信息
*/
@ -80,7 +82,7 @@ public class SysUserServiceImpl implements ISysUserService
/**
* 根据条件分页查询已分配用户角色列表
*
*
* @param user 用户信息
* @return 用户信息集合信息
*/
@ -93,7 +95,7 @@ public class SysUserServiceImpl implements ISysUserService
/**
* 根据条件分页查询未分配用户角色列表
*
*
* @param user 用户信息
* @return 用户信息集合信息
*/
@ -106,7 +108,7 @@ public class SysUserServiceImpl implements ISysUserService
/**
* 通过用户名查询用户
*
*
* @param userName 用户名
* @return 用户对象信息
*/
@ -118,7 +120,7 @@ public class SysUserServiceImpl implements ISysUserService
/**
* 通过用户ID查询用户
*
*
* @param userId 用户ID
* @return 用户对象信息
*/
@ -130,7 +132,7 @@ public class SysUserServiceImpl implements ISysUserService
/**
* 查询用户所属角色组
*
*
* @param userName 用户名
* @return 结果
*/
@ -147,7 +149,7 @@ public class SysUserServiceImpl implements ISysUserService
/**
* 查询用户所属岗位组
*
*
* @param userName 用户名
* @return 结果
*/
@ -164,7 +166,7 @@ public class SysUserServiceImpl implements ISysUserService
/**
* 校验用户名称是否唯一
*
*
* @param user 用户信息
* @return 结果
*/
@ -218,7 +220,7 @@ public class SysUserServiceImpl implements ISysUserService
/**
* 校验用户是否允许操作
*
*
* @param user 用户信息
*/
@Override
@ -232,7 +234,7 @@ public class SysUserServiceImpl implements ISysUserService
/**
* 校验用户是否有数据权限
*
*
* @param userId 用户id
*/
@Override
@ -252,7 +254,7 @@ public class SysUserServiceImpl implements ISysUserService
/**
* 新增保存用户信息
*
*
* @param user 用户信息
* @return 结果
*/
@ -260,6 +262,7 @@ public class SysUserServiceImpl implements ISysUserService
@Transactional
public int insertUser(SysUser user)
{
user.setSecret(GenerateUtil.generateRandomSecret(64));
// 新增用户信息
int rows = userMapper.insertUser(user);
// 新增用户岗位关联
@ -271,7 +274,7 @@ public class SysUserServiceImpl implements ISysUserService
/**
* 注册用户信息
*
*
* @param user 用户信息
* @return 结果
*/
@ -283,7 +286,7 @@ public class SysUserServiceImpl implements ISysUserService
/**
* 修改保存用户信息
*
*
* @param user 用户信息
* @return 结果
*/
@ -305,7 +308,7 @@ public class SysUserServiceImpl implements ISysUserService
/**
* 用户授权角色
*
*
* @param userId 用户ID
* @param roleIds 角色组
*/
@ -319,7 +322,7 @@ public class SysUserServiceImpl implements ISysUserService
/**
* 修改用户状态
*
*
* @param user 用户信息
* @return 结果
*/
@ -331,7 +334,7 @@ public class SysUserServiceImpl implements ISysUserService
/**
* 修改用户基本信息
*
*
* @param user 用户信息
* @return 结果
*/
@ -343,7 +346,7 @@ public class SysUserServiceImpl implements ISysUserService
/**
* 修改用户头像
*
*
* @param userId 用户ID
* @param avatar 头像地址
* @return 结果
@ -356,7 +359,7 @@ public class SysUserServiceImpl implements ISysUserService
/**
* 重置用户密码
*
*
* @param user 用户信息
* @return 结果
*/
@ -368,7 +371,7 @@ public class SysUserServiceImpl implements ISysUserService
/**
* 重置用户密码
*
*
* @param userId 用户ID
* @param password 密码
* @return 结果
@ -381,7 +384,7 @@ public class SysUserServiceImpl implements ISysUserService
/**
* 新增用户角色信息
*
*
* @param user 用户对象
*/
public void insertUserRole(SysUser user)
@ -391,7 +394,7 @@ public class SysUserServiceImpl implements ISysUserService
/**
* 新增用户岗位信息
*
*
* @param user 用户对象
*/
public void insertUserPost(SysUser user)
@ -414,7 +417,7 @@ public class SysUserServiceImpl implements ISysUserService
/**
* 新增用户角色信息
*
*
* @param userId 用户ID
* @param roleIds 角色组
*/
@ -437,7 +440,7 @@ public class SysUserServiceImpl implements ISysUserService
/**
* 通过用户ID删除用户
*
*
* @param userId 用户ID
* @return 结果
*/
@ -454,7 +457,7 @@ public class SysUserServiceImpl implements ISysUserService
/**
* 批量删除用户信息
*
*
* @param userIds 需要删除的用户ID
* @return 结果
*/
@ -476,7 +479,7 @@ public class SysUserServiceImpl implements ISysUserService
/**
* 导入用户数据
*
*
* @param userList 用户数据列表
* @param isUpdateSupport 是否更新支持如果已存在则进行更新数据
* @param operName 操作用户

View File

@ -0,0 +1,43 @@
<?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.bonus.system.mapper.KyDataClassifyMapper">
<insert id="addKyDataClassify">
insert into da_ky_data_classify
(data_type_name,remark,create_time,update_time,create_user_id,create_user_name,update_user_id,update_user_name)
values (#{dataTypeName},#{remark},#{createTime},#{updateTime},#{createUserId},#{createUserName},#{updateUserId},#{updateUserName})
</insert>
<update id="updateKyDataClassify">
update da_ky_data_classify
<trim prefix="set" suffixOverrides=",">
<if test="dataTypeName!=null">
data_type_name =#{dataTypeName}
</if>
<if test="updateUserId!=null">
update_user_id =#{updateUserId}
</if>
<if test="updateUserName!=null">
update_user_name =#{updateUserName}
</if>
</trim>
</update>
<delete id="delKyDataClassify">
update da_ky_data_classify set del_flag = '0' where id = #{id}
</delete>
<select id="selectKyDataClassifyList" resultType="com.bonus.system.domain.KyDataClassify">
select id,data_type_name,remark,update_time,update_user_id,update_user_name
from da_ky_data_classify where del_flag='1'
<if test="dataTypeName!=null">
and data_type_name LIKE CONCAT('%', #{dataTypeName}, '%')
</if>
</select>
<select id="listAll" resultType="com.bonus.system.domain.KyDataClassify">
select id,data_type_name
from da_ky_data_classify where del_flag='1'
<if test="dataTypeName!=null">
and data_type_name LIKE CONCAT('%', #{dataTypeName}, '%')
</if>
</select>
</mapper>

View File

@ -21,12 +21,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="updateBy" column="update_by" />
<result property="updateTime" column="update_time" />
</resultMap>
<sql id="selectDeptVo">
select d.dept_id, d.parent_id, d.ancestors, d.dept_name, d.order_num, d.leader, d.phone, d.email, d.status, d.del_flag, d.create_by, d.create_time
select d.dept_id, d.parent_id, d.ancestors, d.dept_name, d.order_num, d.leader, d.phone, d.email, d.status, d.del_flag, d.create_by, d.create_time, d.remark
from da_ky_sys_dept d
</sql>
<select id="selectDeptList" parameterType="SysDept" resultMap="SysDeptResult">
<include refid="selectDeptVo"/>
where d.del_flag = '0'
@ -46,7 +46,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
${params.dataScope}
order by d.parent_id, d.order_num
</select>
<select id="selectDeptListByRoleId" resultType="Long">
select d.dept_id
from da_ky_sys_dept d
@ -57,36 +57,36 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</if>
order by d.parent_id, d.order_num
</select>
<select id="selectDeptById" parameterType="Long" resultMap="SysDeptResult">
select d.dept_id, d.parent_id, d.ancestors, d.dept_name, d.order_num, d.leader, d.phone, d.email, d.status,
select d.dept_id, d.parent_id, d.ancestors, d.dept_name, d.order_num, d.leader, d.phone, d.email, d.status,d.remark,
(select dept_name from da_ky_sys_dept where dept_id = d.parent_id) parent_name
from da_ky_sys_dept d
where d.dept_id = #{deptId}
</select>
<select id="checkDeptExistUser" parameterType="Long" resultType="int">
select count(1) from da_ky_sys_user where dept_id = #{deptId} and del_flag = '0'
</select>
<select id="hasChildByDeptId" parameterType="Long" resultType="int">
select count(1) from da_ky_sys_dept
where del_flag = '0' and parent_id = #{deptId} limit 1
</select>
<select id="selectChildrenDeptById" parameterType="Long" resultMap="SysDeptResult">
select * from da_ky_sys_dept where find_in_set(#{deptId}, ancestors)
</select>
<select id="selectNormalChildrenDeptById" parameterType="Long" resultType="int">
select count(*) from da_ky_sys_dept where status = 0 and del_flag = '0' and find_in_set(#{deptId}, ancestors)
</select>
<select id="checkDeptNameUnique" resultMap="SysDeptResult">
<include refid="selectDeptVo"/>
where dept_name=#{deptName} and parent_id = #{parentId} and del_flag = '0' limit 1
</select>
<insert id="insertDept" parameterType="SysDept">
insert into da_ky_sys_dept(
<if test="deptId != null and deptId != 0">dept_id,</if>
@ -99,6 +99,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="email != null and email != ''">email,</if>
<if test="status != null">status,</if>
<if test="createBy != null and createBy != ''">create_by,</if>
<if test="remark != null and remark != ''">remark,</if>
create_time
)values(
<if test="deptId != null and deptId != 0">#{deptId},</if>
@ -111,10 +112,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="email != null and email != ''">#{email},</if>
<if test="status != null">#{status},</if>
<if test="createBy != null and createBy != ''">#{createBy},</if>
<if test="remark != null and remark != ''">#{remark},</if>
sysdate()
)
</insert>
<update id="updateDept" parameterType="SysDept">
update da_ky_sys_dept
<set>
@ -127,11 +129,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="email != null">email = #{email},</if>
<if test="status != null and status != ''">status = #{status},</if>
<if test="updateBy != null and updateBy != ''">update_by = #{updateBy},</if>
<if test="remark != null and remark != ''">remark = #{remark},</if>
update_time = sysdate()
</set>
where dept_id = #{deptId}
</update>
<update id="updateDeptChildren" parameterType="java.util.List">
update da_ky_sys_dept set ancestors =
<foreach collection="depts" item="item" index="index"
@ -144,16 +147,16 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
#{item.deptId}
</foreach>
</update>
<update id="updateDeptStatusNormal" parameterType="Long">
update da_ky_sys_dept set status = '0' where dept_id in
<foreach collection="array" item="deptId" open="(" separator="," close=")">
#{deptId}
</foreach>
</update>
<delete id="deleteDeptById" parameterType="Long">
update da_ky_sys_dept set del_flag = '2' where dept_id = #{deptId}
</delete>
</mapper>
</mapper>

View File

@ -28,7 +28,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<association property="dept" javaType="SysDept" resultMap="deptResult" />
<collection property="roles" javaType="java.util.List" resultMap="RoleResult" />
</resultMap>
<resultMap id="deptResult" type="SysDept">
<id property="deptId" column="dept_id" />
<result property="parentId" column="parent_id" />
@ -38,7 +38,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="leader" column="leader" />
<result property="status" column="dept_status" />
</resultMap>
<resultMap id="RoleResult" type="SysRole">
<id property="roleId" column="role_id" />
<result property="roleName" column="role_name" />
@ -47,9 +47,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="dataScope" column="data_scope" />
<result property="status" column="role_status" />
</resultMap>
<sql id="selectUserVo">
select u.user_id, u.dept_id, u.user_name, u.nick_name, u.email, u.avatar, u.phonenumber, u.password, u.sex, u.status, u.del_flag, u.login_ip, u.login_date, u.pwd_update_date, u.create_by, u.create_time, u.remark,
select u.user_id, u.dept_id, u.user_name, u.nick_name, u.email, u.avatar, u.phonenumber, u.password, u.sex, u.status, u.del_flag, u.login_ip, u.login_date, u.pwd_update_date, u.create_by, u.create_time, u.remark,
d.dept_id, d.parent_id, d.ancestors, d.dept_name, d.order_num, d.leader, d.status as dept_status,
r.role_id, r.role_name, r.role_key, r.role_sort, r.data_scope, r.status as role_status,u.secret
from da_ky_sys_user u
@ -57,10 +57,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
left join da_ky_sys_user_role ur on u.user_id = ur.user_id
left join da_ky_sys_role r on r.role_id = ur.role_id
</sql>
<select id="selectUserList" parameterType="SysUser" resultMap="SysUserResult">
select u.user_id, u.dept_id, u.nick_name, u.user_name, u.email, u.avatar, u.phonenumber, u.sex, u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark, d.dept_name, d.leader from da_ky_sys_user u
select u.user_id, u.dept_id, u.nick_name, u.user_name, u.email, u.avatar, u.phonenumber, u.sex,
u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark, d.dept_name,
d.leader ,dksr.role_id,dksr.role_name
from da_ky_sys_user u
left join da_ky_sys_dept d on u.dept_id = d.dept_id
left join da_ky_sys_user_role dksur on u.user_id = dksur.user_id
left join da_ky_sys_role dksr on dksr.role_id = dksur.role_id
where u.del_flag = '0'
<if test="userId != null and userId != 0">
AND u.user_id = #{userId}
@ -86,7 +91,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<!-- 数据范围过滤 -->
${params.dataScope}
</select>
<select id="selectAllocatedList" parameterType="SysUser" resultMap="SysUserResult">
select distinct u.user_id, u.dept_id, u.user_name, u.nick_name, u.email, u.phonenumber, u.status, u.create_time
from da_ky_sys_user u
@ -103,7 +108,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<!-- 数据范围过滤 -->
${params.dataScope}
</select>
<select id="selectUnallocatedList" parameterType="SysUser" resultMap="SysUserResult">
select distinct u.user_id, u.dept_id, u.user_name, u.nick_name, u.email, u.phonenumber, u.status, u.create_time
from da_ky_sys_user u
@ -121,29 +126,29 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<!-- 数据范围过滤 -->
${params.dataScope}
</select>
<select id="selectUserByUserName" parameterType="String" resultMap="SysUserResult">
<include refid="selectUserVo"/>
where u.user_name = #{userName} and u.del_flag = '0'
</select>
<select id="selectUserById" parameterType="Long" resultMap="SysUserResult">
<include refid="selectUserVo"/>
where u.user_id = #{userId}
</select>
<select id="checkUserNameUnique" parameterType="String" resultMap="SysUserResult">
select user_id, user_name from da_ky_sys_user where user_name = #{userName} and del_flag = '0' limit 1
</select>
<select id="checkPhoneUnique" parameterType="String" resultMap="SysUserResult">
select user_id, phonenumber from da_ky_sys_user where phonenumber = #{phonenumber} and del_flag = '0' limit 1
</select>
<select id="checkEmailUnique" parameterType="String" resultMap="SysUserResult">
select user_id, email from da_ky_sys_user where email = #{email} and del_flag = '0' limit 1
</select>
<insert id="insertUser" parameterType="SysUser" useGeneratedKeys="true" keyProperty="userId">
insert into da_ky_sys_user(
<if test="userId != null and userId != 0">user_id,</if>
@ -159,6 +164,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="pwdUpdateDate != null">pwd_update_date,</if>
<if test="createBy != null and createBy != ''">create_by,</if>
<if test="remark != null and remark != ''">remark,</if>
<if test="secret != null and secret != ''">secret,</if>
create_time
)values(
<if test="userId != null and userId != ''">#{userId},</if>
@ -174,10 +180,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="pwdUpdateDate != null">#{pwdUpdateDate},</if>
<if test="createBy != null and createBy != ''">#{createBy},</if>
<if test="remark != null and remark != ''">#{remark},</if>
<if test="secret != null and secret != ''">#{secret},</if>
sysdate()
)
</insert>
<update id="updateUser" parameterType="SysUser">
update da_ky_sys_user
<set>
@ -197,28 +204,28 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</set>
where user_id = #{userId}
</update>
<update id="updateUserStatus" parameterType="SysUser">
update da_ky_sys_user set status = #{status} where user_id = #{userId}
</update>
<update id="updateUserAvatar" parameterType="SysUser">
update da_ky_sys_user set avatar = #{avatar} where user_id = #{userId}
</update>
<update id="resetUserPwd" parameterType="SysUser">
update da_ky_sys_user set pwd_update_date = sysdate(), password = #{password} where user_id = #{userId}
</update>
<delete id="deleteUserById" parameterType="Long">
update da_ky_sys_user set del_flag = '2' where user_id = #{userId}
</delete>
<delete id="deleteUserByIds" parameterType="Long">
update da_ky_sys_user set del_flag = '2' where user_id in
<foreach collection="array" item="userId" open="(" separator="," close=")">
#{userId}
</foreach>
</foreach>
</delete>
</mapper>
</mapper>