From 0fe57d4feb326074811f1a57ea1fa8ca8bfd513a Mon Sep 17 00:00:00 2001
From: dzc <2388224167@qq.com>
Date: Tue, 9 Dec 2025 15:58:16 +0800
Subject: [PATCH] =?UTF-8?q?feat:=E5=BC=80=E9=80=9A=E4=BC=9A=E5=91=98?=
=?UTF-8?q?=E8=AE=A2=E5=8D=95=E8=AE=B0=E5=BD=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../yudao-module-member-biz/pom.xml | 5 ++
.../admin/opentype/OpenTypeController.java | 5 +-
.../opentype/OpenTypeUserController.java | 50 +++++++++++++
.../vo/{ => openType}/OpenTypePageReqVO.java | 3 +-
.../vo/{ => openType}/OpenTypeRespVO.java | 5 +-
.../vo/{ => openType}/OpenTypeSaveReqVO.java | 3 +-
.../vo/openTypeUser/OpenTypeUserReqVO.java | 31 ++++++++
.../vo/openTypeUser/OpenTypeUserRespVO.java | 74 +++++++++++++++++++
.../app/opentype/AppOpenTypeController.java | 4 +-
.../dal/mysql/opentype/OpenTypeMapper.java | 2 +-
.../mysql/opentype/OpenTypeUserMapper.java | 10 +++
.../service/opentype/OpenTypeService.java | 11 ++-
.../service/opentype/OpenTypeServiceImpl.java | 35 ++++++---
.../resources/mapper/OpenTypeUserMapper.xml | 58 +++++++++++++++
.../src/main/resources/application-dev.yaml | 4 +-
.../src/main/resources/application-local.yaml | 14 +---
.../src/main/resources/application-prod.yaml | 14 +---
17 files changed, 279 insertions(+), 49 deletions(-)
create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/opentype/OpenTypeUserController.java
rename yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/opentype/vo/{ => openType}/OpenTypePageReqVO.java (98%)
rename yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/opentype/vo/{ => openType}/OpenTypeRespVO.java (95%)
rename yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/opentype/vo/{ => openType}/OpenTypeSaveReqVO.java (98%)
create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/opentype/vo/openTypeUser/OpenTypeUserReqVO.java
create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/opentype/vo/openTypeUser/OpenTypeUserRespVO.java
diff --git a/yudao-module-member/yudao-module-member-biz/pom.xml b/yudao-module-member/yudao-module-member-biz/pom.xml
index e34a5b3..af08c35 100644
--- a/yudao-module-member/yudao-module-member-biz/pom.xml
+++ b/yudao-module-member/yudao-module-member-biz/pom.xml
@@ -44,6 +44,11 @@
${revision}
+
+ cn.iocoder.boot
+ yudao-spring-boot-starter-protection
+
+
cn.iocoder.boot
diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/opentype/OpenTypeController.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/opentype/OpenTypeController.java
index a03ef20..a2346b4 100644
--- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/opentype/OpenTypeController.java
+++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/opentype/OpenTypeController.java
@@ -1,5 +1,8 @@
package cn.iocoder.yudao.module.member.controller.admin.opentype;
+import cn.iocoder.yudao.module.member.controller.admin.opentype.vo.openType.OpenTypePageReqVO;
+import cn.iocoder.yudao.module.member.controller.admin.opentype.vo.openType.OpenTypeRespVO;
+import cn.iocoder.yudao.module.member.controller.admin.opentype.vo.openType.OpenTypeSaveReqVO;
import cn.iocoder.yudao.module.pay.api.notify.dto.PayOrderNotifyReqDTO;
import cn.iocoder.yudao.module.pay.api.notify.dto.PayRefundNotifyReqDTO;
import org.springframework.web.bind.annotation.*;
@@ -13,7 +16,6 @@ import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.Operation;
import javax.annotation.security.PermitAll;
-import javax.validation.constraints.*;
import javax.validation.*;
import javax.servlet.http.*;
import java.util.*;
@@ -33,7 +35,6 @@ import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*;
import static cn.iocoder.yudao.framework.common.util.servlet.ServletUtils.getClientIP;
-import cn.iocoder.yudao.module.member.controller.admin.opentype.vo.*;
import cn.iocoder.yudao.module.member.dal.dataobject.opentype.OpenTypeDO;
import cn.iocoder.yudao.module.member.service.opentype.OpenTypeService;
diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/opentype/OpenTypeUserController.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/opentype/OpenTypeUserController.java
new file mode 100644
index 0000000..5fe4941
--- /dev/null
+++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/opentype/OpenTypeUserController.java
@@ -0,0 +1,50 @@
+package cn.iocoder.yudao.module.member.controller.admin.opentype;
+
+
+import cn.iocoder.yudao.framework.common.pojo.CommonResult;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.idempotent.core.annotation.Idempotent;
+import cn.iocoder.yudao.framework.idempotent.core.keyresolver.impl.UserIdempotentKeyResolver;
+import cn.iocoder.yudao.module.member.controller.admin.opentype.vo.openTypeUser.OpenTypeUserReqVO;
+import cn.iocoder.yudao.module.member.controller.admin.opentype.vo.openTypeUser.OpenTypeUserRespVO;
+import cn.iocoder.yudao.module.member.service.opentype.OpenTypeService;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+import javax.validation.Valid;
+
+import java.util.concurrent.TimeUnit;
+
+import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
+import static cn.iocoder.yudao.framework.common.util.servlet.ServletUtils.getClientIP;
+
+@Tag(name = "管理后台 - 会员开通记录")
+@RestController
+@RequestMapping("/member/open-type/history")
+@Validated
+public class OpenTypeUserController {
+
+ @Resource
+ private OpenTypeService openTypeService;
+
+ @GetMapping("/page")
+ @Operation(summary = "获得会员开通记录分页")
+ public CommonResult> getOpenTypePage(@Valid OpenTypeUserReqVO pageReqVO) {
+ return success(openTypeService.getOpenTypeUserPage(pageReqVO));
+ }
+
+ @GetMapping("/refund")
+ @Operation(summary = "退款")
+ @Idempotent(timeout = 3, timeUnit = TimeUnit.SECONDS, keyResolver = UserIdempotentKeyResolver.class, message = "正在退款中,请稍后重试")
+ public CommonResult refund(@RequestParam("id") Long id) {
+ openTypeService.refundWalletRecharge(id, getClientIP());
+ return success(true);
+ }
+
+}
diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/opentype/vo/OpenTypePageReqVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/opentype/vo/openType/OpenTypePageReqVO.java
similarity index 98%
rename from yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/opentype/vo/OpenTypePageReqVO.java
rename to yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/opentype/vo/openType/OpenTypePageReqVO.java
index 475aa6a..7dac911 100644
--- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/opentype/vo/OpenTypePageReqVO.java
+++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/opentype/vo/openType/OpenTypePageReqVO.java
@@ -1,7 +1,6 @@
-package cn.iocoder.yudao.module.member.controller.admin.opentype.vo;
+package cn.iocoder.yudao.module.member.controller.admin.opentype.vo.openType;
import lombok.*;
-import java.util.*;
import io.swagger.v3.oas.annotations.media.Schema;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import org.springframework.format.annotation.DateTimeFormat;
diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/opentype/vo/OpenTypeRespVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/opentype/vo/openType/OpenTypeRespVO.java
similarity index 95%
rename from yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/opentype/vo/OpenTypeRespVO.java
rename to yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/opentype/vo/openType/OpenTypeRespVO.java
index a84ea5e..91dae09 100644
--- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/opentype/vo/OpenTypeRespVO.java
+++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/opentype/vo/openType/OpenTypeRespVO.java
@@ -1,9 +1,8 @@
-package cn.iocoder.yudao.module.member.controller.admin.opentype.vo;
+package cn.iocoder.yudao.module.member.controller.admin.opentype.vo.openType;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
-import java.util.*;
-import org.springframework.format.annotation.DateTimeFormat;
+
import java.time.LocalDateTime;
import com.alibaba.excel.annotation.*;
diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/opentype/vo/OpenTypeSaveReqVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/opentype/vo/openType/OpenTypeSaveReqVO.java
similarity index 98%
rename from yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/opentype/vo/OpenTypeSaveReqVO.java
rename to yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/opentype/vo/openType/OpenTypeSaveReqVO.java
index 5ae7a5c..f350dc2 100644
--- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/opentype/vo/OpenTypeSaveReqVO.java
+++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/opentype/vo/openType/OpenTypeSaveReqVO.java
@@ -1,9 +1,8 @@
-package cn.iocoder.yudao.module.member.controller.admin.opentype.vo;
+package cn.iocoder.yudao.module.member.controller.admin.opentype.vo.openType;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
-import java.util.*;
import javax.validation.constraints.*;
@Schema(description = "管理后台 - 会员类型新增/修改 Request VO")
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
new file mode 100644
index 0000000..d38cd12
--- /dev/null
+++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/opentype/vo/openTypeUser/OpenTypeUserReqVO.java
@@ -0,0 +1,31 @@
+package cn.iocoder.yudao.module.member.controller.admin.opentype.vo.openTypeUser;
+
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import sun.util.resources.LocaleData;
+
+import java.util.List;
+
+@Data
+public class OpenTypeUserReqVO extends PageParam {
+
+ @Schema(description = "会员id")
+ private Long memberId;
+
+ @Schema(description = "会员开通类型")
+ private String status;
+
+ @Schema(description = "支付状态")
+ private String payStatus;
+
+ @Schema(description = "退款状态")
+ private String refundStatus;
+
+ @Schema(description = "会员名称")
+ private String memberName;
+
+ @Schema(description = "创建时间")
+ private List createTimeList;
+
+}
diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/opentype/vo/openTypeUser/OpenTypeUserRespVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/opentype/vo/openTypeUser/OpenTypeUserRespVO.java
new file mode 100644
index 0000000..e70f74b
--- /dev/null
+++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/opentype/vo/openTypeUser/OpenTypeUserRespVO.java
@@ -0,0 +1,74 @@
+package cn.iocoder.yudao.module.member.controller.admin.opentype.vo.openTypeUser;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+@Schema(description = "管理后台 - 会员开通记录 Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class OpenTypeUserRespVO {
+
+ @Schema(description = "id")
+ private Long id;
+
+ @Schema(description = "会员开通类型编号")
+ private Long openTypeId;
+
+ @Schema(description = "用户编号")
+ private Long memberId;
+
+ @Schema(description = "购买价格")
+ private Integer payPrice;
+
+ @Schema(description = "开始时间")
+ private LocalDateTime startTime;
+
+ @Schema(description = "结束时间")
+ private LocalDateTime endTime;
+
+ @Schema(description = "状态")
+ private String status;
+
+ @Schema(description = "是否已支付")
+ private Boolean payStatus;
+
+ @Schema(description = "支付订单编号")
+ private Long payOrderId;
+
+ @Schema(description = "支付成功的支付渠道")
+ private String payChannelCode;
+
+ @Schema(description = "订单支付时间")
+ private LocalDateTime payTime;
+
+ @Schema(description = "支付退款单编号")
+ private Long payRefundId;
+
+ @Schema(description = "退款支付金额")
+ private Integer refundPayPrice;
+
+ @Schema(description = "退款时间")
+ private LocalDateTime refundTime;
+
+ @Schema(description = "退款状态")
+ private Integer refundStatus;
+
+ /**
+ * 用户相关
+ */
+ private String memberNickname;
+
+ private String memberAvatar;
+
+ private String memberMobile;
+
+ /**
+ * vip相关
+ */
+ private String vipTitle;
+
+ private String vipDuration;
+}
diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/opentype/AppOpenTypeController.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/opentype/AppOpenTypeController.java
index 5fb6a4b..4dd060a 100644
--- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/opentype/AppOpenTypeController.java
+++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/opentype/AppOpenTypeController.java
@@ -2,8 +2,8 @@ package cn.iocoder.yudao.module.member.controller.app.opentype;
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
-import cn.iocoder.yudao.module.member.controller.admin.opentype.vo.OpenTypePageReqVO;
-import cn.iocoder.yudao.module.member.controller.admin.opentype.vo.OpenTypeRespVO;
+import cn.iocoder.yudao.module.member.controller.admin.opentype.vo.openType.OpenTypePageReqVO;
+import cn.iocoder.yudao.module.member.controller.admin.opentype.vo.openType.OpenTypeRespVO;
import cn.iocoder.yudao.module.member.controller.app.opentype.vo.AppPayOpenReqType;
import cn.iocoder.yudao.module.member.dal.dataobject.opentype.OpenTypeDO;
import cn.iocoder.yudao.module.member.service.opentype.OpenTypeService;
diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/opentype/OpenTypeMapper.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/opentype/OpenTypeMapper.java
index d449e6c..b17cbf6 100644
--- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/opentype/OpenTypeMapper.java
+++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/opentype/OpenTypeMapper.java
@@ -5,9 +5,9 @@ import java.util.*;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
+import cn.iocoder.yudao.module.member.controller.admin.opentype.vo.openType.OpenTypePageReqVO;
import cn.iocoder.yudao.module.member.dal.dataobject.opentype.OpenTypeDO;
import org.apache.ibatis.annotations.Mapper;
-import cn.iocoder.yudao.module.member.controller.admin.opentype.vo.*;
/**
* 会员类型 Mapper
diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/opentype/OpenTypeUserMapper.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/opentype/OpenTypeUserMapper.java
index 3b8cf28..45587b1 100644
--- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/opentype/OpenTypeUserMapper.java
+++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/opentype/OpenTypeUserMapper.java
@@ -1,11 +1,16 @@
package cn.iocoder.yudao.module.member.dal.mysql.opentype;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
+import cn.iocoder.yudao.module.member.controller.admin.opentype.vo.openTypeUser.OpenTypeUserReqVO;
+import cn.iocoder.yudao.module.member.controller.admin.opentype.vo.openTypeUser.OpenTypeUserRespVO;
import cn.iocoder.yudao.module.member.dal.dataobject.opentype.OpenTypeUserDO;
import cn.iocoder.yudao.module.member.enums.opentype.OpenTypeStatusEnum;
import cn.iocoder.yudao.module.member.enums.opentype.OpenTypeUserStatusEnum;
import cn.iocoder.yudao.module.member.service.opentype.BO.OpenTypeExtBO;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@@ -36,4 +41,9 @@ public interface OpenTypeUserMapper extends BaseMapperX {
}
List getExtByMemeberIdList(@Param("memberIdList") List memberIdList);
+
+ /**
+ * 获得会员开通记录分页
+ */
+ IPage page(IPage page, @Param("dto") OpenTypeUserReqVO dto);
}
\ No newline at end of file
diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/opentype/OpenTypeService.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/opentype/OpenTypeService.java
index c8e6e74..64cd598 100644
--- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/opentype/OpenTypeService.java
+++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/opentype/OpenTypeService.java
@@ -1,9 +1,11 @@
package cn.iocoder.yudao.module.member.service.opentype;
import javax.validation.*;
-import javax.validation.constraints.NotNull;
-import cn.iocoder.yudao.module.member.controller.admin.opentype.vo.*;
+import cn.iocoder.yudao.module.member.controller.admin.opentype.vo.openType.OpenTypePageReqVO;
+import cn.iocoder.yudao.module.member.controller.admin.opentype.vo.openType.OpenTypeSaveReqVO;
+import cn.iocoder.yudao.module.member.controller.admin.opentype.vo.openTypeUser.OpenTypeUserReqVO;
+import cn.iocoder.yudao.module.member.controller.admin.opentype.vo.openTypeUser.OpenTypeUserRespVO;
import cn.iocoder.yudao.module.member.controller.app.opentype.vo.AppPayOpenReqType;
import cn.iocoder.yudao.module.member.dal.dataobject.opentype.OpenTypeDO;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
@@ -41,6 +43,11 @@ public interface OpenTypeService {
*/
PageResult getOpenTypePage(OpenTypePageReqVO pageReqVO);
+ /**
+ * 获得会员开通记录分页
+ */
+ PageResult getOpenTypeUserPage(OpenTypeUserReqVO pageReqVO);
+
/**
* 获得会员类列表
*/
diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/opentype/OpenTypeServiceImpl.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/opentype/OpenTypeServiceImpl.java
index dea3bbf..02282c9 100644
--- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/opentype/OpenTypeServiceImpl.java
+++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/opentype/OpenTypeServiceImpl.java
@@ -7,6 +7,10 @@ import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.module.member.client.service.ChatApi;
import cn.iocoder.yudao.module.member.client.vo.chat.privatemsg.ChatPrivateTotalMessageTotalReqVO;
import cn.iocoder.yudao.module.member.client.vo.chat.privatemsg.ChatPrivateTotalMessageTotalResVO;
+import cn.iocoder.yudao.module.member.controller.admin.opentype.vo.openType.OpenTypePageReqVO;
+import cn.iocoder.yudao.module.member.controller.admin.opentype.vo.openType.OpenTypeSaveReqVO;
+import cn.iocoder.yudao.module.member.controller.admin.opentype.vo.openTypeUser.OpenTypeUserReqVO;
+import cn.iocoder.yudao.module.member.controller.admin.opentype.vo.openTypeUser.OpenTypeUserRespVO;
import cn.iocoder.yudao.module.member.controller.app.opentype.vo.AppPayOpenReqType;
import cn.iocoder.yudao.module.member.dal.dataobject.config.MemberConfigDO;
import cn.iocoder.yudao.module.member.dal.dataobject.opentype.OpenTypeUserDO;
@@ -27,6 +31,8 @@ import cn.iocoder.yudao.module.pay.api.refund.dto.PayRefundRespDTO;
import cn.iocoder.yudao.module.pay.enums.order.PayOrderStatusEnum;
import cn.iocoder.yudao.module.pay.enums.refund.PayRefundStatusEnum;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
@@ -36,7 +42,6 @@ import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.annotation.Validated;
-import cn.iocoder.yudao.module.member.controller.admin.opentype.vo.*;
import cn.iocoder.yudao.module.member.dal.dataobject.opentype.OpenTypeDO;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
@@ -64,15 +69,13 @@ import static cn.iocoder.yudao.module.pay.enums.refund.PayRefundStatusEnum.*;
@Validated
public class OpenTypeServiceImpl implements OpenTypeService {
- @Resource
- private MemberUserService memberUserService;
@Resource
private OpenTypeMapper openTypeMapper;
@Resource
private OpenTypeUserMapper openTypeUserMapper;
- @Resource
- private MemberRecentTagMapper memberRecentTagMapper;
+ @Resource
+ private MemberUserService memberUserService;
@Resource
private MemberConfigService memberConfigService;
@@ -135,6 +138,20 @@ public class OpenTypeServiceImpl implements OpenTypeService {
return openTypeMapper.selectPage(pageReqVO);
}
+ /**
+ * 获得会员开通记录分页
+ */
+ @Override
+ public PageResult getOpenTypeUserPage(OpenTypeUserReqVO pageReqVO) {
+ IPage pageList = openTypeUserMapper.page(new Page(pageReqVO.getPageNo(), pageReqVO.getPageSize()), pageReqVO);
+ List list = pageList.getRecords();
+
+ PageResult result = new PageResult();
+ result.setList(list);
+ result.setTotal(pageList.getTotal());
+ return result;
+ }
+
/**
* 获得会员类列表
*/
@@ -423,7 +440,7 @@ public class OpenTypeServiceImpl implements OpenTypeService {
// 校验退款订单匹配
if (notEqual(openTypeUserDO.getPayRefundId(), payRefundId)) {
log.error("[校验开通会员是否已退款][钱包充值({}) 退款单不匹配({}),请进行处理!钱包充值的数据是:{}]", openTypeUserDO.getId(), payRefundId, toJsonString(openTypeUserDO));
- throw exception(MemberErrorCode.EMPTY, "开通会员退款更新失败,钱包退款单编号不匹配");
+ throw exception(MemberErrorCode.EMPTY, "开通会员退款更新失败,退款单编号不匹配");
}
// 校验退款订单
PayRefundRespDTO payRefund = payRefundApi.getRefund(payRefundId);
@@ -439,7 +456,7 @@ public class OpenTypeServiceImpl implements OpenTypeService {
// 校验退款订单商户订单是否匹配
if (notEqual(payRefund.getMerchantOrderId(), openTypeUserDO.getId().toString())) {
log.error("[校验开通会员是否已退款][开通会员({}) 退款单不匹配({}),请进行处理!payRefund 数据是:{}]", openTypeUserDO.getId(), payRefundId, toJsonString(payRefund));
- throw exception(MemberErrorCode.EMPTY, "开通会员退款更新失败,钱包退款单编号不匹配");
+ throw exception(MemberErrorCode.EMPTY, "开通会员退款更新失败,退款单编号不匹配");
}
return payRefund;
}
@@ -450,11 +467,11 @@ public class OpenTypeServiceImpl implements OpenTypeService {
private void validateOpenTypeCanRefund(OpenTypeUserDO walletRecharge) {
// 校验充值订单是否支付
if (!walletRecharge.getPayStatus()) {
- throw exception(MemberErrorCode.EMPTY, "开通会员发起退款失败,钱包充值订单未支付");
+ throw exception(MemberErrorCode.EMPTY, "开通会员发起退款失败,该订单未支付");
}
// 校验充值订单是否已退款
if (walletRecharge.getPayRefundId() != null) {
- throw exception(MemberErrorCode.EMPTY, "开通会员发起退款失败,钱包充值订单已退款");
+ throw exception(MemberErrorCode.EMPTY, "开通会员发起退款失败,该订单已退款");
}
}
diff --git a/yudao-module-member/yudao-module-member-biz/src/main/resources/mapper/OpenTypeUserMapper.xml b/yudao-module-member/yudao-module-member-biz/src/main/resources/mapper/OpenTypeUserMapper.xml
index 36e43de..374e560 100644
--- a/yudao-module-member/yudao-module-member-biz/src/main/resources/mapper/OpenTypeUserMapper.xml
+++ b/yudao-module-member/yudao-module-member-biz/src/main/resources/mapper/OpenTypeUserMapper.xml
@@ -2,6 +2,45 @@
+
+ select a.id,
+ a.open_type_id,
+ a.member_id,
+ a.pay_price,
+ a.start_time,
+ a.end_time,
+ a.status,
+ a.pay_status,
+ a.pay_order_id,
+ a.pay_channel_code,
+ a.pay_time,
+ a.pay_refund_id,
+ a.refund_pay_price,
+ a.refund_status,
+ a.refund_time,
+ a.creator,
+ a.create_time,
+ a.updater,
+ a.update_time,
+ a.deleted,
+ a.tenant_id
+
+
+
+ a.deleted = '0'
+
+ and a.member_id = #{dto.memberId}
+
+
+ and a.pay_status = #{dto.payStatus}
+
+
+ and a.refund_status = #{dto.refundStatus}
+
+
+ and a.createTime between #{dto.createTimeList[0]} and #{dto.createTimeList[1]}
+
+
+
diff --git a/yudao-server/src/main/resources/application-dev.yaml b/yudao-server/src/main/resources/application-dev.yaml
index 9815d01..cdeb7cb 100644
--- a/yudao-server/src/main/resources/application-dev.yaml
+++ b/yudao-server/src/main/resources/application-dev.yaml
@@ -158,8 +158,8 @@ wx: # 参见 https://github.com/Wechat-Group/WxJava/blob/develop/spring-boot-sta
key-prefix: wx # Redis Key 的前缀
http-client-type: HttpClient # 采用 HttpClient 请求微信公众号平台
miniapp: # 小程序配置(必填),参见 https://github.com/Wechat-Group/WxJava/blob/develop/spring-boot-starters/wx-java-miniapp-spring-boot-starter/README.md 文档
- appid: wx63c280fe3248a3e7
- secret: 6f270509224a7ae1296bbf1c8cb97aed
+ appid: wx2b4e4d3feff8267f
+ secret: cf47cf478af51adf2e65fc626537c1c0
config-storage:
type: RedisTemplate # 采用 RedisTemplate 操作 Redis,会自动从 Spring 中获取
key-prefix: wa # Redis Key 的前缀
diff --git a/yudao-server/src/main/resources/application-local.yaml b/yudao-server/src/main/resources/application-local.yaml
index b58abda..6c3bae0 100644
--- a/yudao-server/src/main/resources/application-local.yaml
+++ b/yudao-server/src/main/resources/application-local.yaml
@@ -171,26 +171,16 @@ debug: false
--- #################### 微信公众号、小程序相关配置 ####################
wx:
mp: # 公众号配置(必填),参见 https://github.com/Wechat-Group/WxJava/blob/develop/spring-boot-starters/wx-java-mp-spring-boot-starter/README.md 文档
- # app-id: wx041349c6f39b268b # 测试号(牛希尧提供的)
- # secret: 5abee519483bc9f8cb37ce280e814bd0
app-id: wx5b23ba7a5589ecbb # 测试号(自己的)
secret: 2a7b3b20c537e52e74afd395eb85f61f
- # app-id: wxa69ab825b163be19 # 测试号(Kongdy 提供的)
- # secret: bd4f9fab889591b62aeac0d7b8d8b4a0
# 存储配置,解决 AccessToken 的跨节点的共享
config-storage:
type: RedisTemplate # 采用 RedisTemplate 操作 Redis,会自动从 Spring 中获取
key-prefix: wx # Redis Key 的前缀
http-client-type: HttpClient # 采用 HttpClient 请求微信公众号平台
miniapp: # 小程序配置(必填),参见 https://github.com/Wechat-Group/WxJava/blob/develop/spring-boot-starters/wx-java-miniapp-spring-boot-starter/README.md 文档
- # appid: wx62056c0d5e8db250 # 测试号(牛希尧提供的)
- # secret: 333ae72f41552af1e998fe1f54e1584a
- # appid: wx63c280fe3248a3e7 # wenhualian的接口测试号
- # secret: 6f270509224a7ae1296bbf1c8cb97aed
- # appid: wxc4598c446f8a9cb3 # 测试号(Kongdy 提供的)
- # secret: 4a1a04e07f6a4a0751b39c3064a92c8b
- appid: wx48555e58acd79c3d # 测试号(puhui 提供的)
- secret: f0f5fd485bac7f377af6f5ca97636dd4
+ appid: wx2b4e4d3feff8267f # 测试号(puhui 提供的)
+ secret: cf47cf478af51adf2e65fc626537c1c0
config-storage:
type: RedisTemplate # 采用 RedisTemplate 操作 Redis,会自动从 Spring 中获取
key-prefix: wa # Redis Key 的前缀
diff --git a/yudao-server/src/main/resources/application-prod.yaml b/yudao-server/src/main/resources/application-prod.yaml
index a7a3fc0..7473fe0 100644
--- a/yudao-server/src/main/resources/application-prod.yaml
+++ b/yudao-server/src/main/resources/application-prod.yaml
@@ -167,26 +167,16 @@ debug: false
--- #################### 微信公众号、小程序相关配置 ####################
wx:
mp: # 公众号配置(必填),参见 https://github.com/Wechat-Group/WxJava/blob/develop/spring-boot-starters/wx-java-mp-spring-boot-starter/README.md 文档
- # app-id: wx041349c6f39b268b # 测试号(牛希尧提供的)
- # secret: 5abee519483bc9f8cb37ce280e814bd0
app-id: wx5fb544743d0a860f
secret: 6bed0b5b798db383af35e1ec54026d85
- # app-id: wxa69ab825b163be19 # 测试号(Kongdy 提供的)
- # secret: bd4f9fab889591b62aeac0d7b8d8b4a0
# 存储配置,解决 AccessToken 的跨节点的共享
config-storage:
type: RedisTemplate # 采用 RedisTemplate 操作 Redis,会自动从 Spring 中获取
key-prefix: wx # Redis Key 的前缀
http-client-type: HttpClient # 采用 HttpClient 请求微信公众号平台
miniapp: # 小程序配置(必填),参见 https://github.com/Wechat-Group/WxJava/blob/develop/spring-boot-starters/wx-java-miniapp-spring-boot-starter/README.md 文档
- # appid: wx62056c0d5e8db250 # 测试号(牛希尧提供的)
- # secret: 333ae72f41552af1e998fe1f54e1584a
- # appid: wx63c280fe3248a3e7 # wenhualian的接口测试号
- # secret: 6f270509224a7ae1296bbf1c8cb97aed
- # appid: wxc4598c446f8a9cb3 # 测试号(Kongdy 提供的)
- # secret: 4a1a04e07f6a4a0751b39c3064a92c8b
- appid: wx48555e58acd79c3d # 测试号(puhui 提供的)
- secret: f0f5fd485bac7f377af6f5ca97636dd4
+ appid: wx2b4e4d3feff8267f # 测试号(puhui 提供的)
+ secret: cf47cf478af51adf2e65fc626537c1c0
config-storage:
type: RedisTemplate # 采用 RedisTemplate 操作 Redis,会自动从 Spring 中获取
key-prefix: wa # Redis Key 的前缀