init
This commit is contained in:
@@ -13,6 +13,11 @@ import com.ruoyi.common.core.validate.AddGroup;
|
||||
import com.ruoyi.common.core.validate.EditGroup;
|
||||
import com.ruoyi.common.enums.BusinessType;
|
||||
import com.ruoyi.xq.domain.User;
|
||||
import com.ruoyi.xq.dto.admin.user.UserAdminVo;
|
||||
import com.ruoyi.xq.dto.admin.user.req.ResetPasswordAdminReq;
|
||||
import com.ruoyi.xq.dto.admin.user.req.UpdateMobileAdminReq;
|
||||
import com.ruoyi.xq.dto.app.common.IdReq;
|
||||
import com.ruoyi.xq.service.UserInviteService;
|
||||
import com.ruoyi.xq.service.UserService;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
@@ -38,14 +43,15 @@ import java.util.stream.Collectors;
|
||||
public class UserController extends BaseController {
|
||||
|
||||
private final UserService userService;
|
||||
private final UserInviteService userInviteService;
|
||||
|
||||
/**
|
||||
* 查询用户管理列表
|
||||
*/
|
||||
@SaCheckPermission("xq:user:list")
|
||||
@GetMapping("/list")
|
||||
public TableDataInfo<User> list(User bo, PageQuery pageQuery) {
|
||||
Page<User> page = userService.page(pageQuery.build(), Wrappers.lambdaQuery(bo));
|
||||
public TableDataInfo<UserAdminVo> list(UserAdminVo bo, PageQuery pageQuery) {
|
||||
Page<UserAdminVo> page = userService.pageAdmin(pageQuery, bo);
|
||||
return TableDataInfo.build(page);
|
||||
}
|
||||
|
||||
@@ -66,6 +72,57 @@ public class UserController extends BaseController {
|
||||
return R.ok(users.stream().map(User::getUsercode).collect(Collectors.toList()));
|
||||
}
|
||||
|
||||
@PostMapping("/resetPwd")
|
||||
@SaCheckPermission("xq:user:restPwd")
|
||||
@Log(title = "重置用户密码", businessType = BusinessType.UPDATE)
|
||||
public R<Void> resetPwd(@RequestBody ResetPasswordAdminReq req) {
|
||||
User user = userService.getById(req.getUserId());
|
||||
userService.resetPassword(req.getUserId(),user.getPassword());
|
||||
return R.ok();
|
||||
}
|
||||
|
||||
@SaCheckPermission("xq:user:updateMobile")
|
||||
@Log(title = "修改用户手机", businessType = BusinessType.UPDATE)
|
||||
@RepeatSubmit()
|
||||
@PutMapping("/updateMobile")
|
||||
public R<Void> updateMobile(@RequestBody UpdateMobileAdminReq bo) {
|
||||
userService.updateMobileUser(bo);
|
||||
return R.ok();
|
||||
}
|
||||
|
||||
@SaCheckPermission("xq:user:unBindInvite")
|
||||
@Log(title = "解绑用户邀请人", businessType = BusinessType.OTHER)
|
||||
@GetMapping("/unBindInvite")
|
||||
public R<Void> unBindInvite(Long userId) {
|
||||
userInviteService.unBindInviteUser(userId);
|
||||
return R.ok();
|
||||
}
|
||||
|
||||
@SaCheckPermission("xq:user:bindInvite")
|
||||
@Log(title = "绑定用户邀请人", businessType = BusinessType.OTHER)
|
||||
@GetMapping("/bindInvite")
|
||||
public R<Void> bindInvite(Long userId,String inviteUsercode) {
|
||||
userInviteService.bindInvite(userId,inviteUsercode);
|
||||
return R.ok();
|
||||
}
|
||||
|
||||
@PostMapping("/resetAvatar")
|
||||
@SaCheckPermission("xq:user:resetAvatar")
|
||||
@Log(title = "重置用户头像", businessType = BusinessType.UPDATE)
|
||||
public R<Void> resetAvatar(@RequestBody IdReq res){
|
||||
userService.resetAvatar(res.getId());
|
||||
return R.ok();
|
||||
}
|
||||
|
||||
@PostMapping("/resetNickname")
|
||||
@SaCheckPermission("xq:user:resetNickname")
|
||||
@Log(title = "重置用户昵称", businessType = BusinessType.UPDATE)
|
||||
public R<Void> resetNickname(@RequestBody IdReq res){
|
||||
userService.resetNickname(res.getId());
|
||||
return R.ok();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 获取用户管理详细信息
|
||||
*
|
||||
|
||||
@@ -0,0 +1,95 @@
|
||||
package com.ruoyi.xq.controller;
|
||||
|
||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.ruoyi.common.annotation.Log;
|
||||
import com.ruoyi.common.annotation.RepeatSubmit;
|
||||
import com.ruoyi.common.core.controller.BaseController;
|
||||
import com.ruoyi.common.core.domain.PageQuery;
|
||||
import com.ruoyi.common.core.domain.R;
|
||||
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.xq.domain.UserInvite;
|
||||
import com.ruoyi.xq.service.UserInviteService;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.validation.constraints.NotEmpty;
|
||||
import javax.validation.constraints.NotNull;
|
||||
import java.util.Arrays;
|
||||
|
||||
/**
|
||||
* 用户邀请
|
||||
*
|
||||
* @author 77
|
||||
* @date 2024-03-13
|
||||
*/
|
||||
@Validated
|
||||
@RequiredArgsConstructor
|
||||
@RestController
|
||||
@RequestMapping("/xq/userInvite")
|
||||
public class UserInviteController extends BaseController {
|
||||
|
||||
private final UserInviteService userInviteService;
|
||||
|
||||
/**
|
||||
* 查询用户邀请列表
|
||||
*/
|
||||
@SaCheckPermission("xq:userInvite:list")
|
||||
@GetMapping("/list")
|
||||
public TableDataInfo<UserInvite> list(UserInvite bo, PageQuery pageQuery) {
|
||||
Page<UserInvite> page = userInviteService.page(pageQuery.build(), Wrappers.lambdaQuery(bo));
|
||||
return TableDataInfo.build(page);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取用户邀请详细信息
|
||||
*
|
||||
* @param id 主键
|
||||
*/
|
||||
@SaCheckPermission("xq:userInvite:query")
|
||||
@GetMapping("/{id}")
|
||||
public R<UserInvite> getInfo(@NotNull(message = "主键不能为空")
|
||||
@PathVariable Long id) {
|
||||
return R.ok(userInviteService.getById(id));
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增用户邀请
|
||||
*/
|
||||
@SaCheckPermission("xq:userInvite:add")
|
||||
@Log(title = "用户邀请", businessType = BusinessType.INSERT)
|
||||
@RepeatSubmit()
|
||||
@PostMapping()
|
||||
public R<Void> add(@Validated(AddGroup.class) @RequestBody UserInvite bo) {
|
||||
return toAjax(userInviteService.save(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改用户邀请
|
||||
*/
|
||||
@SaCheckPermission("xq:userInvite:edit")
|
||||
@Log(title = "用户邀请", businessType = BusinessType.UPDATE)
|
||||
@RepeatSubmit()
|
||||
@PutMapping()
|
||||
public R<Void> edit(@Validated(EditGroup.class) @RequestBody UserInvite bo) {
|
||||
return toAjax(userInviteService.updateById(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除用户邀请
|
||||
*
|
||||
* @param ids 主键串
|
||||
*/
|
||||
@SaCheckPermission("xq:userInvite:remove")
|
||||
@Log(title = "用户邀请", businessType = BusinessType.DELETE)
|
||||
@DeleteMapping("/{ids}")
|
||||
public R<Void> remove(@NotEmpty(message = "主键不能为空")
|
||||
@PathVariable Long[] ids) {
|
||||
return toAjax(userInviteService.removeBatchByIds(Arrays.asList(ids)));
|
||||
}
|
||||
}
|
||||
@@ -133,10 +133,6 @@ public class User implements Serializable {
|
||||
* 邀请人
|
||||
*/
|
||||
private Long inviteId;
|
||||
/**
|
||||
* 邀请人Code
|
||||
*/
|
||||
private String inviteCode;
|
||||
/**
|
||||
* im_token
|
||||
*/
|
||||
|
||||
@@ -37,14 +37,6 @@ public class UserExtend implements Serializable {
|
||||
* 收益的余额
|
||||
*/
|
||||
private BigDecimal incomeCoin;
|
||||
/**
|
||||
* 邀请人
|
||||
*/
|
||||
private Long inviteId;
|
||||
/**
|
||||
* 邀请人Code
|
||||
*/
|
||||
private String inviteCode;
|
||||
/**
|
||||
* 消费统计
|
||||
*/
|
||||
@@ -53,10 +45,6 @@ public class UserExtend implements Serializable {
|
||||
* 提现统计
|
||||
*/
|
||||
private BigDecimal withdrawTotal;
|
||||
/**
|
||||
* 给上家的返现提成
|
||||
*/
|
||||
private BigDecimal cashbackTotal;
|
||||
|
||||
private LocalDateTime createTime;
|
||||
private LocalDateTime updateTime;
|
||||
|
||||
52
ruoyi-xq/src/main/java/com/ruoyi/xq/domain/UserInvite.java
Normal file
52
ruoyi-xq/src/main/java/com/ruoyi/xq/domain/UserInvite.java
Normal file
@@ -0,0 +1,52 @@
|
||||
package com.ruoyi.xq.domain;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* 用户邀请对象 xq_user_invite
|
||||
*
|
||||
* @author 77
|
||||
* @date 2024-03-13
|
||||
*/
|
||||
@Data
|
||||
@TableName("xq_user_invite")
|
||||
public class UserInvite implements Serializable {
|
||||
|
||||
private static final long serialVersionUID=1L;
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@TableId(value = "id")
|
||||
private Long id;
|
||||
/**
|
||||
* 用户ID
|
||||
*/
|
||||
private Long userId;
|
||||
/**
|
||||
* 用户号
|
||||
*/
|
||||
private String usercode;
|
||||
/**
|
||||
* 邀请人
|
||||
*/
|
||||
private Long inviteId;
|
||||
/**
|
||||
* 邀请人Code
|
||||
*/
|
||||
private String inviteCode;
|
||||
/**
|
||||
* 给上家的返现提成
|
||||
*/
|
||||
private BigDecimal cashbackTotal;
|
||||
|
||||
private LocalDateTime createTime;
|
||||
private LocalDateTime updateTime;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
package com.ruoyi.xq.dto.admin.user;
|
||||
|
||||
import com.ruoyi.xq.domain.User;
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class UserAdminVo extends User {
|
||||
private Long inviteId;
|
||||
private String inviteNickname;
|
||||
private String inviteUsercode;
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
package com.ruoyi.xq.dto.admin.user.req;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
@Schema(description = "重置密码入参")
|
||||
public class ResetPasswordAdminReq {
|
||||
private Long userId;
|
||||
private String password;
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
package com.ruoyi.xq.dto.admin.user.req;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class UpdateMobileAdminReq {
|
||||
private Long id;
|
||||
private String mobile;
|
||||
}
|
||||
@@ -4,6 +4,8 @@ package com.ruoyi.xq.enums.userinfo;
|
||||
|
||||
import lombok.Getter;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
/**
|
||||
* 性别
|
||||
* <p>created on 2024/2/26 16:50</p>
|
||||
@@ -11,17 +13,23 @@ import lombok.Getter;
|
||||
*/
|
||||
@Getter
|
||||
public enum UserGenderEnum {
|
||||
NONE(0,"未知"),
|
||||
WOMEN(1,"女"),
|
||||
MAN(2,"男"),
|
||||
NONE(0,"未知", ""),
|
||||
WOMEN(1,"女", ""),
|
||||
MAN(2,"男", ""),
|
||||
;
|
||||
|
||||
|
||||
private final Integer code;
|
||||
private final String text;
|
||||
private final String defaultAvatar;
|
||||
|
||||
UserGenderEnum(Integer code, String text) {
|
||||
UserGenderEnum(Integer code, String text, String defaultAvatar) {
|
||||
this.code = code;
|
||||
this.text = text;
|
||||
this.defaultAvatar = defaultAvatar;
|
||||
}
|
||||
|
||||
public static UserGenderEnum getByCode(Integer gender) {
|
||||
return Arrays.stream(UserGenderEnum.values()).filter(i -> gender.equals(i.getCode())).findFirst().orElse(null);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,7 +6,6 @@ import cn.dev33.satoken.stp.StpUtil;
|
||||
import cn.hutool.core.util.IdUtil;
|
||||
import cn.hutool.extra.spring.SpringUtil;
|
||||
import com.alibaba.fastjson2.JSON;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.ruoyi.common.constant.Constants;
|
||||
import com.ruoyi.common.core.domain.model.LoginUser;
|
||||
import com.ruoyi.common.enums.UserType;
|
||||
@@ -65,6 +64,8 @@ public class CaiLoginManager {
|
||||
private SmsVerifyService smsVerifyService;
|
||||
@Autowired
|
||||
private UserExtendService userExtendService;
|
||||
@Autowired
|
||||
private UserInviteService userInviteService;
|
||||
|
||||
public String login(String username,String password){
|
||||
User user = userService.getByUsername(username);
|
||||
@@ -119,30 +120,19 @@ public class CaiLoginManager {
|
||||
}finally {
|
||||
lock.unlock();
|
||||
}
|
||||
if(user.getInviteId() != null){
|
||||
if(StringUtils.isNotEmpty(inviteCode)){
|
||||
User finalUser = user;
|
||||
ExecutorConstant.COMMON_EXECUTOR.execute(() -> dealInviteId(finalUser));
|
||||
ExecutorConstant.COMMON_EXECUTOR.execute(() -> dealInviteId(finalUser,inviteCode));
|
||||
}
|
||||
return user;
|
||||
}
|
||||
|
||||
|
||||
public void dealInviteId(User user){
|
||||
String inviteCode = user.getInviteCode();
|
||||
public void dealInviteId(User user, String inviteCode){
|
||||
if(StringUtils.isEmpty(inviteCode)){
|
||||
return;
|
||||
}
|
||||
User inviteUser = userService.getByUsercode(inviteCode);
|
||||
if(inviteUser == null){
|
||||
return;
|
||||
}
|
||||
userService.update(Wrappers.lambdaUpdate(User.class)
|
||||
.eq(User::getId,user.getId())
|
||||
.set(User::getInviteId, inviteUser.getId()));
|
||||
userExtendService.update(Wrappers.lambdaUpdate(UserExtend.class)
|
||||
.eq(UserExtend::getUserId, user.getId())
|
||||
.set(UserExtend::getInviteId, inviteUser.getId())
|
||||
.set(UserExtend::getInviteCode, inviteUser.getUsercode()));
|
||||
userInviteService.bindInvite(user.getId(),inviteCode);
|
||||
}
|
||||
|
||||
|
||||
@@ -189,7 +179,6 @@ public class CaiLoginManager {
|
||||
add.setPassword(BCrypt.hashpw(usercode+"用户手动滑稽安康黄鼠狼"));
|
||||
add.setMobile(mobile);
|
||||
add.setGender(UserGenderEnum.NONE.getCode());
|
||||
add.setInviteCode(inviteCode);
|
||||
add.setImToken(IdUtil.simpleUUID());
|
||||
userService.save(add);
|
||||
CreateUserReq req = new CreateUserReq();
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
package com.ruoyi.xq.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.ruoyi.xq.domain.UserInvite;
|
||||
|
||||
/**
|
||||
* 用户邀请Mapper接口
|
||||
*
|
||||
* @author 77
|
||||
* @date 2024-03-13
|
||||
*/
|
||||
public interface UserInviteMapper extends BaseMapper<UserInvite> {
|
||||
|
||||
}
|
||||
@@ -1,7 +1,10 @@
|
||||
package com.ruoyi.xq.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.ruoyi.xq.domain.User;
|
||||
import com.ruoyi.xq.dto.admin.user.UserAdminVo;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
/**
|
||||
* 用户管理Mapper接口
|
||||
@@ -11,4 +14,5 @@ import com.ruoyi.xq.domain.User;
|
||||
*/
|
||||
public interface UserMapper extends BaseMapper<User> {
|
||||
|
||||
Page<UserAdminVo> pageAdmin(@Param("build") Page<Object> build, @Param("bo") UserAdminVo bo);
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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));
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
19
ruoyi-xq/src/main/resources/mapper/xq/UserInviteMapper.xml
Normal file
19
ruoyi-xq/src/main/resources/mapper/xq/UserInviteMapper.xml
Normal file
@@ -0,0 +1,19 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<!DOCTYPE mapper
|
||||
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.ruoyi.xq.mapper.UserInviteMapper">
|
||||
|
||||
<resultMap type="com.ruoyi.xq.domain.UserInvite" id="UserInviteResult">
|
||||
<result property="id" column="id"/>
|
||||
<result property="userId" column="user_id"/>
|
||||
<result property="usercode" column="usercode"/>
|
||||
<result property="inviteId" column="invite_id"/>
|
||||
<result property="inviteCode" column="invite_code"/>
|
||||
<result property="cashbackTotal" column="cashback_total"/>
|
||||
<result property="createTime" column="create_time"/>
|
||||
<result property="updateTime" column="update_time"/>
|
||||
</resultMap>
|
||||
|
||||
|
||||
</mapper>
|
||||
@@ -3,6 +3,21 @@
|
||||
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.ruoyi.xq.mapper.UserMapper">
|
||||
|
||||
|
||||
<select id="pageAdmin" resultType="com.ruoyi.xq.dto.admin.user.UserAdminVo">
|
||||
select t1.*, t2.id as invite_id, t2.nickname as invite_nickname, t2.usercode as invite_usercode
|
||||
from xq_user t1
|
||||
left join xq_user t2 on t1.invite_id = t2.id
|
||||
<where>
|
||||
<if test="bo.usercode != null and bo.usercode != ''">
|
||||
and t1.usercode = #{bo.usercode}
|
||||
</if>
|
||||
<if test="bo.nickname != null and bo.nickname != ''">
|
||||
and t1.nickname like concat('%',#{bo.nickname},'%')
|
||||
</if>
|
||||
<if test="bo.mobile != null and bo.mobile != ''">
|
||||
and t1.mobile = #{bo.mobile}
|
||||
</if>
|
||||
</where>
|
||||
order by t1.id desc
|
||||
</select>
|
||||
</mapper>
|
||||
|
||||
Reference in New Issue
Block a user