SysUserServiceImpl.java 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192
  1. package com.kmall.common.service.impl;
  2. import com.google.common.collect.ImmutableBiMap;
  3. import com.kmall.common.Global;
  4. import com.kmall.common.dao.SysUserDao;
  5. import com.kmall.common.entity.SysUserEntity;
  6. import com.kmall.common.service.SysRoleService;
  7. import com.kmall.common.service.SysUserRoleService;
  8. import com.kmall.common.service.SysUserService;
  9. import com.kmall.common.utils.*;
  10. import org.apache.commons.lang.StringUtils;
  11. import org.apache.shiro.crypto.hash.Sha256Hash;
  12. import org.springframework.beans.factory.annotation.Autowired;
  13. import org.springframework.stereotype.Service;
  14. import org.springframework.transaction.annotation.Transactional;
  15. import java.util.Date;
  16. import java.util.HashMap;
  17. import java.util.List;
  18. import java.util.Map;
  19. /**
  20. * 系统用户
  21. *
  22. * @author Scott
  23. * @email
  24. * @date 2016年12月18日 上午9:46:09
  25. */
  26. @Service("sysUserService")
  27. public class SysUserServiceImpl implements SysUserService {
  28. @Autowired
  29. private SysUserDao sysUserDao;
  30. @Autowired
  31. private SysUserRoleService sysUserRoleService;
  32. @Autowired
  33. private SysRoleService sysRoleService;
  34. @Override
  35. public List<String> queryAllPerms(Long userId) {
  36. return sysUserDao.queryAllPerms(userId);
  37. }
  38. @Override
  39. public List<Long> queryAllMenuId(Long userId) {
  40. return sysUserDao.queryAllMenuId(userId);
  41. }
  42. @Override
  43. public SysUserEntity queryByUserName(String username) {
  44. return sysUserDao.queryByUserName(username);
  45. }
  46. @Override
  47. public SysUserEntity queryObject(Long userId) {
  48. return sysUserDao.queryObject(userId);
  49. }
  50. @Override
  51. public List<SysUserEntity> queryList(Map<String, Object> map) {
  52. return sysUserDao.queryList(map);
  53. }
  54. @Override
  55. public int queryTotal(Map<String, Object> map) {
  56. return sysUserDao.queryTotal(map);
  57. }
  58. @Override
  59. @Transactional
  60. public void save(SysUserEntity user) {
  61. Map<String, Object> valideDate = MapBeanUtil.fromObject(user);
  62. ImmutableBiMap.Builder builder = new ImmutableBiMap.Builder();
  63. builder.put("username", "用户名");
  64. builder.put("email", "邮箱");
  65. builder.put("mobile", "手机号");
  66. builder.put("roleType", "数据角色类型");
  67. builder.put("status", "状态");
  68. builder.put("roleId", "角色");
  69. R r = ValidatorUtil.isEmpty(builder.build(), valideDate);
  70. if (Integer.valueOf(r.get("code").toString()) != 0) {
  71. throw new RRException(r.get("msg").toString());
  72. } else {
  73. if (!"1".equals(user.getRoleType())) {
  74. builder.put("storeId", "门店");
  75. }
  76. r = ValidatorUtil.isEmpty(builder.build(), valideDate);
  77. if (Integer.valueOf(r.get("code").toString()) != 0) {
  78. throw new RRException(r.get("msg").toString());
  79. }
  80. }
  81. if (!user.getEmail().matches("^[a-z0-9A-Z]+[- | a-z0-9A-Z . _]+@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?\\.)+[a-z]{2,}$")) {
  82. throw new RRException("邮箱格式错误!");
  83. }
  84. if (!PhoneFormatCheckUtils.isPhoneLegal(user.getMobile())) {
  85. throw new RRException("手机号格式错误!");
  86. }
  87. user.setCreateTime(new Date());
  88. //sha256加密
  89. user.setPassword(new Sha256Hash(Global.DEFAULT_PASS_WORD).toHex());
  90. sysUserDao.save(user);
  91. //检查角色是否越权
  92. checkRole(user);
  93. //保存用户与角色关系
  94. sysUserRoleService.saveOrUpdate(user.getUserId(), user.getRoleId());
  95. }
  96. @Override
  97. @Transactional
  98. public void update(SysUserEntity user) {
  99. Map<String, Object> valideDate = MapBeanUtil.fromObject(user);
  100. ImmutableBiMap.Builder builder = new ImmutableBiMap.Builder();
  101. builder.put("username", "用户名");
  102. builder.put("email", "邮箱");
  103. builder.put("mobile", "手机号");
  104. builder.put("roleType", "数据角色类型");
  105. builder.put("status", "状态");
  106. builder.put("roleId", "角色");
  107. R r = ValidatorUtil.isEmpty(builder.build(), valideDate);
  108. if (Integer.valueOf(r.get("code").toString()) != 0) {
  109. throw new RRException(r.get("msg").toString());
  110. } else {
  111. if (!"1".equals(user.getRoleType())) {
  112. builder.put("storeId", "门店");
  113. }
  114. r = ValidatorUtil.isEmpty(builder.build(), valideDate);
  115. if (Integer.valueOf(r.get("code").toString()) != 0) {
  116. throw new RRException(r.get("msg").toString());
  117. }
  118. }
  119. if (!user.getEmail().matches("^[a-z0-9A-Z]+[- | a-z0-9A-Z . _]+@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?\\.)+[a-z]{2,}$")) {
  120. throw new RRException("邮箱格式错误!");
  121. }
  122. if (!PhoneFormatCheckUtils.isPhoneLegal(user.getMobile())) {
  123. throw new RRException("手机号格式错误!");
  124. }
  125. if (StringUtils.isBlank(user.getPassword())) {
  126. user.setPassword(new Sha256Hash(Global.DEFAULT_PASS_WORD).toHex());
  127. } else {
  128. user.setPassword(new Sha256Hash(user.getPassword()).toHex());
  129. }
  130. sysUserDao.update(user);
  131. //检查角色是否越权
  132. checkRole(user);
  133. //保存用户与角色关系
  134. sysUserRoleService.saveOrUpdate(user.getUserId(), user.getRoleId());
  135. }
  136. @Override
  137. @Transactional
  138. public void deleteBatch(Long[] userId) {
  139. sysUserDao.deleteBatch(userId);
  140. }
  141. @Override
  142. public int updatePassword(Long userId, String password, String newPassword) {
  143. Map<String, Object> map = new HashMap<>();
  144. map.put("userId", userId);
  145. map.put("password", password);
  146. map.put("newPassword", newPassword);
  147. return sysUserDao.updatePassword(map);
  148. }
  149. /**
  150. * 检查角色是否越权
  151. */
  152. private void checkRole(SysUserEntity user) {
  153. //如果不是超级管理员,则需要判断用户的角色是否自己创建
  154. if (user.getCreateUserId() == Constant.SUPER_ADMIN) {
  155. return;
  156. }
  157. //查询用户创建的角色列表
  158. List<Long> roleIdList = sysRoleService.queryRoleIdList(user.getCreateUserId());
  159. //判断是否越权
  160. if (!roleIdList.containsAll(user.getRoleIdList())) {
  161. throw new RRException("新增用户所选角色,不是本人创建");
  162. }
  163. }
  164. }