123
This commit is contained in:
@@ -4,6 +4,7 @@ import com.alibaba.fastjson2.JSON;
|
|||||||
import com.ruoyi.cai.domain.User;
|
import com.ruoyi.cai.domain.User;
|
||||||
import com.ruoyi.cai.domain.UserCount;
|
import com.ruoyi.cai.domain.UserCount;
|
||||||
import com.ruoyi.cai.im.ImManager;
|
import com.ruoyi.cai.im.ImManager;
|
||||||
|
import com.ruoyi.cai.manager.AwardManager;
|
||||||
import com.ruoyi.cai.service.DynamicService;
|
import com.ruoyi.cai.service.DynamicService;
|
||||||
import com.ruoyi.cai.service.UserCountService;
|
import com.ruoyi.cai.service.UserCountService;
|
||||||
import com.ruoyi.cai.service.UserService;
|
import com.ruoyi.cai.service.UserService;
|
||||||
@@ -31,6 +32,13 @@ public class UserTest {
|
|||||||
private ImManager imManager;
|
private ImManager imManager;
|
||||||
@Autowired
|
@Autowired
|
||||||
private DynamicService dynamicService;
|
private DynamicService dynamicService;
|
||||||
|
@Autowired
|
||||||
|
private AwardManager awardManager;
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void joinAnchorInvite(){
|
||||||
|
awardManager.giveJoinAnchor(1003L);
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void clean(){
|
public void clean(){
|
||||||
|
|||||||
@@ -14,6 +14,7 @@ import com.ruoyi.cai.dto.app.vo.chat.VideoChargingResp;
|
|||||||
import com.ruoyi.cai.enums.SystemConfigEnum;
|
import com.ruoyi.cai.enums.SystemConfigEnum;
|
||||||
import com.ruoyi.cai.manager.IdManager;
|
import com.ruoyi.cai.manager.IdManager;
|
||||||
import com.ruoyi.cai.manager.SystemConfigManager;
|
import com.ruoyi.cai.manager.SystemConfigManager;
|
||||||
|
import com.ruoyi.cai.manager.UserForbidManager;
|
||||||
import com.ruoyi.cai.service.*;
|
import com.ruoyi.cai.service.*;
|
||||||
import com.ruoyi.cai.ws.bean.Room;
|
import com.ruoyi.cai.ws.bean.Room;
|
||||||
import com.ruoyi.cai.ws.constant.RedisConstant;
|
import com.ruoyi.cai.ws.constant.RedisConstant;
|
||||||
@@ -54,6 +55,8 @@ public class ChatManager {
|
|||||||
private RedissonClient redissonClient;
|
private RedissonClient redissonClient;
|
||||||
@Autowired
|
@Autowired
|
||||||
private AccountService accountService;
|
private AccountService accountService;
|
||||||
|
@Autowired
|
||||||
|
private UserForbidManager userForbidManager;
|
||||||
|
|
||||||
private String setWsToken(Long roomId,Long fromUid,Long toUid,Long userId){
|
private String setWsToken(Long roomId,Long fromUid,Long toUid,Long userId){
|
||||||
String token = IdManager.nextIdStr();
|
String token = IdManager.nextIdStr();
|
||||||
@@ -88,6 +91,10 @@ public class ChatManager {
|
|||||||
Long userId = LoginHelper.getUserId();
|
Long userId = LoginHelper.getUserId();
|
||||||
User fromUser = userService.getById(userId);
|
User fromUser = userService.getById(userId);
|
||||||
User toUser = userService.getById(callReq.getToUid());
|
User toUser = userService.getById(callReq.getToUid());
|
||||||
|
if(fromUser != null){
|
||||||
|
throw new ServiceException("用户不存在");
|
||||||
|
}
|
||||||
|
userForbidManager.checkForbid(userId);
|
||||||
if(toUser == null){
|
if(toUser == null){
|
||||||
throw new ServiceException("主播不存在");
|
throw new ServiceException("主播不存在");
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -25,6 +25,7 @@ public enum AccountChangeCodeEnum {
|
|||||||
GUARD_INVITE(505,AccountCateEnum.SYSTEM,"邀请奖励(守护)",AccountTypeEnum.INCOME_COIN,"",true),
|
GUARD_INVITE(505,AccountCateEnum.SYSTEM,"邀请奖励(守护)",AccountTypeEnum.INCOME_COIN,"",true),
|
||||||
REGISTER_AWARD(506,AccountCateEnum.SYSTEM,"注册奖励",AccountTypeEnum.INCOME_COIN,"",null),
|
REGISTER_AWARD(506,AccountCateEnum.SYSTEM,"注册奖励",AccountTypeEnum.INCOME_COIN,"",null),
|
||||||
RANK_AWARD(507,AccountCateEnum.SYSTEM,"排行榜奖励",AccountTypeEnum.INCOME_COIN,"",null),
|
RANK_AWARD(507,AccountCateEnum.SYSTEM,"排行榜奖励",AccountTypeEnum.INCOME_COIN,"",null),
|
||||||
|
JOIN_ANCHOR_INVITE(508,AccountCateEnum.SYSTEM,"邀请奖励(主播入驻)",AccountTypeEnum.INCOME_COIN,"",true),
|
||||||
|
|
||||||
IM_INCOME(701,AccountCateEnum.IM,"收到私信",AccountTypeEnum.INCOME_COIN,"",true),
|
IM_INCOME(701,AccountCateEnum.IM,"收到私信",AccountTypeEnum.INCOME_COIN,"",true),
|
||||||
IM_COIN_OUT(702,AccountCateEnum.IM,"私信支出",AccountTypeEnum.COIN,"",false),
|
IM_COIN_OUT(702,AccountCateEnum.IM,"私信支出",AccountTypeEnum.COIN,"",false),
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
package com.ruoyi.cai.manager;
|
package com.ruoyi.cai.manager;
|
||||||
|
|
||||||
import cn.hutool.extra.spring.SpringUtil;
|
import cn.hutool.extra.spring.SpringUtil;
|
||||||
|
import com.alibaba.fastjson.JSON;
|
||||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||||
import com.ruoyi.cai.domain.Rank;
|
import com.ruoyi.cai.domain.Rank;
|
||||||
import com.ruoyi.cai.domain.User;
|
import com.ruoyi.cai.domain.User;
|
||||||
@@ -44,27 +45,36 @@ public class AwardManager {
|
|||||||
@Autowired
|
@Autowired
|
||||||
private YunxinHttpService yunxinHttpService;
|
private YunxinHttpService yunxinHttpService;
|
||||||
|
|
||||||
public void giveJoinAnchorAsync(Long userId){
|
public void giveJoinAnchorAsync(Long anchorUserId){
|
||||||
AwardManager bean = SpringUtil.getBean(AwardManager.class);
|
AwardManager bean = SpringUtil.getBean(AwardManager.class);
|
||||||
ExecutorConstant.COMMON_EXECUTOR.execute(() -> {
|
ExecutorConstant.COMMON_EXECUTOR.execute(() -> {
|
||||||
bean.giveJoinAnchor(userId);
|
bean.giveJoinAnchor(anchorUserId);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public void giveJoinAnchor(Long userId) {
|
public void giveJoinAnchor(Long anchorUserId) {
|
||||||
Long price = systemConfigManager.getSystemConfigOfLong(SystemConfigEnum.JOIN_ANCHOR_INVITE_AWARD);
|
Long price = systemConfigManager.getSystemConfigOfLong(SystemConfigEnum.JOIN_ANCHOR_INVITE_AWARD);
|
||||||
if(price == 0){
|
if(price == 0){
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
User user = userService.getById(userId);
|
User anchorUser = userService.getById(anchorUserId);
|
||||||
if(user == null){
|
if(anchorUser == null){
|
||||||
log.error("主播入驻邀请奖励领取失败 用户不存在 userId={}",userId);
|
log.error("主播入驻邀请奖励领取失败 主播不存在 userId={}",anchorUserId);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// accountMapper.incsIncomeCoin(userId,price);
|
Long inviteUserId = anchorUser.getInviteId();
|
||||||
// accountChangeLogService.saveLogNoAdmin(user.getId(),user.getUsercode(), AccountChangeCodeEnum.FAST_PAY_AWARD,price,traceId);
|
if(inviteUserId == null){
|
||||||
|
log.warn("主播邀请入驻无需分成,没有检测到邀请人 anchorUser={}", JSON.toJSONString(anchorUser));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
User inviteUser = userService.getById(inviteUserId);
|
||||||
|
if(inviteUser == null){
|
||||||
|
log.error("主播邀请入驻无需分成,没有检测到邀请人,邀请人不存在 anchorUser={}", JSON.toJSONString(anchorUser));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
accountMapper.incsIncomeCoin(inviteUser.getId(),price);
|
||||||
|
accountChangeLogService.saveLogNoAdmin(inviteUser.getId(),inviteUser.getUsercode(), AccountChangeCodeEnum.JOIN_ANCHOR_INVITE,price,null,anchorUserId);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void giveRegisterAsync(Long userId){
|
public void giveRegisterAsync(Long userId){
|
||||||
|
|||||||
@@ -154,15 +154,7 @@ public class HomeManager {
|
|||||||
config.setOssDomain(systemConfigManager.getSystemConfig(SystemConfigEnum.COS_DOMAIN));
|
config.setOssDomain(systemConfigManager.getSystemConfig(SystemConfigEnum.COS_DOMAIN));
|
||||||
config.setOpenWithdraw(systemConfigManager.getSystemConfigOfBool(SystemConfigEnum.OPEN_WITHDRAW));
|
config.setOpenWithdraw(systemConfigManager.getSystemConfigOfBool(SystemConfigEnum.OPEN_WITHDRAW));
|
||||||
Long userId = LoginHelper.getUserId();
|
Long userId = LoginHelper.getUserId();
|
||||||
User user = userService.getById(userId);
|
userForbidManager.checkForbid(userId);
|
||||||
String imei = ServletUtils.getImei();
|
|
||||||
UserForbidManager.CheckForbid forbid = userForbidManager.checkForbid(user.getId(), user.getUsercode(), imei, ServletUtils.getClientIP());
|
|
||||||
if(forbid != null && forbid.isForbid()){
|
|
||||||
throw new ServiceException(forbid.getMessage());
|
|
||||||
}
|
|
||||||
if(user.getStatus() != 0){
|
|
||||||
throw new ServiceException("用户已封禁,请联系客服");
|
|
||||||
}
|
|
||||||
if(userId != null){
|
if(userId != null){
|
||||||
LoginNotifyDTO loginUserDTO = new LoginNotifyDTO();
|
LoginNotifyDTO loginUserDTO = new LoginNotifyDTO();
|
||||||
loginUserDTO.setUserId(userId);
|
loginUserDTO.setUserId(userId);
|
||||||
|
|||||||
@@ -17,6 +17,8 @@ import com.ruoyi.cai.mq.handleDelay.dto.ForbidDelayDto;
|
|||||||
import com.ruoyi.cai.service.*;
|
import com.ruoyi.cai.service.*;
|
||||||
import com.ruoyi.cai.util.CaiDateUtil;
|
import com.ruoyi.cai.util.CaiDateUtil;
|
||||||
import com.ruoyi.common.exception.ServiceException;
|
import com.ruoyi.common.exception.ServiceException;
|
||||||
|
import com.ruoyi.common.helper.LoginHelper;
|
||||||
|
import com.ruoyi.common.utils.ServletUtils;
|
||||||
import com.ruoyi.common.utils.StringUtils;
|
import com.ruoyi.common.utils.StringUtils;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
@@ -124,6 +126,31 @@ public class UserForbidManager {
|
|||||||
userForbidService.forbid(userForbidLog,user);
|
userForbidService.forbid(userForbidLog,user);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void checkForbid(User user){
|
||||||
|
Long userId = null;
|
||||||
|
String userCode = null;
|
||||||
|
if(user != null){
|
||||||
|
userCode = user.getUsercode();
|
||||||
|
userId = user.getId();
|
||||||
|
}
|
||||||
|
String imei = ServletUtils.getImei();
|
||||||
|
UserForbidManager.CheckForbid forbid = this.checkForbid(userId, userCode, imei, ServletUtils.getClientIP());
|
||||||
|
if(forbid != null && forbid.isForbid()){
|
||||||
|
throw new ServiceException(forbid.getMessage());
|
||||||
|
}
|
||||||
|
if(user != null && user.getStatus() != 0){
|
||||||
|
throw new ServiceException("用户已封禁,请联系客服");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void checkForbid(Long userId){
|
||||||
|
User user = null;
|
||||||
|
if(userId != null){
|
||||||
|
user = userService.getById(userId);
|
||||||
|
}
|
||||||
|
checkForbid(user);
|
||||||
|
}
|
||||||
|
|
||||||
public CheckForbid checkForbid(Long userId,String usercode, String IMEI, String ip){
|
public CheckForbid checkForbid(Long userId,String usercode, String IMEI, String ip){
|
||||||
ForbidTypeEnum typeEnum;
|
ForbidTypeEnum typeEnum;
|
||||||
CheckForbid noForbid = CheckForbid.noForbid();
|
CheckForbid noForbid = CheckForbid.noForbid();
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ import com.ruoyi.cai.dto.commom.anchor.CheckAnchorAutoResp;
|
|||||||
import com.ruoyi.cai.enums.AuditStatusEnum;
|
import com.ruoyi.cai.enums.AuditStatusEnum;
|
||||||
import com.ruoyi.cai.enums.GenderEnum;
|
import com.ruoyi.cai.enums.GenderEnum;
|
||||||
import com.ruoyi.cai.enums.SystemConfigEnum;
|
import com.ruoyi.cai.enums.SystemConfigEnum;
|
||||||
|
import com.ruoyi.cai.manager.AwardManager;
|
||||||
import com.ruoyi.cai.manager.LockManager;
|
import com.ruoyi.cai.manager.LockManager;
|
||||||
import com.ruoyi.cai.manager.SystemConfigManager;
|
import com.ruoyi.cai.manager.SystemConfigManager;
|
||||||
import com.ruoyi.cai.mapper.AnchorApplyMapper;
|
import com.ruoyi.cai.mapper.AnchorApplyMapper;
|
||||||
@@ -48,6 +49,8 @@ public class AnchorApplyServiceImpl extends ServiceImpl<AnchorApplyMapper, Ancho
|
|||||||
private YunxinHttpService yunxinHttpService;
|
private YunxinHttpService yunxinHttpService;
|
||||||
@Autowired
|
@Autowired
|
||||||
private RedissonClient redissonClient;
|
private RedissonClient redissonClient;
|
||||||
|
@Autowired
|
||||||
|
private AwardManager awardManager;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public AnchorApply getByUserId(Long userId){
|
public AnchorApply getByUserId(Long userId){
|
||||||
@@ -126,7 +129,7 @@ public class AnchorApplyServiceImpl extends ServiceImpl<AnchorApplyMapper, Ancho
|
|||||||
try {
|
try {
|
||||||
joinAnchorLock.lock();
|
joinAnchorLock.lock();
|
||||||
anchorService.joinAnchor(userId, false);
|
anchorService.joinAnchor(userId, false);
|
||||||
// TODO
|
awardManager.giveJoinAnchorAsync(userId);
|
||||||
return CheckAnchorAutoResp.builder().joinSuccess(true).build();
|
return CheckAnchorAutoResp.builder().joinSuccess(true).build();
|
||||||
}catch (Exception e){
|
}catch (Exception e){
|
||||||
log.error("自动加入主播失败!",e);
|
log.error("自动加入主播失败!",e);
|
||||||
@@ -174,6 +177,7 @@ public class AnchorApplyServiceImpl extends ServiceImpl<AnchorApplyMapper, Ancho
|
|||||||
save.setGuardRate(systemConfigManager.getSystemConfigOfBigDecimal(SystemConfigEnum.DEFAULT_ANCHOR_GUARD_PRICE));
|
save.setGuardRate(systemConfigManager.getSystemConfigOfBigDecimal(SystemConfigEnum.DEFAULT_ANCHOR_GUARD_PRICE));
|
||||||
save.setGiftRate(systemConfigManager.getSystemConfigOfBigDecimal(SystemConfigEnum.DEFAULT_ANCHOR_GIFT_PRICE));
|
save.setGiftRate(systemConfigManager.getSystemConfigOfBigDecimal(SystemConfigEnum.DEFAULT_ANCHOR_GIFT_PRICE));
|
||||||
anchorService.save(save);
|
anchorService.save(save);
|
||||||
|
awardManager.giveJoinAnchorAsync(userId);
|
||||||
yunxinHttpService.passAnchorSendMessage(userId);
|
yunxinHttpService.passAnchorSendMessage(userId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
package com.ruoyi.cai.service.impl;
|
package com.ruoyi.cai.service.impl;
|
||||||
|
|
||||||
|
import cn.dev33.satoken.stp.StpUtil;
|
||||||
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSON;
|
||||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
@@ -23,10 +24,13 @@ import com.ruoyi.cai.service.UserInfoService;
|
|||||||
import com.ruoyi.cai.service.UserService;
|
import com.ruoyi.cai.service.UserService;
|
||||||
import com.ruoyi.cai.util.CaiDateUtil;
|
import com.ruoyi.cai.util.CaiDateUtil;
|
||||||
import com.ruoyi.common.core.domain.PageQuery;
|
import com.ruoyi.common.core.domain.PageQuery;
|
||||||
|
import com.ruoyi.common.enums.UserType;
|
||||||
|
import com.ruoyi.common.helper.LoginHelper;
|
||||||
import com.ruoyi.common.utils.StringUtils;
|
import com.ruoyi.common.utils.StringUtils;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
@@ -52,6 +56,7 @@ public class UserForbidServiceImpl extends ServiceImpl<UserForbidMapper, UserFor
|
|||||||
private UserInfoService userInfoService;
|
private UserInfoService userInfoService;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public void forbid(UserForbidLog userForbidLog, User user) {
|
public void forbid(UserForbidLog userForbidLog, User user) {
|
||||||
ForbidTimeEnum forbidTime = ForbidTimeEnum.getByCode(userForbidLog.getForbidTime());
|
ForbidTimeEnum forbidTime = ForbidTimeEnum.getByCode(userForbidLog.getForbidTime());
|
||||||
ForbidTypeEnum forbidType = ForbidTypeEnum.getByCode(userForbidLog.getType());
|
ForbidTypeEnum forbidType = ForbidTypeEnum.getByCode(userForbidLog.getType());
|
||||||
@@ -86,6 +91,9 @@ public class UserForbidServiceImpl extends ServiceImpl<UserForbidMapper, UserFor
|
|||||||
userService.update(Wrappers.lambdaUpdate(User.class).eq(User::getId,user.getId()).set(User::getStatus,1));
|
userService.update(Wrappers.lambdaUpdate(User.class).eq(User::getId,user.getId()).set(User::getStatus,1));
|
||||||
anchorService.update(Wrappers.lambdaUpdate(Anchor.class).eq(Anchor::getId,user.getId()).set(Anchor::getStatus,1));
|
anchorService.update(Wrappers.lambdaUpdate(Anchor.class).eq(Anchor::getId,user.getId()).set(Anchor::getStatus,1));
|
||||||
}
|
}
|
||||||
|
if(forbidType == ForbidTypeEnum.USER && user != null){
|
||||||
|
LoginHelper.logoutApp(user.getId());
|
||||||
|
}
|
||||||
forbidCache.addForbid(one);
|
forbidCache.addForbid(one);
|
||||||
try {
|
try {
|
||||||
// 12小时
|
// 12小时
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ import com.ruoyi.common.enums.DeviceType;
|
|||||||
import com.ruoyi.common.enums.UserType;
|
import com.ruoyi.common.enums.UserType;
|
||||||
import lombok.AccessLevel;
|
import lombok.AccessLevel;
|
||||||
import lombok.NoArgsConstructor;
|
import lombok.NoArgsConstructor;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 登录鉴权助手
|
* 登录鉴权助手
|
||||||
@@ -27,6 +28,7 @@ import lombok.NoArgsConstructor;
|
|||||||
* @author Lion Li
|
* @author Lion Li
|
||||||
*/
|
*/
|
||||||
@NoArgsConstructor(access = AccessLevel.PRIVATE)
|
@NoArgsConstructor(access = AccessLevel.PRIVATE)
|
||||||
|
@Slf4j
|
||||||
public class LoginHelper {
|
public class LoginHelper {
|
||||||
|
|
||||||
public static final String LOGIN_USER_KEY = "loginUser";
|
public static final String LOGIN_USER_KEY = "loginUser";
|
||||||
@@ -67,6 +69,15 @@ public class LoginHelper {
|
|||||||
StpUtil.getTokenSession().set(LOGIN_USER_KEY, loginUser);
|
StpUtil.getTokenSession().set(LOGIN_USER_KEY, loginUser);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void logoutApp(Long userId){
|
||||||
|
try {
|
||||||
|
StpUtil.logout(UserType.APP_USER.getUserType() + ":" + userId);
|
||||||
|
}catch (Exception e){
|
||||||
|
log.error("强制T人下线失败! userId={}",userId,e);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取用户(多级缓存)
|
* 获取用户(多级缓存)
|
||||||
*/
|
*/
|
||||||
|
|||||||
Reference in New Issue
Block a user