This commit is contained in:
张良(004796)
2024-03-13 14:56:59 +08:00
parent 9559658dda
commit e79d7d8c5c
18 changed files with 494 additions and 41 deletions

View File

@@ -0,0 +1,17 @@
package com.ruoyi.xq.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.xq.domain.UserInvite;
/**
* 用户邀请Service接口
*
* @author 77
* @date 2024-03-13
*/
public interface UserInviteService extends IService<UserInvite> {
void bindInvite(Long userId, String inviteCode);
void unBindInviteUser(Long userId);
}

View File

@@ -1,7 +1,11 @@
package com.ruoyi.xq.service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.common.core.domain.PageQuery;
import com.ruoyi.xq.domain.User;
import com.ruoyi.xq.dto.admin.user.UserAdminVo;
import com.ruoyi.xq.dto.admin.user.req.UpdateMobileAdminReq;
import com.ruoyi.xq.dto.app.user.vo.HomeUserVo;
/**
@@ -19,4 +23,12 @@ public interface UserService extends IService<User> {
User getByUsercode(String usercode);
HomeUserVo homeUser(Long userId);
boolean updateMobileUser(UpdateMobileAdminReq bo);
void resetAvatar(Long userId);
void resetNickname(Long userId);
Page<UserAdminVo> pageAdmin(PageQuery pageQuery, UserAdminVo bo);
}

View File

@@ -0,0 +1,68 @@
package com.ruoyi.xq.service.impl;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.xq.domain.User;
import com.ruoyi.xq.domain.UserInvite;
import com.ruoyi.xq.mapper.UserInviteMapper;
import com.ruoyi.xq.service.UserInviteService;
import com.ruoyi.xq.service.UserService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
/**
* 用户邀请Service业务层处理
*
* @author 77
* @date 2024-03-13
*/
@Slf4j
@Service
public class UserInviteServiceImpl extends ServiceImpl<UserInviteMapper, UserInvite> implements UserInviteService {
@Autowired
private UserService userService;
@Override
@Transactional(rollbackFor = Exception.class)
public void bindInvite(Long userId, String inviteCode) {
User user = userService.getById(userId);
User inviteUser = userService.getByUsercode(inviteCode);
if(user == null || inviteUser == null){
throw new ServiceException("用户不存在,邀请用户不存在");
}
// TODO 添加判断,不允许设置自己为邀请人
// TODO 加锁
UserInvite userInvite = this.getOne(Wrappers.lambdaQuery(UserInvite.class)
.eq(UserInvite::getInviteId, inviteUser.getId())
.eq(UserInvite::getUserId, userId)
.last("limit 1"));
if(userInvite == null){
userInvite = new UserInvite();
userInvite.setUserId(userId);
userInvite.setUsercode(user.getUsercode());
userInvite.setInviteId(inviteUser.getId());
userInvite.setInviteCode(inviteUser.getUsercode());
}
userInvite.setCashbackTotal(BigDecimal.ZERO);
this.saveOrUpdate(userInvite);
userService.update(Wrappers.lambdaUpdate(User.class)
.eq(User::getId, userId)
.set(User::getInviteId, inviteUser.getId()));
}
@Override
@Transactional(rollbackFor = Exception.class)
public void unBindInviteUser(Long userId) {
this.remove(Wrappers.lambdaQuery(UserInvite.class)
.eq(UserInvite::getUserId, userId));
userService.update(Wrappers.lambdaUpdate(User.class)
.eq(User::getId, userId)
.set(User::getInviteId, null));
}
}

View File

@@ -1,19 +1,32 @@
package com.ruoyi.xq.service.impl;
import cn.dev33.satoken.secure.BCrypt;
import cn.hutool.core.util.PhoneUtil;
import com.alibaba.fastjson2.JSON;
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.exception.ServiceException;
import com.ruoyi.common.exception.base.BaseException;
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.UserAdminVo;
import com.ruoyi.xq.dto.admin.user.req.UpdateMobileAdminReq;
import com.ruoyi.xq.dto.app.user.vo.HomeUserVo;
import com.ruoyi.xq.enums.userinfo.UserGenderEnum;
import com.ruoyi.xq.mapper.UserMapper;
import com.ruoyi.xq.service.UserInfoService;
import com.ruoyi.xq.service.UserService;
import com.ruoyi.yunxin.client.ImUserRefClient;
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.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
/**
* 用户管理Service业务层处理
@@ -22,9 +35,13 @@ import org.springframework.stereotype.Service;
* @date 2024-03-04
*/
@Service
@Slf4j
public class UserServiceImpl extends ServiceImpl<UserMapper,User> implements UserService {
@Autowired
private UserInfoService userInfoService;
@Autowired
private ImUserRefClient userRefClient;
@Override
public User getByUsername(String username) {
return this.getOne(Wrappers.lambdaQuery(User.class)
@@ -56,4 +73,75 @@ public class UserServiceImpl extends ServiceImpl<UserMapper,User> implements Use
BeanConvertUtil.copyProperties(user,result);
return result;
}
@Override
public boolean updateMobileUser(UpdateMobileAdminReq bo) {
if(!PhoneUtil.isMobile(bo.getMobile())){
throw new ServiceException("请填写正常的手机号");
}
User user = this.getById(bo.getId());
if(com.ruoyi.common.utils.StringUtils.isNotEmpty(bo.getMobile())){
long count = this.count(Wrappers.lambdaQuery(User.class)
.eq(User::getMobile, bo.getMobile())
.ne(User::getId, user.getId()));
if(count > 0){
throw new BaseException("手机号已存在,无法修改");
}
}
User update = new User();
update.setId(user.getId());
update.setMobile(bo.getMobile());
this.updateById(update);
return true;
}
@Override
public void resetAvatar(Long userId) {
User user = this.getById(userId);
if(user == null){
return;
}
Integer gender = user.getGender();
UserGenderEnum genderEnum = UserGenderEnum.getByCode(gender);
if(genderEnum == null){
return;
}
this.update(Wrappers.lambdaUpdate(User.class)
.eq(User::getId,user.getId())
.set(User::getAvatar,genderEnum.getDefaultAvatar()));
UpdateUinfoReq uinfoReq = new UpdateUinfoReq();
uinfoReq.setAccid(user.getId()+"");
uinfoReq.setIcon(genderEnum.getDefaultAvatar());
YxCommonR r = userRefClient.updateUinfo(uinfoReq);
if(!r.isSuccess()){
log.error("云信更新失败,需要检查!{}", JSON.toJSONString(r));
}
}
@Override
public void resetNickname(Long userId) {
User user = this.getById(userId);
if(user == null){
return;
}
boolean update = this.update(Wrappers.lambdaUpdate(User.class)
.eq(User::getId, user.getId())
.set(User::getNickname, "用户" + user.getUsercode()));
if(!update){
return;
}
UpdateUinfoReq uinfoReq = new UpdateUinfoReq();
uinfoReq.setAccid(user.getId()+"");
uinfoReq.setName("用户"+user.getUsercode());
YxCommonR r = userRefClient.updateUinfo(uinfoReq);
if(!r.isSuccess()){
log.error("云信更新失败,需要检查!{}", JSON.toJSONString(r));
}
}
@Override
public Page<UserAdminVo> pageAdmin(PageQuery pageQuery, UserAdminVo bo) {
return baseMapper.pageAdmin(pageQuery.build(), bo);
}
}