diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/controller/CaiGiftController.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/controller/CaiGiftController.java new file mode 100644 index 00000000..5c9334f7 --- /dev/null +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/controller/CaiGiftController.java @@ -0,0 +1,95 @@ +package com.ruoyi.cai.controller; + +import cn.dev33.satoken.annotation.SaCheckPermission; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.ruoyi.cai.domain.CaiGift; +import com.ruoyi.cai.service.CaiGiftService; +import com.ruoyi.common.annotation.Log; +import com.ruoyi.common.annotation.RepeatSubmit; +import com.ruoyi.common.core.controller.BaseController; +import com.ruoyi.common.core.domain.PageQuery; +import com.ruoyi.common.core.domain.R; +import com.ruoyi.common.core.page.TableDataInfo; +import com.ruoyi.common.core.validate.AddGroup; +import com.ruoyi.common.core.validate.EditGroup; +import com.ruoyi.common.enums.BusinessType; +import lombok.RequiredArgsConstructor; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.util.Arrays; + +/** + * 礼物 + * + * @author 77 + * @date 2023-12-23 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/cai/gift") +public class CaiGiftController extends BaseController { + + private final CaiGiftService caiGiftService; + + /** + * 查询礼物列表 + */ + @SaCheckPermission("cai:gift:list") + @GetMapping("/list") + public TableDataInfo list(CaiGift bo, PageQuery pageQuery) { + Page page = caiGiftService.page(pageQuery.build(), Wrappers.lambdaQuery(bo)); + return TableDataInfo.build(page); + } + + /** + * 获取礼物详细信息 + * + * @param id 主键 + */ + @SaCheckPermission("cai:gift:query") + @GetMapping("/{id}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable Integer id) { + return R.ok(caiGiftService.getById(id)); + } + + /** + * 新增礼物 + */ + @SaCheckPermission("cai:gift:add") + @Log(title = "礼物", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody CaiGift bo) { + return toAjax(caiGiftService.save(bo)); + } + + /** + * 修改礼物 + */ + @SaCheckPermission("cai:gift:edit") + @Log(title = "礼物", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody CaiGift bo) { + return toAjax(caiGiftService.updateById(bo)); + } + + /** + * 删除礼物 + * + * @param ids 主键串 + */ + @SaCheckPermission("cai:gift:remove") + @Log(title = "礼物", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable Integer[] ids) { + return toAjax(caiGiftService.removeBatchByIds(Arrays.asList(ids), true)); + } +} diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/controller/app/CaiAnchorAppController.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/controller/app/CaiAnchorAppController.java index 75e4bbf0..b80671ab 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/controller/app/CaiAnchorAppController.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/controller/app/CaiAnchorAppController.java @@ -3,12 +3,18 @@ package com.ruoyi.cai.controller.app; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.cai.dto.app.query.AnchorListQuery; +import com.ruoyi.cai.dto.app.query.GiveGiftQuery; +import com.ruoyi.cai.dto.app.query.GiveGuardQuery; import com.ruoyi.cai.dto.app.vo.AnchorListVo; import com.ruoyi.cai.service.CaiAnchorService; +import com.ruoyi.cai.service.CaiGuardTotalService; +import com.ruoyi.cai.service.CaiUserGiftService; import com.ruoyi.common.core.domain.PageQuery; +import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.page.TableDataInfo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @@ -19,6 +25,10 @@ public class CaiAnchorAppController { @Autowired private CaiAnchorService anchorService; + @Autowired + private CaiGuardTotalService guardTotalService; + @Autowired + private CaiUserGiftService userGiftService; @GetMapping("/page") public TableDataInfo page(PageQuery page, AnchorListQuery query){ @@ -26,5 +36,17 @@ public class CaiAnchorAppController { return TableDataInfo.build(res); } + @PostMapping("/give/guard") + public R giveGuard(GiveGuardQuery query){ + boolean res = guardTotalService.giveGuard(query); + return R.ok(res); + } + + @PostMapping("/give/gift") + public R giveGift(GiveGiftQuery query){ + boolean res = userGiftService.giveGift(query); + return R.ok(res); + } + } diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/controller/app/CaiUserAppController.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/controller/app/CaiUserAppController.java index 3fde949f..2aa6ba62 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/controller/app/CaiUserAppController.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/controller/app/CaiUserAppController.java @@ -35,8 +35,8 @@ public class CaiUserAppController { } @GetMapping("/info") - public R info(String usercode){ - UserInfoVo res = caiUserService.info(usercode); + public R info(Long userId){ + UserInfoVo res = caiUserService.info(userId); return R.ok(res); } } diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/domain/CaiAccount.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/domain/CaiAccount.java new file mode 100644 index 00000000..976bd80d --- /dev/null +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/domain/CaiAccount.java @@ -0,0 +1,71 @@ +package com.ruoyi.cai.domain; + +import com.baomidou.mybatisplus.annotation.*; +import lombok.Data; +import lombok.EqualsAndHashCode; +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; +import java.math.BigDecimal; + +import java.math.BigDecimal; +import com.ruoyi.common.core.domain.BaseEntity; + +/** + * 用户账户对象 cai_account + * + * @author 77 + * @date 2023-12-23 + */ +@Data +@TableName("cai_account") +public class CaiAccount implements Serializable { + + private static final long serialVersionUID=1L; + + /** + * 子账户ID + */ + @TableId(value = "id") + private Long id; + /** + * 用户ID + */ + @TableId(value = "user_id") + private Long userId; + /** + * 充值的可用余额 + */ + private BigDecimal money; + /** + * 收益的金额 + */ + private BigDecimal incomeMoney; + /** + * 当前彩币数量 + */ + private Long coin; + /** + * 收益的彩币数量 + */ + private Long incomeCoin; + /** + * 当前魅力值 + */ + private Long loveValue; + /** + * 充值总额 + */ + private BigDecimal totalBuyMoney; + /** + * 充值彩贝总额 + */ + private Long totalBuyCoin; + /** + * 账户锁定 0 正常 1 锁定 + */ + private Integer status; + + private LocalDateTime createTime; + +} diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/domain/CaiGift.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/domain/CaiGift.java new file mode 100644 index 00000000..e76f1064 --- /dev/null +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/domain/CaiGift.java @@ -0,0 +1,67 @@ +package com.ruoyi.cai.domain; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.io.Serializable; + +/** + * 礼物对象 cai_gift + * + * @author 77 + * @date 2023-12-23 + */ +@Data +@TableName("cai_gift") +public class CaiGift implements Serializable { + + private static final long serialVersionUID=1L; + + /** + * 礼物ID + */ + @TableId(value = "id") + private Integer id; + /** + * 类型 0 普通礼物 1svga礼物 + */ + private Integer type; + /** + * 礼物名称 + */ + private String name; + /** + * 礼物价格 + */ + private Long price; + /** + * 礼物图片地址 + */ + private String img; + /** + * svga地址 + */ + private String svga; + /** + * svgamd5串 + */ + private String md5String; + /** + * 礼物描述 + */ + private String desc; + /** + * 是否隐藏 0 不隐藏,可见 1 隐藏 + */ + private Integer hide; + /** + * 排序 + */ + private Integer sort; + /** + * 状态 0 可用 1 不可用 + */ + private Integer status; + +} diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/dto/app/query/GiveGiftQuery.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/dto/app/query/GiveGiftQuery.java new file mode 100644 index 00000000..f2fada0a --- /dev/null +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/dto/app/query/GiveGiftQuery.java @@ -0,0 +1,18 @@ +package com.ruoyi.cai.dto.app.query; + +import lombok.Data; + +@Data +public class GiveGiftQuery { + + /** + * 类型 1 个人详情页 2.IM页面 3视频页 + */ + private Integer type; + + private Long toUserId; + + private Long giftId; + + private Long giftCount; +} diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/dto/app/query/GiveGuardQuery.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/dto/app/query/GiveGuardQuery.java new file mode 100644 index 00000000..702d5c67 --- /dev/null +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/dto/app/query/GiveGuardQuery.java @@ -0,0 +1,11 @@ +package com.ruoyi.cai.dto.app.query; + +import lombok.Data; + +@Data +public class GiveGuardQuery { + + private Long toUserId; + + private Long guardNum; +} diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/mapper/CaiAccountMapper.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/mapper/CaiAccountMapper.java new file mode 100644 index 00000000..4810a17f --- /dev/null +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/mapper/CaiAccountMapper.java @@ -0,0 +1,16 @@ +package com.ruoyi.cai.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.ruoyi.cai.domain.CaiAccount; +import org.apache.ibatis.annotations.Param; + +/** + * 用户账户Mapper接口 + * + * @author 77 + * @date 2023-12-23 + */ +public interface CaiAccountMapper extends BaseMapper { + + boolean incs(@Param("userId") Long userId, @Param("value") Long value); +} diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/mapper/CaiGiftMapper.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/mapper/CaiGiftMapper.java new file mode 100644 index 00000000..c2070bf8 --- /dev/null +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/mapper/CaiGiftMapper.java @@ -0,0 +1,14 @@ +package com.ruoyi.cai.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.ruoyi.cai.domain.CaiGift; + +/** + * 礼物Mapper接口 + * + * @author 77 + * @date 2023-12-23 + */ +public interface CaiGiftMapper extends BaseMapper { + +} diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/mapper/CaiGuardTotalMapper.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/mapper/CaiGuardTotalMapper.java index a8e09c04..45bd5800 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/mapper/CaiGuardTotalMapper.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/mapper/CaiGuardTotalMapper.java @@ -17,4 +17,5 @@ public interface CaiGuardTotalMapper extends BaseMapper { List selectGuardTotal(@Param("fromUserId") Long fromUserId, @Param("limit") Integer limit); + void incs(@Param("fromUserId") Long fromUserId, @Param("toUserId") Long toUserId, @Param("guardNum") Long guardNum, @Param("guardValue") Long guardValue); } diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/service/CaiAccountDetailService.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/service/CaiAccountDetailService.java index 61813702..d1326770 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/service/CaiAccountDetailService.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/service/CaiAccountDetailService.java @@ -11,4 +11,5 @@ import com.ruoyi.cai.domain.CaiAccountDetail; */ public interface CaiAccountDetailService extends IService { + } diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/service/CaiAccountService.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/service/CaiAccountService.java new file mode 100644 index 00000000..003f888b --- /dev/null +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/service/CaiAccountService.java @@ -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 getByUserId(Long userId); + + boolean incs(Long userId, Long value); +} diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/service/CaiGiftService.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/service/CaiGiftService.java new file mode 100644 index 00000000..cf894f6b --- /dev/null +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/service/CaiGiftService.java @@ -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 { + +} diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/service/CaiGuardTotalService.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/service/CaiGuardTotalService.java index 074ce54a..f975a5d2 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/service/CaiGuardTotalService.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/service/CaiGuardTotalService.java @@ -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 { List selectGuardTotalLimit(Long fromUserId,Integer limit); + + boolean giveGuard(GiveGuardQuery query); } diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/service/CaiUserGiftService.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/service/CaiUserGiftService.java index 2cb05a0f..6ba105e1 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/service/CaiUserGiftService.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/service/CaiUserGiftService.java @@ -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 { List selectGiftList(Long userId); + + boolean giveGift(GiveGiftQuery query); } diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/service/CaiUserService.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/service/CaiUserService.java index 0c5d4c36..98d526fb 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/service/CaiUserService.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/service/CaiUserService.java @@ -26,7 +26,7 @@ public interface CaiUserService extends IService { Page pageApp(PageQuery page, UserQuery query); - UserInfoVo info(String userCode); + UserInfoVo info(Long userId); CaiUser getByUserCode(String userCode); } diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/CaiAccountDetailServiceImpl.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/CaiAccountDetailServiceImpl.java index 7c3bcea2..e9718a11 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/CaiAccountDetailServiceImpl.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/CaiAccountDetailServiceImpl.java @@ -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 implements CaiAccountDetailService { + } diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/CaiAccountServiceImpl.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/CaiAccountServiceImpl.java new file mode 100644 index 00000000..6c237aba --- /dev/null +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/CaiAccountServiceImpl.java @@ -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 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); + } +} diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/CaiGiftServiceImpl.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/CaiGiftServiceImpl.java new file mode 100644 index 00000000..976f4add --- /dev/null +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/CaiGiftServiceImpl.java @@ -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 implements CaiGiftService { + +} diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/CaiGuardTotalServiceImpl.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/CaiGuardTotalServiceImpl.java index 356e3213..5628704a 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/CaiGuardTotalServiceImpl.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/CaiGuardTotalServiceImpl.java @@ -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 implements CaiGuardTotalService { + private final Integer GUARD_UNIT_PRICE = 1314; + @Autowired + private CaiUserService userService; + @Autowired + private CaiAccountService accountService; + @Override public List 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; + } } diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/CaiUserGiftServiceImpl.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/CaiUserGiftServiceImpl.java index fc8fabce..4af6507a 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/CaiUserGiftServiceImpl.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/CaiUserGiftServiceImpl.java @@ -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 implements CaiUserGiftService { + @Autowired + private CaiGiftService giftService; + @Autowired + private CaiAccountService accountService; + @Override public List 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; + } } diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/CaiUserServiceImpl.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/CaiUserServiceImpl.java index 0e2eafbe..2072f272 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/CaiUserServiceImpl.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/CaiUserServiceImpl.java @@ -60,13 +60,12 @@ public class CaiUserServiceImpl extends ServiceImpl 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()); diff --git a/ruoyi-cai/src/main/resources/mapper/cai/CaiAccountMapper.xml b/ruoyi-cai/src/main/resources/mapper/cai/CaiAccountMapper.xml new file mode 100644 index 00000000..ae8fe899 --- /dev/null +++ b/ruoyi-cai/src/main/resources/mapper/cai/CaiAccountMapper.xml @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + update cai_account + set coin = coin + #{value} + where user_id = #{userId} + + + + diff --git a/ruoyi-cai/src/main/resources/mapper/cai/CaiGiftMapper.xml b/ruoyi-cai/src/main/resources/mapper/cai/CaiGiftMapper.xml new file mode 100644 index 00000000..cca767f8 --- /dev/null +++ b/ruoyi-cai/src/main/resources/mapper/cai/CaiGiftMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/ruoyi-cai/src/main/resources/mapper/cai/CaiGuardTotalMapper.xml b/ruoyi-cai/src/main/resources/mapper/cai/CaiGuardTotalMapper.xml index b51b5e36..4c801e97 100644 --- a/ruoyi-cai/src/main/resources/mapper/cai/CaiGuardTotalMapper.xml +++ b/ruoyi-cai/src/main/resources/mapper/cai/CaiGuardTotalMapper.xml @@ -13,6 +13,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + update cai_guard_total + set guard_num = guard_num + #{guardNum}, + guard_value = guard_value + #{guardValue} + where to_user_id = #{toUserId} and from_user_id = #{fromUserId} +