package com.whyc.service;
|
|
import com.baomidou.mybatisplus.core.conditions.Wrapper;
|
import com.github.pagehelper.PageHelper;
|
import com.github.pagehelper.PageInfo;
|
import com.whyc.dto.Response;
|
import com.whyc.dto.UserClient;
|
import com.whyc.mapper.UserMapper;
|
import com.whyc.pojo.db_user.User;
|
import com.whyc.util.CommonUtil;
|
import com.whyc.util.RSAUtil;
|
import lombok.extern.slf4j.Slf4j;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.cache.annotation.CacheEvict;
|
import org.springframework.cache.annotation.Cacheable;
|
import org.springframework.context.ApplicationContext;
|
import org.springframework.stereotype.Service;
|
|
import javax.annotation.Resource;
|
import javax.servlet.ServletContext;
|
import java.security.InvalidParameterException;
|
import java.util.*;
|
|
@Service
|
@Slf4j
|
public class UserService {
|
|
@Resource
|
private UserMapper userMapper;
|
|
@Resource
|
private UserBridgeService userBridgeService;
|
|
@Autowired
|
private ApplicationContext applicationContext;
|
|
|
public Response add(User user) {
|
try {
|
User userFound = userBridgeService.findPasswordByUserName(user.getName());
|
if (userFound.getId() != 0) {
|
return new Response<>().set(1, false, "用户已存在");
|
}
|
if (userMapper.addJudge(user.getName(),user.getPhoneNumber())>0){
|
return new Response<>().set(1, false, "用户已存在");
|
}
|
//user.setCreateTime(new Date());
|
String[] dataArr = RSAUtil.decryptFrontP(user.getPwd(), RSAUtil.fontSeparator);
|
String password = dataArr[0];
|
String passwordMD5 = dataArr[1];
|
if(!CommonUtil.EncryptionMD5(password).equals(passwordMD5)){
|
throw new InvalidParameterException("参数校验失败");
|
}
|
user.setPwd(RSAUtil.encrypt(password,RSAUtil.getPublicKey()));
|
int flag = userMapper.insert(user);
|
if (flag > 0) {
|
return new Response<>().set(1, true);
|
} else {
|
return new Response<>().set(1, false, "添加失败");
|
}
|
}catch (Exception e){
|
e.printStackTrace();
|
return new Response<>().set(0);
|
}
|
}
|
|
@CacheEvict(value = "userPage",allEntries = true)
|
public Response addByRSA(User user) {
|
User userFound = userBridgeService.findPasswordByUserName(user.getName());
|
if (userFound.getId() != 0) {
|
return new Response<>().set(1, false, "用户名已存在");
|
}
|
User userOfPhoneNumber = userBridgeService.getUserByPhoneNumber(user.getPhoneNumber());
|
if (userOfPhoneNumber.getId()!=0) {
|
return new Response<>().set(1, false, "手机号已存在");
|
}
|
//String password = URLDecoder.decode(user.getUpassword(), "utf-8");
|
String password = user.getPwd();
|
String[] dataArr = RSAUtil.decryptFront(password, RSAUtil.fontSeparator);
|
String pwd = RSAUtil.encrypt(dataArr[0],RSAUtil.getPublicKey());
|
user.setPwd(pwd);
|
user.setCreateTime(new Date());
|
int flag = userMapper.insert(user);
|
if (flag > 0) {
|
return new Response<>().set(1, true);
|
} else {
|
return new Response<>().set(1, false, "添加失败");
|
}
|
}
|
|
/*public Response registerUser(User user){
|
try {
|
User userFound = userBridgeService.findPasswordByUserName(user.getName());
|
if (userFound.getId() != 0) {
|
return new Response<>().set(1, false, "用户名已存在");
|
}
|
User userOfMobilephone = userBridgeService.findUserByMobilephone(user.getPhoneNumber());
|
if (userOfMobilephone.getId()!=0) {
|
return new Response<>().set(1, false, "手机号已存在");
|
}
|
//String password = URLDecoder.decode(user.getUpassword(), "utf-8");
|
String password = user.getPwd();
|
|
String[] dataArr = RSAUtil.decryptFront(password, RSAUtil.fontSeparator);
|
String pwd = RSAUtil.encrypt(dataArr[0],RSAUtil.getPublicKey());
|
user.setPwd(pwd);
|
int flag = userMapper.insert(user);
|
if (flag > 0) {
|
//添加成功,分配到默认初始化权限组
|
return new Response<>().set(1, true,"注册成功");
|
} else {
|
return new Response<>().set(1, false, "注册失败");
|
}
|
}catch (Exception e){
|
e.printStackTrace();
|
return new Response<>().set(0);
|
}
|
}*/
|
|
public User getById(int id) {
|
User user = userMapper.selectById(id);
|
user.setPwd((String) CommonUtil.objectNull);
|
return user;
|
}
|
|
public List<User> getAll() {
|
List<User> users = userMapper.selectList((Wrapper<User>) CommonUtil.objectNull);
|
return users;
|
}
|
|
@Cacheable(value = "userPage")
|
public Response getPage(int pageNum,int pageSize) {
|
PageHelper.startPage(pageNum,pageSize);
|
List<User> list = userMapper.selectList((Wrapper<User>) CommonUtil.objectNull);
|
for (User user:list) {
|
user.setPwd((String) CommonUtil.objectNull);
|
}
|
PageInfo<User> pageInfo = new PageInfo<>(list);
|
return new Response().set(1,pageInfo,"查询成功");
|
}
|
|
@CacheEvict(value = "userPage",allEntries = true)
|
public Response update(User user) {
|
User userFound = userBridgeService.findPasswordByUserName(user.getName());
|
User userOfPhoneNumber = userBridgeService.getUserByPhoneNumber(user.getPhoneNumber());
|
if (userFound.getId() != 0 && !userFound.getId().equals(user.getId())) {
|
return new Response().set(1,false,"用户名重复");
|
}
|
if( userOfPhoneNumber.getId()!=0 && !userFound.getId().equals(user.getId())){
|
return new Response().set(1,false,"手机号重复");
|
}
|
user.setPwd(null);
|
if(userMapper.updateById(user)>0){
|
return new Response().set(1,true,"修改成功");
|
}else{
|
return new Response().set(1,false,"修改失败");
|
}
|
|
}
|
|
|
// 将所有登陆的用户的信息存到application中
|
public void setApplication(User user) {
|
ServletContext application = CommonUtil.getApplication();
|
//查看全局中存储的users的Map的key-value集合
|
Map<String, UserClient> map = (Map) application.getAttribute("users");
|
if (map == CommonUtil.objectNull) {
|
map = new HashMap<String, UserClient>();
|
} else {
|
//如果集合中有值,则获取当前用户对应的用户信息,key为用户名username,Value为用户名,存储的时间
|
UserClient client = map.get(user.getName());
|
if (client != CommonUtil.objectNull) { //已存在
|
map.remove(user.getName());
|
}
|
}
|
Long login_time = new Date().getTime();
|
CommonUtil.getSession().setAttribute("login_time", login_time);
|
map.put(user.getName(), new UserClient(CommonUtil.getRequest().getRemoteAddr(),user,login_time));
|
application.setAttribute("users", map);
|
}
|
|
|
public Response updatePasswordByRSA(User user, String newPwd){
|
String[] dataArr = RSAUtil.decryptFrontP(newPwd, RSAUtil.fontSeparator);
|
newPwd = dataArr[0];
|
String passwordMD5 = dataArr[1];
|
if(!CommonUtil.EncryptionMD5(newPwd).equals(passwordMD5)){
|
throw new InvalidParameterException("参数校验失败");
|
}
|
String pwd = RSAUtil.encrypt(newPwd,RSAUtil.getPublicKey());
|
user.setPwd(pwd);
|
if (userMapper.updateById(user)>0){
|
return new Response().set(1,true,"新密码修改成功");
|
}else {
|
return new Response().set(0,false,"新密码修改失败");
|
}
|
}
|
|
}
|