From d2d8c6ee40e5982bc2064e0aaf0812ba72a7e85c Mon Sep 17 00:00:00 2001 From: wangqx Date: Tue, 1 Jul 2025 16:52:37 +0800 Subject: [PATCH] =?UTF-8?q?[fix]=E4=BC=98=E5=8C=96=E5=88=86=E8=B4=A6?= =?UTF-8?q?=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../member/domain/bo/MemberAccountBO.java | 26 +++-- .../member/domain/po/MemberAccount.java | 27 +++-- .../member/domain/vo/MemberAccountVO.java | 21 ++-- .../member/mapper/MemberAccountMapper.java | 12 +- .../impl/MemberAccountServiceImpl.java | 12 +- .../resources/ums/MemberAccountMapper.xml | 28 ----- .../wzj/soopin/order/domain/entity/Order.java | 1 + .../org/dromara/system/domain/SysTenant.java | 2 + .../controller/DivideRuleController.java | 2 +- .../enums/DivideRuleDetailType.java | 13 ++- .../service/impl/DivideServiceImpl.java | 103 ++++++++++++++++-- .../service/impl/WithdrawServiceImpl.java | 4 +- 12 files changed, 153 insertions(+), 98 deletions(-) diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/wzj/soopin/member/domain/bo/MemberAccountBO.java b/ruoyi-modules/ruoyi-member/src/main/java/com/wzj/soopin/member/domain/bo/MemberAccountBO.java index df482a036..e05cdfd58 100644 --- a/ruoyi-modules/ruoyi-member/src/main/java/com/wzj/soopin/member/domain/bo/MemberAccountBO.java +++ b/ruoyi-modules/ruoyi-member/src/main/java/com/wzj/soopin/member/domain/bo/MemberAccountBO.java @@ -19,16 +19,22 @@ import java.math.BigDecimal; @Schema(description="会员账户表 查询 对象") @Data public class MemberAccountBO extends BaseBO { - @Schema(description ="积分余额 精确匹配") - private BigDecimal integralBalance; - @Schema(description ="历史总共积分 精确匹配") - private BigDecimal totalIntegralBalance; + @Schema(description ="ID") + private Long id; + + /** + * 账户类型 1 用户 2 商家 3 代理 4 平台 + */ + private Integer type; + @Schema(description ="MEMBER_ID") private Long memberId; + @Schema(description ="积分余额") + private BigDecimal integral; @Schema(description ="钱包") private BigDecimal wallet; @@ -36,17 +42,17 @@ public class MemberAccountBO extends BaseBO { @Schema(description ="营收") private BigDecimal revenue; + private String phone; + private String name; @Schema(description ="余额") private BigDecimal moneyBalance; public LambdaQueryWrapper toWrapper() { - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(getIntegralBalance() != null,MemberAccount::getIntegralBalance, integralBalance); - queryWrapper.eq(getTotalIntegralBalance() != null,MemberAccount::getTotalIntegralBalance, totalIntegralBalance); - queryWrapper.eq(getMemberId() != null,MemberAccount::getMemberId, memberId) - ; - return queryWrapper; + return new LambdaQueryWrapper() + .eq(MemberAccount::getId, id) + .eq(MemberAccount::getType, type) + .eq(MemberAccount::getMemberId, id); } } diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/wzj/soopin/member/domain/po/MemberAccount.java b/ruoyi-modules/ruoyi-member/src/main/java/com/wzj/soopin/member/domain/po/MemberAccount.java index f60e987a6..58eaeed40 100644 --- a/ruoyi-modules/ruoyi-member/src/main/java/com/wzj/soopin/member/domain/po/MemberAccount.java +++ b/ruoyi-modules/ruoyi-member/src/main/java/com/wzj/soopin/member/domain/po/MemberAccount.java @@ -21,26 +21,29 @@ import java.math.BigDecimal; @Builder(toBuilder = true) public class MemberAccount extends BaseAudit { + + @Excel(name = "ID") + @TableId(value = "id", type = IdType.AUTO) + private Long id; + @Schema(description ="MEMBER_ID") - @TableId(value="member_id") private Long memberId; + private String name; + + /** + * 账户类型 1 用户 2 商家 3 代理 4 平台 + */ + private Integer type; + @Schema(description ="积分余额") - private BigDecimal integralBalance; - - @Schema(description ="历史总共积分") - private BigDecimal totalIntegralBalance; - - - @Schema(description ="余额") - private BigDecimal moneyBalance; - + private BigDecimal integral; @Schema(description ="钱包") - private BigDecimal wallet; + private BigDecimal wallet ; @Schema(description ="营收") - private BigDecimal revenue; + private BigDecimal revenue ; } diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/wzj/soopin/member/domain/vo/MemberAccountVO.java b/ruoyi-modules/ruoyi-member/src/main/java/com/wzj/soopin/member/domain/vo/MemberAccountVO.java index f85a637b4..1b3f93954 100644 --- a/ruoyi-modules/ruoyi-member/src/main/java/com/wzj/soopin/member/domain/vo/MemberAccountVO.java +++ b/ruoyi-modules/ruoyi-member/src/main/java/com/wzj/soopin/member/domain/vo/MemberAccountVO.java @@ -16,16 +16,8 @@ public class MemberAccountVO { /** MEMBER_ID */ private Long memberId; /** 积分余额 */ - @Excel(name = "积分余额") - private BigDecimal integralBalance; - /** 历史总共积分 */ - @Excel(name = "历史总共积分") - private BigDecimal totalIntegralBalance; - - - @Schema(description ="余额") - @Excel(name = "余额") - private BigDecimal moneyBalance; + @Excel(name = "积分") + private BigDecimal integral ; @Schema(description ="钱包") @@ -35,4 +27,13 @@ public class MemberAccountVO { @Schema(description ="营收") @Excel(name = "营收") private BigDecimal revenue; + + @Schema(description ="id") + private Long id; + + @Schema(description ="name") + private String name; + + @Schema(description ="phone") + private String phone; } diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/wzj/soopin/member/mapper/MemberAccountMapper.java b/ruoyi-modules/ruoyi-member/src/main/java/com/wzj/soopin/member/mapper/MemberAccountMapper.java index fe8d4acf2..e30381a3e 100644 --- a/ruoyi-modules/ruoyi-member/src/main/java/com/wzj/soopin/member/mapper/MemberAccountMapper.java +++ b/ruoyi-modules/ruoyi-member/src/main/java/com/wzj/soopin/member/mapper/MemberAccountMapper.java @@ -13,15 +13,5 @@ import java.util.List; * @author zcc */ public interface MemberAccountMapper extends BaseMapper { - /** - * 查询会员账户表列表 - * - * @param memberAccount 会员账户表 - * @return 会员账户表集合 - */ - List selectByEntity(MemberAccount memberAccount); - - int updateIntegralBalance(@Param("amount") BigDecimal amount, @Param("memberId") Long memberId); - - int updateIntegral(@Param("useIntegral") BigDecimal useIntegral, @Param("memberId") Long memberId); } + diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/wzj/soopin/member/service/impl/MemberAccountServiceImpl.java b/ruoyi-modules/ruoyi-member/src/main/java/com/wzj/soopin/member/service/impl/MemberAccountServiceImpl.java index c6293eb71..6841134e5 100644 --- a/ruoyi-modules/ruoyi-member/src/main/java/com/wzj/soopin/member/service/impl/MemberAccountServiceImpl.java +++ b/ruoyi-modules/ruoyi-member/src/main/java/com/wzj/soopin/member/service/impl/MemberAccountServiceImpl.java @@ -35,17 +35,7 @@ public class MemberAccountServiceImpl extends ServiceImpl selectList(MemberAccountBO query, IPage page) { - - QueryWrapper qw = new QueryWrapper<>(); - BigDecimal integralBalance = query.getIntegralBalance(); - if (integralBalance != null) { - qw.eq("integral_balance", integralBalance); - } - BigDecimal totalIntegralBalance = query.getTotalIntegralBalance(); - if (totalIntegralBalance != null) { - qw.eq("total_integral_balance", totalIntegralBalance); - } - return baseMapper.selectPage(page,qw); + return baseMapper.selectPage(page,query.toWrapper()); } diff --git a/ruoyi-modules/ruoyi-member/src/main/resources/ums/MemberAccountMapper.xml b/ruoyi-modules/ruoyi-member/src/main/resources/ums/MemberAccountMapper.xml index 6f07b83b2..59054b904 100644 --- a/ruoyi-modules/ruoyi-member/src/main/resources/ums/MemberAccountMapper.xml +++ b/ruoyi-modules/ruoyi-member/src/main/resources/ums/MemberAccountMapper.xml @@ -3,32 +3,4 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> - - - - - - - - - - - select member_id, integral_balance, total_integral_balance, update_time, create_time from ums_member_account - - - update ums_member_account set integral_balance = integral_balance + #{amount},total_integral_balance = total_integral_balance + #{amount},update_time = now() - where member_id = #{memberId} - - - update ums_member_account set integral_balance = integral_balance - #{useIntegral},update_time = now() - where member_id = #{memberId} - - - diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/wzj/soopin/order/domain/entity/Order.java b/ruoyi-modules/ruoyi-order/src/main/java/com/wzj/soopin/order/domain/entity/Order.java index cbb830c54..2a7beb136 100644 --- a/ruoyi-modules/ruoyi-order/src/main/java/com/wzj/soopin/order/domain/entity/Order.java +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/wzj/soopin/order/domain/entity/Order.java @@ -178,6 +178,7 @@ public class Order extends BaseAudit { @Schema(description = "提现状态:1->等待转账;2->转帐中;3->转账成功;4->转账失败") private Integer withdrawStatus; + @Schema(description = "配送方式 1->到店核销;2->自提;3->配送;") private Integer distribution; diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysTenant.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysTenant.java index a91ae124f..c14b74c0f 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysTenant.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysTenant.java @@ -129,4 +129,6 @@ public class SysTenant extends BaseEntity { * 入驻时间 */ private LocalDateTime joinTime; + + private Long accountId; } diff --git a/ruoyi-modules/ruoyi-transaction/src/main/java/com/wzj/soopin/transaction/controller/DivideRuleController.java b/ruoyi-modules/ruoyi-transaction/src/main/java/com/wzj/soopin/transaction/controller/DivideRuleController.java index c9b1d0aa5..7060791e8 100644 --- a/ruoyi-modules/ruoyi-transaction/src/main/java/com/wzj/soopin/transaction/controller/DivideRuleController.java +++ b/ruoyi-modules/ruoyi-transaction/src/main/java/com/wzj/soopin/transaction/controller/DivideRuleController.java @@ -50,7 +50,7 @@ public class DivideRuleController { @Log(title = "修改", businessType = BusinessType.UPDATE) @PostMapping("/update") public R update(@RequestBody DivideRuleBO bo) { - service.save(convert.toPo(bo)); + service.updateById(convert.toPo(bo)); return R.ok(); } diff --git a/ruoyi-modules/ruoyi-transaction/src/main/java/com/wzj/soopin/transaction/enums/DivideRuleDetailType.java b/ruoyi-modules/ruoyi-transaction/src/main/java/com/wzj/soopin/transaction/enums/DivideRuleDetailType.java index 8112c5674..8bc67b573 100644 --- a/ruoyi-modules/ruoyi-transaction/src/main/java/com/wzj/soopin/transaction/enums/DivideRuleDetailType.java +++ b/ruoyi-modules/ruoyi-transaction/src/main/java/com/wzj/soopin/transaction/enums/DivideRuleDetailType.java @@ -14,7 +14,9 @@ public enum DivideRuleDetailType { /** * 代理 */ - PROXY(3, "代理"); + PROXY(3, "代理"), + + REFERENCE(4, "推广"),; private int value; private String desc; @@ -32,4 +34,13 @@ public enum DivideRuleDetailType { public String getDesc() { return desc; } + + public static DivideRuleDetailType getEnum(int value) { + for (DivideRuleDetailType type : DivideRuleDetailType.values()) { + if (type.getValue() == value) { + return type; + } + } + return null; + } } diff --git a/ruoyi-modules/ruoyi-transaction/src/main/java/com/wzj/soopin/transaction/service/impl/DivideServiceImpl.java b/ruoyi-modules/ruoyi-transaction/src/main/java/com/wzj/soopin/transaction/service/impl/DivideServiceImpl.java index 7c69c2f6d..0dd24a698 100644 --- a/ruoyi-modules/ruoyi-transaction/src/main/java/com/wzj/soopin/transaction/service/impl/DivideServiceImpl.java +++ b/ruoyi-modules/ruoyi-transaction/src/main/java/com/wzj/soopin/transaction/service/impl/DivideServiceImpl.java @@ -2,6 +2,10 @@ package com.wzj.soopin.transaction.service.impl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.wzj.soopin.member.domain.po.Member; +import com.wzj.soopin.member.domain.po.MemberAccount; +import com.wzj.soopin.member.service.IMemberAccountService; +import com.wzj.soopin.member.service.IMemberService; import com.wzj.soopin.order.domain.entity.Order; import com.wzj.soopin.order.service.OrderItemService; import com.wzj.soopin.order.service.OrderService; @@ -25,6 +29,8 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.dromara.common.core.exception.ServiceException; import org.dromara.common.core.service.ConfigService; +import org.dromara.system.domain.vo.SysTenantVo; +import org.dromara.system.service.ISysTenantService; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -63,6 +69,12 @@ public class DivideServiceImpl extends ServiceImpl impleme private final IYishengService yishengService; + private final IMemberAccountService accountService; + + private final ISysTenantService sysTenantService; + + private final IMemberService memberService; + @Override @Transactional(rollbackFor = Exception.class) public boolean save(DivideBO bo) { @@ -168,12 +180,15 @@ public class DivideServiceImpl extends ServiceImpl impleme .build(); super.save(divide); + //生成分账明细信息 List details = saveDetails(order, divide.getId(), totalFee, totalAmount, rule); + //同步订单状态 syncOrderStatus(order); + //同步易生支付 syncYisheng(details); - return false; + return true; } @Override @@ -228,13 +243,19 @@ public class DivideServiceImpl extends ServiceImpl impleme if (item.getType() == DivideRuleDetailType.PLATFORM.getValue()) { account = getPlatformAccount(); } else if (item.getType() == DivideRuleDetailType.PROXY.getValue()) { - account = getProxyAccount(); + account = getProxyAccount(Long.valueOf(order.getTenantId())); } else if (item.getType() == DivideRuleDetailType.SELLER.getValue()) { - account = getSellerAccount(); + account = getSellerAccount(Long.valueOf(order.getTenantId())); + } else if (item.getType() == DivideRuleDetailType.REFERENCE.getValue()) { + account = getReferenceAccount(order.getMemberId()); + } + if (account == null) { + detail.setAccountId(Long.parseLong(account.get("accountId"))); + detail.setAccountName(account.get("accountName")); + return detail; + } else { + throw new ServiceException(StringUtils.format("%s未找到分账账户", DivideRuleDetailType.getEnum(item.getType()))); } - detail.setAccountId(Long.parseLong(account.get("accountId"))); - detail.setAccountName(account.get("accountName")); - return detail; }).collect(Collectors.toList()); detailMapper.insertBatch(details); return details; @@ -247,17 +268,75 @@ public class DivideServiceImpl extends ServiceImpl impleme }}; } - private Map getProxyAccount() { + /** + * 获取达人的账户信息 + * + * @param memberId + * @return + */ + private Map getReferenceAccount(Long memberId) { + Member member = memberService.getById(memberId); + if (member == null) { + return null; + } + //推广人 + Long inviteUserId = member.getSpreadUid(); + if (inviteUserId == null) { + return null; + } + MemberAccount account = accountService.getMemberAccount(inviteUserId); + if (account == null) { + return null; + } return new HashMap<>() {{ - put("account", "123456"); - put("name", "代理"); + put("accountId", account.getId() + ""); + put("accountName", account.getName()); }}; } - private Map getSellerAccount() { + /** + * 获取代理的账户信息 + * + * @param sellerId + * @return + */ + private Map getProxyAccount(Long sellerId) { + SysTenantVo tenant = sysTenantService.queryById(sellerId); + Long inviteUserId = tenant.getInviteUserId(); + if (inviteUserId != null) { + return null; + } + MemberAccount account = accountService.getMemberAccount(inviteUserId); + + if (account == null) { + return null; + } return new HashMap<>() {{ - put("account", "123456"); - put("name", "卖家"); + put("accountId", account.getId() + ""); + put("accountName", account.getName()); + }}; + } + + /** + * 获取商家的账户信息 + * + * @param sellerId + * @return + */ + private Map getSellerAccount(Long sellerId) { + + SysTenantVo tenant = sysTenantService.queryById(sellerId); + if (tenant != null) { + return null; + } + MemberAccount account = accountService.getMemberAccount(tenant.getId()); + + if (account == null) { + return null; + } + return new HashMap<>() {{ + put("accountId", account.getId() + ""); + put("accountName", account.getName()); }}; } diff --git a/ruoyi-modules/ruoyi-transaction/src/main/java/com/wzj/soopin/transaction/service/impl/WithdrawServiceImpl.java b/ruoyi-modules/ruoyi-transaction/src/main/java/com/wzj/soopin/transaction/service/impl/WithdrawServiceImpl.java index dca8a8bf6..361744027 100644 --- a/ruoyi-modules/ruoyi-transaction/src/main/java/com/wzj/soopin/transaction/service/impl/WithdrawServiceImpl.java +++ b/ruoyi-modules/ruoyi-transaction/src/main/java/com/wzj/soopin/transaction/service/impl/WithdrawServiceImpl.java @@ -74,7 +74,7 @@ public class WithdrawServiceImpl extends ServiceImpl i throw new RuntimeException("用户不存在"); } //检查当前用于的账户余额是否充足 - BigDecimal balance = memberAccount.getMoneyBalance(); + BigDecimal balance = memberAccount.getWallet(); if (balance.compareTo(withdraw.getMoney()) < 0) { throw new RuntimeException("用户余额不足"); @@ -104,7 +104,7 @@ public class WithdrawServiceImpl extends ServiceImpl i //// TODO: 2025/6/21 测试的时候用计算的 测试完用易生的 BigDecimal finalBalance = balance.subtract(withdraw.getMoney()); yishengAccountVO = yishengService.getYishengAccount(withdraw.getMemberId()); - memberAccountService.updateById(memberAccount.toBuilder().moneyBalance(balance.subtract(finalBalance)).build()); + memberAccountService.updateById(memberAccount.toBuilder().wallet(balance.subtract(finalBalance)).build()); //生成账户变动记录bh MemberAccountChangeRecord memberAccountChangeRecord = MemberAccountChangeRecord.builder() .memberId(withdraw.getMemberId())