123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167 |
- package com.szwl.controller;
- import cn.hutool.core.bean.BeanUtil;
- import cn.hutool.core.lang.UUID;
- import cn.hutool.core.util.IdUtil;
- import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
- import com.baomidou.mybatisplus.core.toolkit.Wrappers;
- import com.szwl.annotation.Audit;
- import com.szwl.constant.AuditEnum;
- import com.szwl.constant.ResponseCodesEnum;
- import com.szwl.exception.BizException;
- import com.szwl.manager.TokenManager;
- import com.szwl.model.bo.R;
- import com.szwl.model.bo.ResponseModel;
- import com.szwl.model.bo.UserDetailBO;
- import com.szwl.model.entity.TAdmin;
- import com.szwl.model.entity.TMessageCode;
- import com.szwl.service.TAdminService;
- import com.szwl.service.TMessageCodeService;
- import io.swagger.annotations.Api;
- import io.swagger.annotations.ApiOperation;
- import org.apache.commons.codec.digest.DigestUtils;
- import org.apache.commons.lang.StringUtils;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.web.bind.annotation.*;
- import java.util.Date;
- import java.util.List;
- import java.util.Optional;
- /**
- * <p>
- * 短信验证码 前端控制器
- * </p>
- *
- * @author wuhs
- * @since 2022-04-14
- */
- @Api(value = "/tAdmin", tags = {"账户"})
- @RestController
- @RequestMapping("/tAdmin")
- public class TAdminController {
- @Autowired
- TokenManager tokenManager;
- @Autowired
- TAdminService tAdminService;
- @Autowired
- TMessageCodeService tMessageCodeService;
- @ApiOperation(value = "注册")
- @PostMapping("/save")
- public ResponseModel<?> save(@RequestBody TAdmin admin) {
- if(StringUtils.isEmpty(admin.getUsername())||StringUtils.isEmpty(admin.getName())||StringUtils.isEmpty(admin.getPassword())){
- return R.fail(ResponseCodesEnum.A0100,"数据有空!");
- }
- if(admin.getIfForeign().equals("0")){
- //国内用户注册
- if(StringUtils.isEmpty(admin.getPhone())){
- return R.fail(ResponseCodesEnum.A0100,"手机号为空!");
- }
- }else {
- //国外用户注册
- if(StringUtils.isEmpty(admin.getEmail())){
- return R.fail(ResponseCodesEnum.A0100,"邮箱为空!");
- }
- }
- if (StringUtils.isEmpty(admin.getCode())){
- return R.fail(ResponseCodesEnum.A0100,"验证码为空!");
- }
- //校验是否有重复的
- LambdaQueryWrapper<TAdmin> query = Wrappers.lambdaQuery();
- query.eq(TAdmin::getUsername,admin.getUsername());
- List<TAdmin> list = tAdminService.list(query);
- if(list.size()>0){
- return R.fail(ResponseCodesEnum.A0201,"用户登录名已存在");
- }
- LambdaQueryWrapper<TAdmin> query1 = Wrappers.lambdaQuery();
- if(admin.getIfForeign().equals("0")){
- query1.eq(TAdmin::getPhone,admin.getPhone());
- }else {
- query1.eq(TAdmin::getEmail,admin.getEmail());
- }
- List<TAdmin> list1 = tAdminService.list(query1);
- if(list1.size()>0){
- return R.fail(ResponseCodesEnum.A0203,"用户手机/邮箱已存在");
- }
- //校验验证码是否正确
- LambdaQueryWrapper<TMessageCode> query2 = Wrappers.lambdaQuery();
- if(admin.getIfForeign().equals("0")){
- query2.eq(TMessageCode::getPhone,admin.getPhone());
- }else {
- query2.eq(TMessageCode::getPhone,admin.getEmail());
- }
- query2.eq(TMessageCode::getType,"0");//0,代表注册验证码
- query2.eq(TMessageCode::getStatus,"0");
- List<TMessageCode> messageCodeList = tMessageCodeService.list(query2);
- if(messageCodeList.size()>0){
- TMessageCode tMessageCode = messageCodeList.get(messageCodeList.size() - 1);
- if(!tMessageCode.getCode().equals(admin.getCode())){
- return R.fail(ResponseCodesEnum.A0002,"验证码错误");
- }
- tMessageCode.setStatus("1");
- admin.setCreateDate(new Date());
- admin.setModifyDate(new Date());
- admin.setIsAdmined(false);
- admin.setIsEnabled(true);
- admin.setLoginFailureCount(0);
- admin.setIsLocked(false);
- admin.setPassword(DigestUtils.md5Hex(admin.getPassword()));
- boolean b = tAdminService.save(admin);
- tMessageCode.setModifyDate(new Date());
- tMessageCodeService.saveOrUpdate(tMessageCode);
- return R.ok(b);
- }else {
- return R.fail(ResponseCodesEnum.A0002,"没有找到验证码");
- }
- }
- @ApiOperation(value = "登录")
- @PostMapping("/login")
- @Audit(type = AuditEnum.LOGIN,content = "#username + '请求登录'")
- public ResponseModel<UserDetailBO> login(String username, String password) {
- if(StringUtils.isEmpty(username)||StringUtils.isEmpty(password)){
- return R.fail(ResponseCodesEnum.A0001,"参数有空");
- }
- //验证用户名登录
- LambdaQueryWrapper<TAdmin> query = Wrappers.lambdaQuery();
- // query.eq(TAdmin::getUsername,username);
- query.eq(TAdmin::getPassword,password);
- query.and(
- wrapper -> {
- wrapper.eq(TAdmin::getUsername,username)
- .or().eq(TAdmin::getPhone,username);
- }
- );
- TAdmin tAdmin = Optional.ofNullable(tAdminService.getOnly(query))
- .orElseThrow(() -> new BizException(ResponseCodesEnum.L0002));
- UserDetailBO userDetailBO = BeanUtil.copyProperties(tAdmin,UserDetailBO.class);
- String token = IdUtil.simpleUUID();
- userDetailBO.setCurrentToken(token);
- // 保存到redis
- tokenManager.saveAuthentication(token,userDetailBO);
- return R.ok(userDetailBO);
- }
- @ApiOperation(value = "修改密码")
- @PostMapping("/updatePassword")
- public ResponseModel<?> updatePassword(String username,String password) {
- if(StringUtils.isEmpty(username)||StringUtils.isEmpty(password)){
- return R.fail(ResponseCodesEnum.A0001,"参数有空");
- }
- //查找用户名
- LambdaQueryWrapper<TAdmin> query = Wrappers.lambdaQuery();
- query.eq(TAdmin::getUsername,username);
- List<TAdmin> list = tAdminService.list(query);
- if(list.size()>0){
- TAdmin admin = list.get(0);
- admin.setPassword(password);
- boolean b = tAdminService.saveOrUpdate(admin);
- return R.ok(b);
- }
- return R.fail(ResponseCodesEnum.A0001,"修改失败");
- }
- }
|