user配置
This commit is contained in:
@@ -158,4 +158,6 @@ public interface ISysMenuService {
|
||||
* @return 结果
|
||||
*/
|
||||
boolean checkMenuNameUnique(SysMenu menu);
|
||||
|
||||
List<RouterVo> getRouter(Long userId);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,27 @@
|
||||
package com.xiang.xs.service.biz;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.xiang.xs.api.pojo.request.LoginRequest;
|
||||
import com.xiang.xs.api.pojo.request.RegisterRequest;
|
||||
import com.xiang.xs.api.pojo.request.user.UserAddRequest;
|
||||
import com.xiang.xs.api.pojo.request.user.UserQueryRequest;
|
||||
import com.xiang.xs.api.pojo.request.user.UserUpdateRequest;
|
||||
import com.xiang.xs.api.pojo.resp.LoginResp;
|
||||
import com.xiang.xs.api.pojo.resp.RegisterResp;
|
||||
import com.xiang.xs.api.pojo.resp.UserResp;
|
||||
import com.xiang.xs.service.entity.vo.UserDTO;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public interface XUserService {
|
||||
|
||||
RegisterResp userRegister(RegisterRequest request);
|
||||
Page<UserResp> getUserList(UserQueryRequest request);
|
||||
UserResp getUserInfo(Long id);
|
||||
Boolean addUser(UserAddRequest request);
|
||||
Boolean updateUser(UserUpdateRequest request);
|
||||
Boolean delUser(List<Long> ids);
|
||||
UserDTO getUserDetail(String username);
|
||||
Boolean updateStatus(Long id, Integer status);
|
||||
Boolean resetPwd(Long userId, String password);
|
||||
}
|
||||
@@ -1,8 +1,12 @@
|
||||
package com.xiang.xs.service.biz.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.google.common.collect.Lists;
|
||||
import com.xiang.xs.service.biz.ISysMenuService;
|
||||
import com.xiang.xs.service.contants.Constants;
|
||||
import com.xiang.xs.service.contants.UserConstants;
|
||||
import com.xiang.xs.service.converter.XMenuConverter;
|
||||
import com.xiang.xs.service.entity.SysMenu;
|
||||
import com.xiang.xs.service.entity.SysRole;
|
||||
import com.xiang.xs.service.entity.SysUser;
|
||||
@@ -46,6 +50,9 @@ public class SysMenuServiceImpl implements ISysMenuService {
|
||||
@Autowired
|
||||
private SysRoleMenuMapper roleMenuMapper;
|
||||
|
||||
@Autowired
|
||||
private XMenuConverter menuConverter;
|
||||
|
||||
/**
|
||||
* 根据用户查询系统菜单列表
|
||||
*
|
||||
@@ -328,6 +335,22 @@ public class SysMenuServiceImpl implements ISysMenuService {
|
||||
return UserConstants.UNIQUE;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<RouterVo> getRouter(Long userId) {
|
||||
List<SysMenu> xMenuDOS = Lists.newArrayList();
|
||||
// 超级管理员 admin
|
||||
if (Objects.equals(userId, 1L)) {
|
||||
LambdaQueryWrapper<SysMenu> lambdaQueryWrapper = Wrappers.lambdaQuery();
|
||||
lambdaQueryWrapper.eq(SysMenu::getStatus, 0);
|
||||
lambdaQueryWrapper.in(SysMenu::getMenuType, 'M', 'C');
|
||||
lambdaQueryWrapper.orderByAsc(SysMenu::getParentId, SysMenu::getOrderNum);
|
||||
xMenuDOS = menuMapper.selectList(lambdaQueryWrapper);
|
||||
} else {
|
||||
xMenuDOS = menuMapper.selectMenuTreeByUserId(userId);
|
||||
}
|
||||
return buildMenus(getChildPerms(xMenuDOS, 0));
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取路由名称
|
||||
*
|
||||
|
||||
@@ -0,0 +1,191 @@
|
||||
package com.xiang.xs.service.biz.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.google.common.collect.Sets;
|
||||
import com.xiang.xmc.service.cache.service.IRedisService;
|
||||
import com.xiang.xs.api.code.Code01UserErrorCode;
|
||||
import com.xiang.xs.api.code.Code02RoleErrorCode;
|
||||
import com.xiang.xs.api.code.Code03DeptErrorCode;
|
||||
import com.xiang.xs.api.pojo.request.RegisterRequest;
|
||||
import com.xiang.xs.api.pojo.request.user.UserAddRequest;
|
||||
import com.xiang.xs.api.pojo.request.user.UserQueryRequest;
|
||||
import com.xiang.xs.api.pojo.request.user.UserUpdateRequest;
|
||||
import com.xiang.xs.api.pojo.resp.RegisterResp;
|
||||
import com.xiang.xs.api.pojo.resp.UserResp;
|
||||
import com.xiang.xs.service.biz.XUserService;
|
||||
import com.xiang.xs.service.converter.XUserConvert;
|
||||
import com.xiang.xs.service.entity.SysRole;
|
||||
import com.xiang.xs.service.entity.SysUserRole;
|
||||
import com.xiang.xs.service.entity.XUser;
|
||||
import com.xiang.xs.service.entity.vo.UserDTO;
|
||||
import com.xiang.xs.service.enums.UserStatusEnum;
|
||||
import com.xiang.xs.service.repository.mapper.SysDeptMapper;
|
||||
import com.xiang.xs.service.repository.mapper.SysRoleMapper;
|
||||
import com.xiang.xs.service.repository.mapper.SysUserRoleMapper;
|
||||
import com.xiang.xs.service.repository.mapper.XUserMapper;
|
||||
import com.xiang.xservice.basic.enums.DelStatusEnum;
|
||||
import com.xiang.xservice.basic.exception.BusinessException;
|
||||
import com.xiang.xservice.basic.utils.PrimaryKeyUtils;
|
||||
import com.xiang.xservice.basic.utils.RandomCodeUtils;
|
||||
import com.xiang.xservice.basic.utils.SnowflakeIdGenerator;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.dao.DuplicateKeyException;
|
||||
import org.springframework.security.crypto.password.PasswordEncoder;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
@Slf4j
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
public class XUserServiceImpl implements XUserService {
|
||||
|
||||
private final XUserMapper userMapper;
|
||||
private final XUserConvert userConvert;
|
||||
private final SysRoleMapper roleMapper;
|
||||
private final SysUserRoleMapper userRoleMapper;
|
||||
private final PasswordEncoder passwordEncoder;
|
||||
|
||||
@Override
|
||||
public RegisterResp userRegister(RegisterRequest request) {
|
||||
// todo 手机号验证码校验
|
||||
XUser user = userMapper.selectByUsername(request.getUsername());
|
||||
if (Objects.nonNull(user)) {
|
||||
throw new BusinessException(Code01UserErrorCode.USER_EXISTS);
|
||||
}
|
||||
user = new XUser();
|
||||
user.setName(request.getName());
|
||||
user.setUsername(request.getUsername());
|
||||
user.setPassword(passwordEncoder.encode(request.getPassword()));
|
||||
user.setEmail(request.getEmail());
|
||||
user.setPhone(request.getPhone());
|
||||
user.setAvatar(request.getAvatar());
|
||||
user.setStatus(UserStatusEnum.USING.getCode());
|
||||
user.setDelFlag(DelStatusEnum.NOT_DELETED.getCode());
|
||||
user.setCreateBy("admin");
|
||||
user.setCreateTime(LocalDateTime.now());
|
||||
user.setUpdateBy("admin");
|
||||
user.setUpdateTime(LocalDateTime.now());
|
||||
user.setUserType(2);
|
||||
user.setTenantId(8000000000000000L + SnowflakeIdGenerator.of16(RandomCodeUtils.getRandomNumber(1)).nextId());
|
||||
|
||||
int i = 0;
|
||||
try {
|
||||
i = userMapper.insert(user);
|
||||
} catch (DuplicateKeyException e) {
|
||||
throw new BusinessException(Code01UserErrorCode.USER_EXISTS);
|
||||
}
|
||||
if (i > 0) {
|
||||
RegisterResp registerResp = new RegisterResp();
|
||||
registerResp.setName(user.getName());
|
||||
registerResp.setUsername(user.getUsername());
|
||||
registerResp.setEmail(user.getEmail());
|
||||
registerResp.setPhone(user.getPhone());
|
||||
return registerResp;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Page<UserResp> getUserList(UserQueryRequest request) {
|
||||
Page<XUser> page = new Page<>(request.getCurrent(), request.getPageSize());
|
||||
LambdaQueryWrapper<XUser> lambdaQueryWrapper = Wrappers.lambdaQuery();
|
||||
lambdaQueryWrapper.eq(XUser::getDelFlag, DelStatusEnum.NOT_DELETED.getCode());
|
||||
if (StringUtils.isNotBlank(request.getName())) {
|
||||
lambdaQueryWrapper.like(XUser::getName, request.getName());
|
||||
}
|
||||
if (StringUtils.isNotBlank(request.getUsername())) {
|
||||
lambdaQueryWrapper.eq(XUser::getUsername, request.getUsername());
|
||||
}
|
||||
if (StringUtils.isNotBlank(request.getEmail())) {
|
||||
lambdaQueryWrapper.like(XUser::getEmail, request.getEmail());
|
||||
}
|
||||
if (StringUtils.isNotBlank(request.getPhone())) {
|
||||
lambdaQueryWrapper.like(XUser::getPhone, request.getPhone());
|
||||
}
|
||||
if (Objects.nonNull(request.getStatus())) {
|
||||
lambdaQueryWrapper.eq(XUser::getStatus, request.getStatus());
|
||||
}
|
||||
lambdaQueryWrapper.orderByDesc(XUser::getCreateTime);
|
||||
return userConvert.toPage(userMapper.selectPage(page, lambdaQueryWrapper));
|
||||
}
|
||||
|
||||
@Override
|
||||
public UserResp getUserInfo(Long id) {
|
||||
XUser user = userMapper.getUserById(id);
|
||||
return userConvert.toResp(user);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean addUser(UserAddRequest request) {
|
||||
XUser user = userConvert.toDO(request);
|
||||
user.setTenantId(PrimaryKeyUtils.snowflakeId());
|
||||
user.setCreateBy(request.getOperator());
|
||||
user.setCreateTime(request.getDateTime());
|
||||
user.setUpdateBy(request.getOperator());
|
||||
user.setUpdateTime(request.getDateTime());
|
||||
return userMapper.insert(user) > 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean updateUser(UserUpdateRequest request) {
|
||||
XUser user = userConvert.toDO(request);
|
||||
user.setCreateBy(request.getOperator());
|
||||
user.setCreateTime(request.getDateTime());
|
||||
user.setUpdateBy(request.getOperator());
|
||||
user.setUpdateTime(request.getDateTime());
|
||||
return userMapper.updateById(user) > 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean delUser(List<Long> ids) {
|
||||
return userMapper.deleteBatch(ids, LocalDateTime.now(), "System") > 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public UserDTO getUserDetail(String username) {
|
||||
UserDTO dto = new UserDTO();
|
||||
XUser user = userMapper.selectByUsername(username);
|
||||
if (Objects.isNull(user)) {
|
||||
throw new BusinessException(Code01UserErrorCode.USER_NOT_EXISTS);
|
||||
}
|
||||
dto.setUser(userConvert.toResp(user));
|
||||
List<SysUserRole> userRoles = userRoleMapper.getByUserId(user.getId());
|
||||
List<Long> roleIds = userRoles.stream().map(SysUserRole::getRoleId).toList();
|
||||
List<SysRole> roles = roleMapper.getRoleByIds(roleIds);
|
||||
if (CollectionUtils.isEmpty(roles)) {
|
||||
throw new BusinessException(Code02RoleErrorCode.ROLE_NOT_EXISTS);
|
||||
}
|
||||
dto.setRoles(roles);
|
||||
dto.setPermissions(Sets.newHashSet("*:*:*"));
|
||||
return dto;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean updateStatus(Long id, Integer status) {
|
||||
XUser user = userMapper.getUserById(id);
|
||||
if (Objects.isNull(user)) {
|
||||
throw new BusinessException(Code01UserErrorCode.USER_NOT_EXISTS);
|
||||
}
|
||||
user.setStatus(status);
|
||||
return userMapper.updateById(user) > 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean resetPwd(Long userId, String password) {
|
||||
XUser user = userMapper.getUserById(userId);
|
||||
if (Objects.isNull(user)) {
|
||||
throw new BusinessException(Code01UserErrorCode.USER_NOT_EXISTS);
|
||||
}
|
||||
String encodePwd = passwordEncoder.encode(password);
|
||||
user.setPassword(encodePwd);
|
||||
return userMapper.updateById(user) > 0;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
package com.xiang.xs.service.config;
|
||||
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
|
||||
import org.springframework.security.crypto.password.PasswordEncoder;
|
||||
|
||||
@Configuration
|
||||
public class PasswordConfig {
|
||||
@Bean
|
||||
public PasswordEncoder passwordEncoder() {
|
||||
return new BCryptPasswordEncoder();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
package com.xiang.xs.service.converter;
|
||||
|
||||
import com.xiang.xs.api.pojo.resp.MenuVO;
|
||||
import com.xiang.xs.service.entity.SysMenu;
|
||||
import org.mapstruct.Mapper;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @Author: xiang
|
||||
* @Date: 2026-03-20 15:39
|
||||
*/
|
||||
@Mapper(componentModel = "spring")
|
||||
public interface XMenuConverter {
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
package com.xiang.xs.service.converter;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.xiang.xs.api.pojo.request.user.UserAddRequest;
|
||||
import com.xiang.xs.api.pojo.request.user.UserQueryRequest;
|
||||
import com.xiang.xs.api.pojo.request.user.UserUpdateRequest;
|
||||
import com.xiang.xs.api.pojo.resp.UserResp;
|
||||
import com.xiang.xs.service.entity.XUser;
|
||||
import org.mapstruct.Mapper;
|
||||
import org.mapstruct.factory.Mappers;
|
||||
|
||||
@Mapper(componentModel = "spring")
|
||||
public interface XUserConvert {
|
||||
XUserConvert INSTANCE = Mappers.getMapper(XUserConvert.class);
|
||||
|
||||
XUser toDO (UserQueryRequest request);
|
||||
XUser toDO (UserAddRequest request);
|
||||
XUser toDO (UserUpdateRequest request);
|
||||
|
||||
UserResp toResp(XUser user);
|
||||
|
||||
Page<UserResp> toPage(Page<XUser> page);
|
||||
}
|
||||
@@ -1,5 +1,6 @@
|
||||
package com.xiang.xs.service.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
@@ -15,6 +16,7 @@ import java.util.List;
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@TableName("sys_menu")
|
||||
public class SysMenu extends BaseEntity {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
|
||||
112
xs-service/src/main/java/com/xiang/xs/service/entity/XUser.java
Normal file
112
xs-service/src/main/java/com/xiang/xs/service/entity/XUser.java
Normal file
@@ -0,0 +1,112 @@
|
||||
package com.xiang.xs.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 XUser implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 主键id
|
||||
*/
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 租户id
|
||||
*/
|
||||
private Long tenantId;
|
||||
|
||||
/**
|
||||
* 用户名(昵称)
|
||||
*/
|
||||
private String name;
|
||||
|
||||
/**
|
||||
* 账号
|
||||
*/
|
||||
private String username;
|
||||
|
||||
/**
|
||||
* 密码
|
||||
*/
|
||||
private String password;
|
||||
|
||||
/**
|
||||
* 邮箱
|
||||
*/
|
||||
private String email;
|
||||
|
||||
/**
|
||||
* 手机号
|
||||
*/
|
||||
private String phone;
|
||||
|
||||
/**
|
||||
* 头像
|
||||
*/
|
||||
private String avatar;
|
||||
|
||||
/**
|
||||
* 最后登陆ip
|
||||
*/
|
||||
private String loginIp;
|
||||
|
||||
/**
|
||||
* 最后登陆时间
|
||||
*/
|
||||
private LocalDateTime loginDate;
|
||||
|
||||
/**
|
||||
* 状态(0:禁用, 1:启用)
|
||||
*/
|
||||
private Integer status;
|
||||
|
||||
/**
|
||||
* 删除标识(0:未删除 1:已删除)
|
||||
*/
|
||||
private Integer delFlag;
|
||||
|
||||
/**
|
||||
* 创建人
|
||||
*/
|
||||
private String createBy;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
private LocalDateTime createTime;
|
||||
|
||||
/**
|
||||
* 修改人
|
||||
*/
|
||||
private String updateBy;
|
||||
|
||||
/**
|
||||
* 修改时间
|
||||
*/
|
||||
private LocalDateTime updateTime;
|
||||
|
||||
/**
|
||||
* token
|
||||
*/
|
||||
private String token;
|
||||
/**
|
||||
* 刷新token
|
||||
*/
|
||||
private String refreshToken;
|
||||
/**
|
||||
* 1:后台用户、2:中台用户、3:前台用户
|
||||
*/
|
||||
private Integer userType;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
package com.xiang.xs.service.entity.vo;
|
||||
|
||||
import com.xiang.xs.api.pojo.resp.UserResp;
|
||||
import com.xiang.xs.service.entity.SysDept;
|
||||
import com.xiang.xs.service.entity.SysRole;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class UserDTO {
|
||||
|
||||
private List<SysRole> roles;
|
||||
private UserResp user;
|
||||
private SysDept dept;
|
||||
// private List<PermissionDTO> permissionRoles;
|
||||
private Set<String> permissions;
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
package com.xiang.xs.service.enums;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
|
||||
@Getter
|
||||
@AllArgsConstructor
|
||||
public enum UserStatusEnum {
|
||||
|
||||
DISABLED(0, "禁用"),
|
||||
USING(1, "启用"),
|
||||
;
|
||||
|
||||
private final Integer code;
|
||||
private final String msg;
|
||||
|
||||
}
|
||||
@@ -1,5 +1,6 @@
|
||||
package com.xiang.xs.service.repository.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.xiang.xs.service.entity.SysMenu;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
@@ -14,7 +15,7 @@ import java.util.List;
|
||||
*/
|
||||
@Mapper
|
||||
@Repository
|
||||
public interface SysMenuMapper {
|
||||
public interface SysMenuMapper extends BaseMapper<SysMenu> {
|
||||
/**
|
||||
* 查询系统菜单列表
|
||||
*
|
||||
|
||||
@@ -2,6 +2,7 @@ package com.xiang.xs.service.repository.mapper;
|
||||
|
||||
import com.xiang.xs.service.entity.SysRole;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
import java.util.List;
|
||||
@@ -119,4 +120,7 @@ public interface SysRoleMapper {
|
||||
* @return 结果
|
||||
*/
|
||||
int deleteRoleByIds(Long[] roleIds);
|
||||
|
||||
|
||||
List<SysRole> getRoleByIds(@Param("list") List<Long> roleIds);
|
||||
}
|
||||
|
||||
@@ -69,4 +69,7 @@ public interface SysUserRoleMapper {
|
||||
* @return 结果
|
||||
*/
|
||||
int deleteUserRoleInfos(@Param("roleId") Long roleId, @Param("userIds") Long[] userIds);
|
||||
|
||||
|
||||
List<SysUserRole> getByUserId(@Param("userId") Long userId);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,47 @@
|
||||
package com.xiang.xs.service.repository.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.xiang.xs.service.entity.XUser;
|
||||
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;
|
||||
|
||||
@Repository
|
||||
@Mapper
|
||||
public interface XUserMapper extends BaseMapper<XUser> {
|
||||
|
||||
/**
|
||||
* 根据用户名查询用户
|
||||
* @param username
|
||||
* @return
|
||||
*/
|
||||
XUser selectByUsername(String username);
|
||||
|
||||
/**
|
||||
* 查询用户列表
|
||||
* @param user
|
||||
* @return
|
||||
*/
|
||||
Page<XUser> getUserList(XUser user);
|
||||
|
||||
/**
|
||||
* 查询用户详情
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
XUser getUserById(Long id);
|
||||
|
||||
|
||||
/**
|
||||
* 批量删除
|
||||
* @param ids
|
||||
* @param time
|
||||
* @param operator
|
||||
* @return
|
||||
*/
|
||||
int deleteBatch(@Param("ids") List<Long> ids, @Param("time") LocalDateTime time, @Param("operator") String operator);
|
||||
}
|
||||
@@ -87,8 +87,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
<include refid="selectRoleVo"/>
|
||||
where r.role_key=#{roleKey} and r.del_flag = '0' limit 1
|
||||
</select>
|
||||
|
||||
<insert id="insertRole" parameterType="com.xiang.xs.service.entity.SysRole" useGeneratedKeys="true" keyProperty="roleId">
|
||||
<select id="getRoleByIds" resultType="com.xiang.xs.service.entity.SysRole">
|
||||
select * from sys_role where id in
|
||||
<foreach collection="list" item="id" open="(" close=")" separator=",">
|
||||
#{id}
|
||||
</foreach>
|
||||
</select>
|
||||
|
||||
<insert id="insertRole" parameterType="com.xiang.xs.service.entity.SysRole" useGeneratedKeys="true" keyProperty="roleId">
|
||||
insert into sys_role(
|
||||
<if test="roleId != null and roleId != 0">role_id,</if>
|
||||
<if test="roleName != null and roleName != ''">role_name,</if>
|
||||
|
||||
@@ -16,8 +16,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
<select id="countUserRoleByRoleId" resultType="Integer">
|
||||
select count(1) from sys_user_role where role_id=#{roleId}
|
||||
</select>
|
||||
|
||||
<delete id="deleteUserRole" parameterType="Long">
|
||||
<select id="getByUserId" resultType="com.xiang.xs.service.entity.SysUserRole">
|
||||
select * from sys_user_role where user_id = #{userId}
|
||||
</select>
|
||||
|
||||
<delete id="deleteUserRole" parameterType="Long">
|
||||
delete from sys_user_role where user_id in
|
||||
<foreach collection="array" item="userId" open="(" separator="," close=")">
|
||||
#{userId}
|
||||
|
||||
115
xs-service/src/main/resources/mapper/XUserMapper.xml
Normal file
115
xs-service/src/main/resources/mapper/XUserMapper.xml
Normal file
@@ -0,0 +1,115 @@
|
||||
<?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.xs.service.repository.mapper.XUserMapper">
|
||||
|
||||
<resultMap id="BaseResultMap" type="com.xiang.xs.service.entity.XUser" >
|
||||
<result column="id" property="id" />
|
||||
<result column="name" property="name" />
|
||||
<result column="username" property="username" />
|
||||
<result column="password" property="password" />
|
||||
<result column="email" property="email" />
|
||||
<result column="phone" property="phone" />
|
||||
<result column="avatar" property="avatar" />
|
||||
<result column="login_ip" property="loginIp" />
|
||||
<result column="login_date" property="loginDate" />
|
||||
<result column="status" property="status"/>
|
||||
<result column="del_flag" property="delFlag" />
|
||||
<result column="create_by" property="createBy" />
|
||||
<result column="create_time" property="createTime" />
|
||||
<result column="update_by" property="updateBy" />
|
||||
<result column="update_time" property="updateTime" />
|
||||
<result column="tenant_id" property="tenantId"/>
|
||||
<result column="token" property="token"/>
|
||||
<result column="refresh_token" property="refreshToken"/>
|
||||
</resultMap>
|
||||
|
||||
<sql id="Base_Column_List">
|
||||
id,
|
||||
name,
|
||||
username,
|
||||
password,
|
||||
email,
|
||||
phone,
|
||||
avatar,
|
||||
login_ip,
|
||||
login_date,
|
||||
status,
|
||||
del_flag,
|
||||
create_by,
|
||||
create_time,
|
||||
update_by,
|
||||
update_time,
|
||||
tenant_id,
|
||||
token,
|
||||
refresh_token
|
||||
</sql>
|
||||
|
||||
<update id="del" >
|
||||
update x_user set del_flag = 1 where id = #{id}
|
||||
</update>
|
||||
|
||||
<update id="deleteBatch">
|
||||
update x_user set del_flag = 1, update_time = #{time}, update_by = #{operator} where id in
|
||||
<foreach collection="ids" item="id" open="(" close=")" separator=",">
|
||||
#{id}
|
||||
</foreach>
|
||||
</update>
|
||||
|
||||
<select id="selectByUsername" resultMap="BaseResultMap">
|
||||
select <include refid="Base_Column_List"/>
|
||||
from x_user
|
||||
where username = #{username} and del_flag = 0
|
||||
</select>
|
||||
|
||||
<select id="getUserList" resultMap="BaseResultMap">
|
||||
select <include refid="Base_Column_List"/>
|
||||
from x_user
|
||||
<trim prefix="AND">
|
||||
<where>
|
||||
<if test="name != null and name != ''">
|
||||
AND name LIKE CONCAT('%', #{name}, '%')
|
||||
</if>
|
||||
<if test="username != null and username != ''">
|
||||
AND username = #{username}
|
||||
</if>
|
||||
<if test="email != null and email != ''">
|
||||
AND email = #{email}
|
||||
</if>
|
||||
<if test="phone != null and phone != ''">
|
||||
AND phone = #{phone}
|
||||
</if>
|
||||
<if test="status != null">
|
||||
AND status = #{status}
|
||||
</if>
|
||||
<if test="delFlag != null">
|
||||
AND del_flag = #{delFlag}
|
||||
</if>
|
||||
<if test="loginIp != null and loginIp != ''">
|
||||
AND login_ip = #{loginIp}
|
||||
</if>
|
||||
<if test="loginDate != null">
|
||||
AND login_date = #{loginDate}
|
||||
</if>
|
||||
<if test="createBy != null and createBy != ''">
|
||||
AND create_by = #{createBy}
|
||||
</if>
|
||||
<if test="updateBy != null and updateBy != ''">
|
||||
AND update_by = #{updateBy}
|
||||
</if>
|
||||
<if test="createTime != null">
|
||||
AND create_time >= #{createTime}
|
||||
</if>
|
||||
<if test="updateTime != null">
|
||||
AND update_time <= #{updateTime}
|
||||
</if>
|
||||
</where>
|
||||
</trim>
|
||||
</select>
|
||||
<select id="getUserById" resultMap="BaseResultMap">
|
||||
select <include refid="Base_Column_List"/>
|
||||
from x_user
|
||||
where id = #{id}
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
Reference in New Issue
Block a user