package lingtao.net.service; import java.util.ArrayList; import java.util.Arrays; import java.util.Date; import java.util.List; import org.apache.commons.lang.StringUtils; import org.apache.shiro.SecurityUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import lingtao.net.bean.Msg; import lingtao.net.bean.SysUser; import lingtao.net.dao.SysUserMapper; import lingtao.net.util.MD5Util; @Service public class SysUserService { @Autowired private SysUserMapper userMapper; // 注册 public Msg register(SysUser user) { user.setPassword(new MD5Util().md5(user.getPassword(), "lingtao")); user.setCreateDate(new Date()); // 注册的用户都是未激活状态 user.setUserStatus("0"); // 注册的用户都是系统功能隐藏状态 user.setSysStatus("0"); // 注册的用户不需要判断IP user.setNeedIp("1"); String roleId = user.getRole(); if (StringUtils.isEmpty(roleId)) return null; // 给用户赋予角色 user.setRole("999," + roleId); // user.setRole("999"); // Integer[] ids = {999}; int count = userMapper.insertSelective(user); // 根据角色的id把角色的权限给用户 Integer[] ids = {999, Integer.valueOf(roleId)}; // 新增用户后会自动回补id Integer userId = user.getUserId(); userMapper.addUserRoles(userId, ids); if (count < 0) { return Msg.fail(); } return Msg.success(); } public List getUsers(SysUser user) { // 用户所拥有的角色 String[] roleArr = user.getRole().split(","); // 转成list,拿掉‘组长’身份 List list = new ArrayList(Arrays.asList(roleArr)); // 判断是否拥有超管身份标识 boolean isSuper = false; for (int i = 0; i < roleArr.length; i++) { // 有‘超级管理员’身份,状态改为true if ("1".equals(roleArr[i])) { isSuper = true; break; } // 如果有【店长/考试审核员/客服/组长/IP管理员/操作日志/不填旺旺】身份,去掉。不带去查询 if ("666".equals(roleArr[i]) || "888".equals(roleArr[i]) || "999".equals(roleArr[i]) || "1011".equals(roleArr[i]) || "1015".equals(roleArr[i]) || "1042".equals(roleArr[i]) || "1049".equals(roleArr[i])) { list.remove(roleArr[i]); } } // 将list转为String[] 数组 roleArr = list.toArray(new String[list.size()]); // 如果没有‘超级管理员’身份,只能看到负责的部门的用户;如果有可以看到所有用户 if (!isSuper) { // 如果是通过‘用户角色’查询 if (StringUtils.isNotEmpty(user.getRoleSearch())) { // 清除自己拥有的角色,防止查询出所有的部门数据 roleArr = null; } // 如果有多个 if (user.getRole().contains(",")) { user.setRoleArr(roleArr); } else {// 只有一个角色 user.setRoleSearch(user.getRole()); } } return userMapper.getUsers(user); } // 检查用户名是否存在 public Msg checkUsername(String username) { SysUser user = userMapper.getUserByUsername(username); if (user != null) { return Msg.fail(); } return Msg.success(); } // 新增 public Msg addUser(SysUser user) { user.setPassword(new MD5Util().md5(user.getPassword(), "lingtao")); user.setCreateDate(new Date()); user.setSysStatus("2"); try { userMapper.insertSelective(user); return Msg.success(); } catch (Exception e) { return Msg.fail(); } } // 修改 public Msg updateUserById(SysUser user) { if (!"********".equals(user.getPassword())) { // 如果改过密码 user.setPassword(new MD5Util().md5(user.getPassword(), "lingtao")); } else { user.setPassword(null); } // 如果有【店长】身份,更改的角色前面添加【客服】 SysUser user2 = (SysUser) SecurityUtils.getSubject().getPrincipal(); boolean flag = false; String[] role = user2.getRole().split(","); for (int i = 0; i < role.length; i++) { if ("666".equals(role[i])) { flag = true; break; } } if (flag) { user.setRole("999," + user.getRole()); } user.setUpdateDate(new Date()); try { userMapper.updateByPrimaryKeySelective(user); return Msg.success(); } catch (Exception e) { return Msg.fail(); } } // 删除用户 public Msg deleteUserById(Integer userId) { try { userMapper.deleteByPrimaryKey(userId); return Msg.success(); } catch (Exception e) { return Msg.fail("主外键关联,删除失败!"); } } // 改变用户状态 public Msg changeUserStatus(Integer userId) { try { userMapper.changeUserStatus(userId); return Msg.success(); } catch (Exception e) { return Msg.fail(); } } public void addUserRoles(Integer userId, Integer[] ids) { userMapper.addUserRoles(userId, ids); } public void deleteUserRoles(Integer userId) { userMapper.deleteUserRoles(userId); } public Msg updatePassword(SysUser user) { user.setPassword(new MD5Util().md5(user.getPassword(), "lingtao")); int i = userMapper.updateByPrimaryKeySelective(user); if (i > 0) { return Msg.success(); } return Msg.fail(); } public Msg addBirthDay(SysUser user) { SysUser sysUser = (SysUser) SecurityUtils.getSubject().getPrincipal(); user.setUserId(sysUser.getUserId()); user.setIsBirthDay(0); int i = userMapper.updateByPrimaryKeySelective(user); if (i > 0) { return Msg.success(); } return Msg.fail(); } // 改变用户生日状态 public Msg changeIsBirthDay(Integer userId) { try { userMapper.changeIsBirthDay(userId); return Msg.success(); } catch (Exception e) { return Msg.fail(); } } public Msg changeNeedIp() { try { userMapper.changeNeedIp(); return Msg.success(); } catch (Exception e) { return Msg.fail(); } } // 改变用户系统状态(管理员调整) public Msg changeSysStatus(Integer userId) { try { userMapper.changeSysStatus(userId); return Msg.success(); } catch (Exception e) { return Msg.fail(); } } // 改变用户系统状态(看完视频) public Msg videoOverToChangeSysStatus(Integer userId) { try { userMapper.videoOverToChangeSysStatus(userId); return Msg.success(); } catch (Exception e) { return Msg.fail(); } } // 改变用户系统状态(答题通过) public Msg examOverToChangeSysStatus(Integer userId) { try { userMapper.examOverToChangeSysStatus(userId); return Msg.success(); } catch (Exception e) { return Msg.fail(); } } // 改变阅读更新日志状态 public Msg changeReadLogStatus(Integer userId) { try { userMapper.changeReadLogStatus(userId); return Msg.success(); } catch (Exception e) { return Msg.fail(); } } public SysUser getUserInfo(Integer userId) { try { return userMapper.getUserInfo(userId); } catch (Exception e) { return null; } } /** * 客服数据 -- 根据搜索的店铺获取人员 * * @return */ public List getRealnamesByShopname(String shopname) { return userMapper.getRealnamesByShopname(shopname); } }