From 79d52fc8656743b88df473f5fe102e1ec431bb7b Mon Sep 17 00:00:00 2001 From: wuKong Date: Mon, 28 Jul 2025 11:47:34 +0800 Subject: [PATCH 1/4] =?UTF-8?q?feat(mp):=20=E5=85=AC=E4=BC=97=E5=8F=B7?= =?UTF-8?q?=E6=B6=88=E6=81=AF=E6=96=B0=E5=A2=9E=E7=94=A8=E6=88=B7ID?= =?UTF-8?q?=E7=AD=9B=E9=80=89=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在 MpMessagePageReqVO 中添加 userId 字段,用于筛选公众号粉丝UserId - 在 MpMessageMapper 中添加对 userId 的查询条件 -优化代码结构,调整导入顺序和位置 --- .../vo/message/MpMessagePageReqVO.java | 19 +++++++++++++------ .../mp/dal/mysql/message/MpMessageMapper.java | 6 ++++-- 2 files changed, 17 insertions(+), 8 deletions(-) diff --git a/yudao-module-mp/yudao-module-mp-server/src/main/java/cn/iocoder/yudao/module/mp/controller/admin/message/vo/message/MpMessagePageReqVO.java b/yudao-module-mp/yudao-module-mp-server/src/main/java/cn/iocoder/yudao/module/mp/controller/admin/message/vo/message/MpMessagePageReqVO.java index d9f7cc876..794869a10 100644 --- a/yudao-module-mp/yudao-module-mp-server/src/main/java/cn/iocoder/yudao/module/mp/controller/admin/message/vo/message/MpMessagePageReqVO.java +++ b/yudao-module-mp/yudao-module-mp-server/src/main/java/cn/iocoder/yudao/module/mp/controller/admin/message/vo/message/MpMessagePageReqVO.java @@ -1,16 +1,18 @@ package cn.iocoder.yudao.module.mp.controller.admin.message.vo.message; +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +import java.io.Serial; +import java.time.LocalDateTime; + +import org.springframework.format.annotation.DateTimeFormat; + import cn.iocoder.yudao.framework.common.pojo.PageParam; import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.ToString; -import org.springframework.format.annotation.DateTimeFormat; - -import jakarta.validation.constraints.NotNull; -import java.time.LocalDateTime; - -import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; @Schema(description = "管理后台 - 公众号消息分页 Request VO") @Data @@ -18,6 +20,8 @@ import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_ @ToString(callSuper = true) public class MpMessagePageReqVO extends PageParam { + @Serial + private static final long serialVersionUID = 7612750541824743033L; @Schema(description = "公众号账号的编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") @NotNull(message = "公众号账号的编号不能为空") private Long accountId; @@ -28,6 +32,9 @@ public class MpMessagePageReqVO extends PageParam { @Schema(description = "公众号粉丝标识", example = "o6_bmjrPTlm6_2sgVt7hMZOPfL2M") private String openid; + @Schema(description = "公众号粉丝UserId", example = "1") + private String userId; + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) @Schema(description = "创建时间") private LocalDateTime[] createTime; diff --git a/yudao-module-mp/yudao-module-mp-server/src/main/java/cn/iocoder/yudao/module/mp/dal/mysql/message/MpMessageMapper.java b/yudao-module-mp/yudao-module-mp-server/src/main/java/cn/iocoder/yudao/module/mp/dal/mysql/message/MpMessageMapper.java index 72ba56627..93d633b1c 100644 --- a/yudao-module-mp/yudao-module-mp-server/src/main/java/cn/iocoder/yudao/module/mp/dal/mysql/message/MpMessageMapper.java +++ b/yudao-module-mp/yudao-module-mp-server/src/main/java/cn/iocoder/yudao/module/mp/dal/mysql/message/MpMessageMapper.java @@ -1,20 +1,22 @@ package cn.iocoder.yudao.module.mp.dal.mysql.message; +import org.apache.ibatis.annotations.Mapper; + 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.mp.controller.admin.message.vo.message.MpMessagePageReqVO; import cn.iocoder.yudao.module.mp.dal.dataobject.message.MpMessageDO; -import org.apache.ibatis.annotations.Mapper; @Mapper public interface MpMessageMapper extends BaseMapperX { default PageResult selectPage(MpMessagePageReqVO reqVO) { - return selectPage(reqVO, new LambdaQueryWrapperX() + return this.selectPage(reqVO, new LambdaQueryWrapperX() .eqIfPresent(MpMessageDO::getAccountId, reqVO.getAccountId()) .eqIfPresent(MpMessageDO::getType, reqVO.getType()) .eqIfPresent(MpMessageDO::getOpenid, reqVO.getOpenid()) + .eqIfPresent(MpMessageDO::getUserId, reqVO.getUserId()) .betweenIfPresent(MpMessageDO::getCreateTime, reqVO.getCreateTime()) .orderByDesc(MpMessageDO::getId)); } From f4d93478bef1a541c1561db572fba0ff91ca21e7 Mon Sep 17 00:00:00 2001 From: wuKong Date: Tue, 29 Jul 2025 10:10:08 +0800 Subject: [PATCH 2/4] =?UTF-8?q?feat(mp):=20=E5=85=AC=E4=BC=97=E5=8F=B7?= =?UTF-8?q?=E6=B6=88=E6=81=AF=E6=96=B0=E5=A2=9E=E7=94=A8=E6=88=B7ID?= =?UTF-8?q?=E7=AD=9B=E9=80=89=E5=8A=9F=E8=83=BD=20=E5=9C=A8=20MpMessagePag?= =?UTF-8?q?eReqVO=20=E4=B8=AD=E6=B7=BB=E5=8A=A0=20userId=20=E5=AD=97?= =?UTF-8?q?=E6=AE=B5=EF=BC=8C=E7=94=A8=E4=BA=8E=E7=AD=9B=E9=80=89=E5=85=AC?= =?UTF-8?q?=E4=BC=97=E5=8F=B7=E7=B2=89=E4=B8=9DUserId=20=E5=9C=A8=20MpMess?= =?UTF-8?q?ageMapper=20=E4=B8=AD=E6=B7=BB=E5=8A=A0=E5=AF=B9=20userId=20?= =?UTF-8?q?=E7=9A=84=E6=9F=A5=E8=AF=A2=E6=9D=A1=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit yudao-ui-admin-vue3项目 公众号管理-消息管理-粉丝消息列表-api:{gateway}/admin-api/mp/message/page?pageNo=1&pageSize=14&userId=137559&accountId=12 传值userId,后端当前未支持userId参数。 --- .../admin/message/vo/message/MpMessagePageReqVO.java | 5 +---- .../yudao/module/mp/dal/mysql/message/MpMessageMapper.java | 2 +- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/yudao-module-mp/yudao-module-mp-server/src/main/java/cn/iocoder/yudao/module/mp/controller/admin/message/vo/message/MpMessagePageReqVO.java b/yudao-module-mp/yudao-module-mp-server/src/main/java/cn/iocoder/yudao/module/mp/controller/admin/message/vo/message/MpMessagePageReqVO.java index 794869a10..c51174f30 100644 --- a/yudao-module-mp/yudao-module-mp-server/src/main/java/cn/iocoder/yudao/module/mp/controller/admin/message/vo/message/MpMessagePageReqVO.java +++ b/yudao-module-mp/yudao-module-mp-server/src/main/java/cn/iocoder/yudao/module/mp/controller/admin/message/vo/message/MpMessagePageReqVO.java @@ -2,7 +2,6 @@ package cn.iocoder.yudao.module.mp.controller.admin.message.vo.message; import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; -import java.io.Serial; import java.time.LocalDateTime; import org.springframework.format.annotation.DateTimeFormat; @@ -20,8 +19,6 @@ import lombok.ToString; @ToString(callSuper = true) public class MpMessagePageReqVO extends PageParam { - @Serial - private static final long serialVersionUID = 7612750541824743033L; @Schema(description = "公众号账号的编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") @NotNull(message = "公众号账号的编号不能为空") private Long accountId; @@ -32,7 +29,7 @@ public class MpMessagePageReqVO extends PageParam { @Schema(description = "公众号粉丝标识", example = "o6_bmjrPTlm6_2sgVt7hMZOPfL2M") private String openid; - @Schema(description = "公众号粉丝UserId", example = "1") + @Schema(description = "公众号粉丝 UserId", example = "1") private String userId; @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) diff --git a/yudao-module-mp/yudao-module-mp-server/src/main/java/cn/iocoder/yudao/module/mp/dal/mysql/message/MpMessageMapper.java b/yudao-module-mp/yudao-module-mp-server/src/main/java/cn/iocoder/yudao/module/mp/dal/mysql/message/MpMessageMapper.java index 93d633b1c..c0b0e9925 100644 --- a/yudao-module-mp/yudao-module-mp-server/src/main/java/cn/iocoder/yudao/module/mp/dal/mysql/message/MpMessageMapper.java +++ b/yudao-module-mp/yudao-module-mp-server/src/main/java/cn/iocoder/yudao/module/mp/dal/mysql/message/MpMessageMapper.java @@ -12,7 +12,7 @@ import cn.iocoder.yudao.module.mp.dal.dataobject.message.MpMessageDO; public interface MpMessageMapper extends BaseMapperX { default PageResult selectPage(MpMessagePageReqVO reqVO) { - return this.selectPage(reqVO, new LambdaQueryWrapperX() + return selectPage(reqVO, new LambdaQueryWrapperX() .eqIfPresent(MpMessageDO::getAccountId, reqVO.getAccountId()) .eqIfPresent(MpMessageDO::getType, reqVO.getType()) .eqIfPresent(MpMessageDO::getOpenid, reqVO.getOpenid()) From 5bc4a458beb755aaf00754b9550868204b6e96d7 Mon Sep 17 00:00:00 2001 From: wuKong Date: Tue, 29 Jul 2025 10:11:31 +0800 Subject: [PATCH 3/4] =?UTF-8?q?feat(mp):=20=E5=85=AC=E4=BC=97=E5=8F=B7?= =?UTF-8?q?=E6=B6=88=E6=81=AF=E6=96=B0=E5=A2=9E=E7=94=A8=E6=88=B7ID?= =?UTF-8?q?=E7=AD=9B=E9=80=89=E5=8A=9F=E8=83=BD=20=E5=9C=A8=20MpMessagePag?= =?UTF-8?q?eReqVO=20=E4=B8=AD=E6=B7=BB=E5=8A=A0=20userId=20=E5=AD=97?= =?UTF-8?q?=E6=AE=B5=EF=BC=8C=E7=94=A8=E4=BA=8E=E7=AD=9B=E9=80=89=E5=85=AC?= =?UTF-8?q?=E4=BC=97=E5=8F=B7=E7=B2=89=E4=B8=9DUserId=20=E5=9C=A8=20MpMess?= =?UTF-8?q?ageMapper=20=E4=B8=AD=E6=B7=BB=E5=8A=A0=E5=AF=B9=20userId=20?= =?UTF-8?q?=E7=9A=84=E6=9F=A5=E8=AF=A2=E6=9D=A1=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../yudao/module/mp/dal/mysql/message/MpMessageMapper.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/yudao-module-mp/yudao-module-mp-server/src/main/java/cn/iocoder/yudao/module/mp/dal/mysql/message/MpMessageMapper.java b/yudao-module-mp/yudao-module-mp-server/src/main/java/cn/iocoder/yudao/module/mp/dal/mysql/message/MpMessageMapper.java index c0b0e9925..dd392c650 100644 --- a/yudao-module-mp/yudao-module-mp-server/src/main/java/cn/iocoder/yudao/module/mp/dal/mysql/message/MpMessageMapper.java +++ b/yudao-module-mp/yudao-module-mp-server/src/main/java/cn/iocoder/yudao/module/mp/dal/mysql/message/MpMessageMapper.java @@ -16,7 +16,7 @@ public interface MpMessageMapper extends BaseMapperX { .eqIfPresent(MpMessageDO::getAccountId, reqVO.getAccountId()) .eqIfPresent(MpMessageDO::getType, reqVO.getType()) .eqIfPresent(MpMessageDO::getOpenid, reqVO.getOpenid()) - .eqIfPresent(MpMessageDO::getUserId, reqVO.getUserId()) + .eqIfPresent(MpMessageDO::getUserId, reqVO.getUserId()) .betweenIfPresent(MpMessageDO::getCreateTime, reqVO.getCreateTime()) .orderByDesc(MpMessageDO::getId)); } From 5ccf95e34afed18585a9e5c911ef142cfe7a1f0f Mon Sep 17 00:00:00 2001 From: wuKong Date: Fri, 1 Aug 2025 14:33:53 +0800 Subject: [PATCH 4/4] =?UTF-8?q?fix(pay):=20=E4=BF=AE=E5=A4=8D=E6=94=AF?= =?UTF-8?q?=E4=BB=98=E5=AE=9D=E8=AF=81=E4=B9=A6=E6=A8=A1=E5=BC=8F=E7=9A=84?= =?UTF-8?q?=E7=AD=BE=E5=90=8D=E9=AA=8C=E8=AF=81=20-=20=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=20AbstractAlipayPayClient=20=E7=B1=BB=E4=B8=AD=E7=9A=84?= =?UTF-8?q?=E7=AD=BE=E5=90=8D=E9=AA=8C=E8=AF=81=E9=80=BB=E8=BE=91=20-=20?= =?UTF-8?q?=E4=BD=BF=E7=94=A8=20cert.getPublicKey().getEncoded()=20?= =?UTF-8?q?=E6=9B=BF=E4=BB=A3=20cert.getEncoded()=20=E8=8E=B7=E5=8F=96?= =?UTF-8?q?=E5=85=AC=E9=92=A5=20-=E7=A1=AE=E4=BF=9D=E5=9C=A8=E8=AF=81?= =?UTF-8?q?=E4=B9=A6=E6=A8=A1=E5=BC=8F=E4=B8=8B=E8=83=BD=E5=A4=9F=E6=AD=A3?= =?UTF-8?q?=E7=A1=AE=E9=AA=8C=E8=AF=81=E7=AD=BE=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/alipay/AbstractAlipayPayClient.java | 47 ++++++++++--------- 1 file changed, 24 insertions(+), 23 deletions(-) diff --git a/yudao-module-pay/yudao-module-pay-server/src/main/java/cn/iocoder/yudao/module/pay/framework/pay/core/client/impl/alipay/AbstractAlipayPayClient.java b/yudao-module-pay/yudao-module-pay-server/src/main/java/cn/iocoder/yudao/module/pay/framework/pay/core/client/impl/alipay/AbstractAlipayPayClient.java index fee7cddba..be1c3b877 100644 --- a/yudao-module-pay/yudao-module-pay-server/src/main/java/cn/iocoder/yudao/module/pay/framework/pay/core/client/impl/alipay/AbstractAlipayPayClient.java +++ b/yudao-module-pay/yudao-module-pay-server/src/main/java/cn/iocoder/yudao/module/pay/framework/pay/core/client/impl/alipay/AbstractAlipayPayClient.java @@ -1,5 +1,28 @@ package cn.iocoder.yudao.module.pay.framework.pay.core.client.impl.alipay; +import static cn.hutool.core.date.DatePattern.NORM_DATETIME_FORMATTER; +import static cn.iocoder.yudao.module.pay.framework.pay.core.client.impl.alipay.AlipayPayClientConfig.MODE_CERTIFICATE; +import static cn.iocoder.yudao.module.pay.framework.pay.core.client.impl.alipay.AlipayPayClientConfig.MODE_PUBLIC_KEY; + +import java.nio.charset.StandardCharsets; +import java.security.cert.X509Certificate; +import java.time.LocalDateTime; +import java.util.Collections; +import java.util.Map; +import java.util.Objects; +import java.util.function.Supplier; + +import com.alipay.api.AlipayApiException; +import com.alipay.api.AlipayConfig; +import com.alipay.api.AlipayResponse; +import com.alipay.api.DefaultAlipayClient; +import com.alipay.api.domain.*; +import com.alipay.api.internal.util.AlipaySignature; +import com.alipay.api.internal.util.AntCertificationUtil; +import com.alipay.api.internal.util.codec.Base64; +import com.alipay.api.request.*; +import com.alipay.api.response.*; + import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.date.LocalDateTimeUtil; import cn.hutool.core.lang.Assert; @@ -16,32 +39,10 @@ import cn.iocoder.yudao.module.pay.framework.pay.core.client.dto.refund.PayRefun import cn.iocoder.yudao.module.pay.framework.pay.core.client.dto.transfer.PayTransferRespDTO; import cn.iocoder.yudao.module.pay.framework.pay.core.client.dto.transfer.PayTransferUnifiedReqDTO; import cn.iocoder.yudao.module.pay.framework.pay.core.client.impl.AbstractPayClient; -import com.alipay.api.AlipayApiException; -import com.alipay.api.AlipayConfig; -import com.alipay.api.AlipayResponse; -import com.alipay.api.DefaultAlipayClient; -import com.alipay.api.domain.*; -import com.alipay.api.internal.util.AlipaySignature; -import com.alipay.api.internal.util.AntCertificationUtil; -import com.alipay.api.internal.util.codec.Base64; -import com.alipay.api.request.*; -import com.alipay.api.response.*; import lombok.Getter; import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; -import java.nio.charset.StandardCharsets; -import java.security.cert.X509Certificate; -import java.time.LocalDateTime; -import java.util.Collections; -import java.util.Map; -import java.util.Objects; -import java.util.function.Supplier; - -import static cn.hutool.core.date.DatePattern.NORM_DATETIME_FORMATTER; -import static cn.iocoder.yudao.module.pay.framework.pay.core.client.impl.alipay.AlipayPayClientConfig.MODE_CERTIFICATE; -import static cn.iocoder.yudao.module.pay.framework.pay.core.client.impl.alipay.AlipayPayClientConfig.MODE_PUBLIC_KEY; - /** * 支付宝抽象类,实现支付宝统一的接口、以及部分实现(退款) * @@ -353,7 +354,7 @@ public abstract class AbstractAlipayPayClient extends AbstractPayClient