diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/auth/CaiLoginManager.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/auth/CaiLoginManager.java index c3d8d6f7..c7ab3641 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/auth/CaiLoginManager.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/auth/CaiLoginManager.java @@ -3,10 +3,10 @@ package com.ruoyi.cai.auth; import cn.dev33.satoken.exception.NotLoginException; import cn.dev33.satoken.secure.BCrypt; import cn.dev33.satoken.stp.StpUtil; -import cn.hutool.core.lang.UUID; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.NumberUtil; import cn.hutool.extra.spring.SpringUtil; +import com.alibaba.fastjson2.JSON; import com.ruoyi.cai.domain.*; import com.ruoyi.cai.enums.CodeEnum; import com.ruoyi.cai.enums.SystemConfigEnum; @@ -24,15 +24,19 @@ import com.ruoyi.common.utils.MessageUtils; import com.ruoyi.common.utils.ServletUtils; import com.ruoyi.common.utils.ip.AddressUtils; import com.ruoyi.system.service.SysLoginService; +import com.ruoyi.yunxin.Yunxin; +import com.ruoyi.yunxin.client.ImUserClient; +import com.ruoyi.yunxin.req.CreateUserReq; +import com.ruoyi.yunxin.req.UpdateTokenReq; +import com.ruoyi.yunxin.resp.YxCommonR; import lombok.extern.slf4j.Slf4j; import org.redisson.api.RLock; import org.redisson.api.RedissonClient; -import org.redisson.client.RedisClient; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.autoconfigure.ImportAutoConfiguration; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; +import javax.annotation.Resource; import java.math.BigDecimal; import java.time.LocalDateTime; import java.util.Collections; @@ -66,6 +70,12 @@ public class CaiLoginManager { private UnionService unionService; @Autowired private UnionUserService unionUserService; + @Autowired + private Yunxin yunxin; + @Resource + private ImUserClient imUserClient; + @Autowired + private UserCountService userCountService; public String login(String username,String password){ @@ -246,6 +256,26 @@ public class CaiLoginManager { add.setInviteId(user.getInviteId()); add.setImToken(IdUtil.simpleUUID()); userService.save(add); + CreateUserReq req = new CreateUserReq(); + req.setAccid(add.getId()+""); + req.setToken(add.getImToken()); + req.setName(add.getNickname()); + YxCommonR r = imUserClient.createUser(req); + if(!r.isSuccess()){ + if(r.getCode() == 414){ + UpdateTokenReq req1 = new UpdateTokenReq(); + req1.setAccid(add.getId()+""); + req1.setToken(add.getImToken()); + YxCommonR commonR = imUserClient.updateToken(req1); + if(!commonR.isSuccess()){ + log.error("刷新云token失败,{}", JSON.toJSONString(commonR)); + throw new ServiceException("注册失败,云信异常"); + } + }else{ + log.error("创建云信账号失败,{}", JSON.toJSONString(r)); + throw new ServiceException("注册失败,云信异常"); + } + } String clientIP = ServletUtils.getClientIP(); UserInfo userInfo = new UserInfo(); userInfo.setUserId(add.getId()); @@ -265,8 +295,18 @@ public class CaiLoginManager { UserOnline userOnline = new UserOnline(); userOnline.setUserId(add.getId()); userOnlineService.save(userOnline); + UserCount userCount = new UserCount(); + userCount.setUserId(add.getId()); + userCountService.save(userCount); return add; } + public void resetPassword(ResetPasswordReq code) { + User user = userService.getByUsername(code.getMobile()); + if(user == null){ + throw new ServiceException("账户不存在"); + } + userService.resetPassword(code.getMobile(),code.getPassword()); + } } diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/auth/ResetPasswordReq.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/auth/ResetPasswordReq.java new file mode 100644 index 00000000..9b4abb5f --- /dev/null +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/auth/ResetPasswordReq.java @@ -0,0 +1,12 @@ +package com.ruoyi.cai.auth; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Data +@Schema(description = "充值密码入参") +public class ResetPasswordReq { + private String mobile; + private String code; + private String password; +} diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/controller/app/AuthAppController.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/controller/app/AuthAppController.java index 7c03d5f0..069ea11f 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/controller/app/AuthAppController.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/controller/app/AuthAppController.java @@ -1,10 +1,7 @@ package com.ruoyi.cai.controller.app; import cn.dev33.satoken.annotation.SaIgnore; -import com.ruoyi.cai.auth.CaiLoginManager; -import com.ruoyi.cai.auth.CaiRegisterUser; -import com.ruoyi.cai.auth.LoginCaiUser; -import com.ruoyi.cai.auth.RegisterCode; +import com.ruoyi.cai.auth.*; import com.ruoyi.cai.enums.CodeEnum; import com.ruoyi.cai.manager.CodeManager; import com.ruoyi.cai.service.SmsVerifyService; @@ -43,7 +40,14 @@ public class AuthAppController { @PostMapping("/register/code") @Operation(summary = "获取注册验证码") public R> registerCode(@RequestBody RegisterCode code){ - smsVerifyService.put(code.getMobile()); + smsVerifyService.put(CodeEnum.REGISTER,code.getMobile()); + return R.ok("发送成功"); + } + + @PostMapping("/resetPassword/code") + @Operation(summary = "获取充值密码验证码") + public R> resetPasswordCode(@RequestBody RegisterCode code){ + smsVerifyService.put(CodeEnum.RESET_PASSWORD,code.getMobile()); return R.ok("发送成功"); } @@ -56,4 +60,12 @@ public class AuthAppController { return R.ok(ajax); } + @PostMapping("/resetPassword") + @Operation(summary = "获取充值密码验证码") + public R resetPassword(@RequestBody ResetPasswordReq code){ + caiLoginManager.resetPassword(code); + return R.ok("发送成功"); + } + + } diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/domain/SmsVerify.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/domain/SmsVerify.java index 441f0b98..814d5edc 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/domain/SmsVerify.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/domain/SmsVerify.java @@ -28,6 +28,8 @@ public class SmsVerify implements Serializable { * 状态 0 过期,或者删除 1 正常 */ private Integer status; + private String type; + private String typeDesc; /** * 接收号码 */ diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/domain/Union.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/domain/Union.java index 7b0ae3ed..7dd2c96f 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/domain/Union.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/domain/Union.java @@ -37,11 +37,6 @@ public class Union implements Serializable { * 是否开启提成 */ private Boolean enableRate; - /** - * 工会默认二级支付奖励比例 - */ - @Deprecated - private BigDecimal defaultIncomeRate; /** * 全部人数 */ diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/enums/CodeEnum.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/enums/CodeEnum.java index a3a8db62..7f4df920 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/enums/CodeEnum.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/enums/CodeEnum.java @@ -4,7 +4,8 @@ import lombok.Getter; @Getter public enum CodeEnum { - REGISTER("注册短信") + REGISTER("注册短信"), + RESET_PASSWORD("重置密码") ; private final String name; diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/manager/CurrentUserManager.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/manager/CurrentUserManager.java index 5a459042..00f6dc87 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/manager/CurrentUserManager.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/manager/CurrentUserManager.java @@ -1,25 +1,34 @@ package com.ruoyi.cai.manager; +import com.alibaba.fastjson2.JSON; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.ruoyi.cai.domain.*; import com.ruoyi.cai.dto.app.query.AccountAliBankCardRes; import com.ruoyi.cai.dto.app.query.AnchorUpdateReq; import com.ruoyi.cai.dto.app.query.UserUpdateReq; -import com.ruoyi.cai.dto.app.vo.*; +import com.ruoyi.cai.dto.app.vo.AnchorVo; +import com.ruoyi.cai.dto.app.vo.CurrentUserInfoVo; import com.ruoyi.cai.dto.app.vo.user.UserAccountVo; import com.ruoyi.cai.dto.app.vo.user.UserAlbumDTO; import com.ruoyi.cai.dto.app.vo.user.UserCountVo; import com.ruoyi.cai.service.*; import com.ruoyi.common.helper.LoginHelper; import com.ruoyi.common.utils.BeanConvertUtil; +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.Component; +import javax.annotation.Resource; +import java.time.format.DateTimeFormatter; import java.util.List; @Component +@Slf4j public class CurrentUserManager { @Autowired private UserService userService; @@ -33,6 +42,8 @@ public class CurrentUserManager { private AccountService accountService; @Autowired private AccountBankcardService accountBankcardService; + @Resource + private ImUserRefClient userClient; public CurrentUserInfoVo currentInfo() { Long userId = LoginHelper.getUserId(); @@ -87,15 +98,22 @@ public class CurrentUserManager { public boolean userUpdate(UserUpdateReq res) { res.setUserId(LoginHelper.getUserId()); boolean updateFlag = false; + boolean updateYunxin = false; + UpdateUinfoReq uinfoReq = new UpdateUinfoReq(); + uinfoReq.setAccid(res.getUserId()+""); LambdaUpdateWrapper update = Wrappers.lambdaUpdate(User.class).eq(User::getId, res.getUserId()); if(StringUtils.isNotEmpty(res.getNickname())){ update.set(User::getNickname,res.getNickname()); + uinfoReq.setName(res.getNickname()); updateFlag=true; + updateYunxin=true; } if(res.getBirthday() != null){ update.set(User::getBirthday,res.getBirthday()); + uinfoReq.setBirth(res.getBirthday().format(DateTimeFormatter.ofPattern("yyyy-MM-dd"))); updateFlag=true; + updateYunxin=true; } if(res.getCity() != null){ update.set(User::getCity,res.getCity()); @@ -104,12 +122,20 @@ public class CurrentUserManager { if(StringUtils.isNotEmpty(res.getAvatar())){ update.set(User::getAvatar,res.getAvatar()); update.set(User::getAvatarState,1); +// uinfoReq.setIcon(res.getAvatar()); +// updateYunxin=true; updateFlag=true; } if(updateFlag){ boolean flag = userService.update(update); if(flag){ userService.checkFinishStatus(res.getUserId()); + if(updateYunxin){ + YxCommonR r = userClient.updateUinfo(uinfoReq); + if(!r.isSuccess()){ + log.error("云信更新失败,需要检查!{}", JSON.toJSONString(r)); + } + } } } return true; diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/service/SmsVerifyService.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/service/SmsVerifyService.java index e2d2f29c..efb0235d 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/service/SmsVerifyService.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/service/SmsVerifyService.java @@ -2,6 +2,7 @@ package com.ruoyi.cai.service; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.cai.domain.SmsVerify; +import com.ruoyi.cai.enums.CodeEnum; /** * 短信验证码Service接口 @@ -11,5 +12,5 @@ import com.ruoyi.cai.domain.SmsVerify; */ public interface SmsVerifyService extends IService { - void put(String mobile); + void put(CodeEnum codeEnum, String mobile); } diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/service/UserService.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/service/UserService.java index fafb8416..4f267799 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/service/UserService.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/service/UserService.java @@ -34,4 +34,6 @@ public interface UserService extends IService { boolean agreeProtocol(Long userId); void checkFinishStatus(Long userId); + + void resetPassword(String mobile, String password); } diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/SmsVerifyServiceImpl.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/SmsVerifyServiceImpl.java index 1dc40d68..f8b177b2 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/SmsVerifyServiceImpl.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/SmsVerifyServiceImpl.java @@ -26,9 +26,11 @@ public class SmsVerifyServiceImpl extends ServiceImpl private CodeManager codeManager; @Override - public void put(String mobile){ - String code = codeManager.put(CodeEnum.REGISTER, mobile); + public void put(CodeEnum codeEnum,String mobile){ + String code = codeManager.put(codeEnum, mobile); SmsVerify smsVerify = new SmsVerify(); + smsVerify.setType(codeEnum.name()); + smsVerify.setType(codeEnum.getName()); smsVerify.setReceivePhone(mobile); smsVerify.setVerifyCode(code); smsVerify.setSendInterface("阿里云"); diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/UserServiceImpl.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/UserServiceImpl.java index 5bfb8df7..a63e762e 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/UserServiceImpl.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/UserServiceImpl.java @@ -141,4 +141,14 @@ public class UserServiceImpl extends ServiceImpl implements Us .set(User::getFinishStatus,1)); } } + + @Override + public void resetPassword(String mobile, String password) { + if(StringUtils.isEmpty(mobile) || StringUtils.isEmpty(password)){ + throw new ServiceException("参数异常"); + } + this.update(Wrappers.lambdaUpdate(User.class) + .eq(User::getMobile,mobile) + .set(User::getPassword,BCrypt.hashpw(password))); + } }