diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/controller/admin/AccountCashController.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/controller/admin/AccountCashController.java index 09e0b976..49993ec9 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/controller/admin/AccountCashController.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/controller/admin/AccountCashController.java @@ -56,9 +56,12 @@ public class AccountCashController extends BaseController { @SaCheckPermission("cai:accountCash:export") @Log(title = "用户提现记录", businessType = BusinessType.EXPORT) @PostMapping("/export") - public void export(AccountCash bo, HttpServletResponse response) { - List list = accountCashService.list(Wrappers.lambdaQuery(bo)); - ExcelUtil.exportExcel(list, "用户提现记录", AccountCash.class, response); + public void export(AccountCashAdminVo bo, HttpServletResponse response) { + PageQuery query = new PageQuery(); + query.setPageSize(Integer.MAX_VALUE); + query.setPageNum(1); + List list = accountCashService.pageAdmin(query,bo).getRecords(); + ExcelUtil.exportExcel(list, "用户提现记录", AccountCashAdminVo.class, response); } /** diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/controller/test/TestPayController.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/controller/test/TestPayController.java index 233b1cc0..2abf4674 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/controller/test/TestPayController.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/controller/test/TestPayController.java @@ -8,6 +8,8 @@ import com.ruoyi.cai.pay.PayManager; import com.ruoyi.cai.service.RechargeOrderService; import com.ruoyi.cai.service.VipOrderService; import com.ruoyi.common.core.domain.R; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.annotation.Validated; @@ -19,6 +21,7 @@ import org.springframework.web.bind.annotation.RestController; @RequiredArgsConstructor @RestController @RequestMapping("/cai/test/pay") +@Tag(name = "测试接口,正式环境取消") public class TestPayController { @Autowired @@ -29,6 +32,7 @@ public class TestPayController { private PayManager payManager; @GetMapping("/vip") + @Operation(hidden = true) public R vip(Long memberPriceId, Long userId){ AddVipOrderDto addVipOrderDto = new AddVipOrderDto(); addVipOrderDto.setUserId(userId); @@ -39,6 +43,7 @@ public class TestPayController { } @GetMapping("/recharge") + @Operation(hidden = true) public R recharge(Long goodId, Long userId){ AddRechargeOrderDto dto = new AddRechargeOrderDto(); dto.setUserId(userId); diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/domain/AccountCash.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/domain/AccountCash.java index 658de4f5..c64fdc92 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/domain/AccountCash.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/domain/AccountCash.java @@ -1,9 +1,17 @@ package com.ruoyi.cai.domain; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentFontStyle; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.ruoyi.cai.enums.AccountCashStatusEnum; +import com.ruoyi.cai.enums.IsAnchorEnum; +import com.ruoyi.common.annotation.ExcelEnumFormat; +import com.ruoyi.common.convert.ExcelEnumConvert; import lombok.Data; +import org.apache.poi.ss.usermodel.Font; import java.io.Serializable; import java.math.BigDecimal; @@ -38,10 +46,13 @@ public class AccountCash implements Serializable { /** * 提现紫贝 */ + @ExcelProperty(value = "提现紫贝") private Long withdrawCoin; /** * 提现金额 */ + @ExcelProperty(value = "提现金额") + @ContentFontStyle(color = Font.COLOR_RED) private BigDecimal cashMoney; /** * 真实提现金额 @@ -54,18 +65,23 @@ public class AccountCash implements Serializable { /** * 银行名称 */ + @ExcelProperty(value = "银行名称") private String bank; /** * 账户名称 */ + @ExcelProperty(value = "账户名称") private String cardName; /** * 账户 */ + @ExcelProperty(value = "账户") private String cardAccount; /** * 1 申请 2 审核通过 3 审核不通过 4 提现取消 */ + @ExcelProperty(value = "状态",converter = ExcelEnumConvert.class) + @ExcelEnumFormat(enumClass = AccountCashStatusEnum.class,codeField = "code",textField = "text") private Integer status; /** * @@ -92,7 +108,8 @@ public class AccountCash implements Serializable { */ private LocalDateTime exportTime; - + @ExcelProperty(value = "申请时间") + @ColumnWidth(value = 20) private LocalDateTime createTime; } diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/dto/admin/vo/AccountCashAdminVo.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/dto/admin/vo/AccountCashAdminVo.java index 99e7a793..f4c49169 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/dto/admin/vo/AccountCashAdminVo.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/dto/admin/vo/AccountCashAdminVo.java @@ -1,25 +1,32 @@ package com.ruoyi.cai.dto.admin.vo; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; import com.ruoyi.cai.domain.AccountCash; +import com.ruoyi.cai.enums.IsAnchorEnum; +import com.ruoyi.common.annotation.ExcelEnumFormat; import com.ruoyi.common.annotation.Sensitive; +import com.ruoyi.common.convert.ExcelEnumConvert; import com.ruoyi.common.enums.SensitiveStrategy; import lombok.Data; @Data +@ExcelIgnoreUnannotated public class AccountCashAdminVo extends AccountCash { - /** - * 用户号/ID号 - */ + + @ExcelProperty(value = "蜜瓜号") private String usercode; /** * 昵称 */ + @ExcelProperty(value = "昵称") private String nickname; /** * 手机号 */ @Sensitive(strategy = SensitiveStrategy.PHONE) + @ExcelProperty(value = "手机号") private String mobile; /** @@ -31,5 +38,7 @@ public class AccountCashAdminVo extends AccountCash { */ private Integer gender; private Integer age; + @ExcelProperty(value = "主播",converter = ExcelEnumConvert.class) + @ExcelEnumFormat(enumClass = IsAnchorEnum.class,codeField = "code",textField = "message") private Integer isAnchor; } diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/enums/AccountBusinessEnum.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/enums/AccountBusinessEnum.java index f47a556c..9380b651 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/enums/AccountBusinessEnum.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/enums/AccountBusinessEnum.java @@ -8,7 +8,7 @@ public enum AccountBusinessEnum { /** * 提现 */ - WITHDRAW(AccountChangeEnum.WITHDRAW,null,null,null), +// WITHDRAW(AccountChangeEnum.WITHDRAW,null,null,null), /** * 守护 */ diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/enums/AccountCashStatusEnum.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/enums/AccountCashStatusEnum.java new file mode 100644 index 00000000..7e373a45 --- /dev/null +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/enums/AccountCashStatusEnum.java @@ -0,0 +1,25 @@ +package com.ruoyi.cai.enums; + +import lombok.Getter; + +/** + * 1 申请 2 审核通过 3 审核不通过 4 提现取消 + *

created on 2024/1/14 21:55

+ * @author duet + */ +@Getter +public enum AccountCashStatusEnum { + + READY(1,"申请中"), + SUCCESS(2,"审核通过"), + FAIL(3,"审核未通过"), + CLOSE(4,"提现取消"), + ; + private final Integer code; + private final String text; + + AccountCashStatusEnum(Integer code, String text) { + this.code = code; + this.text = text; + } +} diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/enums/IsAnchorEnum.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/enums/IsAnchorEnum.java new file mode 100644 index 00000000..f13e36e6 --- /dev/null +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/enums/IsAnchorEnum.java @@ -0,0 +1,17 @@ +package com.ruoyi.cai.enums; + +import lombok.Getter; + +@Getter +public enum IsAnchorEnum { + YES(1,"是"), + NO(0,"否"), + ; + private final Integer code; + private final String message; + + IsAnchorEnum(Integer code, String message) { + this.code = code; + this.message = message; + } +} diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/mq/consumer/AmqpConsumer.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/mq/consumer/AmqpConsumer.java index 07804304..a6711ec7 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/mq/consumer/AmqpConsumer.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/mq/consumer/AmqpConsumer.java @@ -38,7 +38,11 @@ public class AmqpConsumer { ,containerFactory = "customContainerFactory") public void calculateSalesQueue(String message) { log.info("接受到到分销处理请求: message=" + message); - consumeLogService.dealFenxiao(Long.valueOf(message)); + try { + consumeLogService.dealFenxiao(Long.valueOf(message),true); + }catch (Exception e){ + log.error("处理分销失败: message=" + message,e); + } log.info("分销处理完成: message=" + message); } diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/pay/PayManager.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/pay/PayManager.java index 19f457cf..9916a562 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/pay/PayManager.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/pay/PayManager.java @@ -1,5 +1,6 @@ package com.ruoyi.cai.pay; +import com.ruoyi.cai.manager.ConsumerManager; import com.ruoyi.cai.service.RechargeOrderService; import com.ruoyi.cai.service.VipOrderService; import lombok.extern.slf4j.Slf4j; @@ -13,7 +14,7 @@ public class PayManager { @Autowired private VipOrderService vipOrderService; @Autowired - private RechargeOrderService rechargeOrderService; + private ConsumerManager consumerManager; public void callBack(String orderNo){ OrderTypeEnum orderTypeEnum = OrderNoUtil.getType(orderNo); @@ -26,7 +27,7 @@ public class PayManager { vipOrderService.orderSuccess(orderNo); break; case RECHARGE_ORDER_SUB: - rechargeOrderService.orderSuccess(orderNo); + consumerManager.rechargeOrderSuccess(orderNo); break; default: break; diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/service/ConsumeLogService.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/service/ConsumeLogService.java index 0f36002a..dd9ba115 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/service/ConsumeLogService.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/service/ConsumeLogService.java @@ -11,7 +11,7 @@ import com.ruoyi.cai.domain.ConsumeLog; */ public interface ConsumeLogService extends IService { - void dealFenxiao(Long id); + void dealFenxiao(Long id,boolean system); ConsumeLog calculateInitFenxiao(ConsumeLog consumeLog); } diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/AccountServiceImpl.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/AccountServiceImpl.java index 4d96bf80..5f51870a 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/AccountServiceImpl.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/AccountServiceImpl.java @@ -181,13 +181,13 @@ public class AccountServiceImpl extends ServiceImpl impl if(!incs){ throw new ServiceException("需"+incomeCoin+caiProperties.getCoinName()+"才可提现"); } - accountChangeLogService.saveLogNoAdmin(user.getId(),user.getUsercode(), RechargeTypeEnum.COIN_INCOME,AccountBusinessEnum.WITHDRAW.getSourceEnum(),incomeCoin,traceId); + accountChangeLogService.saveLogNoAdmin(user.getId(),user.getUsercode(), RechargeTypeEnum.COIN_INCOME,AccountChangeEnum.WITHDRAW,incomeCoin,traceId); } @Override @Transactional(rollbackFor = Exception.class) public void recharge(ConsumeLog consumeLog){ - log.info("开始扣费 consumeLog={}", JSON.toJSONString(consumeLog)); + log.info("开始充值 consumeLog={}", JSON.toJSONString(consumeLog)); Long userId = consumeLog.getSourceUserId(); Long amount = consumeLog.getAmount(); User user = userService.getById(userId); @@ -195,8 +195,8 @@ public class AccountServiceImpl extends ServiceImpl impl if(account == null || user == null){ throw new ServiceException("无效账号"); } - baseMapper.incsIncomeCoin(userId, amount); - accountChangeLogService.saveLogNoAdmin(user.getId(),user.getUsercode(), RechargeTypeEnum.COIN,AccountBusinessEnum.RECHARGE.getOneEnum(),amount,consumeLog.getTraceId()); + baseMapper.incsCoin(userId, amount); + accountChangeLogService.saveLogNoAdmin(user.getId(),user.getUsercode(), RechargeTypeEnum.COIN,AccountBusinessEnum.RECHARGE.getSourceEnum(),amount,consumeLog.getTraceId()); // 获取分销的比例和用户 consumeLogService.calculateInitFenxiao(consumeLog); consumeLogService.save(consumeLog); diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/ConsumeLogServiceImpl.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/ConsumeLogServiceImpl.java index 1b556c6f..54ad784b 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/ConsumeLogServiceImpl.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/ConsumeLogServiceImpl.java @@ -1,5 +1,6 @@ package com.ruoyi.cai.service.impl; +import cn.dev33.satoken.stp.StpUtil; import com.alibaba.fastjson2.JSON; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @@ -11,6 +12,7 @@ import com.ruoyi.cai.mapper.ConsumeLogMapper; import com.ruoyi.cai.service.*; import com.ruoyi.cai.util.NumCaUtil; import com.ruoyi.common.core.domain.model.LoginUser; +import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.helper.LoginHelper; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.BooleanUtils; @@ -42,7 +44,7 @@ public class ConsumeLogServiceImpl extends ServiceImpl i consumeLog.init(fromUser,toUser); consumeLog.setTraceId(traceId); consumeLog.setType(ConsumeLogType.GIFT.getCode()); + consumeLog.setBusinessEnum(AccountBusinessEnum.GIFT.name()); consumeLog.setAmount(giftAmount); consumeLog.setTargetRate(anchor.getGiftRate()); consumeLog = accountService.decr(consumeLog, AccountBusinessEnum.GIFT); diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/VipOrderServiceImpl.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/VipOrderServiceImpl.java index 0fad2b3a..9b06aa67 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/VipOrderServiceImpl.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/VipOrderServiceImpl.java @@ -22,7 +22,9 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.time.LocalDate; import java.time.LocalDateTime; +import java.time.LocalTime; /** * VIP订单Service业务层处理 @@ -152,13 +154,14 @@ public class VipOrderServiceImpl extends ServiceImpl im userMember.setMemberType(memberType); userMember.setExpire(expire); userMember.setLongs(longs); - userMember.setExpireDate(createTime.plusDays(expire)); + LocalDate expireDate = createTime.plusDays(expire).plusDays(1).toLocalDate(); + userMember.setExpireDate(LocalDateTime.of(expireDate, LocalTime.MIN)); userMember.setCreateTime(createTime); userMember.setMemberStatus(MemberStatusEnum.NORMAL.getCode()); userMemberService.saveOrUpdate(userMember); return true; } - if(longs == 1){ // 已经是永久会员还买? 傻逼 + if(userMember.getLongs() == 1){ // 已经是永久会员还买? 傻逼 return true; } userMember.setCreateTime(createTime); diff --git a/ruoyi-cai/src/main/resources/mapper/cai/AccountCashMapper.xml b/ruoyi-cai/src/main/resources/mapper/cai/AccountCashMapper.xml index a12de73a..e3300adb 100644 --- a/ruoyi-cai/src/main/resources/mapper/cai/AccountCashMapper.xml +++ b/ruoyi-cai/src/main/resources/mapper/cai/AccountCashMapper.xml @@ -40,8 +40,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and t2.usercode = #{bo.usercode} + + and t1.status = #{bo.status} + - order by t1.create_time + order by t1.create_time desc