This commit is contained in:
dute7liang
2023-12-23 23:39:03 +08:00
parent 6377f7f364
commit 9ec7621d2d
25 changed files with 556 additions and 6 deletions

View File

@@ -11,4 +11,5 @@ import com.ruoyi.cai.domain.CaiAccountDetail;
*/
public interface CaiAccountDetailService extends IService<CaiAccountDetail> {
}

View File

@@ -0,0 +1,17 @@
package com.ruoyi.cai.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.cai.domain.CaiAccount;
/**
* 用户账户Service接口
*
* @author 77
* @date 2023-12-23
*/
public interface CaiAccountService extends IService<CaiAccount> {
CaiAccount getByUserId(Long userId);
boolean incs(Long userId, Long value);
}

View File

@@ -0,0 +1,14 @@
package com.ruoyi.cai.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.cai.domain.CaiGift;
/**
* 礼物Service接口
*
* @author 77
* @date 2023-12-23
*/
public interface CaiGiftService extends IService<CaiGift> {
}

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.query.GiveGuardQuery;
import com.ruoyi.cai.dto.app.vo.GuardTotalVo;
import java.util.List;
@@ -15,4 +16,6 @@ import java.util.List;
public interface CaiGuardTotalService extends IService<CaiGuardTotal> {
List<GuardTotalVo> selectGuardTotalLimit(Long fromUserId,Integer limit);
boolean giveGuard(GiveGuardQuery query);
}

View File

@@ -2,6 +2,7 @@ package com.ruoyi.cai.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.cai.domain.CaiUserGift;
import com.ruoyi.cai.dto.app.query.GiveGiftQuery;
import com.ruoyi.cai.dto.app.vo.UserGiftVo;
import java.util.List;
@@ -15,4 +16,6 @@ import java.util.List;
public interface CaiUserGiftService extends IService<CaiUserGift> {
List<UserGiftVo> selectGiftList(Long userId);
boolean giveGift(GiveGiftQuery query);
}

View File

@@ -26,7 +26,7 @@ public interface CaiUserService extends IService<CaiUser> {
Page<UserListVo> pageApp(PageQuery page, UserQuery query);
UserInfoVo info(String userCode);
UserInfoVo info(Long userId);
CaiUser getByUserCode(String userCode);
}

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.CaiAccountDetail;
import com.ruoyi.cai.mapper.CaiAccountDetailMapper;
@@ -15,4 +16,5 @@ import org.springframework.stereotype.Service;
@Service
public class CaiAccountDetailServiceImpl extends ServiceImpl<CaiAccountDetailMapper,CaiAccountDetail> implements CaiAccountDetailService {
}

View File

@@ -0,0 +1,28 @@
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.CaiAccount;
import com.ruoyi.cai.mapper.CaiAccountMapper;
import com.ruoyi.cai.service.CaiAccountService;
import org.springframework.stereotype.Service;
/**
* 用户账户Service业务层处理
*
* @author 77
* @date 2023-12-23
*/
@Service
public class CaiAccountServiceImpl extends ServiceImpl<CaiAccountMapper,CaiAccount> implements CaiAccountService {
@Override
public CaiAccount getByUserId(Long userId) {
return this.getOne(Wrappers.lambdaQuery(CaiAccount.class).eq(CaiAccount::getUserId,userId).last("limit 1"));
}
@Override
public boolean incs(Long userId, Long value) {
return baseMapper.incs(userId,value);
}
}

View File

@@ -0,0 +1,20 @@
package com.ruoyi.cai.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.cai.domain.CaiGift;
import com.ruoyi.cai.mapper.CaiGiftMapper;
import com.ruoyi.cai.service.CaiGiftService;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
/**
* 礼物Service业务层处理
*
* @author 77
* @date 2023-12-23
*/
@RequiredArgsConstructor
@Service
public class CaiGiftServiceImpl extends ServiceImpl<CaiGiftMapper,CaiGift> implements CaiGiftService {
}

View File

@@ -2,11 +2,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.CaiAccount;
import com.ruoyi.cai.domain.CaiAccountDetail;
import com.ruoyi.cai.domain.CaiGuardTotal;
import com.ruoyi.cai.domain.CaiUser;
import com.ruoyi.cai.dto.app.query.GiveGuardQuery;
import com.ruoyi.cai.dto.app.vo.GuardTotalVo;
import com.ruoyi.cai.mapper.CaiGuardTotalMapper;
import com.ruoyi.cai.service.CaiAccountDetailService;
import com.ruoyi.cai.service.CaiAccountService;
import com.ruoyi.cai.service.CaiGuardTotalService;
import com.ruoyi.cai.service.CaiUserService;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.helper.LoginHelper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
@@ -19,8 +30,48 @@ import java.util.List;
@Service
public class CaiGuardTotalServiceImpl extends ServiceImpl<CaiGuardTotalMapper,CaiGuardTotal> implements CaiGuardTotalService {
private final Integer GUARD_UNIT_PRICE = 1314;
@Autowired
private CaiUserService userService;
@Autowired
private CaiAccountService accountService;
@Override
public List<GuardTotalVo> selectGuardTotalLimit(Long fromUserId,Integer limit) {
return baseMapper.selectGuardTotal(fromUserId, limit);
}
@Override
@Transactional(rollbackFor = Exception.class)
public boolean giveGuard(GiveGuardQuery query) {
Long fromUserId = LoginHelper.getUserId();
CaiUser user = userService.getById(query.getToUserId());
if(user == null){
throw new ServiceException("女神不存在");
}
if(user.getIsAnchor() != 1){
throw new ServiceException("只能给女神送守护");
}
Long guardValue = query.getGuardNum() * GUARD_UNIT_PRICE;
CaiAccount account = accountService.getByUserId(fromUserId);
if(account.getCoin() < guardValue){
throw new ServiceException("余额不足");
}
boolean boo = accountService.incs(fromUserId, -guardValue);
if(!boo){
throw new ServiceException("余额不足");
}
// TODO 增加守护流水
CaiGuardTotal one = this.getOne(Wrappers.lambdaQuery(CaiGuardTotal.class)
.eq(CaiGuardTotal::getToUserId, query.getToUserId())
.eq(CaiGuardTotal::getFromUserId, fromUserId));
if(one == null){
one = new CaiGuardTotal();
one.setFromUserId(fromUserId);
one.setToUserId(query.getToUserId());
this.save(one);
}
baseMapper.incs(fromUserId,query.getToUserId(),query.getGuardNum(),guardValue);
return true;
}
}

View File

@@ -1,11 +1,20 @@
package com.ruoyi.cai.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.cai.domain.CaiAccount;
import com.ruoyi.cai.domain.CaiGift;
import com.ruoyi.cai.domain.CaiUserGift;
import com.ruoyi.cai.dto.app.query.GiveGiftQuery;
import com.ruoyi.cai.dto.app.vo.UserGiftVo;
import com.ruoyi.cai.mapper.CaiUserGiftMapper;
import com.ruoyi.cai.service.CaiAccountService;
import com.ruoyi.cai.service.CaiGiftService;
import com.ruoyi.cai.service.CaiUserGiftService;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.helper.LoginHelper;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.HierarchicalBeanFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@@ -20,8 +29,41 @@ import java.util.List;
@Service
public class CaiUserGiftServiceImpl extends ServiceImpl<CaiUserGiftMapper,CaiUserGift> implements CaiUserGiftService {
@Autowired
private CaiGiftService giftService;
@Autowired
private CaiAccountService accountService;
@Override
public List<UserGiftVo> selectGiftList(Long userId) {
return baseMapper.selectGiftList(userId);
}
@Override
public boolean giveGift(GiveGiftQuery query) {
Long fromUserId = LoginHelper.getUserId();
CaiGift gift = giftService.getById(query.getGiftId());
if(gift == null){
throw new ServiceException("礼物不存在");
}
Long price = gift.getPrice();
Long giftAmount = query.getGiftCount() * price;
CaiAccount account = accountService.getByUserId(fromUserId);
if(account.getCoin() < giftAmount){
throw new ServiceException("余额不足");
}
boolean boo = accountService.incs(fromUserId, -giftAmount);
if(!boo){
throw new ServiceException("余额不足");
}
CaiUserGift userGift = new CaiUserGift();
userGift.setType(query.getType());
userGift.setFromUid(fromUserId);
userGift.setToUid(query.getToUserId());
userGift.setGiftId(query.getGiftId());
userGift.setGiftCount(query.getGiftCount());
userGift.setGiftAmount(giftAmount);
this.save(userGift);
return true;
}
}

View File

@@ -60,13 +60,12 @@ public class CaiUserServiceImpl extends ServiceImpl<CaiUserMapper, CaiUser> impl
}
@Override
public UserInfoVo info(String userCode) {
public UserInfoVo info(Long userId) {
Long currentUserId = LoginHelper.getUserId();
CaiUser caiUser = this.getByUserCode(userCode);
CaiUser caiUser = this.getById(userId);
if(caiUser == null){
return null;
}
Long userId = caiUser.getId();
CaiAnchor anchor = anchorService.getByUserId(userId);
UserInfoVo vo = new UserInfoVo();
vo.setIsAnchor(caiUser.getIsAnchor());