123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225 |
- package com.szwl.controller;
- import cn.hutool.core.bean.BeanUtil;
- import cn.hutool.core.collection.CollUtil;
- 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.SysUserRole;
- import com.szwl.model.entity.TAdmin;
- import com.szwl.model.entity.TMessageCode;
- import com.szwl.model.param.AddLoginUserParam;
- import com.szwl.service.SysRoleService;
- import com.szwl.service.SysUserRoleService;
- import com.szwl.service.TAdminService;
- import com.szwl.service.TMessageCodeService;
- import io.swagger.annotations.Api;
- import io.swagger.annotations.ApiOperation;
- import lombok.extern.slf4j.Slf4j;
- import org.apache.commons.codec.digest.DigestUtils;
- import org.apache.commons.lang.StringUtils;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.transaction.annotation.Transactional;
- import org.springframework.web.bind.annotation.*;
- import javax.validation.Valid;
- import java.util.*;
- import java.util.stream.Collectors;
- /**
- * <p>
- * 短信验证码 前端控制器
- * </p>
- *
- * @author wuhs
- * @since 2022-04-14
- */
- @Slf4j
- @Api(value = "/tAdmin", tags = {"账户"})
- @RestController
- @RequestMapping("/tAdmin")
- public class TAdminController {
- @Autowired
- SysRoleService sysRoleService;
- @Autowired
- SysUserRoleService sysUserRoleService;
- @Autowired
- TokenManager tokenManager;
- @Autowired
- TAdminService tAdminService;
- @Autowired
- TMessageCodeService tMessageCodeService;
- @ApiOperation(value = "添加账号")
- @PostMapping("/addLoginUser")
- @Transactional
- @Audit(type = AuditEnum.INSERT,content = "#loginUser.name + '添加账号'")
- public ResponseModel<?> addLoginUser(@RequestBody @Valid AddLoginUserParam param) {
- //获取当前操作人员
- UserDetailBO loginUser = tokenManager.getLoginUserDetails();
- // 保存用户实体
- Date now = new Date();
- TAdmin entity = BeanUtil.copyProperties(param,TAdmin.class);
- entity.setParentId(loginUser.getId());
- entity.setIsAdmined(true);
- entity.setCreateDate(now);
- entity.setModifyDate(now);
- entity.setIsLocked(false);
- entity.setLoginFailureCount(0);
- tAdminService.save(entity);
- log.debug("添加账号 id:{},TAdmin:{}",entity.getId(),entity);
- // 保存用户角色关系
- List<SysUserRole> userRoleList = param.getRoleList()
- .stream()
- .map(e -> new SysUserRole().setRoleId(e).setUserId(String.valueOf(entity.getId())) )
- .collect(Collectors.toList());
- if(CollUtil.isNotEmpty(userRoleList)){
- sysUserRoleService.saveBatch(userRoleList);
- }
- return R.ok(entity);
- }
- @ApiOperation(value = "注册")
- @PostMapping("/save")
- @Transactional
- 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);
- // 获取拥有的权限菜单
- Set<String> menuList = sysRoleService.listAuthMenuByUserId(userDetailBO.getId());
- userDetailBO.setMenuCodeList(CollUtil.newArrayList(menuList));
- // 抹除密码
- userDetailBO.setPassword(null);
- // 保存到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,"修改失败");
- }
- @ApiOperation(value = "获取账号信息")
- @GetMapping("/getAdmin")
- public ResponseModel<TAdmin> getAdmin(String id) {
- TAdmin tAdmin = tAdminService.getById(id);
- return R.ok(tAdmin);
- }
- }
|