123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192 |
- package com.kmall.common.service.impl;
- import com.google.common.collect.ImmutableBiMap;
- import com.kmall.common.Global;
- import com.kmall.common.dao.SysUserDao;
- import com.kmall.common.entity.SysUserEntity;
- import com.kmall.common.service.SysRoleService;
- import com.kmall.common.service.SysUserRoleService;
- import com.kmall.common.service.SysUserService;
- import com.kmall.common.utils.*;
- import org.apache.commons.lang.StringUtils;
- import org.apache.shiro.crypto.hash.Sha256Hash;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Service;
- import org.springframework.transaction.annotation.Transactional;
- import java.util.Date;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
- /**
- * 系统用户
- *
- * @author Scott
- * @email
- * @date 2016年12月18日 上午9:46:09
- */
- @Service("sysUserService")
- public class SysUserServiceImpl implements SysUserService {
- @Autowired
- private SysUserDao sysUserDao;
- @Autowired
- private SysUserRoleService sysUserRoleService;
- @Autowired
- private SysRoleService sysRoleService;
- @Override
- public List<String> queryAllPerms(Long userId) {
- return sysUserDao.queryAllPerms(userId);
- }
- @Override
- public List<Long> queryAllMenuId(Long userId) {
- return sysUserDao.queryAllMenuId(userId);
- }
- @Override
- public SysUserEntity queryByUserName(String username) {
- return sysUserDao.queryByUserName(username);
- }
- @Override
- public SysUserEntity queryObject(Long userId) {
- return sysUserDao.queryObject(userId);
- }
- @Override
- public List<SysUserEntity> queryList(Map<String, Object> map) {
- return sysUserDao.queryList(map);
- }
- @Override
- public int queryTotal(Map<String, Object> map) {
- return sysUserDao.queryTotal(map);
- }
- @Override
- @Transactional
- public void save(SysUserEntity user) {
- Map<String, Object> valideDate = MapBeanUtil.fromObject(user);
- ImmutableBiMap.Builder builder = new ImmutableBiMap.Builder();
- builder.put("username", "用户名");
- builder.put("email", "邮箱");
- builder.put("mobile", "手机号");
- builder.put("roleType", "数据角色类型");
- builder.put("status", "状态");
- builder.put("roleId", "角色");
- R r = ValidatorUtil.isEmpty(builder.build(), valideDate);
- if (Integer.valueOf(r.get("code").toString()) != 0) {
- throw new RRException(r.get("msg").toString());
- } else {
- if (!"1".equals(user.getRoleType())) {
- builder.put("storeId", "门店");
- }
- r = ValidatorUtil.isEmpty(builder.build(), valideDate);
- if (Integer.valueOf(r.get("code").toString()) != 0) {
- throw new RRException(r.get("msg").toString());
- }
- }
- if (!user.getEmail().matches("^[a-z0-9A-Z]+[- | a-z0-9A-Z . _]+@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?\\.)+[a-z]{2,}$")) {
- throw new RRException("邮箱格式错误!");
- }
- if (!PhoneFormatCheckUtils.isPhoneLegal(user.getMobile())) {
- throw new RRException("手机号格式错误!");
- }
- user.setCreateTime(new Date());
- //sha256加密
- user.setPassword(new Sha256Hash(Global.DEFAULT_PASS_WORD).toHex());
- sysUserDao.save(user);
- //检查角色是否越权
- checkRole(user);
- //保存用户与角色关系
- sysUserRoleService.saveOrUpdate(user.getUserId(), user.getRoleId());
- }
- @Override
- @Transactional
- public void update(SysUserEntity user) {
- Map<String, Object> valideDate = MapBeanUtil.fromObject(user);
- ImmutableBiMap.Builder builder = new ImmutableBiMap.Builder();
- builder.put("username", "用户名");
- builder.put("email", "邮箱");
- builder.put("mobile", "手机号");
- builder.put("roleType", "数据角色类型");
- builder.put("status", "状态");
- builder.put("roleId", "角色");
- R r = ValidatorUtil.isEmpty(builder.build(), valideDate);
- if (Integer.valueOf(r.get("code").toString()) != 0) {
- throw new RRException(r.get("msg").toString());
- } else {
- if (!"1".equals(user.getRoleType())) {
- builder.put("storeId", "门店");
- }
- r = ValidatorUtil.isEmpty(builder.build(), valideDate);
- if (Integer.valueOf(r.get("code").toString()) != 0) {
- throw new RRException(r.get("msg").toString());
- }
- }
- if (!user.getEmail().matches("^[a-z0-9A-Z]+[- | a-z0-9A-Z . _]+@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?\\.)+[a-z]{2,}$")) {
- throw new RRException("邮箱格式错误!");
- }
- if (!PhoneFormatCheckUtils.isPhoneLegal(user.getMobile())) {
- throw new RRException("手机号格式错误!");
- }
- if (StringUtils.isBlank(user.getPassword())) {
- user.setPassword(new Sha256Hash(Global.DEFAULT_PASS_WORD).toHex());
- } else {
- user.setPassword(new Sha256Hash(user.getPassword()).toHex());
- }
- sysUserDao.update(user);
- //检查角色是否越权
- checkRole(user);
- //保存用户与角色关系
- sysUserRoleService.saveOrUpdate(user.getUserId(), user.getRoleId());
- }
- @Override
- @Transactional
- public void deleteBatch(Long[] userId) {
- sysUserDao.deleteBatch(userId);
- }
- @Override
- public int updatePassword(Long userId, String password, String newPassword) {
- Map<String, Object> map = new HashMap<>();
- map.put("userId", userId);
- map.put("password", password);
- map.put("newPassword", newPassword);
- return sysUserDao.updatePassword(map);
- }
- /**
- * 检查角色是否越权
- */
- private void checkRole(SysUserEntity user) {
- //如果不是超级管理员,则需要判断用户的角色是否自己创建
- if (user.getCreateUserId() == Constant.SUPER_ADMIN) {
- return;
- }
- //查询用户创建的角色列表
- List<Long> roleIdList = sysRoleService.queryRoleIdList(user.getCreateUserId());
- //判断是否越权
- if (!roleIdList.containsAll(user.getRoleIdList())) {
- throw new RRException("新增用户所选角色,不是本人创建");
- }
- }
- }
|