Files
qualifications-management-s…/src/main/java/cn/wepact/dfm/training/controller/UserController.java
2026-05-28 18:11:59 +08:00

159 lines
6.7 KiB
Java

package cn.wepact.dfm.training.controller;
import cn.hutool.captcha.CaptchaUtil;
import cn.wepact.dfm.common.util.Constant;
import cn.wepact.dfm.common.util.GeneralRespBean;
import cn.wepact.dfm.common.util.StringUtils;
import cn.wepact.dfm.training.dto.entity.TOrg;
import cn.wepact.dfm.training.dto.entity.TUser;
import cn.wepact.dfm.training.service.UserService;
import cn.wepact.dfm.training.utils.EmailUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.util.List;
@RestController
@RequestMapping("users")
public class UserController extends BaseController{
private static final Logger log = LoggerFactory.getLogger(UserController.class);
@Autowired
private UserService userService;
// 登录
@PostMapping("/login")
public GeneralRespBean<TUser> login(@RequestBody TUser loginRequest) {
log.info("【登录】用户: {}", loginRequest.getUsername());
GeneralRespBean<TUser> respBean = new GeneralRespBean();
TUser user = userService.loginAndGetUser(loginRequest);
if (user != null) {
respBean.setData(user);
respBean.setMsg(Constant.SUCCESS_MSG);
respBean.setCode(Constant.SUCCESS_CODE);
log.info("【登录】用户: {} 登录成功", loginRequest.getUsername());
} else {
respBean.setData(null);
respBean.setMsg("登录失败,账号密码错误,或单位选择有误!");
respBean.setCode(Constant.ERROR_CODE);
log.warn("【登录】用户: {} 登录失败", loginRequest.getUsername());
}
return respBean;
}
// 注册
@PostMapping("/register")
public GeneralRespBean<String> register(@RequestBody TUser registerRequest) {
log.info("【注册】用户: {}", registerRequest.getUsername());
GeneralRespBean<String> respBean = new GeneralRespBean();
Boolean result = userService.register(registerRequest);
if (result) {
respBean.setMsg(Constant.SUCCESS_MSG);
respBean.setCode(Constant.SUCCESS_CODE);
log.info("【注册】用户: {} 注册成功", registerRequest.getUsername());
} else {
respBean.setMsg("注册失败,账号已经存在!");
respBean.setCode(Constant.ERROR_CODE);
log.warn("【注册】用户: {} 注册失败,账号已存在", registerRequest.getUsername());
}
return respBean;
}
@GetMapping("/getDeptList")
public GeneralRespBean<List<TOrg>> getDeptList() {
log.info("【获取部门列表】开始");
GeneralRespBean<List<TOrg>> respBean = new GeneralRespBean();
List<TOrg> tOrgList = userService.getDeptList();
respBean.setData(tOrgList);
respBean.setMsg(Constant.SUCCESS_MSG);
respBean.setCode(Constant.SUCCESS_CODE);
log.info("【获取部门列表】共 {} 条", tOrgList.size());
return respBean;
}
/**
* 用于生成带六位数字验证码并发送邮件
*/
@PostMapping(value = "/captcha")
public GeneralRespBean<Boolean> captchacode(HttpSession session) throws Exception {
TUser user = getUserInfo();
log.info("【验证码】用户: {} 请求发送验证码至邮箱: {}", user.getUsername(), user.getEmail());
GeneralRespBean<Boolean> respBean = new GeneralRespBean<>();
String randomCode = userService.generateRandomCode();
session.setAttribute("randomCode", randomCode);
session.setAttribute("codeTime",System.currentTimeMillis());
//发送邮件
EmailUtil.Email email = new EmailUtil.Email();
email.setTo(user.getEmail());
email.setSubject("任职资格管理系统验证码");
email.setContent("您的验证码为:"+randomCode);
EmailUtil.sendMail(email);
respBean.setMsg("验证码发送成功!");
respBean.setCode("200");
log.info("【验证码】用户: {} 验证码发送成功", user.getUsername());
return respBean;
}
/**
* 更新密码
*/
@PostMapping(value = "/updatePwd")
public GeneralRespBean<Boolean> updatePwd(HttpSession session,
@RequestBody TUser tUser) throws Exception {
GeneralRespBean<Boolean> respBean = new GeneralRespBean<>();
TUser user = getUserInfo();
tUser.setUserNo(user.getUserNo());
log.info("【修改密码】用户: {} 请求修改密码", user.getUsername());
// 获得验证码对象
Object cko = session.getAttribute("randomCode");
if (cko == null) {
log.warn("【修改密码】用户: {} 验证码已失效(空)", user.getUsername());
return respBean.processErrorMsg("验证码已失效,请重新获取!");
}
String captcha = cko.toString();
// 判断验证码输入是否正确
if (StringUtils.isEmpty(tUser.getRandomCode()) || captcha == null || !(tUser.getRandomCode().equalsIgnoreCase(captcha))) {
log.warn("【修改密码】用户: {} 验证码错误", user.getUsername());
return respBean.processErrorMsg("验证码错误,请重新输入!");
} else {
Long codeTime = Long.valueOf(session.getAttribute("codeTime") + "");
if ((System.currentTimeMillis() - codeTime) / 1000 / 60 > 4) {
log.warn("【修改密码】用户: {} 验证码已超时", user.getUsername());
return respBean.processErrorMsg("验证码已失效,请重新获取!");
}
log.info("【修改密码】用户: {} 验证码校验通过,执行修改", user.getUsername());
return userService.updatePwd(tUser);
}
}
// 取消预览
@PostMapping("/cancelPreview")
public GeneralRespBean<Boolean> cancelPreview() {
TUser user = getUserInfo();
log.info("【取消预览】用户: {} 请求取消预览", user.getUsername());
GeneralRespBean<Boolean> respBean = new GeneralRespBean();
Boolean result = userService.cancelPreview(user);
respBean.setData(result);
if (result) {
respBean.setMsg(Constant.SUCCESS_MSG);
respBean.setCode(Constant.SUCCESS_CODE);
log.info("【取消预览】用户: {} 取消成功", user.getUsername());
} else {
respBean.setMsg("取消预览失败");
respBean.setCode(Constant.ERROR_CODE);
log.warn("【取消预览】用户: {} 取消失败", user.getUsername());
}
return respBean;
}
}