From a3dea101776483ab67b94aafc2040ac182ffb678 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=B5=E5=BF=A0=E6=9E=97?= <170083662@qq.com> Date: Fri, 24 Oct 2025 17:36:06 +0800 Subject: [PATCH] =?UTF-8?q?feat(shop):=20=E5=AE=8C=E5=96=84=E5=88=86?= =?UTF-8?q?=E9=94=80=E5=95=86=E6=8F=90=E7=8E=B0=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增昵称、头像、手机号、真实姓名字段并支持关联查询 - 修改审核时间为LocalDateTime类型并格式化输出 - 添加上传支付凭证和备注字段 - 提现申请时扣除对应金额 - 驳回提现时退还金额- 已打款状态需上传凭证并记录审核时间 - 支持根据用户ID搜索提现记录- 优化事务 --- .../ShopDealerWithdrawController.java | 30 +++++++++++++++++-- .../shop/entity/ShopDealerWithdraw.java | 26 +++++++++++++++- .../mapper/xml/ShopDealerWithdrawMapper.xml | 5 +++- .../shop/param/ShopDealerWithdrawParam.java | 8 ++++- 4 files changed, 64 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/gxwebsoft/shop/controller/ShopDealerWithdrawController.java b/src/main/java/com/gxwebsoft/shop/controller/ShopDealerWithdrawController.java index 08cbc23..00f7b4e 100644 --- a/src/main/java/com/gxwebsoft/shop/controller/ShopDealerWithdrawController.java +++ b/src/main/java/com/gxwebsoft/shop/controller/ShopDealerWithdrawController.java @@ -1,6 +1,9 @@ package com.gxwebsoft.shop.controller; +import cn.hutool.core.util.StrUtil; import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.shop.entity.ShopDealerUser; +import com.gxwebsoft.shop.service.ShopDealerUserService; import com.gxwebsoft.shop.service.ShopDealerWithdrawService; import com.gxwebsoft.shop.entity.ShopDealerWithdraw; import com.gxwebsoft.shop.param.ShopDealerWithdrawParam; @@ -13,9 +16,12 @@ import com.gxwebsoft.common.system.entity.User; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; +import java.math.BigDecimal; +import java.time.LocalDateTime; import java.util.List; /** @@ -30,6 +36,8 @@ import java.util.List; public class ShopDealerWithdrawController extends BaseController { @Resource private ShopDealerWithdrawService shopDealerWithdrawService; + @Resource + private ShopDealerUserService shopDealerUserService; @PreAuthorize("hasAuthority('shop:shopDealerWithdraw:list')") @Operation(summary = "分页查询分销商提现明细表") @@ -57,6 +65,7 @@ public class ShopDealerWithdrawController extends BaseController { @PreAuthorize("hasAuthority('shop:shopDealerWithdraw:save')") @OperationLog + @Transactional(rollbackFor = {Exception.class}) @Operation(summary = "添加分销商提现明细表") @PostMapping() public ApiResult save(@RequestBody ShopDealerWithdraw shopDealerWithdraw) { @@ -64,9 +73,13 @@ public class ShopDealerWithdrawController extends BaseController { User loginUser = getLoginUser(); if (loginUser != null) { shopDealerWithdraw.setUserId(loginUser.getUserId()); - } - if (shopDealerWithdrawService.save(shopDealerWithdraw)) { + final ShopDealerUser dealerUser = shopDealerUserService.getByUserIdRel(loginUser.getUserId()); + // 扣除提现金额 + dealerUser.setMoney(dealerUser.getMoney().subtract(shopDealerWithdraw.getMoney())); + shopDealerUserService.updateById(dealerUser); + if (shopDealerWithdrawService.save(shopDealerWithdraw)) { return success("添加成功"); + } } return fail("添加失败"); } @@ -76,6 +89,19 @@ public class ShopDealerWithdrawController extends BaseController { @Operation(summary = "修改分销商提现明细表") @PutMapping() public ApiResult update(@RequestBody ShopDealerWithdraw shopDealerWithdraw) { + // 驳回操作,退回金额 + if(shopDealerWithdraw.getApplyStatus().equals(30)){ + final ShopDealerUser dealerUser = shopDealerUserService.getByUserIdRel(shopDealerWithdraw.getUserId()); + dealerUser.setMoney(dealerUser.getMoney().add(shopDealerWithdraw.getMoney())); + shopDealerUserService.updateById(dealerUser); + } + // 已打款,要求上传凭证 + if(shopDealerWithdraw.getApplyStatus().equals(40)){ + shopDealerWithdraw.setAuditTime(LocalDateTime.now()); + if(StrUtil.isBlankIfStr(shopDealerWithdraw.getImage())){ + return fail("请上传打款凭证"); + } + } if (shopDealerWithdrawService.updateById(shopDealerWithdraw)) { return success("修改成功"); } diff --git a/src/main/java/com/gxwebsoft/shop/entity/ShopDealerWithdraw.java b/src/main/java/com/gxwebsoft/shop/entity/ShopDealerWithdraw.java index 5435f69..1460a63 100644 --- a/src/main/java/com/gxwebsoft/shop/entity/ShopDealerWithdraw.java +++ b/src/main/java/com/gxwebsoft/shop/entity/ShopDealerWithdraw.java @@ -2,6 +2,7 @@ package com.gxwebsoft.shop.entity; import java.math.BigDecimal; import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import java.time.LocalDateTime; import com.fasterxml.jackson.annotation.JsonFormat; @@ -29,6 +30,22 @@ public class ShopDealerWithdraw implements Serializable { @Schema(description = "分销商用户ID") private Integer userId; + @Schema(description = "昵称") + @TableField(exist = false) + private String nickName; + + @Schema(description = "头像") + @TableField(exist = false) + private String avatar; + + @Schema(description = "手机号") + @TableField(exist = false) + private String phone; + + @Schema(description = "真实姓名") + @TableField(exist = false) + private String realName; + @Schema(description = "提现金额") private BigDecimal money; @@ -54,11 +71,18 @@ public class ShopDealerWithdraw implements Serializable { private Integer applyStatus; @Schema(description = "审核时间") - private Integer auditTime; + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime auditTime; @Schema(description = "驳回原因") private String rejectReason; + @Schema(description = "上传支付凭证") + private String image; + + @Schema(description = "备注") + private String comments; + @Schema(description = "来源客户端(APP、H5、小程序等)") private String platform; diff --git a/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopDealerWithdrawMapper.xml b/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopDealerWithdrawMapper.xml index 76cd671..b727e63 100644 --- a/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopDealerWithdrawMapper.xml +++ b/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopDealerWithdrawMapper.xml @@ -4,8 +4,10 @@ - SELECT a.* + SELECT a.*, b.nickname, b.phone AS phone, b.avatar, c.real_name as realName FROM shop_dealer_withdraw a + LEFT JOIN gxwebsoft_core.sys_user b ON a.user_id = b.user_id + LEFT JOIN gxwebsoft_core.sys_user_verify c ON a.user_id = c.user_id AND c.status = 1 AND a.id = #{param.id} @@ -54,6 +56,7 @@ AND (a.comments LIKE CONCAT('%', #{param.keywords}, '%') + OR a.user_id = #{param.keywords} ) diff --git a/src/main/java/com/gxwebsoft/shop/param/ShopDealerWithdrawParam.java b/src/main/java/com/gxwebsoft/shop/param/ShopDealerWithdrawParam.java index c053078..4b66593 100644 --- a/src/main/java/com/gxwebsoft/shop/param/ShopDealerWithdrawParam.java +++ b/src/main/java/com/gxwebsoft/shop/param/ShopDealerWithdrawParam.java @@ -59,7 +59,7 @@ public class ShopDealerWithdrawParam extends BaseParam { @Schema(description = "审核时间") @QueryField(type = QueryType.EQ) - private Integer auditTime; + private String auditTime; @Schema(description = "驳回原因") private String rejectReason; @@ -67,4 +67,10 @@ public class ShopDealerWithdrawParam extends BaseParam { @Schema(description = "来源客户端(APP、H5、小程序等)") private String platform; + @Schema(description = "备注") + private String comments; + + @Schema(description = "上传支付凭证") + private String image; + }