package com.tld.service.impl; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.tld.excel.ExcelUtils; import com.tld.mapper.UserMapper; import com.tld.model.User; import com.tld.service.UserService; import com.tld.util.*; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.text.SimpleDateFormat; import java.util.*; @Service public class UserServiceImpl implements UserService { @Autowired private UserMapper userMapper; @Resource private RedisUtil redisUtil; @Override public Map login(User user, HttpServletRequest request) { Map map = new HashMap<>(); try{ user.setPassword(DesEncry.encrypt(user.getPassword())); User user1 = userMapper.login(user); //获取用户ip3000 String ipAddr = IpUtils.getIpAddr(request); if(null == user1){ map.put("msg", "510"); map.put("errMsg", "账号或密码错误"); return map; } else { //token参数 Map tokenParam = new HashMap(){{ put("user_name", user.getUserName()); put("userId", user.getId() + ""); }}; String token = JWTUtil.getToken(tokenParam); //生成token // String key = RedisPreEnum.JWT_TOKEN_PRE.getPre() + user1.getId(); // Set keys = redisUtil.keys(key + "*"); // if(CollectionUtils.isEmpty(keys)){ // redisUtil.add(key + ipAddr, user1, RedisPreEnum.JWT_TOKEN_PRE.getExpired()); // } else { // //请空之前的key // for (String k : keys) { // redisUtil.delete(k); // } // //重新设置key // redisUtil.add(key + ipAddr, user1, RedisPreEnum.JWT_TOKEN_PRE.getExpired()); // } // redisUtil.delete("verifyCode" + ipAddr);//删除指定ip的code user1.setToken(token); map.put("msg", "200"); map.put("data", user1); return map; } } catch (Exception e){ e.printStackTrace(); map.put("msg", "500"); map.put("errMsg", "服务器请求异常,请稍后再试"); } return map; } @Override public Map getAllUser(User user) { Map map = new HashMap<>(); try{ PageHelper.startPage(user.getPage(), user.getLimit()); // List list = new ArrayList<>(); // for(User user1 : userMapper.getAllUser(user)) { // user1.setPassword(DesDecry.decrypt(user1.getPassword())); // list.add(user1); // } PageInfo pageInfo = new PageInfo<>(userMapper.getAllUser(user)); map.put("data", pageInfo); map.put("msg", "200"); } catch (Exception e){ e.printStackTrace(); map.put("msg", "500"); map.put("errMsg", "服务器请求异常,请稍后再试"); } return map; } @Override @Transactional(rollbackFor = Exception.class) public Map addUser(User user, HttpServletRequest request) { Map map = new HashMap<>(); try{ int count = userMapper.getUserIsNot(user); if(count > 0){ map.put("msg", "510"); map.put("errMsg", "用户名已存在"); return map; } user.setPassword(DesEncry.encrypt(user.getPassword())); //新增用户 user.setModifyUser(request.getHeader("userId"));//修改人 userMapper.addUser(user); user.setCode(codeGenerate(user.getId() + "")); //修改用户编号 userMapper.updateUser(user); map.put("msg", "200"); } catch (Exception e) { e.printStackTrace(); map.put("msg", "500"); map.put("errMsg", "服务器请求异常,请稍后再试"); } return map; } @Override @Transactional(rollbackFor = Exception.class) public Map delUser(String id) { Map map = new HashMap<>(); try{ userMapper.delUser(id); map.put("msg", "200"); } catch (Exception e){ e.printStackTrace(); map.put("msg", "500"); map.put("errMsg", "服务器请求异常,请稍后再试"); } return map; } @Override @Transactional(rollbackFor = Exception.class) public Map updateUser(User user, HttpServletRequest request) { Map map = new HashMap<>(); try{ int count = userMapper.getUserIsNot(user); if(count > 0){ map.put("msg", "510"); map.put("errMsg", "用户名已存在"); return map; } user.setPassword(DesEncry.encrypt(user.getPassword())); user.setModifyUser(request.getHeader("userId")); userMapper.updateUser(user); map.put("msg", "200"); } catch (Exception e){ e.printStackTrace(); map.put("msg", "500"); map.put("errMsg", "服务器请求异常,请稍后再试"); } return map; } @Override public void userExport(User user, HttpServletResponse response) { try{ //导出数据汇总 List> sheetDataList = new ArrayList<>(); //表头数据 List head = Arrays.asList("用户编号", "用户名", "真实姓名","邮箱","电话", "手机", "部门", "角色"); //查询数据 PageHelper.startPage(1, 10); List> list = userMapper.getUserExportData(user); sheetDataList.add(head); for(Map userMap : list){ List listSheet = new ArrayList<>(); for(String key: userMap.keySet()){ listSheet.add(userMap.get(key)); } sheetDataList.add(listSheet); } //当前时间 Date time = new Date(); SimpleDateFormat sdf = new SimpleDateFormat("yyyyMddHHmmss"); ExcelUtils.export(response, "用户数据导出" + sdf.format(time), sheetDataList); }catch (Exception e){ e.printStackTrace(); } } @Override @Transactional(rollbackFor = Exception.class) public Map resetPassword(User user) { Map map = new HashMap<>(); try{ user.setPassword(DesEncry.encrypt("123456")); userMapper.updateUser(user); map.put("msg", "200"); } catch (Exception e){ e.printStackTrace(); map.put("msg", "500"); map.put("errMsg", "服务器请求异常,请稍后再试"); } return map; } @Override @Transactional(rollbackFor = Exception.class) public Map updatePassword(User user) { Map map = new HashMap<>(); try{ User user1 = userMapper.getUser(user); if(!user.getPassword().equals(DesDecry.decrypt(user1.getPassword()))){ map.put("msg", "500"); map.put("errMsg", "密码错误"); return map; } user.setPassword(DesEncry.encrypt(user.getNewPassword())); userMapper.updateUser(user); map.put("msg", "200"); } catch (Exception e){ e.printStackTrace(); map.put("msg", "500"); map.put("errMsg", "服务器请求异常,请稍后再试"); } return map; } /** * 用户编号规则 * @param id 参数 * @return 返回结果 */ public String codeGenerate(String id){ StringBuilder stringBuilder = new StringBuilder("YH"); for(int i = 0; i < 6 - id.length(); i++){ stringBuilder.append("0"); } stringBuilder.append(id); return stringBuilder.toString(); } }