通话逻辑
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
@@ -11,4 +11,5 @@ import com.ruoyi.cai.domain.CaiUnionUser;
|
||||
*/
|
||||
public interface CaiUnionUserService extends IService<CaiUnionUser> {
|
||||
|
||||
CaiUnionUser getByUserId(Long userId);
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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"));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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"));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user