通话逻辑

This commit is contained in:
张良(004796)
2023-12-28 11:42:27 +08:00
parent c5e55374c9
commit f337f57df5
22 changed files with 643 additions and 9 deletions

View File

@@ -2,6 +2,7 @@ package com.ruoyi.cai.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.cai.domain.CaiGuardTotal;
import com.ruoyi.cai.dto.app.dto.GuardNum;
import com.ruoyi.cai.dto.app.query.GiveGuardReq;
import com.ruoyi.cai.dto.app.vo.GuardTotalVo;
@@ -18,4 +19,6 @@ public interface CaiGuardTotalService extends IService<CaiGuardTotal> {
List<GuardTotalVo> selectGuardTotalLimit(Long fromUserId,Integer limit);
boolean giveGuard(GiveGuardReq query);
GuardNum getGuardNum(Long fromUserId, Long toUserId);
}

View File

@@ -11,4 +11,5 @@ import com.ruoyi.cai.domain.CaiUnionUser;
*/
public interface CaiUnionUserService extends IService<CaiUnionUser> {
CaiUnionUser getByUserId(Long userId);
}

View File

@@ -1,6 +1,8 @@
package com.ruoyi.cai.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.cai.domain.CaiAnchor;
import com.ruoyi.cai.domain.CaiUser;
import com.ruoyi.cai.domain.CaiUserCall;
/**
@@ -11,4 +13,5 @@ import com.ruoyi.cai.domain.CaiUserCall;
*/
public interface CaiUserCallService extends IService<CaiUserCall> {
CaiUserCall createCall(CaiUser fromUser, CaiUser toUser, CaiAnchor anchor);
}

View File

@@ -0,0 +1,15 @@
package com.ruoyi.cai.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.cai.domain.CaiUserInvite;
/**
* 用户邀请Service接口
*
* @author 77
* @date 2023-12-28
*/
public interface CaiUserInviteService extends IService<CaiUserInvite> {
CaiUserInvite getByUserId(Long id);
}

View File

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.cai.domain.CaiGuardTotal;
import com.ruoyi.cai.domain.CaiUser;
import com.ruoyi.cai.dto.app.dto.GuardNum;
import com.ruoyi.cai.dto.app.query.GiveGuardReq;
import com.ruoyi.cai.dto.app.vo.GuardTotalVo;
import com.ruoyi.cai.mapper.CaiGuardTotalMapper;
@@ -67,4 +68,25 @@ public class CaiGuardTotalServiceImpl extends ServiceImpl<CaiGuardTotalMapper,Ca
baseMapper.incs(fromUserId,query.getToUserId(),query.getGuardNum(),guardValue);
return true;
}
@Override
public GuardNum getGuardNum(Long fromUserId, Long toUserId){
GuardNum num = new GuardNum();
CaiGuardTotal one = this.getOne(Wrappers.lambdaQuery(CaiGuardTotal.class)
.select(CaiGuardTotal::getGuardNum)
.eq(CaiGuardTotal::getFromUserId, fromUserId)
.eq(CaiGuardTotal::getToUserId, toUserId)
.last("limit 1"));
Long myGuardNum = one == null ? 0 : one.getGuardNum();
CaiGuardTotal up = this.getOne(Wrappers.lambdaQuery(CaiGuardTotal.class)
.eq(CaiGuardTotal::getToUserId, toUserId)
.ge(CaiGuardTotal::getGuardNum, myGuardNum)
.orderByAsc(CaiGuardTotal::getGuardNum)
.last("limit 1"));
Long upGuardNum = up == null ? 0L : up.getGuardNum();
num.setMyGuardNum(myGuardNum);
num.setUpGuardNum(upGuardNum);
num.setDiffNum((upGuardNum - myGuardNum) < 0 ? 0 : (upGuardNum - myGuardNum));
return num;
}
}

View File

@@ -1,5 +1,6 @@
package com.ruoyi.cai.service.impl;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.cai.domain.CaiUnionUser;
import com.ruoyi.cai.mapper.CaiUnionUserMapper;
@@ -15,4 +16,10 @@ import org.springframework.stereotype.Service;
@Service
public class CaiUnionUserServiceImpl extends ServiceImpl<CaiUnionUserMapper,CaiUnionUser> implements CaiUnionUserService {
@Override
public CaiUnionUser getByUserId(Long userId){
return this.getOne(Wrappers.lambdaQuery(CaiUnionUser.class)
.eq(CaiUnionUser::getUserId, userId)
.last("limit 1"));
}
}

View File

@@ -1,10 +1,15 @@
package com.ruoyi.cai.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.cai.domain.CaiUserCall;
import com.ruoyi.cai.domain.*;
import com.ruoyi.cai.mapper.CaiUserCallMapper;
import com.ruoyi.cai.service.CaiAccountService;
import com.ruoyi.cai.service.CaiUnionUserService;
import com.ruoyi.cai.service.CaiUserCallService;
import com.ruoyi.cai.service.CaiUserInviteService;
import com.ruoyi.common.exception.ServiceException;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
/**
@@ -17,4 +22,48 @@ import org.springframework.stereotype.Service;
@Service
public class CaiUserCallServiceImpl extends ServiceImpl<CaiUserCallMapper,CaiUserCall> implements CaiUserCallService {
@Autowired
private CaiAccountService accountService;
@Autowired
private CaiUserInviteService inviteService;
@Autowired
private CaiUnionUserService unionUserService;
@Override
public CaiUserCall createCall(CaiUser fromUser, CaiUser toUser, CaiAnchor anchor) {
Long fromUid = fromUser.getId();
// 特殊用户不允许拨打电话
if(fromUid.equals(toUser.getId())){
throw new ServiceException("不能给自己拨打哦!");
}
if(anchor == null){
throw new ServiceException("主播技能不存在");
}
if(anchor.getOpenVideoStatus() == 0){
throw new ServiceException("对方未开启视频接听!");
}
CaiAccount account = accountService.getByUserId(fromUid);
if(account.getIncomeCoin() + account.getCoin() < anchor.getPrice() * 2){
throw new ServiceException("你的紫贝不足!");
}
CaiUserCall caiUserCall = new CaiUserCall();
caiUserCall.setFromUid(fromUid);
caiUserCall.setToUid(toUser.getId());
caiUserCall.setCallPrice(anchor.getPrice());
caiUserCall.setReceiverVideoDivide(anchor.getVideoRate());
CaiUnionUser unionUser = unionUserService.getByUserId(toUser.getId());
if(unionUser != null && unionUser.getType() == 1){
caiUserCall.setReceiverUnionUserId(unionUser.getUserId());
caiUserCall.setReceiverUnionVideoDivide(unionUser.getVideoDivide());
}
CaiUserInvite invite = inviteService.getByUserId(toUser.getId());
if(invite != null){
caiUserCall.setReceiverInviteUserId(invite.getInviteId());
caiUserCall.setReceiverIncomeDivide(invite.getRewardIncomeRate());
}
boolean save = this.save(caiUserCall);
if(!save){
throw new ServiceException("添加通话失败!");
}
return caiUserCall;
}
}

View File

@@ -0,0 +1,22 @@
package com.ruoyi.cai.service.impl;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.cai.domain.CaiUserInvite;
import com.ruoyi.cai.mapper.CaiUserInviteMapper;
import com.ruoyi.cai.service.CaiUserInviteService;
import org.springframework.stereotype.Service;
/**
* 用户邀请Service业务层处理
*
* @author 77
* @date 2023-12-28
*/
@Service
public class CaiUserInviteServiceImpl extends ServiceImpl<CaiUserInviteMapper,CaiUserInvite> implements CaiUserInviteService {
@Override
public CaiUserInvite getByUserId(Long id) {
return this.getOne(Wrappers.lambdaQuery(CaiUserInvite.class).eq(CaiUserInvite::getUserId,id).last("limit 1"));
}
}