diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/controller/CaiGoodsController.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/controller/CaiGoodsController.java new file mode 100644 index 00000000..61d3475e --- /dev/null +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/controller/CaiGoodsController.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.CaiGoods; +import com.ruoyi.cai.service.CaiGoodsService; +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-24 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/cai/goods") +public class CaiGoodsController extends BaseController { + + private final CaiGoodsService caiGoodsService; + + /** + * 查询充值配置列表 + */ + @SaCheckPermission("cai:goods:list") + @GetMapping("/list") + public TableDataInfo list(CaiGoods bo, PageQuery pageQuery) { + Page page = caiGoodsService.page(pageQuery.build(), Wrappers.lambdaQuery(bo)); + return TableDataInfo.build(page); + } + + /** + * 获取充值配置详细信息 + * + * @param id 主键 + */ + @SaCheckPermission("cai:goods:query") + @GetMapping("/{id}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable Long id) { + return R.ok(caiGoodsService.getById(id)); + } + + /** + * 新增充值配置 + */ + @SaCheckPermission("cai:goods:add") + @Log(title = "充值配置", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody CaiGoods bo) { + return toAjax(caiGoodsService.save(bo)); + } + + /** + * 修改充值配置 + */ + @SaCheckPermission("cai:goods:edit") + @Log(title = "充值配置", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody CaiGoods bo) { + return toAjax(caiGoodsService.updateById(bo)); + } + + /** + * 删除充值配置 + * + * @param ids 主键串 + */ + @SaCheckPermission("cai:goods:remove") + @Log(title = "充值配置", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable Long[] ids) { + return toAjax(caiGoodsService.removeBatchByIds(Arrays.asList(ids), true)); + } +} diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/controller/CaiWithdrawExchangeController.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/controller/CaiWithdrawExchangeController.java new file mode 100644 index 00000000..7d7cf8b8 --- /dev/null +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/controller/CaiWithdrawExchangeController.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.CaiWithdrawExchange; +import com.ruoyi.cai.service.CaiWithdrawExchangeService; +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-24 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/cai/withdrawExchange") +public class CaiWithdrawExchangeController extends BaseController { + + private final CaiWithdrawExchangeService caiWithdrawExchangeService; + + /** + * 查询提现 - 兑换配置列表 + */ + @SaCheckPermission("cai:withdrawExchange:list") + @GetMapping("/list") + public TableDataInfo list(CaiWithdrawExchange bo, PageQuery pageQuery) { + Page page = caiWithdrawExchangeService.page(pageQuery.build(), Wrappers.lambdaQuery(bo)); + return TableDataInfo.build(page); + } + + /** + * 获取提现 - 兑换配置详细信息 + * + * @param id 主键 + */ + @SaCheckPermission("cai:withdrawExchange:query") + @GetMapping("/{id}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable Long id) { + return R.ok(caiWithdrawExchangeService.getById(id)); + } + + /** + * 新增提现 - 兑换配置 + */ + @SaCheckPermission("cai:withdrawExchange:add") + @Log(title = "提现 - 兑换配置", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody CaiWithdrawExchange bo) { + return toAjax(caiWithdrawExchangeService.save(bo)); + } + + /** + * 修改提现 - 兑换配置 + */ + @SaCheckPermission("cai:withdrawExchange:edit") + @Log(title = "提现 - 兑换配置", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody CaiWithdrawExchange bo) { + return toAjax(caiWithdrawExchangeService.updateById(bo)); + } + + /** + * 删除提现 - 兑换配置 + * + * @param ids 主键串 + */ + @SaCheckPermission("cai:withdrawExchange:remove") + @Log(title = "提现 - 兑换配置", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable Long[] ids) { + return toAjax(caiWithdrawExchangeService.removeBatchByIds(Arrays.asList(ids), true)); + } +} diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/controller/app/CaiCurrentUserAppController.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/controller/app/CaiCurrentUserAppController.java index d190e771..e866800e 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/controller/app/CaiCurrentUserAppController.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/controller/app/CaiCurrentUserAppController.java @@ -1,10 +1,20 @@ package com.ruoyi.cai.controller.app; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.ruoyi.cai.domain.CaiAccountBankcard; +import com.ruoyi.cai.domain.CaiAccountCash; +import com.ruoyi.cai.domain.CaiAccountRecharge; import com.ruoyi.cai.dto.app.query.*; import com.ruoyi.cai.dto.app.vo.*; import com.ruoyi.cai.manager.CurrentUserManager; +import com.ruoyi.cai.service.CaiAccountBankcardService; +import com.ruoyi.cai.service.CaiAccountCashService; +import com.ruoyi.cai.service.CaiAccountRechargeService; import com.ruoyi.cai.service.CaiUserAlbumService; +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.helper.LoginHelper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; @@ -20,7 +30,31 @@ public class CaiCurrentUserAppController { @Autowired private CurrentUserManager currentUserManager; @Autowired + private CaiAccountRechargeService caiAccountRechargeService; + @Autowired + private CaiAccountCashService accountCashService; + @Autowired private CaiUserAlbumService userAlbumService; + + @GetMapping("/user/aliInfo") + public R aliInfo(){ + CaiAccountBankcard accountBankcard = currentUserManager.aliInfo(); + return R.ok(accountBankcard); + } + + @PostMapping("/user/save-or-update/ali") + public R updateAli(AccountAliBankCardRes res){ + currentUserManager.saveOrUpdateAliInfo(res); + return R.ok(true); + } + + @PostMapping("/user/withdraw/ali") + public R withdraw(WithdrawRes res){ + res.setUserId(LoginHelper.getUserId()); + accountCashService.withdraw(res); + return R.ok(true); + } + @GetMapping("/user/info") public R currentInfo(){ return R.ok(currentUserManager.currentInfo()); @@ -61,4 +95,22 @@ public class CaiCurrentUserAppController { public R userAlbumAdd(List res){ return R.ok(userAlbumService.resetAlbum(res,LoginHelper.getUserId())); } + + @GetMapping("/user/recharge/log") + public TableDataInfo rechargeLog(PageQuery query){ + Long userId = LoginHelper.getUserId(); + Page page = caiAccountRechargeService.page(query.build(), Wrappers.lambdaQuery(CaiAccountRecharge.class) + .eq(CaiAccountRecharge::getUserId, userId) + .orderByDesc(CaiAccountRecharge::getCreateTime)); + return TableDataInfo.build(page,AccountRechargeVo::new); + } + + @GetMapping("/user/cash/log") + public TableDataInfo cashLog(PageQuery query){ + Long userId = LoginHelper.getUserId(); + Page page = accountCashService.page(query.build(), Wrappers.lambdaQuery(CaiAccountCash.class) + .eq(CaiAccountCash::getUserId, userId) + .orderByDesc(CaiAccountCash::getCreateTime)); + return TableDataInfo.build(page,AccountCashVo::new); + } } diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/controller/app/CaiSettingAppController.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/controller/app/CaiSettingAppController.java new file mode 100644 index 00000000..2db5e482 --- /dev/null +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/controller/app/CaiSettingAppController.java @@ -0,0 +1,39 @@ +package com.ruoyi.cai.controller.app; + +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.ruoyi.cai.domain.CaiGoods; +import com.ruoyi.cai.domain.CaiWithdrawExchange; +import com.ruoyi.cai.service.CaiGoodsService; +import com.ruoyi.cai.service.CaiWithdrawExchangeService; +import com.ruoyi.common.core.domain.R; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +@RestController +@RequestMapping("/api/setting") +public class CaiSettingAppController { + + @Autowired + private CaiGoodsService goodsService; + @Autowired + private CaiWithdrawExchangeService withdrawExchangeService; + + @GetMapping("/goods") + public R> goods(){ + List list = goodsService.list(Wrappers.lambdaQuery(CaiGoods.class) + .eq(CaiGoods::getStatus,0) + .orderByAsc(CaiGoods::getPrice)); + return R.ok(list); + } + + @GetMapping("/withdraw") + public R> withdraw(){ + List list = withdrawExchangeService.list(Wrappers.lambdaQuery(CaiWithdrawExchange.class) + .orderByAsc(CaiWithdrawExchange::getMoney)); + return R.ok(list); + } +} diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/domain/CaiAccountCash.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/domain/CaiAccountCash.java index 633105a3..1ee400c3 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/domain/CaiAccountCash.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/domain/CaiAccountCash.java @@ -58,13 +58,9 @@ public class CaiAccountCash implements Serializable { */ private String cardAccount; /** - * 0 删除 1 申请 2 审核通过 3 审核不通过 4 提现取消 + * 1 申请 2 审核通过 3 审核不通过 4 提现取消 */ private Integer status; - /** - * 实际到账金额(扣除了多付金额后的) - */ - private BigDecimal payMoney; /** * */ @@ -77,22 +73,10 @@ public class CaiAccountCash implements Serializable { * */ private String verifyRemark; - /** - * 是否支付宝失败 - */ - private Integer isFail; - /** - * 是否及时到账,0否 1是 - */ - private Integer isImmediately; /** * 是否已打款,0否 1是 */ private Integer isPay; - /** - * 付款时间,只有立即打款才有 - */ - private LocalDateTime payTime; /** * 是否已导出 */ diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/domain/CaiAccountRecharge.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/domain/CaiAccountRecharge.java index e7b2c073..ae789c74 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/domain/CaiAccountRecharge.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/domain/CaiAccountRecharge.java @@ -41,10 +41,6 @@ public class CaiAccountRecharge implements Serializable { * 订单名 */ private String orderName; - /** - * 账户 1 金额 2 彩币 - */ - private Integer accountType; /** * 充值类型 0 手工充值 1 线上充值 */ @@ -53,6 +49,10 @@ public class CaiAccountRecharge implements Serializable { * 充值金额 */ private BigDecimal rechargeMoney; + /** + * 充值的紫贝 + */ + private Integer coinNum; /** * 状态 1 申请 2 审核通过 3,审核不通过 */ diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/domain/CaiGoods.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/domain/CaiGoods.java new file mode 100644 index 00000000..b03c167d --- /dev/null +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/domain/CaiGoods.java @@ -0,0 +1,48 @@ +package com.ruoyi.cai.domain; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; + +/** + * 充值配置对象 cai_goods + * + * @author 77 + * @date 2023-12-24 + */ +@Data +@TableName("cai_goods") +public class CaiGoods implements Serializable { + + private static final long serialVersionUID=1L; + + /** + * + */ + @TableId(value = "id") + private Long id; + /** + * + */ + private String name; + /** + * + */ + private BigDecimal price; + /** + * + */ + private Long amount; + /** + * 状态 0 可用 1不可用 + */ + private Integer status; + /** + * + */ + private String remark; + +} diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/domain/CaiWithdrawExchange.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/domain/CaiWithdrawExchange.java new file mode 100644 index 00000000..44bb12fb --- /dev/null +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/domain/CaiWithdrawExchange.java @@ -0,0 +1,35 @@ +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_withdraw_exchange + * + * @author 77 + * @date 2023-12-24 + */ +@Data +@TableName("cai_withdraw_exchange") +public class CaiWithdrawExchange implements Serializable { + + private static final long serialVersionUID=1L; + + /** + * + */ + @TableId(value = "id") + private Long id; + /** + * 兑换金额 + */ + private Integer money; + /** + * 所需货币数量 + */ + private Integer coinNum; + +} diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/dto/app/query/AccountAliBankCardRes.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/dto/app/query/AccountAliBankCardRes.java new file mode 100644 index 00000000..c55b385e --- /dev/null +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/dto/app/query/AccountAliBankCardRes.java @@ -0,0 +1,17 @@ +package com.ruoyi.cai.dto.app.query; + +import com.baomidou.mybatisplus.annotation.TableId; +import lombok.Data; + +@Data +public class AccountAliBankCardRes { + private Integer id; + /** + * 持卡人姓名 + */ + private String cardName; + /** + * 卡号 + */ + private String cardAccount; +} diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/dto/app/query/WithdrawRes.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/dto/app/query/WithdrawRes.java new file mode 100644 index 00000000..a6eb423c --- /dev/null +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/dto/app/query/WithdrawRes.java @@ -0,0 +1,22 @@ +package com.ruoyi.cai.dto.app.query; + +import lombok.Data; + +@Data +public class WithdrawRes { + + /** + * 提现配置ID + */ + private Long withdrawSettingId; + /** + * 兑换金额 + */ + private Long money; + /** + * 所需货币数量 + */ + private Long coinNum; + private Long userId; + +} diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/dto/app/vo/AccountCashVo.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/dto/app/vo/AccountCashVo.java new file mode 100644 index 00000000..738eea71 --- /dev/null +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/dto/app/vo/AccountCashVo.java @@ -0,0 +1,58 @@ +package com.ruoyi.cai.dto.app.vo; + +import lombok.Data; + +import java.math.BigDecimal; +import java.time.LocalDateTime; + +@Data +public class AccountCashVo { + + /** + * + */ + private Integer id; + /** + * + */ + private Long userId; + /** + * 提现金额 + */ + private BigDecimal cashMoney; + /** + * 真实提现金额 + */ + private BigDecimal realCashMoney; + /** + * 提现手续费 + */ + private BigDecimal cashFees; + /** + * 银行名称 + */ + private String bank; + /** + * 账户名称 + */ + private String cardName; + /** + * 账户 + */ + private String cardAccount; + /** + * 1 申请 2 审核通过 3 审核不通过 4 提现取消 + */ + private Integer status; + /** + * 审核时间 + */ + private LocalDateTime verifyTime; + /** + * + */ + private String verifyRemark; + + + private LocalDateTime createTime; +} diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/dto/app/vo/AccountRechargeVo.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/dto/app/vo/AccountRechargeVo.java new file mode 100644 index 00000000..a434ad3d --- /dev/null +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/dto/app/vo/AccountRechargeVo.java @@ -0,0 +1,60 @@ +package com.ruoyi.cai.dto.app.vo; + +import lombok.Data; + +import java.math.BigDecimal; +import java.time.LocalDateTime; + +@Data +public class AccountRechargeVo { + private Long id; + /** + * + */ + private Long userId; + /** + * + */ + private Long goodsId; + /** + * + */ + private String orderNo; + /** + * 订单名 + */ + private String orderName; + /** + * 充值类型 0 手工充值 1 线上充值 + */ + private Integer rechargeType; + /** + * 充值金额 + */ + private BigDecimal rechargeMoney; + /** + * 充值的紫贝 + */ + private Integer coinNum; + /** + * 充值平台类型 + */ + private Long platformType; + /** + * 充值平台名称 + */ + private String platformName; + /** + * + */ + private String payNo; + /** + * + */ + private String operateIp; + /** + * 类型: 0积分(默认),1会员 + */ + private Integer type; + private LocalDateTime createTime; +} diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/manager/CurrentUserManager.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/manager/CurrentUserManager.java index 8d119318..96fb7fdb 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/manager/CurrentUserManager.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/manager/CurrentUserManager.java @@ -3,6 +3,7 @@ package com.ruoyi.cai.manager; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.ruoyi.cai.domain.*; +import com.ruoyi.cai.dto.app.query.AccountAliBankCardRes; import com.ruoyi.cai.dto.app.query.AnchorUpdateRes; import com.ruoyi.cai.dto.app.query.UserUpdateRes; import com.ruoyi.cai.dto.app.vo.*; @@ -27,6 +28,8 @@ public class CurrentUserManager { private CaiUserAlbumService userAlbumService; @Autowired private CaiAccountService accountService; + @Autowired + private CaiAccountBankcardService accountBankcardService; public CurrentUserInfoVo currentInfo() { Long userId = LoginHelper.getUserId(); @@ -100,4 +103,24 @@ public class CurrentUserManager { } return true; } + + public CaiAccountBankcard aliInfo() { + CaiAccountBankcard one = accountBankcardService.getOne(Wrappers.lambdaQuery(CaiAccountBankcard.class) + .eq(CaiAccountBankcard::getUserId, LoginHelper.getUserId()) + .last("limit 1")); + return one; + } + + public void saveOrUpdateAliInfo(AccountAliBankCardRes res) { + CaiAccountBankcard bankcard = new CaiAccountBankcard(); + bankcard.setId(res.getId()); + if(bankcard.getId() == null){ + bankcard.setType(1); + bankcard.setBankCode("alipay"); + bankcard.setBank("支付宝"); + } + bankcard.setCardName(res.getCardName()); + bankcard.setCardAccount(res.getCardAccount()); + accountBankcardService.saveOrUpdate(bankcard); + } } 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 index f025ffff..e619d8e0 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/mapper/CaiAccountMapper.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/mapper/CaiAccountMapper.java @@ -12,7 +12,10 @@ import org.apache.ibatis.annotations.Param; */ public interface CaiAccountMapper extends BaseMapper { - boolean incs(@Param("userId") Long userId, @Param("value") Long value); + long incs(@Param("userId") Long userId, @Param("value") Long value); void incsCoin(@Param("userId") Long userId, @Param("coin") Long coin, @Param("incomeCoin") Long incomeCoin); + + + long decrIncomeCoin(@Param("userId") Long userId, @Param("incomeCoin") Long incomeCoin); } diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/mapper/CaiGoodsMapper.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/mapper/CaiGoodsMapper.java new file mode 100644 index 00000000..937c7ddd --- /dev/null +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/mapper/CaiGoodsMapper.java @@ -0,0 +1,14 @@ +package com.ruoyi.cai.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.ruoyi.cai.domain.CaiGoods; + +/** + * 充值配置Mapper接口 + * + * @author 77 + * @date 2023-12-24 + */ +public interface CaiGoodsMapper extends BaseMapper { + +} diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/mapper/CaiWithdrawExchangeMapper.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/mapper/CaiWithdrawExchangeMapper.java new file mode 100644 index 00000000..1e55ec6a --- /dev/null +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/mapper/CaiWithdrawExchangeMapper.java @@ -0,0 +1,14 @@ +package com.ruoyi.cai.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.ruoyi.cai.domain.CaiWithdrawExchange; + +/** + * 提现 - 兑换配置Mapper接口 + * + * @author 77 + * @date 2023-12-24 + */ +public interface CaiWithdrawExchangeMapper extends BaseMapper { + +} diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/service/CaiAccountCashService.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/service/CaiAccountCashService.java index d4339004..2a3af898 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/service/CaiAccountCashService.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/service/CaiAccountCashService.java @@ -2,6 +2,7 @@ package com.ruoyi.cai.service; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.cai.domain.CaiAccountCash; +import com.ruoyi.cai.dto.app.query.WithdrawRes; /** * 用户提现记录Service接口 @@ -11,4 +12,5 @@ import com.ruoyi.cai.domain.CaiAccountCash; */ public interface CaiAccountCashService extends IService { + void withdraw(WithdrawRes res); } 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 index 471d8da2..9afcfd67 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/service/CaiAccountService.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/service/CaiAccountService.java @@ -16,4 +16,6 @@ public interface CaiAccountService extends IService { boolean incs(Long userId, Long value); boolean decr(Long userId, Long value); + + boolean withdraw(Long userId, Long incomeCoin); } diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/service/CaiGoodsService.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/service/CaiGoodsService.java new file mode 100644 index 00000000..20a5dae3 --- /dev/null +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/service/CaiGoodsService.java @@ -0,0 +1,14 @@ +package com.ruoyi.cai.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.ruoyi.cai.domain.CaiGoods; + +/** + * 充值配置Service接口 + * + * @author 77 + * @date 2023-12-24 + */ +public interface CaiGoodsService extends IService { + +} diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/service/CaiWithdrawExchangeService.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/service/CaiWithdrawExchangeService.java new file mode 100644 index 00000000..fcf50dfb --- /dev/null +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/service/CaiWithdrawExchangeService.java @@ -0,0 +1,14 @@ +package com.ruoyi.cai.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.ruoyi.cai.domain.CaiWithdrawExchange; + +/** + * 提现 - 兑换配置Service接口 + * + * @author 77 + * @date 2023-12-24 + */ +public interface CaiWithdrawExchangeService extends IService { + +} diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/CaiAccountCashServiceImpl.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/CaiAccountCashServiceImpl.java index 514ad983..5674db48 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/CaiAccountCashServiceImpl.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/CaiAccountCashServiceImpl.java @@ -1,11 +1,47 @@ 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.CaiAccountBankcard; import com.ruoyi.cai.domain.CaiAccountCash; +import com.ruoyi.cai.dto.app.query.WithdrawRes; import com.ruoyi.cai.mapper.CaiAccountCashMapper; +import com.ruoyi.cai.service.CaiAccountBankcardService; import com.ruoyi.cai.service.CaiAccountCashService; +import com.ruoyi.cai.service.CaiAccountService; +import com.ruoyi.common.exception.ServiceException; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.math.BigDecimal; + @Service public class CaiAccountCashServiceImpl extends ServiceImpl implements CaiAccountCashService { + @Autowired + private CaiAccountBankcardService accountBankcardService; + @Autowired + private CaiAccountService accountService; + @Override + public void withdraw(WithdrawRes res) { + CaiAccountBankcard one = accountBankcardService.getOne(Wrappers.lambdaQuery(CaiAccountBankcard.class) + .eq(CaiAccountBankcard::getUserId, res.getUserId()).last("limit 1")); + if(one == null){ + throw new ServiceException("请先配置支付宝提现账号"); + } + Long coinNum = res.getCoinNum(); + boolean withdraw = accountService.withdraw(res.getUserId(), coinNum); + if(!withdraw){ + throw new ServiceException("余额不足"); + } + CaiAccountCash cash = new CaiAccountCash(); + cash.setUserId(res.getUserId()); + cash.setOrderNo("orderNo"); + cash.setCashMoney(BigDecimal.valueOf(res.getMoney())); + cash.setRealCashMoney(BigDecimal.valueOf(res.getMoney())); + cash.setCashFees(BigDecimal.ZERO); + cash.setBank(one.getBank()); + cash.setCardName(one.getCardName()); + cash.setCardAccount(one.getCardAccount()); + this.save(cash); + } } 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 index a82fe0fe..1b7085a6 100644 --- 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 @@ -26,7 +26,7 @@ public class CaiAccountServiceImpl extends ServiceImpl 0; } @Override @@ -36,8 +36,8 @@ public class CaiAccountServiceImpl extends ServiceImpl implements CaiGoodsService { + +} diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/CaiWithdrawExchangeServiceImpl.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/CaiWithdrawExchangeServiceImpl.java new file mode 100644 index 00000000..ff7d0e28 --- /dev/null +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/CaiWithdrawExchangeServiceImpl.java @@ -0,0 +1,17 @@ +package com.ruoyi.cai.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.ruoyi.cai.domain.CaiWithdrawExchange; +import com.ruoyi.cai.mapper.CaiWithdrawExchangeMapper; +import com.ruoyi.cai.service.CaiWithdrawExchangeService; +import org.springframework.stereotype.Service; + +/** + * 提现 - 兑换配置Service业务层处理 + * + * @author 77 + * @date 2023-12-24 + */ +@Service +public class CaiWithdrawExchangeServiceImpl extends ServiceImpl implements CaiWithdrawExchangeService { +} diff --git a/ruoyi-cai/src/main/resources/mapper/cai/CaiAccountMapper.xml b/ruoyi-cai/src/main/resources/mapper/cai/CaiAccountMapper.xml index c1304f53..5100181a 100644 --- a/ruoyi-cai/src/main/resources/mapper/cai/CaiAccountMapper.xml +++ b/ruoyi-cai/src/main/resources/mapper/cai/CaiAccountMapper.xml @@ -27,6 +27,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" set coin = coin + #{coin}, income_coin = income_coin + #{incomeCoin} where user_id = #{userId} + + update cai_account + set income_coin = income_coin - #{value} + where user_id = #{userId} and (income_coin - #{value}) > 0 + diff --git a/ruoyi-cai/src/main/resources/mapper/cai/CaiGoodsMapper.xml b/ruoyi-cai/src/main/resources/mapper/cai/CaiGoodsMapper.xml new file mode 100644 index 00000000..c20455fe --- /dev/null +++ b/ruoyi-cai/src/main/resources/mapper/cai/CaiGoodsMapper.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + diff --git a/ruoyi-cai/src/main/resources/mapper/cai/CaiWithdrawExchangeMapper.xml b/ruoyi-cai/src/main/resources/mapper/cai/CaiWithdrawExchangeMapper.xml new file mode 100644 index 00000000..3227fecb --- /dev/null +++ b/ruoyi-cai/src/main/resources/mapper/cai/CaiWithdrawExchangeMapper.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/page/TableDataInfo.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/page/TableDataInfo.java index 5f3f2d1a..ea4a2f60 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/core/page/TableDataInfo.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/page/TableDataInfo.java @@ -2,11 +2,13 @@ package com.ruoyi.common.core.page; import cn.hutool.http.HttpStatus; import com.baomidou.mybatisplus.core.metadata.IPage; +import com.ruoyi.common.utils.BeanConvertUtil; import lombok.Data; import lombok.NoArgsConstructor; import java.io.Serializable; import java.util.List; +import java.util.function.Supplier; /** * 表格分页数据对象 @@ -59,6 +61,15 @@ public class TableDataInfo implements Serializable { return rspData; } + public static TableDataInfo build(IPage page, Supplier targetSupplier) { + TableDataInfo rspData = new TableDataInfo<>(); + rspData.setCode(HttpStatus.HTTP_OK); + rspData.setMsg("查询成功"); + rspData.setRows(BeanConvertUtil.convertListTo(page.getRecords(),targetSupplier)); + rspData.setTotal(page.getTotal()); + return rspData; + } + public static TableDataInfo build(List list) { TableDataInfo rspData = new TableDataInfo<>(); rspData.setCode(HttpStatus.HTTP_OK);