feat: 用户管理后台接口

This commit is contained in:
fit2cloud-chenyw 2021-02-24 15:44:26 +08:00
parent bb17350411
commit 586916a4b7
8 changed files with 248 additions and 0 deletions

View File

@ -0,0 +1,12 @@
package io.dataease.base.mapper.ext;
import io.dataease.controller.sys.request.UserGridRequest;
import io.dataease.controller.sys.response.SysUserGridResponse;
import org.apache.ibatis.annotations.Param;
import java.util.List;
public interface ExtSysUserMapper {
List<SysUserGridResponse> query(@Param("request")UserGridRequest request);
}

View File

@ -0,0 +1,29 @@
<?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="io.dataease.base.mapper.ext.ExtSysUserMapper">
<resultMap id="BaseResultMap" type="io.dataease.controller.sys.response.SysUserGridResponse" extends="io.dataease.base.mapper.SysUserMapper.BaseResultMap">
<result column="roleIds" property="role_ids"/>
<collection property="roleIds" ofType="long">
<constructor>
<arg column="role_id"/>
</constructor>
</collection>
</resultMap>
<select id="query" resultMap="BaseResultMap">
select u.*, ur.role_id
from sys_user u left join sys_users_roles ur on u.user_id = ur.user_id
<where>
<if test="request.name != null">
AND u.name like CONCAT('%', #{request.name},'%')
</if>
</where>
order by u.update_time desc
</select>
</mapper>

View File

@ -0,0 +1,50 @@
package io.dataease.controller.sys;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import io.dataease.commons.utils.PageUtils;
import io.dataease.commons.utils.Pager;
import io.dataease.controller.sys.request.SysUserCreateRequest;
import io.dataease.controller.sys.request.UserGridRequest;
import io.dataease.controller.sys.response.SysUserGridResponse;
import io.dataease.service.sys.SysUserService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.List;
@RestController
@Api(tags = "系统:用户管理")
@RequestMapping("/api/user")
public class SysUserController {
@Resource
private SysUserService sysUserService;
@ApiOperation("查询用户")
@PostMapping("/userGrid/{goPage}/{pageSize}")
public Pager<List<SysUserGridResponse>> userGrid(@PathVariable int goPage, @PathVariable int pageSize, @RequestBody UserGridRequest request) {
Page<Object> page = PageHelper.startPage(goPage, pageSize, true);
return PageUtils.setPageInfo(page, sysUserService.query(request));
}
@ApiOperation("创建用户")
@PostMapping("/create")
public void create(@RequestBody SysUserCreateRequest request){
sysUserService.save(request);
}
@ApiOperation("更新用户")
@PostMapping("/updat")
public void update(@RequestBody SysUserCreateRequest request){
sysUserService.update(request);
}
@ApiOperation("更新用户")
@PostMapping("/updat/{userId}")
public void delete(@PathVariable("userId") Long userId){
sysUserService.delete(userId);
}
}

View File

@ -0,0 +1,13 @@
package io.dataease.controller.sys.request;
import io.dataease.base.domain.SysUser;
import lombok.Data;
import java.util.List;
@Data
public class SysUserCreateRequest extends SysUser {
private List<Long> roleIds;
}

View File

@ -0,0 +1,10 @@
package io.dataease.controller.sys.request;
import lombok.Data;
import java.io.Serializable;
@Data
public class UserGridRequest implements Serializable {
private String name;
}

View File

@ -0,0 +1,12 @@
package io.dataease.controller.sys.response;
import io.dataease.base.domain.SysUser;
import lombok.Data;
import java.util.List;
@Data
public class SysUserGridResponse extends SysUser {
private List<Long> roleIds;
}

View File

@ -2,7 +2,9 @@ package io.dataease.service.sys;
import io.dataease.base.domain.SysRole;
import io.dataease.base.domain.SysUsersRolesExample;
import io.dataease.base.mapper.SysRoleMapper;
import io.dataease.base.mapper.SysUsersRolesMapper;
import io.dataease.base.mapper.ext.ExtSysRoleMapper;
import io.dataease.controller.sys.request.RoleGridRequest;
import io.dataease.controller.sys.request.RoleMenusRequest;
@ -25,6 +27,9 @@ public class SysRoleService {
@Resource
private ExtSysRoleMapper extSysRoleMapper;
@Resource
private SysUsersRolesMapper sysUsersRolesMapper;
public int add(SysRole role){
Long now = System.currentTimeMillis();
@ -40,7 +45,12 @@ public class SysRoleService {
return mapper.updateByPrimaryKey(role);
}
@Transactional
public int delete(Long roleId){
SysUsersRolesExample example = new SysUsersRolesExample();
example.createCriteria().andRoleIdEqualTo(roleId);
sysUsersRolesMapper.deleteByExample(example);//删除用户角色关联关系
extSysRoleMapper.deleteRoleMenu(roleId);//删除菜单角色关联关系
return mapper.deleteByPrimaryKey(roleId);
}

View File

@ -0,0 +1,112 @@
package io.dataease.service.sys;
import io.dataease.base.domain.SysUser;
import io.dataease.base.domain.SysUserExample;
import io.dataease.base.domain.SysUsersRolesExample;
import io.dataease.base.domain.SysUsersRolesKey;
import io.dataease.base.mapper.SysUserMapper;
import io.dataease.base.mapper.SysUsersRolesMapper;
import io.dataease.base.mapper.ext.ExtSysUserMapper;
import io.dataease.commons.utils.BeanUtils;
import io.dataease.commons.utils.CodingUtil;
import io.dataease.controller.sys.request.SysUserCreateRequest;
import io.dataease.controller.sys.request.UserGridRequest;
import io.dataease.controller.sys.response.SysUserGridResponse;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.ObjectUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.List;
import java.util.stream.Collectors;
@Service
public class SysUserService {
private final static String DEFAULT_PWD = "DataEase123..";
@Resource
private SysUserMapper sysUserMapper;
@Resource
private SysUsersRolesMapper sysUsersRolesMapper;
@Resource
private ExtSysUserMapper extSysUserMapper;
public List<SysUserGridResponse> query(UserGridRequest request){
return extSysUserMapper.query(request);
}
@Transactional
public int save(SysUserCreateRequest request){
SysUser user = BeanUtils.copyBean(new SysUser(), request);
long now = System.currentTimeMillis();
user.setCreateTime(now);
user.setUpdateTime(now);
user.setIsAdmin(false);
user.setPassword(CodingUtil.md5(DEFAULT_PWD));
int insert = sysUserMapper.insert(user);
SysUser dbUser = findOne(user);
saveUserRoles(dbUser.getUserId(), request.getRoleIds());//插入用户角色关联
return insert;
}
@Transactional
public int update(SysUserCreateRequest request){
SysUser user = BeanUtils.copyBean(new SysUser(), request);
long now = System.currentTimeMillis();
user.setUpdateTime(now);
deleteUserRoles(user.getUserId());//先删除用户角色关联
saveUserRoles(user.getUserId(), request.getRoleIds());//再插入角色关联
return sysUserMapper.updateByPrimaryKey(user);
}
/**
* 删除用户角色关联
* @param userId
* @return
*/
private int deleteUserRoles(Long userId){
SysUsersRolesExample example = new SysUsersRolesExample();
example.createCriteria().andUserIdEqualTo(userId);
return sysUsersRolesMapper.deleteByExample(example);
}
/**
* 保存用户角色关联
* @param userId
* @param roleIds
*/
private void saveUserRoles(Long userId, List<Long> roleIds){
roleIds.forEach(roleId -> {
SysUsersRolesKey sysUsersRolesKey = new SysUsersRolesKey();
sysUsersRolesKey.setUserId(userId);
sysUsersRolesKey.setRoleId(roleId);
sysUsersRolesMapper.insert(sysUsersRolesKey);
});
}
@Transactional
public int delete(Long userId){
deleteUserRoles(userId);
return sysUserMapper.deleteByPrimaryKey(userId);
}
public SysUser findOne(SysUser user){
if (ObjectUtils.isEmpty(user)) return null;
if (ObjectUtils.isNotEmpty(user.getUserId())){
return sysUserMapper.selectByPrimaryKey(user.getUserId());
}
SysUserExample example = new SysUserExample();
SysUserExample.Criteria criteria = example.createCriteria();
if (ObjectUtils.isNotEmpty(user.getUsername())){
criteria.andUsernameEqualTo(user.getUsername());
List<SysUser> sysUsers = sysUserMapper.selectByExample(example);
if (CollectionUtils.isNotEmpty(sysUsers))return sysUsers.get(0);
}
return null;
}
}