Переглянути джерело

律师端登录注册修改密码校验验证码

jyc 4 тижнів тому
батько
коміт
f909653f72

+ 0 - 1
alien-entity/src/main/java/shop/alien/entity/store/dto/LawyerUserDto.java

@@ -20,7 +20,6 @@ import java.util.List;
  */
 @Data
 @JsonInclude
-@ApiModel(value = "LawyerUserVo对象", description = "律师用户视图对象")
 public class LawyerUserDto implements Serializable {
 
 

+ 6 - 3
alien-gateway/src/main/java/shop/alien/gateway/controller/LawyerUserLogInController.java

@@ -1,7 +1,10 @@
 package shop.alien.gateway.controller;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import io.swagger.annotations.*;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiOperationSupport;
+import io.swagger.annotations.ApiSort;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.web.bind.annotation.*;
@@ -10,7 +13,7 @@ import shop.alien.entity.store.LawyerUser;
 import shop.alien.entity.store.dto.LawyerUserDto;
 import shop.alien.entity.store.vo.LawyerUserVo;
 import shop.alien.gateway.mapper.LawyerUserMapper;
-import shop.alien.gateway.service.LawyerUserService;
+import shop.alien.gateway.service.LawyerUserLogInService;
 
 import java.util.Objects;
 import java.util.Optional;
@@ -30,7 +33,7 @@ import java.util.Optional;
 @RequiredArgsConstructor
 public class LawyerUserLogInController {
 
-    private final LawyerUserService lawyerUserService;
+    private final LawyerUserLogInService lawyerUserService;
     private final LawyerUserMapper lawyerUserMapper;
 
     @ApiOperation("律师用户注册")

+ 1 - 1
alien-gateway/src/main/java/shop/alien/gateway/service/LawyerUserService.java → alien-gateway/src/main/java/shop/alien/gateway/service/LawyerUserLogInService.java

@@ -14,7 +14,7 @@ import shop.alien.entity.store.vo.StoreUserVo;
  * @author ssk
  * @since 2024-12-11
  */
-public interface LawyerUserService extends IService<LawyerUser> {
+public interface LawyerUserLogInService extends IService<LawyerUser> {
 
     /**
      * 创建token

+ 2 - 2
alien-gateway/src/main/java/shop/alien/gateway/service/impl/LawyerUserServiceImpl.java → alien-gateway/src/main/java/shop/alien/gateway/service/impl/LawyerUserLogInServiceImpl.java

@@ -20,7 +20,7 @@ import shop.alien.gateway.config.BaseRedisService;
 import shop.alien.gateway.mapper.LawFirmMapper;
 import shop.alien.gateway.mapper.LawyerServiceAreaMapper;
 import shop.alien.gateway.mapper.LawyerUserMapper;
-import shop.alien.gateway.service.LawyerUserService;
+import shop.alien.gateway.service.LawyerUserLogInService;
 import shop.alien.util.common.JwtUtil;
 
 import java.util.*;
@@ -35,7 +35,7 @@ import java.util.stream.Collectors;
 @Transactional
 @Service
 @RequiredArgsConstructor
-public class LawyerUserServiceImpl extends ServiceImpl<LawyerUserMapper, LawyerUser> implements LawyerUserService {
+public class LawyerUserLogInServiceImpl extends ServiceImpl<LawyerUserMapper, LawyerUser> implements LawyerUserLogInService {
 
     @Value("${jwt.expiration-time}")
     private String effectiveTime;

+ 102 - 0
alien-lawyer/src/main/java/shop/alien/lawyer/controller/LawyerUserLogInController.java

@@ -0,0 +1,102 @@
+package shop.alien.lawyer.controller;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiOperationSupport;
+import io.swagger.annotations.ApiSort;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.*;
+import shop.alien.entity.result.R;
+import shop.alien.entity.store.LawyerUser;
+import shop.alien.entity.store.dto.LawyerUserDto;
+import shop.alien.entity.store.vo.LawyerUserVo;
+import shop.alien.lawyer.service.LawyerUserLogInService;
+import shop.alien.mapper.LawyerUserMapper;
+
+import java.util.Objects;
+import java.util.Optional;
+
+/**
+ * 门店用户 前端控制器
+ *
+ * @author ssk
+ * @since 2024-12-11
+ */
+@Slf4j
+@Api(tags = {"律师用户"})
+@ApiSort(8)
+@CrossOrigin
+@RestController
+@RequestMapping("/lawyer/user")
+@RequiredArgsConstructor
+public class LawyerUserLogInController {
+
+    private final LawyerUserLogInService lawyerUserService;
+    private final LawyerUserMapper lawyerUserMapper;
+
+    @ApiOperation("律师用户注册")
+    @ApiOperationSupport(order = 1)
+    @PostMapping("/register")
+    public R<LawyerUserVo> register(@RequestBody LawyerUserDto lawyerUserDto) {
+        log.info("LawyerUserLogInController.login?lawyerUserDto={}", lawyerUserDto);
+        return lawyerUserService.logIn(lawyerUserDto);
+    }
+
+    @ApiOperation("律师用户验证码校验")
+    @ApiOperationSupport(order = 2)
+    @PostMapping("/checkMsgCode")
+    public R checkMsgCode(@RequestBody LawyerUserDto lawyerUserDto) {
+        log.info("LawyerUserLogInController.checkMsgCode?lawyerUserDto={}", lawyerUserDto);
+        return lawyerUserService.checkMsgCode(lawyerUserDto);
+    }
+
+    @ApiOperation("律师用户登录")
+    @ApiOperationSupport(order = 3)
+    @GetMapping("/login")
+    public R<LawyerUserVo> login(@RequestBody LawyerUserDto lawyerUserDto) {
+        log.info("LawyerUserLogInController.login?lawyerUserDto={}", lawyerUserDto);
+        LawyerUser lawyerUser = lawyerUserMapper.selectOne(new LambdaQueryWrapper<LawyerUser>()
+                .eq(LawyerUser::getPhone, lawyerUserDto.getPhone()));
+        if (null == lawyerUser) {
+            return R.fail("当前账号不存在,请先去注册账号!");
+        }
+        if (lawyerUser.getStatus() == 0) {
+            return R.fail("账号被禁用");
+        }
+        return Optional.ofNullable(lawyerUser).
+                map(user -> lawyerUserDto.getIsPassword() ? checkPassword(user, lawyerUserDto.getPassWord()) : lawyerUserService.createToKen(user)).
+                orElseGet(() -> R.fail("手机号不存在"));
+    }
+
+    @ApiOperation("律师用户修改密码")
+    @ApiOperationSupport(order = 4)
+    @PostMapping("/updatePassWord")
+    public R updatePassWord(@RequestBody LawyerUserDto lawyerUserDto) {
+        log.info("LawyerUserLogInController.updatePassWord?lawyerUserDto={}", lawyerUserDto);
+        try {
+            LawyerUser lawyerUser = lawyerUserMapper.selectOne(new LambdaQueryWrapper<LawyerUser>()
+                    .eq(LawyerUser::getPhone, lawyerUserDto.getPhone()));
+            if (null == lawyerUser) {
+                return R.fail("当前账号不存在,请先去注册账号!");
+            }
+            if (lawyerUser.getStatus() == 0) {
+                return R.fail("账号被禁用");
+            }
+            LawyerUser update = new LawyerUser();
+            update.setPassword(lawyerUserDto.getPassWord());
+            update.setId(lawyerUser.getId());
+            lawyerUserMapper.updateById(update);
+            return R.success("修改成功");
+        }catch (Exception e){
+            return R.fail("修改密码失败");
+        }
+    }
+
+    private R<LawyerUserVo> checkPassword(LawyerUser lawyerUser, String password) {
+        return Objects.equals(password, lawyerUser.getPassword())
+                ? lawyerUserService.createToKen(lawyerUser)
+                : R.fail("密码错误");
+    }
+}

+ 25 - 0
alien-lawyer/src/main/java/shop/alien/lawyer/service/LawyerUserLogInService.java

@@ -0,0 +1,25 @@
+package shop.alien.lawyer.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import shop.alien.entity.result.R;
+import shop.alien.entity.store.LawyerUser;
+import shop.alien.entity.store.dto.LawyerUserDto;
+import shop.alien.entity.store.vo.LawyerUserVo;
+
+/**
+ * 二期-门店用户 服务类
+ *
+ * @author ssk
+ * @since 2024-12-11
+ */
+public interface LawyerUserLogInService extends IService<LawyerUser> {
+
+    /**
+     * 创建token
+     * @return
+     */
+    R<LawyerUserVo> createToKen(LawyerUser lawyerUser);
+    R<LawyerUserVo> logIn(LawyerUserDto lawyerUserDto);
+    R checkMsgCode(LawyerUserDto lawyerUserDto);
+
+}

+ 158 - 0
alien-lawyer/src/main/java/shop/alien/lawyer/service/impl/LawyerUserLogInServiceImpl.java

@@ -0,0 +1,158 @@
+package shop.alien.lawyer.service.impl;
+
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import lombok.RequiredArgsConstructor;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import shop.alien.entity.result.R;
+import shop.alien.entity.store.LawFirm;
+import shop.alien.entity.store.LawyerServiceArea;
+import shop.alien.entity.store.LawyerUser;
+import shop.alien.entity.store.dto.LawyerUserDto;
+import shop.alien.entity.store.vo.LawyerUserVo;
+import shop.alien.lawyer.config.BaseRedisService;
+import shop.alien.lawyer.service.LawyerUserLogInService;
+import shop.alien.mapper.LawFirmMapper;
+import shop.alien.mapper.LawyerServiceAreaMapper;
+import shop.alien.mapper.LawyerUserMapper;
+import shop.alien.util.common.JwtUtil;
+
+import java.util.*;
+import java.util.stream.Collectors;
+
+/**
+ * 二期-门店用户 服务实现类
+ *
+ * @author ssk
+ * @since 2024-12-11
+ */
+@Transactional
+@Service
+@RequiredArgsConstructor
+public class LawyerUserLogInServiceImpl extends ServiceImpl<LawyerUserMapper, LawyerUser> implements LawyerUserLogInService {
+
+    @Value("${jwt.expiration-time}")
+    private String effectiveTime;
+
+    /**
+     * 设定初始化默认密码
+     */
+
+    private final BaseRedisService baseRedisService;
+    private final LawyerUserMapper lawyerUserMapper;
+    private final LawyerServiceAreaMapper lawyerServiceAreaMapper;
+    private final LawFirmMapper lawFirmMapper;
+
+    /**
+     * token
+     *
+     * @param lawyerUser
+     * @return
+     */
+    @Override
+    public R<LawyerUserVo> createToKen(LawyerUser lawyerUser) {
+        int effectiveTimeInt = Integer.parseInt(effectiveTime.substring(0, effectiveTime.length() - 1));
+        String effectiveTimeUnit = effectiveTime.substring(effectiveTime.length() - 1);
+        long effectiveTimeIntLong = 0L;
+        switch (effectiveTimeUnit) {
+            case "s": {
+                effectiveTimeIntLong = effectiveTimeInt * 1000L;
+                break;
+            }
+            case "m": {
+                effectiveTimeIntLong = effectiveTimeInt * 60L * 1000L;
+                break;
+            }
+            case "h": {
+                effectiveTimeIntLong = effectiveTimeInt * 60L * 60L * 1000L;
+                break;
+            }
+            case "d": {
+                effectiveTimeIntLong = effectiveTimeInt * 24L * 60L * 60L * 1000L;
+                break;
+            }
+        }
+
+        LawyerUserVo lawyerUserVo = new LawyerUserVo();
+        BeanUtils.copyProperties(lawyerUser, lawyerUserVo);
+        Map<String, String> tokenMap = new HashMap<>();
+        tokenMap.put("phone", lawyerUser.getPhone());
+        tokenMap.put("userName", lawyerUser.getName());
+        tokenMap.put("userId", lawyerUser.getId().toString());
+        tokenMap.put("userType", "lawyer");
+        tokenMap.put("passType", lawyerUser.getPassType().toString());
+        lawyerUserVo.setToken(JwtUtil.createJWT("lawyer_" + lawyerUser.getPhone(), lawyerUser.getName(), JSONObject.toJSONString(tokenMap), effectiveTimeIntLong));
+        baseRedisService.setString("lawyer_" + lawyerUser.getPhone(), lawyerUserVo.getToken());
+        return R.data(lawyerUserVo);
+    }
+
+    @Override
+    public R<LawyerUserVo> logIn(LawyerUserDto lawyerUserDto) {
+        LawyerUser lawyerUser = lawyerUserMapper.selectOne(new LambdaQueryWrapper<LawyerUser>()
+                .eq(LawyerUser::getPhone, lawyerUserDto.getPhone()).last("limit 1"));
+        if (ObjectUtils.isNotEmpty(lawyerUser)) {
+            if (lawyerUser.getStatus() == 0) {
+                return R.fail("账号被禁用");
+            }
+            lawyerUser.setPassType(1);
+            return createToKen(lawyerUser);
+        }else {
+            LawyerUser user = new LawyerUser();
+            BeanUtils.copyProperties(lawyerUserDto, user);
+            user.setLogoutFlag(0);
+            user.setStatus(1);
+            user.setDeleteFlag(0);
+            user.setIsOnline(1);
+            user.setIsRecommended(0);
+            user.setOrderReceivingStatus(0);
+            lawyerUserMapper.insert(user);
+            lawyerUserDto.getProblemScenarioIds().forEach(item -> {
+                LawyerServiceArea lawyerServiceArea = new LawyerServiceArea();
+                lawyerServiceArea.setLawyerUserId(user.getId());
+                lawyerServiceArea.setProblemScenarioId(item);
+                lawyerServiceArea.setCreatedTime(new Date());
+                lawyerServiceAreaMapper.insert(lawyerServiceArea);
+            });
+            /*LambdaQueryWrapper<LawyerUser> lawFirmLambdaQueryWrapper = new LambdaQueryWrapper<>();
+            lawFirmLambdaQueryWrapper.eq(LawyerUser::getFirmId, lawyerUserDto.getFirmId());
+            List<LawyerUser> lawyerUsers = lawyerUserMapper.selectList(lawFirmLambdaQueryWrapper);
+            if (ObjectUtils.isNotEmpty(lawyerUsers)) {
+                String lawFirmIds = lawyerUsers.stream().map(u -> String.valueOf(u.getFirmId())).filter(Objects::nonNull).distinct().collect(Collectors.joining(","));
+                LawFirm lawFirm = new LawFirm();
+                lawFirm.setId(lawyerUserDto.getFirmId());
+                lawFirm.setPaymentAccount(lawFirmIds);
+                lawFirmMapper.updateById(lawFirm);
+            }*/
+            user.setPassType(0);
+            return createToKen(user);
+        }
+    }
+
+    @Override
+    public R checkMsgCode(LawyerUserDto lawyerUserDto) {
+        String string = baseRedisService.getString("verification_lawyer_" + lawyerUserDto.getPhone());
+        if (StringUtils.isNotEmpty(string)) {
+            if (lawyerUserDto.getMsgCode().equals(string)) {
+                LawyerUser lawyerUser = lawyerUserMapper.selectOne(new LambdaQueryWrapper<LawyerUser>()
+                        .eq(LawyerUser::getPhone, lawyerUserDto.getPhone()));
+                LawyerUserVo vo = new LawyerUserVo();
+                if (ObjectUtils.isNotEmpty(lawyerUser)) {
+                    BeanUtils.copyProperties(lawyerUser, vo);
+                    return createToKen(lawyerUser);
+                }
+                return R.data(ObjectUtils.isNotEmpty(lawyerUser) ? vo : "null");
+            }else {
+                return R.fail("验证码错误");
+            }
+        }else {
+            return R.fail("验证码已过期");
+        }
+    }
+
+}

+ 1 - 1
alien-lawyer/src/main/java/shop/alien/lawyer/util/AliSms.java

@@ -87,7 +87,7 @@ public class AliSms {
                 return null;
             }
             // 验证码发送成功,将验证码保存到redis中 设置60秒过期
-            baseRedisService.setString("verification_lawyer_"+phone,code.toString(),Long.valueOf(60));
+            baseRedisService.setString("verification_lawyer_"+phone,code.toString(),Long.valueOf(300));
             return code;
         } catch (Exception e) {
             log.error("AliSmsConfig.sendSms ERROR Msg={}", e.getMessage());