This commit is contained in:
77
2024-04-20 23:00:16 +08:00
parent 10486e593a
commit bd9eb02713
18 changed files with 327 additions and 54 deletions

View File

@@ -1,6 +1,7 @@
package com.ruoyi.test.business;
import com.ruoyi.test.RefreshArea;
import com.ruoyi.xq.job.JobManager;
import lombok.extern.slf4j.Slf4j;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
@@ -11,9 +12,16 @@ import org.springframework.boot.test.context.SpringBootTest;
public class RefreshTest {
@Autowired
private RefreshArea refreshArea;
@Autowired
private JobManager jobManager;
@Test
public void refresh(){
refreshArea.refreshPinyin();
}
@Test
public void updateAge(){
jobManager.updateAge();
}
}

View File

@@ -11,10 +11,15 @@ import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.core.validate.AddGroup;
import com.ruoyi.common.core.validate.EditGroup;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.utils.BeanConvertUtil;
import com.ruoyi.xq.domain.User;
import com.ruoyi.xq.domain.UserAuth;
import com.ruoyi.xq.dto.admin.user.UserAuthAdminVo;
import com.ruoyi.xq.dto.admin.userauth.UserAuthAdminInfoVo;
import com.ruoyi.xq.service.UserAuthService;
import com.ruoyi.xq.service.UserService;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
@@ -53,21 +58,12 @@ public class UserAuthController extends BaseController {
*/
@SaCheckPermission("xq:userAuth:query")
@GetMapping("/{id}")
public R<UserAuth> getInfo(@NotNull(message = "主键不能为空")
public R<UserAuthAdminInfoVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Long id) {
return R.ok(userAuthService.getById(id));
UserAuthAdminInfoVo vo = userAuthService.getAdminById(id);
return R.ok(vo);
}
/**
* 新增用户认证管理
*/
@SaCheckPermission("xq:userAuth:add")
@Log(title = "用户认证管理", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody UserAuth bo) {
return toAjax(userAuthService.save(bo));
}
/**
* 修改用户认证管理
@@ -77,19 +73,8 @@ public class UserAuthController extends BaseController {
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody UserAuth bo) {
return toAjax(userAuthService.updateById(bo));
userAuthService.updateUserAuth(bo);
return R.ok();
}
/**
* 删除用户认证管理
*
* @param ids 主键串
*/
@SaCheckPermission("xq:userAuth:remove")
@Log(title = "用户认证管理", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Long[] ids) {
return toAjax(userAuthService.removeBatchByIds(Arrays.asList(ids)));
}
}

View File

@@ -13,6 +13,7 @@ import com.ruoyi.common.core.validate.EditGroup;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.xq.domain.UserInfo;
import com.ruoyi.xq.dto.admin.user.UserInfoListAdminVo;
import com.ruoyi.xq.dto.admin.user.req.UpdateUserInfoReq;
import com.ruoyi.xq.service.UserInfoService;
import lombok.RequiredArgsConstructor;
import org.springframework.validation.annotation.Validated;
@@ -58,15 +59,11 @@ public class UserInfoController extends BaseController {
return R.ok(userInfoService.getById(id));
}
/**
* 新增用户信息
*/
@SaCheckPermission("xq:userInfo:add")
@Log(title = "用户信息", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody UserInfo bo) {
return toAjax(userInfoService.save(bo));
@SaCheckPermission("xq:userInfo:query")
@GetMapping("/userInfoUpdate")
public R<UpdateUserInfoReq> userInfoUpdate(Long userId) {
UpdateUserInfoReq res = userInfoService.getUserInfoUpdate(userId);
return R.ok(res);
}
/**
@@ -76,8 +73,9 @@ public class UserInfoController extends BaseController {
@Log(title = "用户信息", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody UserInfo bo) {
return toAjax(userInfoService.updateById(bo));
public R<Void> edit(@RequestBody UpdateUserInfoReq bo) {
userInfoService.updateInfo(bo);
return R.ok();
}
/**

View File

@@ -10,6 +10,5 @@ public class UserAuthAdminVo extends UserAuth {
*/
private String nickname;
private String mobile;
private String avatar;
}

View File

@@ -7,7 +7,7 @@ import java.time.LocalDate;
@Data
public class AddUserReq {
private String mobile;
private Integer userType;
private Integer type;
private String nickname;
private String avatar;
private Integer gender;

View File

@@ -0,0 +1,98 @@
package com.ruoyi.xq.dto.admin.user.req;
import lombok.Data;
@Data
public class UpdateUserInfoReq {
private String mobile;
private Long userId;
/**
* 毕业院校
*/
private String graduateSchool;
/**
* 兴趣爱好
*/
private String hobbys;
/**
* 是否要小孩
*/
private Integer wantChild;
/**
* 愿与对方父母同住
*/
private Integer liveAtParent;
/**
* 是否接受异地恋
*/
private Integer loveAtDistance;
/**
* 何时结婚
*/
private Integer whenMarriage;
/**
* 有没有小孩
*/
private Integer childStatus;
/**
* 家庭背景
*/
private Integer familyBackground;
/**
* 是否吸烟
*/
private Integer smokeStatus;
/**
* 是否喝酒
*/
private Integer drinkStatus;
/**
* 住房情况
*/
private Integer housingStatus;
/**
* 购车情况
*/
private Integer carStatus;
/**
* 民族
*/
private String nation;
// 一下为user
/**
* 自我描述
*/
private String remark;
/**
* 为谁征婚
*/
private Integer forPersonals;
/**
* 职业
*/
private String profession;
/**
* 年收入
*/
private Integer annualIncome;
private String nickname;
/**
* 星座
*/
private Integer sign;
/**
* 公司性质
*/
private Integer companyNature;
/**
* 体型
*/
private Integer somatotype;
/**
* 生肖
*/
private Integer zodiac;
}

View File

@@ -6,8 +6,8 @@ import java.time.LocalDate;
@Data
public class UpdateUserReq {
private Long userId;
private Integer userType;
private Long id;
private Integer type;
private String nickname;
private String avatar;
private Integer gender;

View File

@@ -0,0 +1,11 @@
package com.ruoyi.xq.dto.admin.userauth;
import com.ruoyi.xq.domain.User;
import com.ruoyi.xq.domain.UserAuth;
import lombok.Data;
@Data
public class UserAuthAdminInfoVo {
private UserAuth userAuth;
private User user;
}

View File

@@ -1,6 +1,7 @@
package com.ruoyi.xq.job;
import com.ruoyi.xq.service.SmsVerifyService;
import com.ruoyi.xq.service.UserService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
@@ -12,10 +13,12 @@ public class ClearDaysJob {
@Autowired
private SmsVerifyService smsVerifyService;
@Autowired
private JobManager jobManager;
// 凌晨8点执行
@Scheduled(cron = "0 0 8 * * ? ")
@Scheduled(cron = "0 0 1 * * ? ")
public void clearRun() {
try {
log.info("定时删除短信记录== 开始");
@@ -25,5 +28,13 @@ public class ClearDaysJob {
log.error("定时删除短信记录== 异常",e);
}
try {
log.info("定时更新用户年龄== 开始");
jobManager.updateAge();
log.info("定时更新用户年龄== 结束");
}catch (Exception e){
log.error("定时更新用户年龄== 异常",e);
}
}
}

View File

@@ -0,0 +1,41 @@
package com.ruoyi.xq.job;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.xq.domain.User;
import com.ruoyi.xq.service.UserService;
import com.ruoyi.xq.util.AgeUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.List;
@Component
public class JobManager {
@Autowired
private UserService userService;
public void updateAge(){
int current = 0;
while (true){
current++;
IPage<User> page = new Page<>();
page.setCurrent(current);
page.setSize(100);
IPage<User> userPage = userService.page(page);
List<User> records = userPage.getRecords();
if(records.isEmpty()){
break;
}
for (User record : records) {
if(record.getBirthday() == null){
continue;
}
User update = new User();
update.setId(record.getId());
update.setAge(AgeUtil.getAge(record.getBirthday()));
userService.updateById(update);
}
}
}
}

View File

@@ -155,6 +155,9 @@ public class CurrentUserManager {
if(req.getHeight() != null){
updateUser.setHeight(req.getHeight());
}
if(req.getBirthday() != null){
updateUser.setAge(AgeUtil.getAge(req.getBirthday()));
}
if(req.getWeight() != null){
updateUser.setWeight(req.getWeight());
}
@@ -272,6 +275,9 @@ public class CurrentUserManager {
updateUser.setResidenceName(areaCode.getFullname());
updateUser.setResidenceCityName(areaCode.getPname());
}
if(req.getBirthday() != null){
updateUser.setAge(AgeUtil.getAge(req.getBirthday()));
}
updateUser.setId(userId);
userService.updateById(updateUser);

View File

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.common.core.domain.PageQuery;
import com.ruoyi.xq.domain.UserAuth;
import com.ruoyi.xq.dto.admin.user.UserAuthAdminVo;
import com.ruoyi.xq.dto.admin.userauth.UserAuthAdminInfoVo;
/**
* 用户认证管理Service接口
@@ -16,4 +17,10 @@ public interface UserAuthService extends IService<UserAuth> {
UserAuth getByUserId(Long userId);
Page<UserAuthAdminVo> pageAdmin(PageQuery pageQuery, UserAuthAdminVo bo);
UserAuthAdminInfoVo getAdminById(Long id);
void updateUserAuth(UserAuth bo);
void checkAuthNum(Long userId);
}

View File

@@ -6,6 +6,7 @@ import com.ruoyi.common.core.domain.PageQuery;
import com.ruoyi.xq.domain.UserInfo;
import com.ruoyi.xq.dto.admin.user.UserInfoDetailAdminVo;
import com.ruoyi.xq.dto.admin.user.UserInfoListAdminVo;
import com.ruoyi.xq.dto.admin.user.req.UpdateUserInfoReq;
/**
* 用户信息Service接口
@@ -20,5 +21,7 @@ public interface UserInfoService extends IService<UserInfo> {
Page<UserInfoListAdminVo> pageAdmin(PageQuery pageQuery, UserInfoListAdminVo bo);
UserInfoDetailAdminVo fullUserInfo(Long id);
UpdateUserInfoReq getUserInfoUpdate(Long userId);
void updateInfo(UpdateUserInfoReq bo);
}

View File

@@ -57,6 +57,5 @@ public interface UserService extends IService<User> {
void saveUser(AddUserReq bo);
@Transactional(rollbackFor = Exception.class)
void updateBaseUser(UpdateUserReq updateUserReq);
}

View File

@@ -65,34 +65,40 @@ public class UserAuthAuditServiceImpl extends ServiceImpl<UserAuthAuditMapper,Us
UserAuthAudit userInfoAudit = this.getById(id);
if(userInfoAudit.getAuthType().equals(UserAuthTypeEnum.CAR.getCode())){
userAuthService.update(Wrappers.lambdaUpdate(UserAuth.class)
.eq(UserAuth:: getUserId, userInfoAudit.getUserId())
.set(UserAuth:: getCarAuth, AuditEnum.SUCCESS.getCode())
.eq(UserAuth::getUserId, userInfoAudit.getUserId())
.set(UserAuth::getCarAuth, AuditEnum.SUCCESS.getCode())
.set(UserAuth::getCarPic, userInfoAudit.getAuthPic()));
userAuthService.checkAuthNum(userInfoAudit.getUserId());
}else if(userInfoAudit.getAuthType().equals(UserAuthTypeEnum.JOB.getCode())){
userAuthService.update(Wrappers.lambdaUpdate(UserAuth.class)
.eq(UserAuth:: getUserId, userInfoAudit.getUserId())
.set(UserAuth:: getJobAuth, AuditEnum.SUCCESS.getCode())
.set(UserAuth:: getJobPic, userInfoAudit.getAuthPic())
.set(UserAuth:: getJobAuthType, userInfoAudit.getAuthOther()));
userAuthService.checkAuthNum(userInfoAudit.getUserId());
}else if(userInfoAudit.getAuthType().equals(UserAuthTypeEnum.EDUCATION.getCode())){
userAuthService.update(Wrappers.lambdaUpdate(UserAuth.class)
.eq(UserAuth:: getUserId, userInfoAudit.getUserId())
.set(UserAuth:: getEducationAuth, AuditEnum.SUCCESS.getCode())
.set(UserAuth:: getEducationPic, userInfoAudit.getAuthPic()));
userAuthService.checkAuthNum(userInfoAudit.getUserId());
}else if(userInfoAudit.getAuthType().equals(UserAuthTypeEnum.HOUSE.getCode())){
userAuthService.update(Wrappers.lambdaUpdate(UserAuth.class)
.eq(UserAuth:: getUserId, userInfoAudit.getUserId())
.set(UserAuth:: getHouseAuth, AuditEnum.SUCCESS.getCode())
.set(UserAuth:: getHousePic, userInfoAudit.getAuthPic()));
userAuthService.checkAuthNum(userInfoAudit.getUserId());
}else if(userInfoAudit.getAuthType().equals(UserAuthTypeEnum.MARRIAGE.getCode())){
userAuthService.update(Wrappers.lambdaUpdate(UserAuth.class)
.eq(UserAuth:: getUserId, userInfoAudit.getUserId())
.set(UserAuth:: getMarriageAuth, AuditEnum.SUCCESS.getCode())
.set(UserAuth:: getMarriagePic, userInfoAudit.getAuthPic()));
userAuthService.checkAuthNum(userInfoAudit.getUserId());
}else if(userInfoAudit.getAuthType().equals(UserAuthTypeEnum.SINGLE.getCode())){
userAuthService.update(Wrappers.lambdaUpdate(UserAuth.class)
.eq(UserAuth:: getUserId, userInfoAudit.getUserId())
.set(UserAuth:: getSinglePersonAuth, AuditEnum.SUCCESS.getCode()));
userAuthService.checkAuthNum(userInfoAudit.getUserId());
}
}
}

View File

@@ -4,11 +4,18 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.core.domain.PageQuery;
import com.ruoyi.common.utils.spring.SpringUtils;
import com.ruoyi.xq.domain.User;
import com.ruoyi.xq.domain.UserAuth;
import com.ruoyi.xq.dto.admin.user.UserAuthAdminVo;
import com.ruoyi.xq.dto.admin.userauth.UserAuthAdminInfoVo;
import com.ruoyi.xq.enums.common.AuditEnum;
import com.ruoyi.xq.mapper.UserAuthMapper;
import com.ruoyi.xq.service.UserAuthService;
import com.ruoyi.xq.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
/**
* 用户认证管理Service业务层处理
@@ -19,6 +26,9 @@ import org.springframework.stereotype.Service;
@Service
public class UserAuthServiceImpl extends ServiceImpl<UserAuthMapper,UserAuth> implements UserAuthService {
@Autowired
private UserService userService;
@Override
public UserAuth getByUserId(Long userId) {
return this.getOne(Wrappers.lambdaQuery(UserAuth.class)
@@ -29,4 +39,64 @@ public class UserAuthServiceImpl extends ServiceImpl<UserAuthMapper,UserAuth> im
public Page<UserAuthAdminVo> pageAdmin(PageQuery pageQuery, UserAuthAdminVo bo) {
return baseMapper.pageAdmin(pageQuery.build(), bo);
}
@Override
public UserAuthAdminInfoVo getAdminById(Long id) {
UserAuthAdminInfoVo vo = new UserAuthAdminInfoVo();
UserAuth userAuth = this.getById(id);
User user = userService.getById(userAuth.getUserId());
vo.setUser(user);
vo.setUserAuth(userAuth);
return vo;
}
@Override
@Transactional(rollbackFor = Exception.class)
public void updateUserAuth(UserAuth bo) {
UserAuth update = new UserAuth();
update.setId(bo.getId());
// update.setAlreadyAuthNum();
update.setCardNumAuth(bo.getCardNumAuth());
update.setSinglePersonAuth(bo.getSinglePersonAuth());
update.setEducationAuth(bo.getEducationAuth());
update.setJobAuth(bo.getJobAuth());
update.setCarAuth(bo.getCarAuth());
update.setHouseAuth(bo.getHouseAuth());
update.setMarriageAuth(bo.getMarriageAuth());
this.updateById(update);
UserAuthService userAuthService = SpringUtils.getBean(UserAuthService.class);
userAuthService.checkAuthNum(bo.getUserId());
}
@Override
public void checkAuthNum(Long userId){
UserAuth userAuth = this.getByUserId(userId);
int i = 0;
if(userAuth.getCarAuth().equals(AuditEnum.SUCCESS.getCode())){
i++;
}
if(userAuth.getMarriageAuth().equals(AuditEnum.SUCCESS.getCode())){
i++;
}
if(userAuth.getEducationAuth().equals(AuditEnum.SUCCESS.getCode())){
i++;
}
if(userAuth.getJobAuth().equals(AuditEnum.SUCCESS.getCode())){
i++;
}
if(userAuth.getPhoneAuth().equals(AuditEnum.SUCCESS.getCode())){
i++;
}
if(userAuth.getSinglePersonAuth().equals(AuditEnum.SUCCESS.getCode())){
i++;
}
if(userAuth.getHouseAuth().equals(AuditEnum.SUCCESS.getCode())){
i++;
}
if(userAuth.getCardNumAuth().equals(AuditEnum.SUCCESS.getCode())){
i++;
}
this.update(Wrappers.lambdaUpdate(UserAuth.class).eq(UserAuth::getId, userAuth.getId())
.set(UserAuth::getAlreadyAuthNum, i));
}
}

View File

@@ -4,10 +4,12 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.core.domain.PageQuery;
import com.ruoyi.common.utils.BeanConvertUtil;
import com.ruoyi.xq.domain.User;
import com.ruoyi.xq.domain.UserInfo;
import com.ruoyi.xq.dto.admin.user.UserInfoDetailAdminVo;
import com.ruoyi.xq.dto.admin.user.UserInfoListAdminVo;
import com.ruoyi.xq.dto.admin.user.req.UpdateUserInfoReq;
import com.ruoyi.xq.mapper.UserInfoMapper;
import com.ruoyi.xq.service.UserInfoService;
import com.ruoyi.xq.service.UserService;
@@ -15,7 +17,9 @@ import com.ruoyi.xq.util.AgeUtil;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.time.LocalDateTime;
import java.util.List;
/**
@@ -52,13 +56,32 @@ public class UserInfoServiceImpl extends ServiceImpl<UserInfoMapper,UserInfo> im
}
@Override
public UserInfoDetailAdminVo fullUserInfo(Long userId) {
UserInfoDetailAdminVo vo = new UserInfoDetailAdminVo();
public UpdateUserInfoReq getUserInfoUpdate(Long userId) {
User user = userService.getById(userId);
UserInfo userInfo = this.getByUserId(userId);
user.setAge(AgeUtil.getAge(user.getBirthday()));
vo.setUser(user);
vo.setUserInfo(userInfo);
return vo;
UpdateUserInfoReq res = BeanConvertUtil.convertTo(user, UpdateUserInfoReq::new);
BeanConvertUtil.copyProperties(userInfo, res);
return res;
}
@Override
@Transactional(rollbackFor = Exception.class)
public void updateInfo(UpdateUserInfoReq bo) {
User user = new User();
user.setId(bo.getUserId());
user.setUpdateTime(LocalDateTime.now());
BeanConvertUtil.copyProperties(bo, user);
user.setMobile(null);
userService.updateById(user);
UserInfo userInnnn = this.getByUserId(bo.getUserId());
UserInfo userInfo = new UserInfo();
userInfo.setId(userInnnn.getId());
userInfo.setUpdateTime(LocalDateTime.now());
BeanConvertUtil.copyProperties(bo, userInfo);
userInfo.setUserId(null);
this.updateById(userInfo);
}
}

View File

@@ -30,6 +30,7 @@ import com.ruoyi.xq.manager.LoginManager;
import com.ruoyi.xq.manager.SystemConfigManager;
import com.ruoyi.xq.mapper.UserMapper;
import com.ruoyi.xq.service.*;
import com.ruoyi.xq.util.AgeUtil;
import com.ruoyi.xq.util.BirthdayUtil;
import com.ruoyi.xq.util.ShowAvatarUtil;
import com.ruoyi.yunxin.client.ImUserRefClient;
@@ -321,6 +322,10 @@ public class UserServiceImpl extends ServiceImpl<UserMapper,User> implements Use
@Override
@Transactional(rollbackFor = Exception.class)
public void saveUser(AddUserReq bo) {
boolean mobile = PhoneUtil.isMobile(bo.getMobile());
if(!mobile){
throw new ServiceException("请填写正确的手机号格式");
}
User user = this.getByMobile(bo.getMobile());
if(user != null){
throw new ServiceException("手机号已存在!");
@@ -338,7 +343,7 @@ public class UserServiceImpl extends ServiceImpl<UserMapper,User> implements Use
}
user = loginManager.registerUser(bo.getMobile(), null);
UpdateUserReq updateUser = BeanConvertUtil.convertTo(bo, UpdateUserReq::new);
updateUser.setUserId(user.getId());
updateUser.setId(user.getId());
UserService userService = SpringUtil.getBean(UserService.class);
userService.updateBaseUser(updateUser);
}finally {
@@ -350,18 +355,21 @@ public class UserServiceImpl extends ServiceImpl<UserMapper,User> implements Use
@Override
@Transactional(rollbackFor = Exception.class)
public void updateBaseUser(UpdateUserReq updateUserReq){
User user = this.getById(updateUserReq.getUserId());
User user = this.getById(updateUserReq.getId());
if(user == null){
throw new ServiceException("用户不存在!");
}
User updateUser = new User();
updateUser.setId(user.getId());
updateUser.setType(updateUserReq.getUserType());
updateUser.setType(updateUserReq.getType());
updateUser.setNickname(updateUserReq.getNickname());
updateUser.setAvatar(updateUserReq.getAvatar());
updateUser.setGender(updateUserReq.getGender());
updateUser.setHeight(updateUserReq.getHeight());
updateUser.setWeight(updateUserReq.getWeight());
if(updateUserReq.getBirthday() != null){
updateUser.setAge(AgeUtil.getAge(updateUserReq.getBirthday()));
}
updateUser.setBirthday(updateUserReq.getBirthday());
if(updateUserReq.getResidenceCode() != null){
updateUser.setResidenceCode(updateUserReq.getResidenceCode());