diff --git a/backend/src/main/java/io/dataease/base/mapper/ext/ExtSysUserMapper.java b/backend/src/main/java/io/dataease/base/mapper/ext/ExtSysUserMapper.java new file mode 100644 index 0000000000..7fd6fc89c2 --- /dev/null +++ b/backend/src/main/java/io/dataease/base/mapper/ext/ExtSysUserMapper.java @@ -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 query(@Param("request")UserGridRequest request); +} diff --git a/backend/src/main/java/io/dataease/base/mapper/ext/ExtSysUserMapper.xml b/backend/src/main/java/io/dataease/base/mapper/ext/ExtSysUserMapper.xml new file mode 100644 index 0000000000..1241154629 --- /dev/null +++ b/backend/src/main/java/io/dataease/base/mapper/ext/ExtSysUserMapper.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/backend/src/main/java/io/dataease/controller/sys/SysUserController.java b/backend/src/main/java/io/dataease/controller/sys/SysUserController.java new file mode 100644 index 0000000000..bba9f09e57 --- /dev/null +++ b/backend/src/main/java/io/dataease/controller/sys/SysUserController.java @@ -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> userGrid(@PathVariable int goPage, @PathVariable int pageSize, @RequestBody UserGridRequest request) { + Page 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); + } +} diff --git a/backend/src/main/java/io/dataease/controller/sys/request/SysUserCreateRequest.java b/backend/src/main/java/io/dataease/controller/sys/request/SysUserCreateRequest.java new file mode 100644 index 0000000000..e5d24f98f4 --- /dev/null +++ b/backend/src/main/java/io/dataease/controller/sys/request/SysUserCreateRequest.java @@ -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 roleIds; + +} diff --git a/backend/src/main/java/io/dataease/controller/sys/request/UserGridRequest.java b/backend/src/main/java/io/dataease/controller/sys/request/UserGridRequest.java new file mode 100644 index 0000000000..4b325a3c17 --- /dev/null +++ b/backend/src/main/java/io/dataease/controller/sys/request/UserGridRequest.java @@ -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; +} diff --git a/backend/src/main/java/io/dataease/controller/sys/response/SysUserGridResponse.java b/backend/src/main/java/io/dataease/controller/sys/response/SysUserGridResponse.java new file mode 100644 index 0000000000..144c72b80c --- /dev/null +++ b/backend/src/main/java/io/dataease/controller/sys/response/SysUserGridResponse.java @@ -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 roleIds; +} diff --git a/backend/src/main/java/io/dataease/service/sys/SysRoleService.java b/backend/src/main/java/io/dataease/service/sys/SysRoleService.java index 494e429409..387fc93fcf 100644 --- a/backend/src/main/java/io/dataease/service/sys/SysRoleService.java +++ b/backend/src/main/java/io/dataease/service/sys/SysRoleService.java @@ -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); } diff --git a/backend/src/main/java/io/dataease/service/sys/SysUserService.java b/backend/src/main/java/io/dataease/service/sys/SysUserService.java new file mode 100644 index 0000000000..6afabddac1 --- /dev/null +++ b/backend/src/main/java/io/dataease/service/sys/SysUserService.java @@ -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 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 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 sysUsers = sysUserMapper.selectByExample(example); + if (CollectionUtils.isNotEmpty(sysUsers))return sysUsers.get(0); + } + return null; + } + +}