Commit e2cc387a authored by liuyang's avatar liuyang

完成用户新增功能

parent 466139d1
......@@ -4,6 +4,7 @@ public final class Constants {
public static final String PSAAWORD = "123456";
public static final Long SYS_ADMIN_ID = 1L;
public static final Integer DEFAULT_PAGE_SIZE = 10;
......
......@@ -4,14 +4,15 @@ import com.qkdata.common.base.enums.BaseResponseEnum;
public enum ResultEnum implements BaseResponseEnum {
ACCOUNT_OFF("14000", "账号已被禁止登录"),
ACCOUNT_OFF("14000", "用户名已被禁止登录"),
TOKEN_TIME_OUT("14001", "登录失效,请重新登录"),
TOKEN_ERROR("14002", "token验证失败"),
CAPTCHA_ERROR("14004", "验证码错误"),
MOBILE_ERROR("14005", "手机号不存在"),
SMS_ERROR("14007", "短信发送失败"),
ACCOUNT_OR_PWD_ERROR("14008","帐号或密码错误"),
PWD_ERROR("14009","密码错误");
PWD_ERROR("14009","密码错误"),
ACCOUNT_EXIST("14010","用户名已存在");
private String value;
......
package com.qkdata.biz.sys.controller;
import com.qkdata.biz.sys.entity.SysRolePO;
import com.qkdata.biz.sys.service.SysRoleService;
import io.swagger.annotations.Api;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@Api
@RestController
@RequestMapping("/api/sys/role")
public class SysRoleController {
@Autowired
private SysRoleService sysRoleService;
/**
* 角色列表
*/
@GetMapping("/select")
@RequiresPermissions("sys:role:select")
public List<SysRolePO> select(){
return sysRoleService.listByCondition(new SysRolePO());
}
}
package com.qkdata.biz.sys.controller;
import com.google.common.collect.Lists;
import com.qkdata.biz.sys.entity.SysUserPO;
import com.qkdata.biz.sys.model.PasswordModel;
import com.qkdata.biz.sys.model.QueryUserModel;
import com.qkdata.biz.sys.model.SysUserDTO;
import com.qkdata.biz.sys.model.SysUserModel;
import com.qkdata.biz.sys.service.SysUserService;
import com.qkdata.common.base.model.PageDTO;
import com.qkdata.common.constants.AddGroup;
import com.qkdata.common.constants.UpdateGroup;
import com.qkdata.common.util.UserContext;
import io.swagger.annotations.Api;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.apache.shiro.crypto.hash.Sha256Hash;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import java.util.List;
@Api
@RestController
......@@ -25,10 +28,9 @@ public class SysUserController {
private SysUserService sysUserService;
@GetMapping("/list")
// @RequiresPermissions("sys:user:list")
public List<SysUserPO> list(){
// SysUserPO user = UserContext.getUser();
return Lists.newArrayList();
@RequiresPermissions("sys:user:list")
public PageDTO<SysUserDTO> list(QueryUserModel queryUserModel){
return sysUserService.queryPageList(queryUserModel);
}
@GetMapping("/info")
......@@ -38,11 +40,33 @@ public class SysUserController {
BeanUtils.copyProperties(userPO,dto);
return dto;
}
@GetMapping("/info/{id}")
@RequiresPermissions("sys:user:info")
public SysUserDTO infoById(@PathVariable Long id){
SysUserPO sysUserPO = sysUserService.getById(id);
SysUserDTO dto = new SysUserDTO();
BeanUtils.copyProperties(sysUserPO,dto);
dto.setRoleIdList(sysUserService.queryRoleIdList(id));
return dto;
}
@PostMapping("/save")
@RequiresPermissions("sys:user:save")
@ResponseStatus(HttpStatus.NO_CONTENT)
public void save(@RequestBody @Validated(AddGroup.class) SysUserModel sysUserModel){
sysUserService.saveUser(sysUserModel);
}
@PostMapping("/update")
@RequiresPermissions("sys:user:update")
@ResponseStatus(HttpStatus.NO_CONTENT)
public void update(@RequestBody @Validated(UpdateGroup.class) SysUserModel sysUserModel){
}
/**
* 修改登录用户密码
*/
@PostMapping("/password")
@ResponseStatus(HttpStatus.NO_CONTENT)
public void password(@RequestBody @Valid PasswordModel form){
//更新密码
sysUserService.updatePassword(UserContext.getUser(), form.getPassword(), form.getNewPassword());
......
package com.qkdata.biz.sys.model;
import com.qkdata.biz.base.constants.Constants;
import lombok.Data;
@Data
public class QueryUserModel {
private Integer pageIndex = 1;
private Integer pageSize = Constants.DEFAULT_PAGE_SIZE;
private String username;
}
......@@ -11,5 +11,5 @@ import java.util.Set;
@AllArgsConstructor
public class SysNavDTO {
private List<SysMenuPO> menuList;
private Set<String> permistions;
private Set<String> permissions;
}
package com.qkdata.biz.sys.model;
import com.qkdata.biz.base.enums.AccountStatusEnum;
import lombok.Data;
import java.util.List;
@Data
public class SysUserDTO {
private Long id;
private String username;
private String email;
private String mobile;
private AccountStatusEnum status;
private List<Long> roleIdList;
}
package com.qkdata.biz.sys.model;
import com.qkdata.biz.base.enums.AccountStatusEnum;
import com.qkdata.common.constants.AddGroup;
import com.qkdata.common.constants.UpdateGroup;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.util.List;
@Data
public class SysUserModel {
private Long id;
@NotBlank(message = "用户名不能为空",groups = {AddGroup.class, UpdateGroup.class})
private String username;
@NotBlank(message = "密码不能为空",groups = AddGroup.class)
private String password;
private String email;
private String mobile;
private AccountStatusEnum status;
private List<Long> roleIdList;
}
package com.qkdata.biz.sys.repository;
import com.qkdata.biz.sys.model.QueryUserModel;
import com.qkdata.biz.sys.entity.SysUserPO;
import com.qkdata.biz.sys.model.SysUserDTO;
import tk.mybatis.mapper.common.Mapper;
import java.util.List;
......@@ -9,4 +11,7 @@ public interface SysUserMapper extends Mapper<SysUserPO> {
List<String> queryAllPerms(Long userId);
List<Long> queryAllMenuId(Long userId);
List<SysUserDTO> selectByCondition(QueryUserModel queryUserModel);
}
......@@ -3,5 +3,10 @@ package com.qkdata.biz.sys.repository;
import com.qkdata.biz.sys.entity.SysUserRolePO;
import tk.mybatis.mapper.common.Mapper;
import java.util.List;
public interface SysUserRoleMapper extends Mapper<SysUserRolePO> {
List<Long> queryRoleIdList(Long userId);
void deleteByUserId(Long userId);
}
......@@ -24,7 +24,6 @@ import org.springframework.util.StringUtils;
import java.util.*;
@Service
@Transactional(readOnly = true)
public class ShiroService {
@Autowired
private SysUserMapper sysUserMapper;
......
package com.qkdata.biz.sys.service;
import com.qkdata.biz.sys.entity.SysRolePO;
import com.qkdata.biz.sys.repository.SysRoleMapper;
import com.qkdata.common.base.service.impl.BaseServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import tk.mybatis.mapper.common.Mapper;
@Service
public class SysRoleService extends BaseServiceImpl<SysRolePO,Long> {
@Autowired
private SysRoleMapper sysRoleMapper;
@Override
protected Mapper<SysRolePO> getMapper() {
return sysRoleMapper;
}
}
package com.qkdata.biz.sys.service;
import com.qkdata.biz.sys.entity.SysUserRolePO;
import com.qkdata.biz.sys.repository.SysUserRoleMapper;
import com.qkdata.common.base.service.impl.BaseServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import tk.mybatis.mapper.common.Mapper;
import java.util.List;
@Service
public class SysUserRoleService extends BaseServiceImpl<SysUserRolePO,Long> {
@Autowired
private SysUserRoleMapper sysUserRoleMapper;
@Override
protected Mapper<SysUserRolePO> getMapper() {
return sysUserRoleMapper;
}
public List<Long> queryRoleIdList(Long userId) {
return sysUserRoleMapper.queryRoleIdList(userId);
}
public void saveOrUpdate(Long userId, List<Long> roleIdList) {
if (!CollectionUtils.isEmpty(roleIdList)){
//先删除用户与角色关系
sysUserRoleMapper.deleteByUserId(userId);
//保存用户角色关系
for (Long roleId : roleIdList){
SysUserRolePO po = new SysUserRolePO();
po.setUserId(userId);
po.setRoleId(roleId);
sysUserRoleMapper.insert(po);
}
}
}
}
package com.qkdata.biz.sys.service;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.qkdata.biz.base.constants.ResultEnum;
import com.qkdata.biz.sys.entity.SysUserPO;
import com.qkdata.biz.sys.model.QueryUserModel;
import com.qkdata.biz.sys.model.SysUserDTO;
import com.qkdata.biz.sys.model.SysUserModel;
import com.qkdata.biz.sys.repository.SysUserMapper;
import com.qkdata.biz.sys.repository.SysUserRoleMapper;
import com.qkdata.common.base.exception.BusinessException;
import com.qkdata.common.base.model.PageDTO;
import com.qkdata.common.base.service.impl.BaseServiceImpl;
import com.qkdata.common.util.UserContext;
import org.apache.commons.lang3.RandomStringUtils;
import org.apache.shiro.crypto.hash.Sha256Hash;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.annotation.CacheEvict;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import tk.mybatis.mapper.common.Mapper;
import tk.mybatis.mapper.entity.Example;
import tk.mybatis.mapper.util.Sqls;
import java.time.LocalDateTime;
import java.util.List;
@Service
@Transactional(readOnly = true)
public class SysUserService extends BaseServiceImpl<SysUserPO,Long> {
@Autowired
private SysUserMapper sysUserMapper;
@Autowired
private SysUserRoleService sysUserRoleService;
@Override
protected Mapper<SysUserPO> getMapper() {
......@@ -25,7 +40,6 @@ public class SysUserService extends BaseServiceImpl<SysUserPO,Long> {
}
@CacheEvict(cacheNames = "user_username",key = "#user.username")
@Transactional(readOnly = false)
public void updatePassword(SysUserPO user, String password, String newPassword) {
//sha256加密
String pwd = new Sha256Hash(password, UserContext.getUser().getSalt()).toHex();
......@@ -37,4 +51,36 @@ public class SysUserService extends BaseServiceImpl<SysUserPO,Long> {
user.setPassword(newPwd);
updateById(user);
}
public PageDTO<SysUserDTO> queryPageList(QueryUserModel queryUserModel) {
PageHelper.startPage(queryUserModel.getPageIndex(),queryUserModel.getPageSize());
List<SysUserDTO> userList = sysUserMapper.selectByCondition(queryUserModel);
return new PageDTO<SysUserDTO>(new PageInfo<SysUserDTO>(userList));
}
public List<Long> queryRoleIdList(Long userId) {
return sysUserRoleService.queryRoleIdList(userId);
}
public SysUserPO selectByUsername(String username){
Example query = Example.builder(SysUserPO.class)
.where(Sqls.custom().andEqualTo("username",username)).build();
return sysUserMapper.selectOneByExample(query);
}
@Transactional
public void saveUser(SysUserModel sysUserModel) {
SysUserPO po = selectByUsername(sysUserModel.getUsername());
if (po != null){
throw new BusinessException(ResultEnum.ACCOUNT_EXIST);
}
po = new SysUserPO();
BeanUtils.copyProperties(sysUserModel,po);
po.setCreateAt(LocalDateTime.now());
po.setSalt(RandomStringUtils.randomAlphanumeric(20));
po.setPassword(new Sha256Hash(sysUserModel.getPassword(), po.getSalt()).toHex());
save(po);
sysUserRoleService.saveOrUpdate(po.getId(),sysUserModel.getRoleIdList());
}
}
package com.qkdata.common.constants;
public interface AddGroup {
}
package com.qkdata.common.constants;
public interface UpdateGroup {
}
......@@ -15,6 +15,14 @@
LEFT JOIN sys_role_menu rm on ur.role_id = rm.role_id
where ur.user_id = #{userId}
</select>
<select id="selectByCondition" resultType="com.qkdata.biz.sys.model.SysUserDTO" parameterType="com.qkdata.biz.sys.model.QueryUserModel">
select id,username,email,mobile
from sys_user
where 1=1
<if test="username != null and username != ''">
and username like concat('%',#{username},'%')
</if>
order by create_at desc
</select>
</mapper>
\ No newline at end of file
<?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.qkdata.biz.sys.repository.SysUserRoleMapper">
<delete id="deleteBatch">
delete from sys_user_role where role_id in
<foreach item="roleId" collection="array" open="(" separator="," close=")">
#{roleId}
</foreach>
</delete>
<delete id="deleteByUserId">
delete from sys_user_role where user_id = #{userId}
</delete>
<select id="queryRoleIdList" resultType="long">
select role_id from sys_user_role where user_id = #{userId}
</select>
</mapper>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment