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; /** *

* 短信验证码 前端控制器 *

* * @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 query = Wrappers.lambdaQuery(); query.eq(TAdmin::getUsername,admin.getUsername()); List list = tAdminService.list(query); if(list.size()>0){ return R.fail(ResponseCodesEnum.A0201,"用户登录名已存在"); } LambdaQueryWrapper query1 = Wrappers.lambdaQuery(); if(admin.getIfForeign().equals("0")){ query1.eq(TAdmin::getPhone,admin.getPhone()); }else { query1.eq(TAdmin::getEmail,admin.getEmail()); } List list1 = tAdminService.list(query1); if(list1.size()>0){ return R.fail(ResponseCodesEnum.A0203,"用户手机/邮箱已存在"); } //校验验证码是否正确 LambdaQueryWrapper 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 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 login(String username, String password) { if(StringUtils.isEmpty(username)||StringUtils.isEmpty(password)){ return R.fail(ResponseCodesEnum.A0001,"参数有空"); } //验证用户名登录 LambdaQueryWrapper 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 query = Wrappers.lambdaQuery(); query.eq(TAdmin::getUsername,username); List 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,"修改失败"); } }