This commit is contained in:
张良(004796)
2024-04-19 18:33:45 +08:00
parent 115eebac8e
commit 10486e593a
19 changed files with 225 additions and 23 deletions

View File

@@ -2,6 +2,7 @@ package com.ruoyi.xq.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.xq.domain.AreaCode;
import com.ruoyi.xq.dto.admin.areacode.AreaCodeAdminTree;
import com.ruoyi.xq.dto.app.areacode.AreaCodeQuery;
import com.ruoyi.xq.dto.app.areacode.AreaCodeTree;
@@ -17,6 +18,8 @@ public interface AreaCodeService extends IService<AreaCode> {
List<AreaCode> listAreaCode(AreaCodeQuery query);
List<AreaCodeAdminTree> treeAdmin();
List<AreaCodeTree> tree();
}

View File

@@ -6,11 +6,14 @@ import com.ruoyi.common.core.domain.PageQuery;
import com.ruoyi.xq.domain.User;
import com.ruoyi.xq.dto.admin.user.FullUserVo;
import com.ruoyi.xq.dto.admin.user.UserAdminVo;
import com.ruoyi.xq.dto.admin.user.req.AddUserReq;
import com.ruoyi.xq.dto.admin.user.req.UpdateMobileAdminReq;
import com.ruoyi.xq.dto.admin.user.req.UpdateUserReq;
import com.ruoyi.xq.dto.app.user.HomePageReq;
import com.ruoyi.xq.dto.app.user.vo.HomeUserListVo;
import com.ruoyi.xq.dto.app.user.vo.HomeUserVo;
import com.ruoyi.xq.dto.common.user.MinUser;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
@@ -49,4 +52,11 @@ public interface UserService extends IService<User> {
boolean unlock(Long id);
FullUserVo fullUserAdmin(Long userId);
User getByMobile(String mobile);
void saveUser(AddUserReq bo);
@Transactional(rollbackFor = Exception.class)
void updateBaseUser(UpdateUserReq updateUserReq);
}

View File

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.utils.BeanConvertUtil;
import com.ruoyi.xq.domain.AreaCode;
import com.ruoyi.xq.dto.admin.areacode.AreaCodeAdminTree;
import com.ruoyi.xq.dto.app.areacode.AreaCodeQuery;
import com.ruoyi.xq.dto.app.areacode.AreaCodeTree;
import com.ruoyi.xq.mapper.AreaCodeMapper;
@@ -12,7 +13,6 @@ import com.ruoyi.xq.service.AreaCodeService;
import org.springframework.stereotype.Service;
import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;
/**
@@ -32,6 +32,35 @@ public class AreaCodeServiceImpl extends ServiceImpl<AreaCodeMapper,AreaCode> im
return list;
}
@Override
public List<AreaCodeAdminTree> treeAdmin() {
List<AreaCode> list = this.list();
List<AreaCodeAdminTree> nodeList = list.stream().map(i -> {
AreaCodeAdminTree areaCodeAdminTree = new AreaCodeAdminTree();
areaCodeAdminTree.setId(i.getCode());
areaCodeAdminTree.setLabel(i.getName());
areaCodeAdminTree.setParentId(i.getPcode());
return areaCodeAdminTree;
}).collect(Collectors.toList());
Map<Integer, AreaCodeAdminTree> nodeMap = new HashMap<>();
Set<AreaCodeAdminTree> roots = new HashSet<>();
// 遍历列表构建节点映射表
for (AreaCodeAdminTree node : nodeList) {
nodeMap.put(node.getId(), node);
if (node.getParentId() == 0 || !nodeMap.containsKey(node.getParentId())) {
roots.add(node);
}
}
// 建立父子关系
for (AreaCodeAdminTree node : nodeList) {
if (nodeMap.containsKey(node.getParentId())) {
AreaCodeAdminTree parentNode = nodeMap.get(node.getParentId());
parentNode.addChild(node);
}
}
return new ArrayList<>(roots);
}
@Override
public List<AreaCodeTree> tree() {
List<AreaCode> list = this.list();

View File

@@ -2,6 +2,7 @@ package com.ruoyi.xq.service.impl;
import cn.dev33.satoken.secure.BCrypt;
import cn.hutool.core.util.PhoneUtil;
import cn.hutool.extra.spring.SpringUtil;
import com.alibaba.fastjson2.JSON;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -14,7 +15,9 @@ import com.ruoyi.common.utils.BeanConvertUtil;
import com.ruoyi.xq.domain.*;
import com.ruoyi.xq.dto.admin.user.FullUserVo;
import com.ruoyi.xq.dto.admin.user.UserAdminVo;
import com.ruoyi.xq.dto.admin.user.req.AddUserReq;
import com.ruoyi.xq.dto.admin.user.req.UpdateMobileAdminReq;
import com.ruoyi.xq.dto.admin.user.req.UpdateUserReq;
import com.ruoyi.xq.dto.app.user.HomePageReq;
import com.ruoyi.xq.dto.app.user.vo.HomeUserListVo;
import com.ruoyi.xq.dto.app.user.vo.HomeUserVo;
@@ -22,6 +25,8 @@ import com.ruoyi.xq.dto.common.user.MinUser;
import com.ruoyi.xq.enums.ErrorEnum;
import com.ruoyi.xq.enums.common.SystemConfigEnum;
import com.ruoyi.xq.enums.userinfo.UserGenderEnum;
import com.ruoyi.xq.lock.LockKey;
import com.ruoyi.xq.manager.LoginManager;
import com.ruoyi.xq.manager.SystemConfigManager;
import com.ruoyi.xq.mapper.UserMapper;
import com.ruoyi.xq.service.*;
@@ -32,8 +37,11 @@ import com.ruoyi.yunxin.req.UpdateUinfoReq;
import com.ruoyi.yunxin.resp.YxCommonR;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.redisson.api.RLock;
import org.redisson.api.RedissonClient;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.ArrayList;
@@ -68,6 +76,12 @@ public class UserServiceImpl extends ServiceImpl<UserMapper,User> implements Use
private UserAuthService userAuthService;
@Autowired
private UserStatusService userStatusService;
@Autowired
private UserExtendService userExtendService;
@Autowired
private RedissonClient redissonClient;
@Autowired
private AreaCodeService areaCodeService;
@Override
public MinUser getMinUserById(Long userId){
@@ -223,7 +237,7 @@ public class UserServiceImpl extends ServiceImpl<UserMapper,User> implements Use
if(StringUtils.isNotEmpty(vipQuery.getProfession()) ||
vipQuery.getAnnualIncome() != null || vipQuery.getZodiac() != null ||
vipQuery.getSign() != null || vipQuery.getChildStatus() != null || vipQuery.getHousingStatus() != null ||
vipQuery.getCarStatus() != null || StringUtils.isNotEmpty(vipQuery.getAddressCode())){
vipQuery.getCarStatus() != null || vipQuery.getAddressCode() != null){
if(userId == null){
throw new ServiceException(ErrorEnum.VIP_AUTH);
}
@@ -290,6 +304,82 @@ public class UserServiceImpl extends ServiceImpl<UserMapper,User> implements Use
vo.setUserLogin(userLogin);
List<UserPictures> userPicturesList = userPicturesService.listByUserIdSuccess(userId);
vo.setUserPicturesList(userPicturesList);
UserExtend userExtend = userExtendService.getByUserId(userId);
vo.setAccount(userExtend);
return vo;
}
@Override
public User getByMobile(String mobile){
return this.getOne(Wrappers.lambdaQuery(User.class).eq(User::getMobile, mobile)
.last("limit 1"));
}
@Autowired
private LoginManager loginManager;
@Override
@Transactional(rollbackFor = Exception.class)
public void saveUser(AddUserReq bo) {
User user = this.getByMobile(bo.getMobile());
if(user != null){
throw new ServiceException("手机号已存在!");
}
String lockKey = LockKey.getRegisterLockKey(bo.getMobile());
RLock lock = redissonClient.getLock(lockKey);
if(lock.isLocked()){
throw new ServiceException("您点击太快了");
}
lock.lock();
try {
user = this.getByMobile(bo.getMobile());
if(user != null){
throw new ServiceException("手机号已存在!");
}
user = loginManager.registerUser(bo.getMobile(), null);
UpdateUserReq updateUser = BeanConvertUtil.convertTo(bo, UpdateUserReq::new);
updateUser.setUserId(user.getId());
UserService userService = SpringUtil.getBean(UserService.class);
userService.updateBaseUser(updateUser);
}finally {
lock.unlock();
}
}
@Override
@Transactional(rollbackFor = Exception.class)
public void updateBaseUser(UpdateUserReq updateUserReq){
User user = this.getById(updateUserReq.getUserId());
if(user == null){
throw new ServiceException("用户不存在!");
}
User updateUser = new User();
updateUser.setId(user.getId());
updateUser.setType(updateUserReq.getUserType());
updateUser.setNickname(updateUserReq.getNickname());
updateUser.setAvatar(updateUserReq.getAvatar());
updateUser.setGender(updateUserReq.getGender());
updateUser.setHeight(updateUserReq.getHeight());
updateUser.setWeight(updateUserReq.getWeight());
updateUser.setBirthday(updateUserReq.getBirthday());
if(updateUserReq.getResidenceCode() != null){
updateUser.setResidenceCode(updateUserReq.getResidenceCode());
AreaCode areaCode = areaCodeService.getById(updateUserReq.getResidenceCode());
updateUser.setResidenceCode(updateUserReq.getResidenceCode());
updateUser.setResidenceName(areaCode.getName());
updateUser.setResidenceCityCode(areaCode.getPcode());
updateUser.setResidenceCityName(areaCode.getPname());
}
if(updateUserReq.getAddressCode() != null){
AreaCode areaCode = areaCodeService.getById(updateUserReq.getAddressCode());
updateUser.setAddressCode(updateUserReq.getAddressCode());
updateUser.setAddressName(areaCode.getFullname());
}
updateUser.setEducation(updateUserReq.getEducation());
updateUser.setMarriage(updateUserReq.getMarriage());
updateUser.setProfession(updateUserReq.getProfession());
updateUser.setAnnualIncome(updateUserReq.getAnnualIncome());
this.updateById(updateUser);
}
}