From d6f80025e45f588b7939ffd1baa265ddf7c4284a Mon Sep 17 00:00:00 2001 From: dzc <2388224167@qq.com> Date: Fri, 26 Dec 2025 11:07:59 +0800 Subject: [PATCH] =?UTF-8?q?feat:bug=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../brokerage/TradeBrokerageRecordApi.java | 22 +++++++++ .../api/brokerage/dto/BrokerageAddDTO.java | 46 +++++++++++++++++++ .../TradeBrokerageRecordApiImpl.java | 25 ++++++++++ .../vo/code/BrokerageCodePageReqVO.java | 3 ++ .../vo/code/BrokerageCodeRespVO.java | 4 ++ .../vo/code/BrokerageCodeSaveReqVO.java | 3 ++ .../brokerage/AppBrokerageCodeController.java | 6 +++ .../dataobject/brokerage/BrokerageCodeDO.java | 5 ++ .../brokerage/BrokerageCodeService.java | 5 ++ .../brokerage/BrokerageCodeServiceImpl.java | 16 +++++++ .../admin/comauth/ComAuthController.java | 10 ++-- .../vo/openTypeUser/OpenTypeUserReqVO.java | 2 +- .../admin/recent/OperationController.java | 12 ++--- .../opentype/AppOpenTypeUserController.java | 3 ++ .../member/service/user/BO/MemberExtBO.java | 2 +- .../main/resources/mapper/OperationMapper.xml | 2 +- yudao-module-pay/yudao-module-pay-biz/pom.xml | 5 ++ .../wallet/PayWalletRechargeController.java | 3 +- .../wallet/PayWalletRechargeServiceImpl.java | 23 ++++++++++ .../social/SocialClientServiceImpl.java | 7 ++- 20 files changed, 187 insertions(+), 17 deletions(-) create mode 100644 yudao-module-mall/yudao-module-trade-api/src/main/java/cn/iocoder/yudao/module/trade/api/brokerage/TradeBrokerageRecordApi.java create mode 100644 yudao-module-mall/yudao-module-trade-api/src/main/java/cn/iocoder/yudao/module/trade/api/brokerage/dto/BrokerageAddDTO.java create mode 100644 yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/api/brokerage/TradeBrokerageRecordApiImpl.java diff --git a/yudao-module-mall/yudao-module-trade-api/src/main/java/cn/iocoder/yudao/module/trade/api/brokerage/TradeBrokerageRecordApi.java b/yudao-module-mall/yudao-module-trade-api/src/main/java/cn/iocoder/yudao/module/trade/api/brokerage/TradeBrokerageRecordApi.java new file mode 100644 index 0000000..a78cd40 --- /dev/null +++ b/yudao-module-mall/yudao-module-trade-api/src/main/java/cn/iocoder/yudao/module/trade/api/brokerage/TradeBrokerageRecordApi.java @@ -0,0 +1,22 @@ +package cn.iocoder.yudao.module.trade.api.brokerage; + +import cn.iocoder.yudao.module.trade.api.brokerage.dto.BrokerageAddDTO; +import cn.iocoder.yudao.module.trade.enums.brokerage.BrokerageRecordBizTypeEnum; + +import javax.validation.Valid; +import java.util.List; + +/** + * 分销记录 API 接口 + */ +public interface TradeBrokerageRecordApi { + + /** + * 增加佣金【多级分佣】 + * @param userId 会员编号 + * @param bizType 业务类型 + * @param list 请求参数列表 + */ + void addBrokerage(Long userId, BrokerageRecordBizTypeEnum bizType, @Valid List list); + +} diff --git a/yudao-module-mall/yudao-module-trade-api/src/main/java/cn/iocoder/yudao/module/trade/api/brokerage/dto/BrokerageAddDTO.java b/yudao-module-mall/yudao-module-trade-api/src/main/java/cn/iocoder/yudao/module/trade/api/brokerage/dto/BrokerageAddDTO.java new file mode 100644 index 0000000..c26ac90 --- /dev/null +++ b/yudao-module-mall/yudao-module-trade-api/src/main/java/cn/iocoder/yudao/module/trade/api/brokerage/dto/BrokerageAddDTO.java @@ -0,0 +1,46 @@ +package cn.iocoder.yudao.module.trade.api.brokerage.dto; + +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; + +@Data +public class BrokerageAddDTO { + + /** + * 业务编号 + */ + @NotBlank(message = "业务编号不能为空") + private String bizId; + + /** + * 佣金基数 + */ + @NotNull(message = "佣金基数不能为空") + private Integer basePrice; + + /** + * 一级佣金(固定) + */ + @NotNull(message = "一级佣金(固定)不能为空") + private Integer firstFixedPrice; + + /** + * 二级佣金(固定) + */ + private Integer secondFixedPrice; + + /** + * 来源用户编号 + */ + @NotNull(message = "来源用户编号不能为空") + private Long sourceUserId; + + /** + * 佣金记录标题 + */ + @NotEmpty(message = "佣金记录标题不能为空") + private String title; +} diff --git a/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/api/brokerage/TradeBrokerageRecordApiImpl.java b/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/api/brokerage/TradeBrokerageRecordApiImpl.java new file mode 100644 index 0000000..b3fcbaf --- /dev/null +++ b/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/api/brokerage/TradeBrokerageRecordApiImpl.java @@ -0,0 +1,25 @@ +package cn.iocoder.yudao.module.trade.api.brokerage; + +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.module.trade.api.brokerage.dto.BrokerageAddDTO; +import cn.iocoder.yudao.module.trade.enums.brokerage.BrokerageRecordBizTypeEnum; +import cn.iocoder.yudao.module.trade.service.brokerage.BrokerageRecordService; +import cn.iocoder.yudao.module.trade.service.brokerage.bo.BrokerageAddReqBO; +import org.springframework.stereotype.Service; +import org.springframework.validation.annotation.Validated; + +import javax.annotation.Resource; +import java.util.List; + +@Service +@Validated +public class TradeBrokerageRecordApiImpl implements TradeBrokerageRecordApi { + + @Resource + private BrokerageRecordService brokerageRecordService; + + @Override + public void addBrokerage(Long userId, BrokerageRecordBizTypeEnum bizType, List list) { + brokerageRecordService.addBrokerage(userId, bizType, BeanUtils.toBean(list, BrokerageAddReqBO.class)); + } +} diff --git a/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/admin/brokerage/vo/code/BrokerageCodePageReqVO.java b/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/admin/brokerage/vo/code/BrokerageCodePageReqVO.java index cde832c..8532f0b 100644 --- a/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/admin/brokerage/vo/code/BrokerageCodePageReqVO.java +++ b/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/admin/brokerage/vo/code/BrokerageCodePageReqVO.java @@ -23,6 +23,9 @@ public class BrokerageCodePageReqVO extends PageParam { @Schema(description = "邀请码") private String code; + @Schema(description = "提现微信号") + private String txWechatNum; + @Schema(description = "创建时间") @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) private LocalDateTime[] createTime; diff --git a/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/admin/brokerage/vo/code/BrokerageCodeRespVO.java b/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/admin/brokerage/vo/code/BrokerageCodeRespVO.java index 873d5e2..138ea40 100644 --- a/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/admin/brokerage/vo/code/BrokerageCodeRespVO.java +++ b/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/admin/brokerage/vo/code/BrokerageCodeRespVO.java @@ -4,6 +4,7 @@ import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; import java.time.LocalDateTime; + import com.alibaba.excel.annotation.*; @Schema(description = "管理后台 - 分销码 Response VO") @@ -27,6 +28,9 @@ public class BrokerageCodeRespVO { @ExcelProperty("邀请码") private String code; + @Schema(description = "提现微信号") + private String txWechatNum; + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) @ExcelProperty("创建时间") private LocalDateTime createTime; diff --git a/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/admin/brokerage/vo/code/BrokerageCodeSaveReqVO.java b/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/admin/brokerage/vo/code/BrokerageCodeSaveReqVO.java index 17d8507..a2dd26d 100644 --- a/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/admin/brokerage/vo/code/BrokerageCodeSaveReqVO.java +++ b/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/admin/brokerage/vo/code/BrokerageCodeSaveReqVO.java @@ -24,4 +24,7 @@ public class BrokerageCodeSaveReqVO { @NotEmpty(message = "邀请码不能为空") private String code; + @Schema(description = "提现微信号") + private String txWechatNum; + } \ No newline at end of file diff --git a/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/app/brokerage/AppBrokerageCodeController.java b/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/app/brokerage/AppBrokerageCodeController.java index 459e7f8..0bc2743 100644 --- a/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/app/brokerage/AppBrokerageCodeController.java +++ b/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/app/brokerage/AppBrokerageCodeController.java @@ -30,5 +30,11 @@ public class AppBrokerageCodeController { return success(brokerageCodeService.getUserBrokerageCode(getLoginUserId())); } + @GetMapping("/bind-tx-wechat-num") + @Operation(summary = "绑定提现微信") + public CommonResult bindTxWechatNum(@RequestParam("txWechatNum") String txWechatNum) { + return success(brokerageCodeService.bindTxWechatNum(getLoginUserId(), txWechatNum)); + } + } diff --git a/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/dal/dataobject/brokerage/BrokerageCodeDO.java b/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/dal/dataobject/brokerage/BrokerageCodeDO.java index 34663a2..c0a79fe 100644 --- a/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/dal/dataobject/brokerage/BrokerageCodeDO.java +++ b/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/dal/dataobject/brokerage/BrokerageCodeDO.java @@ -48,4 +48,9 @@ public class BrokerageCodeDO extends BaseDO { */ private String url; + /** + * 提现微信号 + */ + private String txWechatNum; + } \ No newline at end of file diff --git a/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/brokerage/BrokerageCodeService.java b/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/brokerage/BrokerageCodeService.java index 4f6ddda..b94493b 100644 --- a/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/brokerage/BrokerageCodeService.java +++ b/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/brokerage/BrokerageCodeService.java @@ -40,6 +40,11 @@ public interface BrokerageCodeService { */ PageResult getBrokerageCodePage(BrokerageCodePageReqVO pageReqVO); + /** + * 绑定提现微信 + */ + BrokerageCodeDO bindTxWechatNum(Long userId, String txWechatNum); + /** * 获取用户的分销码 */ diff --git a/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/brokerage/BrokerageCodeServiceImpl.java b/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/brokerage/BrokerageCodeServiceImpl.java index 3aefbba..233cf76 100644 --- a/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/brokerage/BrokerageCodeServiceImpl.java +++ b/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/brokerage/BrokerageCodeServiceImpl.java @@ -92,6 +92,22 @@ public class BrokerageCodeServiceImpl implements BrokerageCodeService { return brokerageCodeMapper.selectPage(pageReqVO); } + /** + * 绑定提现微信 + */ + @Override + public BrokerageCodeDO bindTxWechatNum(Long userId, String txWechatNum) { + BrokerageCodeDO brokerageCode = getUserBrokerageCode(userId); + if (ObjectUtil.isEmpty(brokerageCode)) { + return brokerageCode; + } + // 更新 + BrokerageCodeDO updateObj = BrokerageCodeDO.builder().id(brokerageCode.getId()).txWechatNum(txWechatNum).build(); + brokerageCodeMapper.updateById(updateObj); + brokerageCode.setTxWechatNum(txWechatNum); + return brokerageCode; + } + /** * 获取用户的分销码 */ diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/comauth/ComAuthController.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/comauth/ComAuthController.java index 88548fd..d7620a6 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/comauth/ComAuthController.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/comauth/ComAuthController.java @@ -37,14 +37,14 @@ public class ComAuthController { @PostMapping("/create") @Operation(summary = "创建用户认证") - @PreAuthorize("@ss.hasPermission('member:auth:create')") + // @PreAuthorize("@ss.hasPermission('member:auth:create')") public CommonResult createAuth(@Valid @RequestBody ComAuthSaveReqVO createReqVO) { return success(authService.createAuth(createReqVO)); } @PutMapping("/update") @Operation(summary = "更新用户认证") - @PreAuthorize("@ss.hasPermission('member:auth:update')") + // @PreAuthorize("@ss.hasPermission('member:auth:update')") public CommonResult updateAuth(@Valid @RequestBody ComAuthSaveReqVO updateReqVO) { authService.updateAuth(updateReqVO); return success(true); @@ -60,7 +60,7 @@ public class ComAuthController { @DeleteMapping("/delete") @Operation(summary = "删除用户认证") @Parameter(name = "id", description = "编号", required = true) - @PreAuthorize("@ss.hasPermission('member:auth:delete')") + // @PreAuthorize("@ss.hasPermission('member:auth:delete')") public CommonResult deleteAuth(@RequestParam("id") Long id) { authService.deleteAuth(id); return success(true); @@ -69,7 +69,7 @@ public class ComAuthController { @GetMapping("/get") @Operation(summary = "获得用户认证") @Parameter(name = "id", description = "编号", required = true, example = "1024") - @PreAuthorize("@ss.hasPermission('member:auth:query')") + // @PreAuthorize("@ss.hasPermission('member:auth:query')") public CommonResult getAuth(@RequestParam("id") Long id) { ComAuthDO auth = authService.getAuth(id); return success(BeanUtils.toBean(auth, ComAuthRespVO.class)); @@ -77,7 +77,7 @@ public class ComAuthController { @GetMapping("/page") @Operation(summary = "获得用户认证分页") - @PreAuthorize("@ss.hasPermission('member:auth:query')") + // @PreAuthorize("@ss.hasPermission('member:auth:query')") public CommonResult> getAuthPage(@Valid ComAuthPageReqVO pageReqVO) { PageResult pageResult = authService.getAuthPage(pageReqVO); return success(pageResult); diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/opentype/vo/openTypeUser/OpenTypeUserReqVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/opentype/vo/openTypeUser/OpenTypeUserReqVO.java index d38cd12..5450eb2 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/opentype/vo/openTypeUser/OpenTypeUserReqVO.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/opentype/vo/openTypeUser/OpenTypeUserReqVO.java @@ -17,7 +17,7 @@ public class OpenTypeUserReqVO extends PageParam { private String status; @Schema(description = "支付状态") - private String payStatus; + private Boolean payStatus; @Schema(description = "退款状态") private String refundStatus; diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/recent/OperationController.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/recent/OperationController.java index 89f38b2..330adc1 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/recent/OperationController.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/recent/OperationController.java @@ -46,14 +46,14 @@ public class OperationController { @PostMapping("/create") @Operation(summary = "创建朋友圈操作") - @PreAuthorize("@ss.hasPermission('member:operation:create')") + // @PreAuthorize("@ss.hasPermission('member:operation:create')") public CommonResult createOperation(@Valid @RequestBody OperationSaveReqVO createReqVO) { return success(operationService.createOperation(createReqVO)); } @PutMapping("/update") @Operation(summary = "更新朋友圈操作") - @PreAuthorize("@ss.hasPermission('member:operation:update')") + // @PreAuthorize("@ss.hasPermission('member:operation:update')") public CommonResult updateOperation(@Valid @RequestBody OperationSaveReqVO updateReqVO) { operationService.updateOperation(updateReqVO); return success(true); @@ -62,7 +62,7 @@ public class OperationController { @DeleteMapping("/delete") @Operation(summary = "删除朋友圈操作") @Parameter(name = "id", description = "编号", required = true) - @PreAuthorize("@ss.hasPermission('member:operation:delete')") + // @PreAuthorize("@ss.hasPermission('member:operation:delete')") public CommonResult deleteOperation(@RequestParam("id") Long id) { operationService.deleteOperation(id); return success(true); @@ -71,7 +71,7 @@ public class OperationController { @GetMapping("/get") @Operation(summary = "获得朋友圈操作") @Parameter(name = "id", description = "编号", required = true, example = "1024") - @PreAuthorize("@ss.hasPermission('member:operation:query')") + // @PreAuthorize("@ss.hasPermission('member:operation:query')") public CommonResult getOperation(@RequestParam("id") Long id) { OperationDO operation = operationService.getOperation(id); return success(BeanUtils.toBean(operation, OperationRespVO.class)); @@ -79,7 +79,7 @@ public class OperationController { @GetMapping("/page") @Operation(summary = "获得朋友圈操作分页") - @PreAuthorize("@ss.hasPermission('member:operation:query')") + // @PreAuthorize("@ss.hasPermission('member:operation:query')") public CommonResult> getOperationPage(@Valid OperationPageReqVO pageReqVO) { PageResult pageResult = operationService.getOperationPage(pageReqVO); return success(pageResult); @@ -87,7 +87,7 @@ public class OperationController { @GetMapping("/export-excel") @Operation(summary = "导出朋友圈操作 Excel") - @PreAuthorize("@ss.hasPermission('member:operation:export')") + // @PreAuthorize("@ss.hasPermission('member:operation:export')") @ApiAccessLog(operateType = EXPORT) public void exportOperationExcel(@Valid OperationPageReqVO pageReqVO, HttpServletResponse response) throws IOException { pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/opentype/AppOpenTypeUserController.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/opentype/AppOpenTypeUserController.java index 5291873..b125b9b 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/opentype/AppOpenTypeUserController.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/opentype/AppOpenTypeUserController.java @@ -19,6 +19,7 @@ import javax.annotation.Resource; import javax.validation.Valid; import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; +import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId; @Tag(name = "用户 App - 会员开通记录") @RestController @@ -32,6 +33,8 @@ public class AppOpenTypeUserController { @GetMapping("/page") @Operation(summary = "查看全部开通会员列表") public CommonResult> getOpenTypeList(@Valid OpenTypeUserReqVO pageReqVO) { + pageReqVO.setMemberId(getLoginUserId()); + pageReqVO.setPayStatus(true); IPage pageResult = openTypeUserMapper.page(new Page<>(pageReqVO.getPageNo(), pageReqVO.getPageSize()), pageReqVO); PageResult result = new PageResult(); diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/user/BO/MemberExtBO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/user/BO/MemberExtBO.java index 9e631e6..ba68242 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/user/BO/MemberExtBO.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/user/BO/MemberExtBO.java @@ -50,7 +50,7 @@ public class MemberExtBO { @Schema(description = "最近登录时间") private LocalDateTime appRefreshDate; - + public String getwechatMaskString() { String str = this.wechatNum; if (str == null || str.length() <= 2) { diff --git a/yudao-module-member/yudao-module-member-biz/src/main/resources/mapper/OperationMapper.xml b/yudao-module-member/yudao-module-member-biz/src/main/resources/mapper/OperationMapper.xml index 919f051..117af61 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/resources/mapper/OperationMapper.xml +++ b/yudao-module-member/yudao-module-member-biz/src/main/resources/mapper/OperationMapper.xml @@ -83,7 +83,7 @@ select a.member_id, max(if(a.biz_type = '4' AND a.cancel_time IS NULL, true, false)) AS isLike, - max(if(a.biz_type = '100' AND a.cancel_time IS NULL, true, false)) AS isLookWechat + max(if(a.biz_type = '100' AND a.cancel_time IS NULL AND date(a.create_time) = date(now()), true, false)) AS isLookWechat from member_operation a a.deleted = '0' diff --git a/yudao-module-pay/yudao-module-pay-biz/pom.xml b/yudao-module-pay/yudao-module-pay-biz/pom.xml index e5b3495..22ea481 100644 --- a/yudao-module-pay/yudao-module-pay-biz/pom.xml +++ b/yudao-module-pay/yudao-module-pay-biz/pom.xml @@ -23,6 +23,11 @@ yudao-module-pay-api ${revision} + + cn.iocoder.boot + yudao-module-trade-api + ${revision} + cn.iocoder.boot diff --git a/yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/controller/admin/wallet/PayWalletRechargeController.java b/yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/controller/admin/wallet/PayWalletRechargeController.java index 97942c3..4c7413b 100644 --- a/yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/controller/admin/wallet/PayWalletRechargeController.java +++ b/yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/controller/admin/wallet/PayWalletRechargeController.java @@ -32,8 +32,7 @@ public class PayWalletRechargeController { @Operation(summary = "更新钱包充值为已充值") // 由 pay-module 支付服务,进行回调,可见 PayNotifyJob @PermitAll // 无需登录, 内部校验实现 public CommonResult updateWalletRechargerPaid(@Valid @RequestBody PayOrderNotifyReqDTO notifyReqDTO) { - walletRechargeService.updateWalletRechargerPaid(Long.valueOf(notifyReqDTO.getMerchantOrderId()), - notifyReqDTO.getPayOrderId()); + walletRechargeService.updateWalletRechargerPaid(Long.valueOf(notifyReqDTO.getMerchantOrderId()), notifyReqDTO.getPayOrderId()); return success(true); } diff --git a/yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/service/wallet/PayWalletRechargeServiceImpl.java b/yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/service/wallet/PayWalletRechargeServiceImpl.java index aa5d4f3..8874202 100644 --- a/yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/service/wallet/PayWalletRechargeServiceImpl.java +++ b/yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/service/wallet/PayWalletRechargeServiceImpl.java @@ -32,6 +32,9 @@ import cn.iocoder.yudao.module.product.api.gift.ProductGiftApi; import cn.iocoder.yudao.module.product.api.gift.dto.ProductGiftRespDTO; import cn.iocoder.yudao.module.system.api.social.SocialClientApi; import cn.iocoder.yudao.module.system.api.social.dto.SocialWxaSubscribeMessageSendReqDTO; +import cn.iocoder.yudao.module.trade.api.brokerage.TradeBrokerageRecordApi; +import cn.iocoder.yudao.module.trade.api.brokerage.dto.BrokerageAddDTO; +import cn.iocoder.yudao.module.trade.enums.brokerage.BrokerageRecordBizTypeEnum; import lombok.extern.slf4j.Slf4j; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; @@ -40,6 +43,8 @@ import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.time.Duration; import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.List; import java.util.Objects; import static cn.hutool.core.util.ObjectUtil.notEqual; @@ -83,6 +88,8 @@ public class PayWalletRechargeServiceImpl implements PayWalletRechargeService { private ProductGiftApi productGiftApi; @Resource private MemberUserApi memberUserApi; + @Resource + private TradeBrokerageRecordApi tradeBrokerageRecordApi; @Resource private PayProperties payProperties; @@ -187,6 +194,9 @@ public class PayWalletRechargeServiceImpl implements PayWalletRechargeService { log.error("[updateWalletRechargerPaid][recharge({}) payOrder({}) 不存在充值订单,请进行处理!]", id, payOrderId); throw exception(WALLET_RECHARGE_NOT_FOUND); } + PayWalletDO wallet = payWalletService.getWallet(recharge.getWalletId()); + // 查询用户 + MemberUserRespDTO user = memberUserApi.getUser(wallet.getUserId()); // 1.2 校验钱包充值是否可以支付 if (recharge.getPayStatus()) { // 特殊:如果订单已支付,且支付单号相同,直接返回,说明重复回调 @@ -216,6 +226,19 @@ public class PayWalletRechargeServiceImpl implements PayWalletRechargeService { payWalletService.addWalletBalance(recharge.getWalletId(), String.valueOf(id), PayWalletBizTypeEnum.RECHARGE, recharge.getTotalPrice()); + // 添加分销记录 + List brokerageList = new ArrayList() {{ + add(new BrokerageAddDTO() + .setBizId(String.valueOf(id)) + .setBasePrice(payOrderDO.getPrice()) + .setFirstFixedPrice(0) + .setSecondFixedPrice(0) + .setSourceUserId(wallet.getUserId()) + .setTitle(String.format("用户[%s]充值[%s]元", user.getNickname(), fenToYuanStr(payOrderDO.getPrice()))) + ); + }}; + tradeBrokerageRecordApi.addBrokerage(recharge.getId(), BrokerageRecordBizTypeEnum.ORDER, brokerageList); + // 5. 发送订阅消息 getSelf().sendWalletRechargerPaidMessage(payOrderId, recharge); } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/social/SocialClientServiceImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/social/SocialClientServiceImpl.java index a689934..fa93103 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/social/SocialClientServiceImpl.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/social/SocialClientServiceImpl.java @@ -55,6 +55,8 @@ import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.time.Duration; +import java.time.LocalDateTime; +import java.time.ZoneOffset; import java.util.List; import java.util.Map; import java.util.Objects; @@ -266,14 +268,17 @@ public class SocialClientServiceImpl implements SocialClientService { */ @Override public String getWxUrlScheme(String path, String json) { + long expireTime = LocalDateTime.now().toInstant(ZoneOffset.UTC).getEpochSecond(); + expireTime += 5 * 60 * 1000; WxMaService service = getWxMaService(UserTypeEnum.MEMBER.getValue()); try { String urlScheme = service.getWxMaSchemeService().generate(WxMaGenerateSchemeRequest.newBuilder() .jumpWxa( WxMaGenerateSchemeRequest.JumpWxa.newBuilder().path(path).query(json).envVersion("trial").build() ) - .expireTime((long) (5 * 60 * 1000)) + .expireTime(expireTime) .expireType(0) + .isExpire(true) .build() ); return urlScheme;