数据
This commit is contained in:
@@ -1,2 +1,9 @@
|
|||||||
ALTER TABLE `cai_anchor`
|
ALTER TABLE `cai_anchor`
|
||||||
ADD COLUMN `show_me_rate` int NOT NULL DEFAULT 10 COMMENT '展示自己概率' AFTER `recommend_status`;
|
ADD COLUMN `show_me_rate` int NOT NULL DEFAULT 10 COMMENT '展示自己概率' AFTER `recommend_status`;
|
||||||
|
|
||||||
|
ALTER TABLE `cai_account`
|
||||||
|
ADD COLUMN `message_income_coin` bigint NOT NULL DEFAULT 0 COMMENT '聊天收入' AFTER `total_buy_coin`,
|
||||||
|
ADD COLUMN `video_income_coin` bigint NOT NULL DEFAULT 0 COMMENT '视频收入' AFTER `message_income_coin`,
|
||||||
|
ADD COLUMN `gift_income_coin` bigint NOT NULL DEFAULT 0 COMMENT '礼物收入' AFTER `video_income_coin`,
|
||||||
|
ADD COLUMN `guard_income_coin` bigint NOT NULL DEFAULT 0 COMMENT '守护收入' AFTER `gift_income_coin`,
|
||||||
|
ADD COLUMN `union_income_coin` bigint NOT NULL DEFAULT 0 COMMENT '工会收入' AFTER `guard_income_coin`;
|
||||||
|
|||||||
@@ -44,6 +44,18 @@ public class Account implements Serializable {
|
|||||||
* 充值彩贝总额
|
* 充值彩贝总额
|
||||||
*/
|
*/
|
||||||
private Long totalBuyCoin;
|
private Long totalBuyCoin;
|
||||||
|
/**
|
||||||
|
* 聊天收入
|
||||||
|
*/
|
||||||
|
private Long messageIncomeCoin;
|
||||||
|
/** 视频收入 */
|
||||||
|
private Long videoIncomeCoin;
|
||||||
|
/** 礼物收入 */
|
||||||
|
private Long giftIncomeCoin;
|
||||||
|
/** 守护收入 */
|
||||||
|
private Long guardIncomeCoin;
|
||||||
|
/** 工会收入 */
|
||||||
|
private Long unionIncomeCoin;
|
||||||
/**
|
/**
|
||||||
* 账户锁定 0 正常 1 锁定
|
* 账户锁定 0 正常 1 锁定
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -0,0 +1,41 @@
|
|||||||
|
package com.ruoyi.cai.manager;
|
||||||
|
|
||||||
|
import com.ruoyi.cai.mapper.AccountMapper;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
|
||||||
|
@Component
|
||||||
|
@Slf4j
|
||||||
|
public class AccountTotalManager {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private AccountMapper accountMapper;
|
||||||
|
|
||||||
|
public void incsGuardIncomeCoin(Long userId, Long amount, Long businessLogId){
|
||||||
|
log.info("开始收入统计 守护: userId={},amount={}, businessLogId={}", userId, amount, businessLogId);
|
||||||
|
accountMapper.incsGuardIncomeIcon(userId, amount);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void incsGiftIncomeCoin(Long userId, Long amount, Long businessLogId){
|
||||||
|
log.info("开始收入统计 礼物: userId={},amount={}, businessLogId={}", userId, amount, businessLogId);
|
||||||
|
accountMapper.incsGiftIncomeIcon(userId, amount);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void incsMessageIncomeCoin(Long userId, Long amount, Long businessLogId) {
|
||||||
|
log.info("开始收入统计 聊天: userId={},amount={}, businessLogId={}", userId, amount, businessLogId);
|
||||||
|
accountMapper.incsMessageIncomeIcon(userId, amount);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void incsVideoIncomeCoin(Long userId, Long amount, Long businessLogId) {
|
||||||
|
log.info("开始收入统计 视频: userId={},amount={}, businessLogId={}", userId, amount, businessLogId);
|
||||||
|
accountMapper.incsVideoIncomeIcon(userId, amount);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void incsPayIncomeCoin(Long userId, Long rechargeCoin, BigDecimal price, Long consumeLogId) {
|
||||||
|
log.info("开始收入统计 充值: userId={},price={},rechargeCoin={}, businessLogId={}", userId, price, rechargeCoin,consumeLogId);
|
||||||
|
accountMapper.incsPayTotal(userId, rechargeCoin, price);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -52,6 +52,8 @@ public class ConsumerManager {
|
|||||||
private UserService userService;
|
private UserService userService;
|
||||||
@Autowired
|
@Autowired
|
||||||
private AnchorService anchorService;
|
private AnchorService anchorService;
|
||||||
|
@Autowired
|
||||||
|
private AccountTotalManager accountTotalManager;
|
||||||
|
|
||||||
public GuardConsumerResp sendGuard(GiveGuardReq query){
|
public GuardConsumerResp sendGuard(GiveGuardReq query){
|
||||||
GuardConsumerResp resp = guardTotalService.giveGuard(query);
|
GuardConsumerResp resp = guardTotalService.giveGuard(query);
|
||||||
@@ -61,6 +63,12 @@ public class ConsumerManager {
|
|||||||
}catch (Exception e){
|
}catch (Exception e){
|
||||||
log.error("RabbitMq 发送失败, 守护分销流程流转失败!",e);
|
log.error("RabbitMq 发送失败, 守护分销流程流转失败!",e);
|
||||||
}
|
}
|
||||||
|
try {
|
||||||
|
// 记录主播的消费记录
|
||||||
|
accountTotalManager.incsGuardIncomeCoin(resp.getToUid(), resp.getAnchorIncomeCoin(),resp.getConsumeLogId());
|
||||||
|
}catch (Exception e){
|
||||||
|
log.error("主播消费记录失败-守护",e);
|
||||||
|
}
|
||||||
try {
|
try {
|
||||||
Account account = accountService.getByUserId(resp.getToUid());
|
Account account = accountService.getByUserId(resp.getToUid());
|
||||||
if(account != null){
|
if(account != null){
|
||||||
@@ -83,6 +91,12 @@ public class ConsumerManager {
|
|||||||
}catch (Exception e){
|
}catch (Exception e){
|
||||||
log.error("RabbitMq 发送失败, 礼物分销流程流转失败!",e);
|
log.error("RabbitMq 发送失败, 礼物分销流程流转失败!",e);
|
||||||
}
|
}
|
||||||
|
try {
|
||||||
|
// 记录主播的消费记录
|
||||||
|
accountTotalManager.incsGiftIncomeCoin(resp.getToUid(), resp.getAnchorIncomeCoin(),resp.getConsumeLogId());
|
||||||
|
}catch (Exception e){
|
||||||
|
log.error("主播消费记录失败-礼物",e);
|
||||||
|
}
|
||||||
try {
|
try {
|
||||||
Account account = accountService.getByUserId(resp.getToUid());
|
Account account = accountService.getByUserId(resp.getToUid());
|
||||||
if(account != null){
|
if(account != null){
|
||||||
@@ -125,6 +139,12 @@ public class ConsumerManager {
|
|||||||
}catch (Exception e){
|
}catch (Exception e){
|
||||||
log.error("RabbitMq 发送失败, 视频分销流程流转失败!",e);
|
log.error("RabbitMq 发送失败, 视频分销流程流转失败!",e);
|
||||||
}
|
}
|
||||||
|
try {
|
||||||
|
// 记录主播的消费记录
|
||||||
|
accountTotalManager.incsVideoIncomeCoin(consumeLog.getTargetUserId(), consumeLog.getAnchorAmount(),consumeLog.getId());
|
||||||
|
}catch (Exception e){
|
||||||
|
log.error("主播消费记录失败-视频",e);
|
||||||
|
}
|
||||||
try {
|
try {
|
||||||
anchorService.incsServiceTimeAndCount(room.getRoomId());
|
anchorService.incsServiceTimeAndCount(room.getRoomId());
|
||||||
}catch (Exception e){
|
}catch (Exception e){
|
||||||
@@ -156,6 +176,12 @@ public class ConsumerManager {
|
|||||||
}catch (Exception e){
|
}catch (Exception e){
|
||||||
log.error("RabbitMq 发送失败, 充值分销流程流转失败!",e);
|
log.error("RabbitMq 发送失败, 充值分销流程流转失败!",e);
|
||||||
}
|
}
|
||||||
|
try {
|
||||||
|
// 记录主播的消费记录
|
||||||
|
accountTotalManager.incsPayIncomeCoin(resp.getUserId(), resp.getRechargeCoin(),resp.getPrice(), resp.getConsumeLogId());
|
||||||
|
}catch (Exception e){
|
||||||
|
log.error("主播消费记录失败-充值",e);
|
||||||
|
}
|
||||||
try {
|
try {
|
||||||
Account account = accountService.getByUserId(resp.getUserId());
|
Account account = accountService.getByUserId(resp.getUserId());
|
||||||
if(account != null){
|
if(account != null){
|
||||||
|
|||||||
@@ -6,6 +6,8 @@ import com.ruoyi.cai.domain.Account;
|
|||||||
import com.ruoyi.cai.dto.admin.vo.AccountAdminVo;
|
import com.ruoyi.cai.dto.admin.vo.AccountAdminVo;
|
||||||
import org.apache.ibatis.annotations.Param;
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 用户账户Mapper接口
|
* 用户账户Mapper接口
|
||||||
*
|
*
|
||||||
@@ -24,4 +26,14 @@ public interface AccountMapper extends BaseMapper<Account> {
|
|||||||
boolean decrIncomeCoinNotCheck(@Param("userId") Long userId, @Param("incomeCoin") Long incomeCoin);
|
boolean decrIncomeCoinNotCheck(@Param("userId") Long userId, @Param("incomeCoin") Long incomeCoin);
|
||||||
|
|
||||||
Page<AccountAdminVo> pageAdmin(@Param("build") Page<Object> build, @Param("bo") AccountAdminVo bo);
|
Page<AccountAdminVo> pageAdmin(@Param("build") Page<Object> build, @Param("bo") AccountAdminVo bo);
|
||||||
|
|
||||||
|
void incsGiftIncomeIcon(@Param("userId") Long userId, @Param("amount") Long amount);
|
||||||
|
|
||||||
|
void incsGuardIncomeIcon(@Param("userId") Long userId, @Param("amount") Long amount);
|
||||||
|
|
||||||
|
void incsMessageIncomeIcon(@Param("userId") Long userId, @Param("amount") Long amount);
|
||||||
|
|
||||||
|
void incsVideoIncomeIcon(@Param("userId") Long userId, @Param("amount") Long amount);
|
||||||
|
|
||||||
|
void incsPayTotal(@Param("userId") Long userId, @Param("rechargeCoin") Long rechargeCoin, @Param("price") BigDecimal price);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ import com.ruoyi.cai.enums.ConsumeLogType;
|
|||||||
import com.ruoyi.cai.enums.SystemConfigEnum;
|
import com.ruoyi.cai.enums.SystemConfigEnum;
|
||||||
import com.ruoyi.cai.enums.account.AccountChangeCodeEnum;
|
import com.ruoyi.cai.enums.account.AccountChangeCodeEnum;
|
||||||
import com.ruoyi.cai.enums.account.AccountTypeEnum;
|
import com.ruoyi.cai.enums.account.AccountTypeEnum;
|
||||||
|
import com.ruoyi.cai.manager.AccountTotalManager;
|
||||||
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.mapper.AccountMapper;
|
import com.ruoyi.cai.mapper.AccountMapper;
|
||||||
@@ -53,6 +54,8 @@ public class AccountServiceImpl extends ServiceImpl<AccountMapper, Account> impl
|
|||||||
private SystemConfigManager systemConfigManager;
|
private SystemConfigManager systemConfigManager;
|
||||||
@Autowired
|
@Autowired
|
||||||
private CaiProperties caiProperties;
|
private CaiProperties caiProperties;
|
||||||
|
@Autowired
|
||||||
|
private AccountTotalManager accountTotalManager;
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -170,6 +173,12 @@ public class AccountServiceImpl extends ServiceImpl<AccountMapper, Account> impl
|
|||||||
}
|
}
|
||||||
// 记录接收方的流水
|
// 记录接收方的流水
|
||||||
if(anchorAmount != 0){
|
if(anchorAmount != 0){
|
||||||
|
try {
|
||||||
|
// 记录主播的消费记录
|
||||||
|
accountTotalManager.incsMessageIncomeCoin(toUser.getId(), anchorAmount,tractId);
|
||||||
|
}catch (Exception e){
|
||||||
|
log.error("主播消费记录失败",e);
|
||||||
|
}
|
||||||
accountChangeLogService.saveLogNoAdmin(toUser.getId(),toUser.getUsercode(), AccountChangeCodeEnum.IM_INCOME,anchorAmount,tractId,fromUser.getId());
|
accountChangeLogService.saveLogNoAdmin(toUser.getId(),toUser.getUsercode(), AccountChangeCodeEnum.IM_INCOME,anchorAmount,tractId,fromUser.getId());
|
||||||
}
|
}
|
||||||
return tractId;
|
return tractId;
|
||||||
|
|||||||
@@ -54,7 +54,7 @@ public class UserChatRecordServiceImpl extends ServiceImpl<UserChatRecordMapper,
|
|||||||
this.save(userChatRecord);
|
this.save(userChatRecord);
|
||||||
String key = String.format(RedisHttpConstant.CHAT_RECORD_CACHE_REDIS, userChatRecord.getId());
|
String key = String.format(RedisHttpConstant.CHAT_RECORD_CACHE_REDIS, userChatRecord.getId());
|
||||||
RBucket<UserChatRecord> bucket = redissonClient.getBucket(key);
|
RBucket<UserChatRecord> bucket = redissonClient.getBucket(key);
|
||||||
bucket.set(userChatRecord,10, TimeUnit.MINUTES);
|
bucket.set(userChatRecord,5, TimeUnit.MINUTES);
|
||||||
return userChatRecord;
|
return userChatRecord;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -285,6 +285,9 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
|
|||||||
if(!b){
|
if(!b){
|
||||||
throw new ServiceException("用户不存在");
|
throw new ServiceException("用户不存在");
|
||||||
}
|
}
|
||||||
|
this.update(Wrappers.lambdaUpdate(User.class)
|
||||||
|
.eq(User::getInviteId, user.getId())
|
||||||
|
.set(User::getInviteId, null));
|
||||||
userOnlineService.remove(Wrappers.lambdaQuery(UserOnline.class).eq(UserOnline::getUserId, id));
|
userOnlineService.remove(Wrappers.lambdaQuery(UserOnline.class).eq(UserOnline::getUserId, id));
|
||||||
userInfoService.remove(Wrappers.lambdaQuery(UserInfo.class).eq(UserInfo::getUserId, id));
|
userInfoService.remove(Wrappers.lambdaQuery(UserInfo.class).eq(UserInfo::getUserId, id));
|
||||||
userInviteService.remove(Wrappers.lambdaQuery(UserInvite.class).eq(UserInvite::getUserId, id));
|
userInviteService.remove(Wrappers.lambdaQuery(UserInvite.class).eq(UserInvite::getUserId, id));
|
||||||
|
|||||||
@@ -58,7 +58,7 @@ public class MessageHandleApplication {
|
|||||||
Room room = roomService.load(roomId);
|
Room room = roomService.load(roomId);
|
||||||
if(room == null){
|
if(room == null){
|
||||||
WsExceptionUtil.throwException(session, "房间不可用" ,HangUpEnums.OTHER, roomId);
|
WsExceptionUtil.throwException(session, "房间不可用" ,HangUpEnums.OTHER, roomId);
|
||||||
log.info("调试日志:房间不可用 wsToken={}", JSON.toJSONString(wsToken));
|
log.info("调试日志:房间不可用 roomId={} wsToken={}", roomId, JSON.toJSONString(wsToken));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
CheckConnectionDTO checkConnect = roomService.checkConnect(room);
|
CheckConnectionDTO checkConnect = roomService.checkConnect(room);
|
||||||
|
|||||||
@@ -33,6 +33,10 @@ public class RoomWebSocketUtil {
|
|||||||
// WebSocketUtils.sendMessage(sessionKey, JSON.toJSONString(r));
|
// WebSocketUtils.sendMessage(sessionKey, JSON.toJSONString(r));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void sendSendMessageFast(WebSocketSession sessionKey, WsR r){
|
||||||
|
WebSocketUtils.sendMessage(sessionKey, JSON.toJSONString(r));
|
||||||
|
}
|
||||||
|
|
||||||
public static void sendSendMessage(List<String> sessionKey, WsR r){
|
public static void sendSendMessage(List<String> sessionKey, WsR r){
|
||||||
for (String s : sessionKey) {
|
for (String s : sessionKey) {
|
||||||
sendMessageStatic.sendMessage(s, JSON.toJSONString(r));
|
sendMessageStatic.sendMessage(s, JSON.toJSONString(r));
|
||||||
|
|||||||
@@ -24,15 +24,20 @@ public class WsExceptionUtil {
|
|||||||
if(hangUpType == null){
|
if(hangUpType == null){
|
||||||
hangUpType = HangUpEnums.OTHER;
|
hangUpType = HangUpEnums.OTHER;
|
||||||
}
|
}
|
||||||
RoomWebSocketUtil.sendSendMessage(sessionKey, WsRMsgGen.hangup(message,roomId,hangUpType.getCode()));
|
try {
|
||||||
|
RoomWebSocketUtil.sendSendMessageFast(sessionKey, WsRMsgGen.hangup(message,roomId,hangUpType.getCode()));
|
||||||
boolean close = WebSocketUtils.close(sessionKey);
|
boolean close = WebSocketUtils.close(sessionKey);
|
||||||
if(!close){
|
if(!close){
|
||||||
log.warn("ws连接时发现异常:{},sessionKey {} roomid {}", message, sessionKey, roomId);
|
log.error("ws关闭时发现异常:{},sessionKey {} roomid {}", message, sessionKey, roomId);
|
||||||
}
|
}
|
||||||
|
}catch (Exception e){
|
||||||
|
log.error("ws关闭时发现异常:{},sessionKey {} roomid {}", message, sessionKey, roomId,e);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void throwExceptionFast(WebSocketSession session,String message){
|
public static void throwExceptionFast(WebSocketSession session,String message){
|
||||||
RoomWebSocketUtil.sendSendMessage(session, WsRMsgGen.hangup(message, null, HangUpEnums.OTHER.getCode()));
|
RoomWebSocketUtil.sendSendMessageFast(session, WsRMsgGen.hangup(message, null, HangUpEnums.OTHER.getCode()));
|
||||||
try {
|
try {
|
||||||
session.close();
|
session.close();
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
|
|||||||
@@ -41,6 +41,32 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
set income_coin = income_coin - #{incomeCoin}
|
set income_coin = income_coin - #{incomeCoin}
|
||||||
where user_id = #{userId}
|
where user_id = #{userId}
|
||||||
</update>
|
</update>
|
||||||
|
<update id="incsGiftIncomeIcon">
|
||||||
|
update cai_account
|
||||||
|
set gift_income_coin = gift_income_coin + #{amount}
|
||||||
|
where user_id = #{userId}
|
||||||
|
</update>
|
||||||
|
<update id="incsGuardIncomeIcon">
|
||||||
|
update cai_account
|
||||||
|
set guard_income_coin = guard_income_coin + #{amount}
|
||||||
|
where user_id = #{userId}
|
||||||
|
</update>
|
||||||
|
<update id="incsMessageIncomeIcon">
|
||||||
|
update cai_account
|
||||||
|
set message_income_coin = message_income_coin + #{amount}
|
||||||
|
where user_id = #{userId}
|
||||||
|
</update>
|
||||||
|
<update id="incsVideoIncomeIcon">
|
||||||
|
update cai_account
|
||||||
|
set video_income_coin = video_income_coin + #{amount}
|
||||||
|
where user_id = #{userId}
|
||||||
|
</update>
|
||||||
|
<update id="incsPayTotal">
|
||||||
|
update cai_account
|
||||||
|
set total_buy_money = total_buy_money + #{price},
|
||||||
|
total_buy_coin = total_buy_coin + #{rechargeCoin}
|
||||||
|
where user_id = #{userId}
|
||||||
|
</update>
|
||||||
<select id="pageAdmin" resultType="com.ruoyi.cai.dto.admin.vo.AccountAdminVo">
|
<select id="pageAdmin" resultType="com.ruoyi.cai.dto.admin.vo.AccountAdminVo">
|
||||||
select t1.*,t2.usercode,t2.nickname,t2.mobile,t2.avatar,t2.gender,t2.is_anchor,t2.age
|
select t1.*,t2.usercode,t2.nickname,t2.mobile,t2.avatar,t2.gender,t2.is_anchor,t2.age
|
||||||
from cai_account t1
|
from cai_account t1
|
||||||
|
|||||||
Reference in New Issue
Block a user