|
@@ -2,6 +2,7 @@ package shop.alien.lawyer.service.impl;
|
|
|
|
|
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
|
|
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
|
|
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
|
|
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
@@ -12,21 +13,21 @@ import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
import org.springframework.util.CollectionUtils;
|
|
import org.springframework.util.CollectionUtils;
|
|
|
import shop.alien.entity.result.R;
|
|
import shop.alien.entity.result.R;
|
|
|
-import shop.alien.entity.store.LawFirm;
|
|
|
|
|
|
|
+
|
|
|
import shop.alien.entity.store.LawyerServiceArea;
|
|
import shop.alien.entity.store.LawyerServiceArea;
|
|
|
import shop.alien.entity.store.LawyerUser;
|
|
import shop.alien.entity.store.LawyerUser;
|
|
|
-import shop.alien.entity.store.StoreUser;
|
|
|
|
|
|
|
+
|
|
|
import shop.alien.entity.store.dto.LawyerUserDto;
|
|
import shop.alien.entity.store.dto.LawyerUserDto;
|
|
|
import shop.alien.entity.store.vo.LawyerUserVo;
|
|
import shop.alien.entity.store.vo.LawyerUserVo;
|
|
|
import shop.alien.lawyer.config.BaseRedisService;
|
|
import shop.alien.lawyer.config.BaseRedisService;
|
|
|
import shop.alien.lawyer.service.LawyerUserLogInService;
|
|
import shop.alien.lawyer.service.LawyerUserLogInService;
|
|
|
-import shop.alien.mapper.LawFirmMapper;
|
|
|
|
|
|
|
+import shop.alien.lawyer.service.LawyerUserService;
|
|
|
import shop.alien.mapper.LawyerServiceAreaMapper;
|
|
import shop.alien.mapper.LawyerServiceAreaMapper;
|
|
|
import shop.alien.mapper.LawyerUserMapper;
|
|
import shop.alien.mapper.LawyerUserMapper;
|
|
|
import shop.alien.util.common.JwtUtil;
|
|
import shop.alien.util.common.JwtUtil;
|
|
|
|
|
|
|
|
import java.util.*;
|
|
import java.util.*;
|
|
|
-import java.util.stream.Collectors;
|
|
|
|
|
|
|
+
|
|
|
import java.time.ZoneId;
|
|
import java.time.ZoneId;
|
|
|
import java.time.format.DateTimeFormatter;
|
|
import java.time.format.DateTimeFormatter;
|
|
|
|
|
|
|
@@ -53,7 +54,7 @@ public class LawyerUserLogInServiceImpl extends ServiceImpl<LawyerUserMapper, La
|
|
|
private final BaseRedisService baseRedisService;
|
|
private final BaseRedisService baseRedisService;
|
|
|
private final LawyerUserMapper lawyerUserMapper;
|
|
private final LawyerUserMapper lawyerUserMapper;
|
|
|
private final LawyerServiceAreaMapper lawyerServiceAreaMapper;
|
|
private final LawyerServiceAreaMapper lawyerServiceAreaMapper;
|
|
|
- private final LawFirmMapper lawFirmMapper;
|
|
|
|
|
|
|
+ private final LawyerUserService lawyerUserService;
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
* token
|
|
* token
|
|
@@ -96,6 +97,8 @@ public class LawyerUserLogInServiceImpl extends ServiceImpl<LawyerUserMapper, La
|
|
|
tokenMap.put("passType", lawyerUser.getPassType().toString());
|
|
tokenMap.put("passType", lawyerUser.getPassType().toString());
|
|
|
lawyerUserVo.setToken(JwtUtil.createJWT("lawyer_" + lawyerUser.getPhone(), lawyerUser.getName(), JSONObject.toJSONString(tokenMap), effectiveTimeIntLong));
|
|
lawyerUserVo.setToken(JwtUtil.createJWT("lawyer_" + lawyerUser.getPhone(), lawyerUser.getName(), JSONObject.toJSONString(tokenMap), effectiveTimeIntLong));
|
|
|
baseRedisService.setString("lawyer_" + lawyerUser.getPhone(), lawyerUserVo.getToken());
|
|
baseRedisService.setString("lawyer_" + lawyerUser.getPhone(), lawyerUserVo.getToken());
|
|
|
|
|
+ log.debug("token:-------------------------------------------");
|
|
|
|
|
+ log.debug(lawyerUserVo.getToken());
|
|
|
return R.data(lawyerUserVo);
|
|
return R.data(lawyerUserVo);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -175,6 +178,85 @@ public class LawyerUserLogInServiceImpl extends ServiceImpl<LawyerUserMapper, La
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|
|
|
|
|
+ public R<LawyerUserVo> completeProfile(LawyerUserDto lawyerUserDto) {
|
|
|
|
|
+ if (lawyerUserDto == null || StringUtils.isEmpty(lawyerUserDto.getPhone())) {
|
|
|
|
|
+ return R.fail("手机号不能为空");
|
|
|
|
|
+ }
|
|
|
|
|
+ LawyerUser lawyerUser = lawyerUserMapper.selectOne(new LambdaQueryWrapper<LawyerUser>()
|
|
|
|
|
+ .eq(LawyerUser::getPhone, lawyerUserDto.getPhone())
|
|
|
|
|
+ .eq(LawyerUser::getDeleteFlag, 0)
|
|
|
|
|
+ .last("limit 1"));
|
|
|
|
|
+ if (ObjectUtils.isEmpty(lawyerUser)) {
|
|
|
|
|
+ return R.fail("当前账号不存在,请先登录");
|
|
|
|
|
+ }
|
|
|
|
|
+ if (lawyerUser.getStatus() != null && lawyerUser.getStatus() == 0) {
|
|
|
|
|
+ return R.fail("账号被禁用");
|
|
|
|
|
+ }
|
|
|
|
|
+ if (lawyerUser.getLogoutFlag() != null && LawyerUser.LOGOUT_FLAG_DONE == lawyerUser.getLogoutFlag()) {
|
|
|
|
|
+ return R.fail("账号已注销");
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ String certNo = lawyerUserDto.getLawyerCertificateNo();
|
|
|
|
|
+ if (certNo != null && !certNo.trim().isEmpty()) {
|
|
|
|
|
+ certNo = certNo.trim();
|
|
|
|
|
+ LawyerUser certDup = lawyerUserMapper.selectOne(new LambdaQueryWrapper<LawyerUser>()
|
|
|
|
|
+ .eq(LawyerUser::getLawyerCertificateNo, certNo)
|
|
|
|
|
+ .eq(LawyerUser::getDeleteFlag, 0)
|
|
|
|
|
+ .ne(LawyerUser::getId, lawyerUser.getId())
|
|
|
|
|
+ .last("limit 1"));
|
|
|
|
|
+ if (certDup != null) {
|
|
|
|
|
+ return R.fail("该律师执业证号已被使用,无法重复注册");
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ LawyerUser update = new LawyerUser();
|
|
|
|
|
+ BeanUtils.copyProperties(lawyerUserDto, update);
|
|
|
|
|
+ update.setId(lawyerUser.getId());
|
|
|
|
|
+ update.setPhone(lawyerUser.getPhone());
|
|
|
|
|
+ update.setLogoutFlag(lawyerUser.getLogoutFlag());
|
|
|
|
|
+ update.setStatus(lawyerUser.getStatus());
|
|
|
|
|
+ update.setDeleteFlag(lawyerUser.getDeleteFlag());
|
|
|
|
|
+ if (certNo != null && !certNo.isEmpty()) {
|
|
|
|
|
+ update.setLawyerCertificateNo(certNo);
|
|
|
|
|
+ }
|
|
|
|
|
+ if (update.getName() != null && !update.getName().isEmpty()) {
|
|
|
|
|
+ update.setNickName(update.getName().charAt(0) + "律师");
|
|
|
|
|
+ }
|
|
|
|
|
+ if (update.getPassType() == null) {
|
|
|
|
|
+ update.setPassType(lawyerUser.getPassType() != null ? lawyerUser.getPassType() : 2);
|
|
|
|
|
+ }
|
|
|
|
|
+ if (update.getIsOnline() == null) {
|
|
|
|
|
+ update.setIsOnline(lawyerUser.getIsOnline() != null ? lawyerUser.getIsOnline() : 1);
|
|
|
|
|
+ }
|
|
|
|
|
+ if (update.getIsRecommended() == null) {
|
|
|
|
|
+ update.setIsRecommended(0);
|
|
|
|
|
+ }
|
|
|
|
|
+ if (update.getOrderReceivingStatus() == null) {
|
|
|
|
|
+ update.setOrderReceivingStatus(1);
|
|
|
|
|
+ }
|
|
|
|
|
+ lawyerUserMapper.updateById(update);
|
|
|
|
|
+
|
|
|
|
|
+ List<Integer> problemScenarioIds = lawyerUserDto.getProblemScenarioIds();
|
|
|
|
|
+ if (!CollectionUtils.isEmpty(problemScenarioIds)) {
|
|
|
|
|
+ UpdateWrapper<LawyerServiceArea> deleteWrapper = new UpdateWrapper<>();
|
|
|
|
|
+ deleteWrapper.eq("lawyer_user_id", lawyerUser.getId())
|
|
|
|
|
+ .set("delete_flag", 1)
|
|
|
|
|
+ .set("updated_time", new Date());
|
|
|
|
|
+ lawyerServiceAreaMapper.update(null, deleteWrapper);
|
|
|
|
|
+ for (int i = 0; i < problemScenarioIds.size(); i++) {
|
|
|
|
|
+ LawyerServiceArea lawyerServiceArea = new LawyerServiceArea();
|
|
|
|
|
+ lawyerServiceArea.setLawyerUserId(lawyerUser.getId());
|
|
|
|
|
+ lawyerServiceArea.setProblemScenarioId(problemScenarioIds.get(i));
|
|
|
|
|
+ lawyerServiceArea.setSortOrder(i);
|
|
|
|
|
+ lawyerServiceArea.setCreatedTime(new Date());
|
|
|
|
|
+ lawyerServiceAreaMapper.insert(lawyerServiceArea);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ return lawyerUserService.getLawyerInfo(lawyerUser.getId());
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ @Override
|
|
|
public R checkMsgCode(LawyerUserDto lawyerUserDto) {
|
|
public R checkMsgCode(LawyerUserDto lawyerUserDto) {
|
|
|
String string = baseRedisService.getString("verification_lawyer_" + lawyerUserDto.getPhone());
|
|
String string = baseRedisService.getString("verification_lawyer_" + lawyerUserDto.getPhone());
|
|
|
if (StringUtils.isNotEmpty(string)) {
|
|
if (StringUtils.isNotEmpty(string)) {
|
|
@@ -204,6 +286,66 @@ public class LawyerUserLogInServiceImpl extends ServiceImpl<LawyerUserMapper, La
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|
|
|
|
|
+ public R<LawyerUserVo> login(LawyerUserDto lawyerUserDto) {
|
|
|
|
|
+ if (lawyerUserDto == null || StringUtils.isEmpty(lawyerUserDto.getPhone())) {
|
|
|
|
|
+ return R.fail("手机号不能为空");
|
|
|
|
|
+ }
|
|
|
|
|
+ boolean passwordLogin = Boolean.TRUE.equals(lawyerUserDto.getIsPassword());
|
|
|
|
|
+ LawyerUser lawyerUser = findActiveLawyerByPhone(lawyerUserDto.getPhone());
|
|
|
|
|
+ if (lawyerUser == null) {
|
|
|
|
|
+ if (passwordLogin) {
|
|
|
|
|
+ return R.fail("当前账号不存在,请先去注册账号");
|
|
|
|
|
+ }
|
|
|
|
|
+ lawyerUser = createLawyerOnLogin(lawyerUserDto.getPhone());
|
|
|
|
|
+ }
|
|
|
|
|
+ R<LawyerUser> loginCheck = lawyerUserService.checkLogin(lawyerUserDto.getPhone());
|
|
|
|
|
+ if ("账号已注销".equals(loginCheck.getMsg())) {
|
|
|
|
|
+ return R.fail("账号已注销");
|
|
|
|
|
+ }
|
|
|
|
|
+ if ("账号已被禁用".equals(loginCheck.getMsg())) {
|
|
|
|
|
+ return R.fail("账号被禁用");
|
|
|
|
|
+ }
|
|
|
|
|
+ LawyerUser onlineUpdate = new LawyerUser();
|
|
|
|
|
+ onlineUpdate.setId(lawyerUser.getId());
|
|
|
|
|
+ onlineUpdate.setIsOnline(1);
|
|
|
|
|
+ lawyerUserMapper.updateById(onlineUpdate);
|
|
|
|
|
+ if (passwordLogin) {
|
|
|
|
|
+ return checkPassword(lawyerUser, lawyerUserDto.getPassword());
|
|
|
|
|
+ }
|
|
|
|
|
+ return createToKen(lawyerUser);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ private LawyerUser findActiveLawyerByPhone(String phone) {
|
|
|
|
|
+ return lawyerUserMapper.selectOne(new LambdaQueryWrapper<LawyerUser>()
|
|
|
|
|
+ .eq(LawyerUser::getPhone, phone)
|
|
|
|
|
+ .eq(LawyerUser::getDeleteFlag, 0)
|
|
|
|
|
+ .orderByDesc(LawyerUser::getCreatedTime)
|
|
|
|
|
+ .last("LIMIT 1"));
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ private LawyerUser createLawyerOnLogin(String phone) {
|
|
|
|
|
+ LawyerUser user = new LawyerUser();
|
|
|
|
|
+ user.setIsOnline(1);
|
|
|
|
|
+ user.setPhone(phone);
|
|
|
|
|
+ user.setName(phone);
|
|
|
|
|
+ user.setPassType(2);
|
|
|
|
|
+ lawyerUserMapper.insert(user);
|
|
|
|
|
+ return user;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ private R<LawyerUserVo> checkPassword(LawyerUser lawyerUser, String password) {
|
|
|
|
|
+ if (StringUtils.isEmpty(password)) {
|
|
|
|
|
+ return R.fail("密码不能为空");
|
|
|
|
|
+ }
|
|
|
|
|
+ if (StringUtils.isEmpty(lawyerUser.getPassword())) {
|
|
|
|
|
+ return R.fail("尚未设置登录密码,请使用验证码登录或设置密码");
|
|
|
|
|
+ }
|
|
|
|
|
+ return Objects.equals(password, lawyerUser.getPassword())
|
|
|
|
|
+ ? createToKen(lawyerUser)
|
|
|
|
|
+ : R.fail("密码错误");
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ @Override
|
|
|
public R logout(LawyerUserDto lawyerUserDto) {
|
|
public R logout(LawyerUserDto lawyerUserDto) {
|
|
|
LawyerUser lawyerUser = new LawyerUser();
|
|
LawyerUser lawyerUser = new LawyerUser();
|
|
|
lawyerUser.setId(lawyerUserDto.getId());
|
|
lawyerUser.setId(lawyerUserDto.getId());
|
|
@@ -224,11 +366,9 @@ public class LawyerUserLogInServiceImpl extends ServiceImpl<LawyerUserMapper, La
|
|
|
LawyerUserVo vo = new LawyerUserVo();
|
|
LawyerUserVo vo = new LawyerUserVo();
|
|
|
if (ObjectUtils.isNotEmpty(lawyerUser)) {
|
|
if (ObjectUtils.isNotEmpty(lawyerUser)) {
|
|
|
LawyerUser update = new LawyerUser();
|
|
LawyerUser update = new LawyerUser();
|
|
|
- update.setPassword(lawyerUserDto.getPassword());
|
|
|
|
|
update.setId(lawyerUser.getId());
|
|
update.setId(lawyerUser.getId());
|
|
|
|
|
+ update.setPassword(lawyerUserDto.getPassword());
|
|
|
lawyerUserMapper.updateById(update);
|
|
lawyerUserMapper.updateById(update);
|
|
|
- BeanUtils.copyProperties(lawyerUser, vo);
|
|
|
|
|
- return createToKen(lawyerUser);
|
|
|
|
|
}
|
|
}
|
|
|
return R.data(ObjectUtils.isNotEmpty(lawyerUser) ? vo : "null");
|
|
return R.data(ObjectUtils.isNotEmpty(lawyerUser) ? vo : "null");
|
|
|
}else {
|
|
}else {
|