271 lines
8.3 KiB
Java
271 lines
8.3 KiB
Java
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<SysUser> getUsers(SysUser user) {
|
|
// 用户所拥有的角色
|
|
String[] roleArr = user.getRole().split(",");
|
|
// 转成list,拿掉‘组长’身份
|
|
List<String> list = new ArrayList<String>(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<SysUser> getRealnamesByShopname(String shopname) {
|
|
return userMapper.getRealnamesByShopname(shopname);
|
|
}
|
|
|
|
}
|