diff --git a/ruoyi-xq/src/main/java/com/ruoyi/xq/controller/UserController.java b/ruoyi-xq/src/main/java/com/ruoyi/xq/controller/UserController.java index a9b5561..198dcbd 100644 --- a/ruoyi-xq/src/main/java/com/ruoyi/xq/controller/UserController.java +++ b/ruoyi-xq/src/main/java/com/ruoyi/xq/controller/UserController.java @@ -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 list(User bo, PageQuery pageQuery) { - Page page = userService.page(pageQuery.build(), Wrappers.lambdaQuery(bo)); + public TableDataInfo list(UserAdminVo bo, PageQuery pageQuery) { + Page 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 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 updateMobile(@RequestBody UpdateMobileAdminReq bo) { + userService.updateMobileUser(bo); + return R.ok(); + } + + @SaCheckPermission("xq:user:unBindInvite") + @Log(title = "解绑用户邀请人", businessType = BusinessType.OTHER) + @GetMapping("/unBindInvite") + public R unBindInvite(Long userId) { + userInviteService.unBindInviteUser(userId); + return R.ok(); + } + + @SaCheckPermission("xq:user:bindInvite") + @Log(title = "绑定用户邀请人", businessType = BusinessType.OTHER) + @GetMapping("/bindInvite") + public R 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 resetAvatar(@RequestBody IdReq res){ + userService.resetAvatar(res.getId()); + return R.ok(); + } + + @PostMapping("/resetNickname") + @SaCheckPermission("xq:user:resetNickname") + @Log(title = "重置用户昵称", businessType = BusinessType.UPDATE) + public R resetNickname(@RequestBody IdReq res){ + userService.resetNickname(res.getId()); + return R.ok(); + } + + /** * 获取用户管理详细信息 * diff --git a/ruoyi-xq/src/main/java/com/ruoyi/xq/controller/UserInviteController.java b/ruoyi-xq/src/main/java/com/ruoyi/xq/controller/UserInviteController.java new file mode 100644 index 0000000..e320550 --- /dev/null +++ b/ruoyi-xq/src/main/java/com/ruoyi/xq/controller/UserInviteController.java @@ -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 list(UserInvite bo, PageQuery pageQuery) { + Page page = userInviteService.page(pageQuery.build(), Wrappers.lambdaQuery(bo)); + return TableDataInfo.build(page); + } + + /** + * 获取用户邀请详细信息 + * + * @param id 主键 + */ + @SaCheckPermission("xq:userInvite:query") + @GetMapping("/{id}") + public R 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 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 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 remove(@NotEmpty(message = "主键不能为空") + @PathVariable Long[] ids) { + return toAjax(userInviteService.removeBatchByIds(Arrays.asList(ids))); + } +} diff --git a/ruoyi-xq/src/main/java/com/ruoyi/xq/domain/User.java b/ruoyi-xq/src/main/java/com/ruoyi/xq/domain/User.java index f748d64..1a1456c 100644 --- a/ruoyi-xq/src/main/java/com/ruoyi/xq/domain/User.java +++ b/ruoyi-xq/src/main/java/com/ruoyi/xq/domain/User.java @@ -133,10 +133,6 @@ public class User implements Serializable { * 邀请人 */ private Long inviteId; - /** - * 邀请人Code - */ - private String inviteCode; /** * im_token */ diff --git a/ruoyi-xq/src/main/java/com/ruoyi/xq/domain/UserExtend.java b/ruoyi-xq/src/main/java/com/ruoyi/xq/domain/UserExtend.java index d50f661..4fd6a4f 100644 --- a/ruoyi-xq/src/main/java/com/ruoyi/xq/domain/UserExtend.java +++ b/ruoyi-xq/src/main/java/com/ruoyi/xq/domain/UserExtend.java @@ -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; diff --git a/ruoyi-xq/src/main/java/com/ruoyi/xq/domain/UserInvite.java b/ruoyi-xq/src/main/java/com/ruoyi/xq/domain/UserInvite.java new file mode 100644 index 0000000..6611f14 --- /dev/null +++ b/ruoyi-xq/src/main/java/com/ruoyi/xq/domain/UserInvite.java @@ -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; + +} diff --git a/ruoyi-xq/src/main/java/com/ruoyi/xq/dto/admin/user/UserAdminVo.java b/ruoyi-xq/src/main/java/com/ruoyi/xq/dto/admin/user/UserAdminVo.java new file mode 100644 index 0000000..44d417a --- /dev/null +++ b/ruoyi-xq/src/main/java/com/ruoyi/xq/dto/admin/user/UserAdminVo.java @@ -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; +} diff --git a/ruoyi-xq/src/main/java/com/ruoyi/xq/dto/admin/user/req/ResetPasswordAdminReq.java b/ruoyi-xq/src/main/java/com/ruoyi/xq/dto/admin/user/req/ResetPasswordAdminReq.java new file mode 100644 index 0000000..7f68209 --- /dev/null +++ b/ruoyi-xq/src/main/java/com/ruoyi/xq/dto/admin/user/req/ResetPasswordAdminReq.java @@ -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; +} diff --git a/ruoyi-xq/src/main/java/com/ruoyi/xq/dto/admin/user/req/UpdateMobileAdminReq.java b/ruoyi-xq/src/main/java/com/ruoyi/xq/dto/admin/user/req/UpdateMobileAdminReq.java new file mode 100644 index 0000000..f6a4120 --- /dev/null +++ b/ruoyi-xq/src/main/java/com/ruoyi/xq/dto/admin/user/req/UpdateMobileAdminReq.java @@ -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; +} diff --git a/ruoyi-xq/src/main/java/com/ruoyi/xq/enums/userinfo/UserGenderEnum.java b/ruoyi-xq/src/main/java/com/ruoyi/xq/enums/userinfo/UserGenderEnum.java index 393225f..d09e592 100644 --- a/ruoyi-xq/src/main/java/com/ruoyi/xq/enums/userinfo/UserGenderEnum.java +++ b/ruoyi-xq/src/main/java/com/ruoyi/xq/enums/userinfo/UserGenderEnum.java @@ -4,6 +4,8 @@ package com.ruoyi.xq.enums.userinfo; import lombok.Getter; +import java.util.Arrays; + /** * 性别 *

created on 2024/2/26 16:50

@@ -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); } } diff --git a/ruoyi-xq/src/main/java/com/ruoyi/xq/manager/CaiLoginManager.java b/ruoyi-xq/src/main/java/com/ruoyi/xq/manager/CaiLoginManager.java index 5441b26..81cc21e 100644 --- a/ruoyi-xq/src/main/java/com/ruoyi/xq/manager/CaiLoginManager.java +++ b/ruoyi-xq/src/main/java/com/ruoyi/xq/manager/CaiLoginManager.java @@ -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(); diff --git a/ruoyi-xq/src/main/java/com/ruoyi/xq/mapper/UserInviteMapper.java b/ruoyi-xq/src/main/java/com/ruoyi/xq/mapper/UserInviteMapper.java new file mode 100644 index 0000000..5dff88e --- /dev/null +++ b/ruoyi-xq/src/main/java/com/ruoyi/xq/mapper/UserInviteMapper.java @@ -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 { + +} diff --git a/ruoyi-xq/src/main/java/com/ruoyi/xq/mapper/UserMapper.java b/ruoyi-xq/src/main/java/com/ruoyi/xq/mapper/UserMapper.java index 6ce9dc1..15ca671 100644 --- a/ruoyi-xq/src/main/java/com/ruoyi/xq/mapper/UserMapper.java +++ b/ruoyi-xq/src/main/java/com/ruoyi/xq/mapper/UserMapper.java @@ -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 { + Page pageAdmin(@Param("build") Page build, @Param("bo") UserAdminVo bo); } diff --git a/ruoyi-xq/src/main/java/com/ruoyi/xq/service/UserInviteService.java b/ruoyi-xq/src/main/java/com/ruoyi/xq/service/UserInviteService.java new file mode 100644 index 0000000..9b4b27a --- /dev/null +++ b/ruoyi-xq/src/main/java/com/ruoyi/xq/service/UserInviteService.java @@ -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 { + + void bindInvite(Long userId, String inviteCode); + + void unBindInviteUser(Long userId); +} diff --git a/ruoyi-xq/src/main/java/com/ruoyi/xq/service/UserService.java b/ruoyi-xq/src/main/java/com/ruoyi/xq/service/UserService.java index ee4220d..35b98dd 100644 --- a/ruoyi-xq/src/main/java/com/ruoyi/xq/service/UserService.java +++ b/ruoyi-xq/src/main/java/com/ruoyi/xq/service/UserService.java @@ -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 getByUsercode(String usercode); HomeUserVo homeUser(Long userId); + + boolean updateMobileUser(UpdateMobileAdminReq bo); + + void resetAvatar(Long userId); + + void resetNickname(Long userId); + + Page pageAdmin(PageQuery pageQuery, UserAdminVo bo); } diff --git a/ruoyi-xq/src/main/java/com/ruoyi/xq/service/impl/UserInviteServiceImpl.java b/ruoyi-xq/src/main/java/com/ruoyi/xq/service/impl/UserInviteServiceImpl.java new file mode 100644 index 0000000..2bfffa5 --- /dev/null +++ b/ruoyi-xq/src/main/java/com/ruoyi/xq/service/impl/UserInviteServiceImpl.java @@ -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 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)); + } +} diff --git a/ruoyi-xq/src/main/java/com/ruoyi/xq/service/impl/UserServiceImpl.java b/ruoyi-xq/src/main/java/com/ruoyi/xq/service/impl/UserServiceImpl.java index ca8264b..6f39e90 100644 --- a/ruoyi-xq/src/main/java/com/ruoyi/xq/service/impl/UserServiceImpl.java +++ b/ruoyi-xq/src/main/java/com/ruoyi/xq/service/impl/UserServiceImpl.java @@ -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 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 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 pageAdmin(PageQuery pageQuery, UserAdminVo bo) { + return baseMapper.pageAdmin(pageQuery.build(), bo); + } } diff --git a/ruoyi-xq/src/main/resources/mapper/xq/UserInviteMapper.xml b/ruoyi-xq/src/main/resources/mapper/xq/UserInviteMapper.xml new file mode 100644 index 0000000..8018160 --- /dev/null +++ b/ruoyi-xq/src/main/resources/mapper/xq/UserInviteMapper.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + diff --git a/ruoyi-xq/src/main/resources/mapper/xq/UserMapper.xml b/ruoyi-xq/src/main/resources/mapper/xq/UserMapper.xml index d050ce1..73a823c 100644 --- a/ruoyi-xq/src/main/resources/mapper/xq/UserMapper.xml +++ b/ruoyi-xq/src/main/resources/mapper/xq/UserMapper.xml @@ -3,6 +3,21 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> - - +