init
This commit is contained in:
@@ -3,10 +3,10 @@ package com.ruoyi.cai.auth;
|
|||||||
import cn.dev33.satoken.exception.NotLoginException;
|
import cn.dev33.satoken.exception.NotLoginException;
|
||||||
import cn.dev33.satoken.secure.BCrypt;
|
import cn.dev33.satoken.secure.BCrypt;
|
||||||
import cn.dev33.satoken.stp.StpUtil;
|
import cn.dev33.satoken.stp.StpUtil;
|
||||||
import cn.hutool.core.lang.UUID;
|
|
||||||
import cn.hutool.core.util.IdUtil;
|
import cn.hutool.core.util.IdUtil;
|
||||||
import cn.hutool.core.util.NumberUtil;
|
import cn.hutool.core.util.NumberUtil;
|
||||||
import cn.hutool.extra.spring.SpringUtil;
|
import cn.hutool.extra.spring.SpringUtil;
|
||||||
|
import com.alibaba.fastjson2.JSON;
|
||||||
import com.ruoyi.cai.domain.*;
|
import com.ruoyi.cai.domain.*;
|
||||||
import com.ruoyi.cai.enums.CodeEnum;
|
import com.ruoyi.cai.enums.CodeEnum;
|
||||||
import com.ruoyi.cai.enums.SystemConfigEnum;
|
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.ServletUtils;
|
||||||
import com.ruoyi.common.utils.ip.AddressUtils;
|
import com.ruoyi.common.utils.ip.AddressUtils;
|
||||||
import com.ruoyi.system.service.SysLoginService;
|
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 lombok.extern.slf4j.Slf4j;
|
||||||
import org.redisson.api.RLock;
|
import org.redisson.api.RLock;
|
||||||
import org.redisson.api.RedissonClient;
|
import org.redisson.api.RedissonClient;
|
||||||
import org.redisson.client.RedisClient;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.boot.autoconfigure.ImportAutoConfiguration;
|
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
@@ -66,6 +70,12 @@ public class CaiLoginManager {
|
|||||||
private UnionService unionService;
|
private UnionService unionService;
|
||||||
@Autowired
|
@Autowired
|
||||||
private UnionUserService unionUserService;
|
private UnionUserService unionUserService;
|
||||||
|
@Autowired
|
||||||
|
private Yunxin yunxin;
|
||||||
|
@Resource
|
||||||
|
private ImUserClient imUserClient;
|
||||||
|
@Autowired
|
||||||
|
private UserCountService userCountService;
|
||||||
|
|
||||||
|
|
||||||
public String login(String username,String password){
|
public String login(String username,String password){
|
||||||
@@ -246,6 +256,26 @@ public class CaiLoginManager {
|
|||||||
add.setInviteId(user.getInviteId());
|
add.setInviteId(user.getInviteId());
|
||||||
add.setImToken(IdUtil.simpleUUID());
|
add.setImToken(IdUtil.simpleUUID());
|
||||||
userService.save(add);
|
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();
|
String clientIP = ServletUtils.getClientIP();
|
||||||
UserInfo userInfo = new UserInfo();
|
UserInfo userInfo = new UserInfo();
|
||||||
userInfo.setUserId(add.getId());
|
userInfo.setUserId(add.getId());
|
||||||
@@ -265,8 +295,18 @@ public class CaiLoginManager {
|
|||||||
UserOnline userOnline = new UserOnline();
|
UserOnline userOnline = new UserOnline();
|
||||||
userOnline.setUserId(add.getId());
|
userOnline.setUserId(add.getId());
|
||||||
userOnlineService.save(userOnline);
|
userOnlineService.save(userOnline);
|
||||||
|
UserCount userCount = new UserCount();
|
||||||
|
userCount.setUserId(add.getId());
|
||||||
|
userCountService.save(userCount);
|
||||||
return add;
|
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());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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;
|
||||||
|
}
|
||||||
@@ -1,10 +1,7 @@
|
|||||||
package com.ruoyi.cai.controller.app;
|
package com.ruoyi.cai.controller.app;
|
||||||
|
|
||||||
import cn.dev33.satoken.annotation.SaIgnore;
|
import cn.dev33.satoken.annotation.SaIgnore;
|
||||||
import com.ruoyi.cai.auth.CaiLoginManager;
|
import com.ruoyi.cai.auth.*;
|
||||||
import com.ruoyi.cai.auth.CaiRegisterUser;
|
|
||||||
import com.ruoyi.cai.auth.LoginCaiUser;
|
|
||||||
import com.ruoyi.cai.auth.RegisterCode;
|
|
||||||
import com.ruoyi.cai.enums.CodeEnum;
|
import com.ruoyi.cai.enums.CodeEnum;
|
||||||
import com.ruoyi.cai.manager.CodeManager;
|
import com.ruoyi.cai.manager.CodeManager;
|
||||||
import com.ruoyi.cai.service.SmsVerifyService;
|
import com.ruoyi.cai.service.SmsVerifyService;
|
||||||
@@ -43,7 +40,14 @@ public class AuthAppController {
|
|||||||
@PostMapping("/register/code")
|
@PostMapping("/register/code")
|
||||||
@Operation(summary = "获取注册验证码")
|
@Operation(summary = "获取注册验证码")
|
||||||
public R<Map<String,String>> registerCode(@RequestBody RegisterCode code){
|
public R<Map<String,String>> registerCode(@RequestBody RegisterCode code){
|
||||||
smsVerifyService.put(code.getMobile());
|
smsVerifyService.put(CodeEnum.REGISTER,code.getMobile());
|
||||||
|
return R.ok("发送成功");
|
||||||
|
}
|
||||||
|
|
||||||
|
@PostMapping("/resetPassword/code")
|
||||||
|
@Operation(summary = "获取充值密码验证码")
|
||||||
|
public R<Map<String,String>> resetPasswordCode(@RequestBody RegisterCode code){
|
||||||
|
smsVerifyService.put(CodeEnum.RESET_PASSWORD,code.getMobile());
|
||||||
return R.ok("发送成功");
|
return R.ok("发送成功");
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -56,4 +60,12 @@ public class AuthAppController {
|
|||||||
return R.ok(ajax);
|
return R.ok(ajax);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@PostMapping("/resetPassword")
|
||||||
|
@Operation(summary = "获取充值密码验证码")
|
||||||
|
public R<Boolean> resetPassword(@RequestBody ResetPasswordReq code){
|
||||||
|
caiLoginManager.resetPassword(code);
|
||||||
|
return R.ok("发送成功");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -28,6 +28,8 @@ public class SmsVerify implements Serializable {
|
|||||||
* 状态 0 过期,或者删除 1 正常
|
* 状态 0 过期,或者删除 1 正常
|
||||||
*/
|
*/
|
||||||
private Integer status;
|
private Integer status;
|
||||||
|
private String type;
|
||||||
|
private String typeDesc;
|
||||||
/**
|
/**
|
||||||
* 接收号码
|
* 接收号码
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -37,11 +37,6 @@ public class Union implements Serializable {
|
|||||||
* 是否开启提成
|
* 是否开启提成
|
||||||
*/
|
*/
|
||||||
private Boolean enableRate;
|
private Boolean enableRate;
|
||||||
/**
|
|
||||||
* 工会默认二级支付奖励比例
|
|
||||||
*/
|
|
||||||
@Deprecated
|
|
||||||
private BigDecimal defaultIncomeRate;
|
|
||||||
/**
|
/**
|
||||||
* 全部人数
|
* 全部人数
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -4,7 +4,8 @@ import lombok.Getter;
|
|||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
public enum CodeEnum {
|
public enum CodeEnum {
|
||||||
REGISTER("注册短信")
|
REGISTER("注册短信"),
|
||||||
|
RESET_PASSWORD("重置密码")
|
||||||
;
|
;
|
||||||
|
|
||||||
private final String name;
|
private final String name;
|
||||||
|
|||||||
@@ -1,25 +1,34 @@
|
|||||||
package com.ruoyi.cai.manager;
|
package com.ruoyi.cai.manager;
|
||||||
|
|
||||||
|
import com.alibaba.fastjson2.JSON;
|
||||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||||
import com.ruoyi.cai.domain.*;
|
import com.ruoyi.cai.domain.*;
|
||||||
import com.ruoyi.cai.dto.app.query.AccountAliBankCardRes;
|
import com.ruoyi.cai.dto.app.query.AccountAliBankCardRes;
|
||||||
import com.ruoyi.cai.dto.app.query.AnchorUpdateReq;
|
import com.ruoyi.cai.dto.app.query.AnchorUpdateReq;
|
||||||
import com.ruoyi.cai.dto.app.query.UserUpdateReq;
|
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.UserAccountVo;
|
||||||
import com.ruoyi.cai.dto.app.vo.user.UserAlbumDTO;
|
import com.ruoyi.cai.dto.app.vo.user.UserAlbumDTO;
|
||||||
import com.ruoyi.cai.dto.app.vo.user.UserCountVo;
|
import com.ruoyi.cai.dto.app.vo.user.UserCountVo;
|
||||||
import com.ruoyi.cai.service.*;
|
import com.ruoyi.cai.service.*;
|
||||||
import com.ruoyi.common.helper.LoginHelper;
|
import com.ruoyi.common.helper.LoginHelper;
|
||||||
import com.ruoyi.common.utils.BeanConvertUtil;
|
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.apache.commons.lang3.StringUtils;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import java.time.format.DateTimeFormatter;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@Component
|
@Component
|
||||||
|
@Slf4j
|
||||||
public class CurrentUserManager {
|
public class CurrentUserManager {
|
||||||
@Autowired
|
@Autowired
|
||||||
private UserService userService;
|
private UserService userService;
|
||||||
@@ -33,6 +42,8 @@ public class CurrentUserManager {
|
|||||||
private AccountService accountService;
|
private AccountService accountService;
|
||||||
@Autowired
|
@Autowired
|
||||||
private AccountBankcardService accountBankcardService;
|
private AccountBankcardService accountBankcardService;
|
||||||
|
@Resource
|
||||||
|
private ImUserRefClient userClient;
|
||||||
|
|
||||||
public CurrentUserInfoVo currentInfo() {
|
public CurrentUserInfoVo currentInfo() {
|
||||||
Long userId = LoginHelper.getUserId();
|
Long userId = LoginHelper.getUserId();
|
||||||
@@ -87,15 +98,22 @@ public class CurrentUserManager {
|
|||||||
public boolean userUpdate(UserUpdateReq res) {
|
public boolean userUpdate(UserUpdateReq res) {
|
||||||
res.setUserId(LoginHelper.getUserId());
|
res.setUserId(LoginHelper.getUserId());
|
||||||
boolean updateFlag = false;
|
boolean updateFlag = false;
|
||||||
|
boolean updateYunxin = false;
|
||||||
|
UpdateUinfoReq uinfoReq = new UpdateUinfoReq();
|
||||||
|
uinfoReq.setAccid(res.getUserId()+"");
|
||||||
LambdaUpdateWrapper<User> update =
|
LambdaUpdateWrapper<User> update =
|
||||||
Wrappers.lambdaUpdate(User.class).eq(User::getId, res.getUserId());
|
Wrappers.lambdaUpdate(User.class).eq(User::getId, res.getUserId());
|
||||||
if(StringUtils.isNotEmpty(res.getNickname())){
|
if(StringUtils.isNotEmpty(res.getNickname())){
|
||||||
update.set(User::getNickname,res.getNickname());
|
update.set(User::getNickname,res.getNickname());
|
||||||
|
uinfoReq.setName(res.getNickname());
|
||||||
updateFlag=true;
|
updateFlag=true;
|
||||||
|
updateYunxin=true;
|
||||||
}
|
}
|
||||||
if(res.getBirthday() != null){
|
if(res.getBirthday() != null){
|
||||||
update.set(User::getBirthday,res.getBirthday());
|
update.set(User::getBirthday,res.getBirthday());
|
||||||
|
uinfoReq.setBirth(res.getBirthday().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
|
||||||
updateFlag=true;
|
updateFlag=true;
|
||||||
|
updateYunxin=true;
|
||||||
}
|
}
|
||||||
if(res.getCity() != null){
|
if(res.getCity() != null){
|
||||||
update.set(User::getCity,res.getCity());
|
update.set(User::getCity,res.getCity());
|
||||||
@@ -104,12 +122,20 @@ public class CurrentUserManager {
|
|||||||
if(StringUtils.isNotEmpty(res.getAvatar())){
|
if(StringUtils.isNotEmpty(res.getAvatar())){
|
||||||
update.set(User::getAvatar,res.getAvatar());
|
update.set(User::getAvatar,res.getAvatar());
|
||||||
update.set(User::getAvatarState,1);
|
update.set(User::getAvatarState,1);
|
||||||
|
// uinfoReq.setIcon(res.getAvatar());
|
||||||
|
// updateYunxin=true;
|
||||||
updateFlag=true;
|
updateFlag=true;
|
||||||
}
|
}
|
||||||
if(updateFlag){
|
if(updateFlag){
|
||||||
boolean flag = userService.update(update);
|
boolean flag = userService.update(update);
|
||||||
if(flag){
|
if(flag){
|
||||||
userService.checkFinishStatus(res.getUserId());
|
userService.checkFinishStatus(res.getUserId());
|
||||||
|
if(updateYunxin){
|
||||||
|
YxCommonR r = userClient.updateUinfo(uinfoReq);
|
||||||
|
if(!r.isSuccess()){
|
||||||
|
log.error("云信更新失败,需要检查!{}", JSON.toJSONString(r));
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ package com.ruoyi.cai.service;
|
|||||||
|
|
||||||
import com.baomidou.mybatisplus.extension.service.IService;
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
import com.ruoyi.cai.domain.SmsVerify;
|
import com.ruoyi.cai.domain.SmsVerify;
|
||||||
|
import com.ruoyi.cai.enums.CodeEnum;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 短信验证码Service接口
|
* 短信验证码Service接口
|
||||||
@@ -11,5 +12,5 @@ import com.ruoyi.cai.domain.SmsVerify;
|
|||||||
*/
|
*/
|
||||||
public interface SmsVerifyService extends IService<SmsVerify> {
|
public interface SmsVerifyService extends IService<SmsVerify> {
|
||||||
|
|
||||||
void put(String mobile);
|
void put(CodeEnum codeEnum, String mobile);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -34,4 +34,6 @@ public interface UserService extends IService<User> {
|
|||||||
boolean agreeProtocol(Long userId);
|
boolean agreeProtocol(Long userId);
|
||||||
|
|
||||||
void checkFinishStatus(Long userId);
|
void checkFinishStatus(Long userId);
|
||||||
|
|
||||||
|
void resetPassword(String mobile, String password);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -26,9 +26,11 @@ public class SmsVerifyServiceImpl extends ServiceImpl<SmsVerifyMapper,SmsVerify>
|
|||||||
private CodeManager codeManager;
|
private CodeManager codeManager;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void put(String mobile){
|
public void put(CodeEnum codeEnum,String mobile){
|
||||||
String code = codeManager.put(CodeEnum.REGISTER, mobile);
|
String code = codeManager.put(codeEnum, mobile);
|
||||||
SmsVerify smsVerify = new SmsVerify();
|
SmsVerify smsVerify = new SmsVerify();
|
||||||
|
smsVerify.setType(codeEnum.name());
|
||||||
|
smsVerify.setType(codeEnum.getName());
|
||||||
smsVerify.setReceivePhone(mobile);
|
smsVerify.setReceivePhone(mobile);
|
||||||
smsVerify.setVerifyCode(code);
|
smsVerify.setVerifyCode(code);
|
||||||
smsVerify.setSendInterface("阿里云");
|
smsVerify.setSendInterface("阿里云");
|
||||||
|
|||||||
@@ -141,4 +141,14 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
|
|||||||
.set(User::getFinishStatus,1));
|
.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)));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user