refactor(payment): 重构支付宝支付流程并更新相关服务

-暂时注释掉了 AliPayIntegration 中的 orderPay 方法
- 更新了 application.yml 中的支付宝通知 URL
- 重构了 OrderTradeServiceImpl 中的订单处理逻辑
- 移除了 mcwl-pay 中的 OrderTypeEnum 枚举
- 更新了 mcwl-resource 中的 OrderTypeEnum 枚举
- 升级了 alipay-sdk-java 版本
- 在 SysUser 模型中添加了邀请人 ID 和免费积分字段
- 更新了 SysUser
feature/comment
yang 2025-01-09 14:44:59 +08:00
parent 5c3ea94803
commit dc3a45b274
9 changed files with 86 additions and 63 deletions

View File

@ -31,7 +31,7 @@
<!-- <dependency>--> <!-- <dependency>-->
<!-- <groupId>com.alipay.sdk</groupId>--> <!-- <groupId>com.alipay.sdk</groupId>-->
<!-- <artifactId>alipay-sdk-java</artifactId>--> <!-- <artifactId>alipay-sdk-java</artifactId>-->
<!-- <version>4.13.50.ALL</version>--> <!-- <version>4.40.30.ALL</version>-->
<!-- </dependency>--> <!-- </dependency>-->

View File

@ -17,7 +17,6 @@ import com.mcwl.memberCenter.service.MemberLevelService;
import com.mcwl.memberCenter.service.MemberService; import com.mcwl.memberCenter.service.MemberService;
import com.mcwl.pay.domain.OrderTrade; import com.mcwl.pay.domain.OrderTrade;
import com.mcwl.pay.domain.OrderTradeDto; import com.mcwl.pay.domain.OrderTradeDto;
import com.mcwl.resource.domain.MallProduct;
import com.mcwl.resource.service.MallProductService; import com.mcwl.resource.service.MallProductService;
import com.mcwl.system.service.ISysUserService; import com.mcwl.system.service.ISysUserService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@ -63,38 +62,38 @@ public class AliPayIntegration {
* @return url * @return url
* @throws Exception * @throws Exception
*/ */
public String orderPay(OrderTradeDto orderTradeDto) throws Exception { // public String orderPay(OrderTradeDto orderTradeDto) throws Exception {
Integer productId = orderTradeDto.getProductId(); // Integer productId = orderTradeDto.getProductId();
if (!Optional.ofNullable(productId).isPresent()) { // if (!Optional.ofNullable(productId).isPresent()) {
throw new ServiceException("mallProductId不能为空"); // throw new ServiceException("mallProductId不能为空");
} // }
//
MallProduct mallProduct = mallProductService.getById(productId); // MallProduct mallProduct = mallProductService.getById(productId);
if (!Optional.ofNullable(mallProduct).isPresent()) { // if (!Optional.ofNullable(mallProduct).isPresent()) {
throw new ServiceException("mallProduct不存在"); // throw new ServiceException("mallProduct不存在");
} // }
//
// 设置orderTrade信息 // // 设置orderTrade信息
OrderTrade tradeEntity = new OrderTrade(); // OrderTrade tradeEntity = new OrderTrade();
BeanUtil.copyProperties(orderTradeDto, tradeEntity); // BeanUtil.copyProperties(orderTradeDto, tradeEntity);
tradeEntity.setCode(UUID.randomUUID().toString(true).substring(0, 30)); // tradeEntity.setCode(UUID.randomUUID().toString(true).substring(0, 30));
tradeEntity.setUserId(SecurityUtils.getUserId()); // tradeEntity.setUserId(SecurityUtils.getUserId());
tradeEntity.setUserName(SecurityUtils.getUsername()); // tradeEntity.setUserName(SecurityUtils.getUsername());
tradeEntity.setProductName(mallProduct.getProductName()); // tradeEntity.setProductName(mallProduct.getProductName());
//
//调用支付宝的接口 // //调用支付宝的接口
AlipayTradePrecreateResponse payResponse = Factory.Payment.FaceToFace() // AlipayTradePrecreateResponse payResponse = Factory.Payment.FaceToFace()
.preCreate(mallProduct.getProductName(), // .preCreate(mallProduct.getProductName(),
tradeEntity.getCode() + "_product", // tradeEntity.getCode() + "_product",
orderTradeDto.getPaymentAmount().toString()); // orderTradeDto.getPaymentAmount().toString());
// 缓存到redis // // 缓存到redis
redisCache.setCacheObject(tradeEntity.getCode() + "_product", JSONUtil.toJsonStr(tradeEntity), 3, TimeUnit.MINUTES); // redisCache.setCacheObject(tradeEntity.getCode() + "_product", JSONUtil.toJsonStr(tradeEntity), 3, TimeUnit.MINUTES);
// AlipayTradePrecreateResponse payResponse = Factory.Payment.FaceToFace().preCreate("订单主题Mac笔记本", "LS123qwe123", "19999"); //// AlipayTradePrecreateResponse payResponse = Factory.Payment.FaceToFace().preCreate("订单主题Mac笔记本", "LS123qwe123", "19999");
//参照官方文档响应示例,解析返回结果 // //参照官方文档响应示例,解析返回结果
String httpBodyStr = payResponse.getHttpBody(); // String httpBodyStr = payResponse.getHttpBody();
JSONObject jsonObject = JSONObject.parseObject(httpBodyStr); // JSONObject jsonObject = JSONObject.parseObject(httpBodyStr);
return jsonObject.getJSONObject("alipay_trade_precreate_response").get("qr_code").toString(); // return jsonObject.getJSONObject("alipay_trade_precreate_response").get("qr_code").toString();
} // }
/** /**

View File

@ -183,5 +183,5 @@ mall:
appId: 9021000135682614 appId: 9021000135682614
privateKey: MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCQxmQGcaiKjOhayWi+zNTvpp8B5YT8jFFkjLzrD+W+T2Dwf2GfFR4p95zsCJxYeoLWdghMPA6/GMFrLbuVFpaEjuTm4icqA9N8n5d3W0j7gh+wMjZoqyJclAIeb09ut7rY6mWzilA9kWmZnUG7MOWIU70RVRYrfJectCFw/odM9lG4XIVe13X2h+1ecTQyQzLWmnvKFCfo7dQjE7fIYiWfud1ZGUneNs3u73pNWMB6ThGTTCbs0atcgM3fYOg3q7fTxIu9VcaUCJiJ/kNbL9sVEyOrSyx2f2o6w06zdEaOiQFsuDeS8QPYGMg7pf42wAfqCO6hqxQiQT5vp1hvB0o1AgMBAAECggEAIhaEYLwMSispXo8D2cES9iaOU/z91hUX6Qv2Q4anuqqoEZh8nN91Db6etTjFz1NxURvTklelxTsH97t56n26DRY0MWTYgd0Kw9Iz8MeOpKGb4nnAM97vpUq4QQBGfLRIC2ENdzu+7vA5JBFR88hsky/cWaNmJ/EbJauIIDneE7GigMR2HF7kfzdZzOBN4ZEh/ef5NKeCnEieRJJhWRgrgNXVZ44Tqi67AM7ey9pyUtBe7fgzxXtrWXBN9yKaVxxSXm3KJXFQqA6mcilFVZaxMNlAySc4MPTW8lq0ozOCOCunoeIphNz/OVIxGu3/voXFXlBfOKqOkYMVZxMY6OrvtQKBgQD0nIlXK4VW72VaGpz9kxQkRNzJV/yqaqet1GOSlPM2l0RCRFOVVdnvbQdHGPe6+HxHL1dh5MP8T/aHoP+4UXkkQCc8moS2FZxJvFH2QTSZBcSSdGL7GMpROqs38J+XlJzrhNcB20lrW6D7yMeQa4YEcXwdbD8Er/YaIqODBWYYewKBgQCXg+16RLDArciwwhf0TBWZPor2iYFDdwU5UPu7CKOhU1MLfQhG85gGpXHjB6G8cMUi/ezxh/FEl+sWOZegpkPwL5/BQS9tNYWIaC4kipPF/a5Up4DMYUHVAuuPwNqqXpvgU+rGjCns0wtPRnjrkghLkc3oTSID7o7pzUwIk2whDwKBgAys3+EIfExY82OL5X6uVGjcuKQmTw11oWK8krxRw5iclgjpCXu/ix+BAtOIU634mlgF9/02oYE9k4TLrvSaJDDgsifNyfq1e/fGLmkYT+VuCxWbulVQn4s+AwlPCrYMGWWK6KlL9638fYcOjGjLaZJpXwkXRtyzUYlhKh/r87JpAoGBAIavRp2mi/xrPvgpQQPv0k9L8llfOCHRnjoqC+thrZsNp8eRmJcBmMVnskofEZ2iHQuS71pw/n58EQTLo0ayJbhPjVJL8K3CovXzrfjbmqqoa5xi3bJQTiXdF6rMw1QpD6Uk05E1LVuQ6v/IZFr7kBYlAQWb8z3NhQq+bPU+nyLvAoGAGpBbSM8gPzdWQqkHoos0icu3cj0GhN3MU7+1Eb/rsXyh/lk5wtZTEnHjwhdUOUtwVNjvrv7CzA7unhOoaM6YcE/Zpd4zt8pjqH1Mhds7UHf4Xg+A+J4G6meYnhSwfBpOub02ncsqfBlXE0qhFv6AvcMewWndyLb8EYaUUXTYkG0= privateKey: MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCQxmQGcaiKjOhayWi+zNTvpp8B5YT8jFFkjLzrD+W+T2Dwf2GfFR4p95zsCJxYeoLWdghMPA6/GMFrLbuVFpaEjuTm4icqA9N8n5d3W0j7gh+wMjZoqyJclAIeb09ut7rY6mWzilA9kWmZnUG7MOWIU70RVRYrfJectCFw/odM9lG4XIVe13X2h+1ecTQyQzLWmnvKFCfo7dQjE7fIYiWfud1ZGUneNs3u73pNWMB6ThGTTCbs0atcgM3fYOg3q7fTxIu9VcaUCJiJ/kNbL9sVEyOrSyx2f2o6w06zdEaOiQFsuDeS8QPYGMg7pf42wAfqCO6hqxQiQT5vp1hvB0o1AgMBAAECggEAIhaEYLwMSispXo8D2cES9iaOU/z91hUX6Qv2Q4anuqqoEZh8nN91Db6etTjFz1NxURvTklelxTsH97t56n26DRY0MWTYgd0Kw9Iz8MeOpKGb4nnAM97vpUq4QQBGfLRIC2ENdzu+7vA5JBFR88hsky/cWaNmJ/EbJauIIDneE7GigMR2HF7kfzdZzOBN4ZEh/ef5NKeCnEieRJJhWRgrgNXVZ44Tqi67AM7ey9pyUtBe7fgzxXtrWXBN9yKaVxxSXm3KJXFQqA6mcilFVZaxMNlAySc4MPTW8lq0ozOCOCunoeIphNz/OVIxGu3/voXFXlBfOKqOkYMVZxMY6OrvtQKBgQD0nIlXK4VW72VaGpz9kxQkRNzJV/yqaqet1GOSlPM2l0RCRFOVVdnvbQdHGPe6+HxHL1dh5MP8T/aHoP+4UXkkQCc8moS2FZxJvFH2QTSZBcSSdGL7GMpROqs38J+XlJzrhNcB20lrW6D7yMeQa4YEcXwdbD8Er/YaIqODBWYYewKBgQCXg+16RLDArciwwhf0TBWZPor2iYFDdwU5UPu7CKOhU1MLfQhG85gGpXHjB6G8cMUi/ezxh/FEl+sWOZegpkPwL5/BQS9tNYWIaC4kipPF/a5Up4DMYUHVAuuPwNqqXpvgU+rGjCns0wtPRnjrkghLkc3oTSID7o7pzUwIk2whDwKBgAys3+EIfExY82OL5X6uVGjcuKQmTw11oWK8krxRw5iclgjpCXu/ix+BAtOIU634mlgF9/02oYE9k4TLrvSaJDDgsifNyfq1e/fGLmkYT+VuCxWbulVQn4s+AwlPCrYMGWWK6KlL9638fYcOjGjLaZJpXwkXRtyzUYlhKh/r87JpAoGBAIavRp2mi/xrPvgpQQPv0k9L8llfOCHRnjoqC+thrZsNp8eRmJcBmMVnskofEZ2iHQuS71pw/n58EQTLo0ayJbhPjVJL8K3CovXzrfjbmqqoa5xi3bJQTiXdF6rMw1QpD6Uk05E1LVuQ6v/IZFr7kBYlAQWb8z3NhQq+bPU+nyLvAoGAGpBbSM8gPzdWQqkHoos0icu3cj0GhN3MU7+1Eb/rsXyh/lk5wtZTEnHjwhdUOUtwVNjvrv7CzA7unhOoaM6YcE/Zpd4zt8pjqH1Mhds7UHf4Xg+A+J4G6meYnhSwfBpOub02ncsqfBlXE0qhFv6AvcMewWndyLb8EYaUUXTYkG0=
publicKey: MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApHkjwHnoUnZuqbas+ZputyWIfU2WKBFKd+wFwlCZytpQhVA16CGAMCGpgjxUPpqbmOtPy74y0wxmDHB9IaYOVsVmi2SAl1IqfxwUSIllbdvbjBvZFAIQlPa8U/zHJPgdGNHDt/Bwqp5uB0OkcGLB9PYyAXBEKiu6zdTsiZloUrPwgnBRJ0iNHYiWo/oOYD9KfopLA+D1nQjqq8m3ShZe46ecMo6ZCHtQI/HtgL/EGga5KY2zOUi0Wwviu8w79RjjzfdsDkzu5VnBdaSru4awDyiF9nAF+uPgA4ZOdLKkpoEANwuIorDW8tT69Gwh+mYx9sDJMxJf7XOekdPbymomiwIDAQAB publicKey: MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApHkjwHnoUnZuqbas+ZputyWIfU2WKBFKd+wFwlCZytpQhVA16CGAMCGpgjxUPpqbmOtPy74y0wxmDHB9IaYOVsVmi2SAl1IqfxwUSIllbdvbjBvZFAIQlPa8U/zHJPgdGNHDt/Bwqp5uB0OkcGLB9PYyAXBEKiu6zdTsiZloUrPwgnBRJ0iNHYiWo/oOYD9KfopLA+D1nQjqq8m3ShZe46ecMo6ZCHtQI/HtgL/EGga5KY2zOUi0Wwviu8w79RjjzfdsDkzu5VnBdaSru4awDyiF9nAF+uPgA4ZOdLKkpoEANwuIorDW8tT69Gwh+mYx9sDJMxJf7XOekdPbymomiwIDAQAB
notifyUrl: https://702bc39c.r27.cpolar.top/web/pay/notify notifyUrl: https://253d7236.r27.cpolar.top/web/pay/notify
gatewayUrl: https://openapi-sandbox.dl.alipaydev.com/gateway.do gatewayUrl: https://openapi-sandbox.dl.alipaydev.com/gateway.do

View File

@ -105,6 +105,17 @@ public class SysUser extends BaseEntity
*/ */
private String idCard; private String idCard;
/**
* id
*/
private Long inviterUserId;
/**
*
*/
private Double freePoints;
public SysUser() public SysUser()
{ {
@ -337,6 +348,22 @@ public class SysUser extends BaseEntity
this.brief = brief; this.brief = brief;
} }
public Long getInviterUserId() {
return inviterUserId;
}
public void setInviterUserId(Long inviterUserId) {
this.inviterUserId = inviterUserId;
}
public Double getFreePoints() {
return freePoints;
}
public void setFreePoints(Double freePoints) {
this.freePoints = freePoints;
}
@Override @Override
public String toString() { public String toString() {
return "SysUser{" + return "SysUser{" +

View File

@ -53,6 +53,12 @@
<groupId>com.mcwl</groupId> <groupId>com.mcwl</groupId>
<artifactId>mcwl-system</artifactId> <artifactId>mcwl-system</artifactId>
</dependency> </dependency>
<dependency>
<groupId>com.mcwl</groupId>
<artifactId>mcwl-resource</artifactId>
<version>3.8.8</version>
<scope>compile</scope>
</dependency>
</dependencies> </dependencies>
</project> </project>

View File

@ -1,16 +0,0 @@
package com.mcwl.pay.domain.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
@Getter
@AllArgsConstructor
public enum OrderTypeEnum {
POINTS("points"),
MEMBER("member");
private final String name;
}

View File

@ -5,17 +5,27 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.mcwl.common.core.domain.entity.SysUser; import com.mcwl.common.core.domain.entity.SysUser;
import com.mcwl.common.core.redis.RedisCache; import com.mcwl.common.core.redis.RedisCache;
import com.mcwl.common.domain.IdsParam; import com.mcwl.common.domain.IdsParam;
import com.mcwl.common.utils.DateUtils;
import com.mcwl.common.utils.StringUtils; import com.mcwl.common.utils.StringUtils;
import com.mcwl.memberCenter.domain.RechargeRecord;
import com.mcwl.memberCenter.service.MemberService;
import com.mcwl.memberCenter.service.RechargeRecordService;
import com.mcwl.myInvitation.domain.Commission;
import com.mcwl.myInvitation.domain.Consume;
import com.mcwl.myInvitation.service.CommissionService;
import com.mcwl.myInvitation.service.ConsumeService;
import com.mcwl.pay.domain.OrderTrade; import com.mcwl.pay.domain.OrderTrade;
import com.mcwl.pay.domain.PaymentResult;
import com.mcwl.pay.domain.enums.PaymentStatus;
import com.mcwl.pay.mapper.OrderTradeMapper; import com.mcwl.pay.mapper.OrderTradeMapper;
import com.mcwl.pay.service.OrderTradeService; import com.mcwl.pay.service.OrderTradeService;
import com.mcwl.resource.domain.enums.OrderTypeEnum;
import com.mcwl.system.service.ISysUserService;
import com.mcwl.system.service.impl.SysUserServiceImpl;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Collections; import java.math.BigDecimal;
import java.util.List; import java.util.*;
/** /**
* @AuthorChenYan * @AuthorChenYan
@ -36,12 +46,6 @@ public class OrderTradeServiceImpl extends ServiceImpl<OrderTradeMapper, OrderTr
@Autowired @Autowired
private OrderTradeService orderTradeService; private OrderTradeService orderTradeService;
@Autowired
private OrderTradeMapper orderTradeMapper;
@Autowired
private OrderTradeService orderTradeService;
@Autowired @Autowired
private CommissionService commissionService; private CommissionService commissionService;

View File

@ -9,7 +9,10 @@ package com.mcwl.resource.domain.enums;
* @Date2025/1/6 19:51 * @Date2025/1/6 19:51
*/ */
public enum OrderTypeEnum { public enum OrderTypeEnum {
TIME("time"), NUM("num"); TIME("time"),
NUM("num"),
POINTS("points"),
MEMBER("member");
private final String name; private final String name;

View File

@ -49,7 +49,7 @@
</resultMap> </resultMap>
<sql id="selectUserVo"> <sql id="selectUserVo">
select u.user_id, u.dept_id, u.user_name, u.nick_name, u.email, u.avatar, u.phonenumber, u.password, u.sex, u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark, select u.user_id, u.dept_id, u.user_name, u.nick_name, u.email, u.avatar, u.phonenumber, u.password, u.sex, u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark,u.inviter_user_id, u.free_points,
d.dept_id, d.parent_id, d.ancestors, d.dept_name, d.order_num, d.leader, d.status as dept_status, d.dept_id, d.parent_id, d.ancestors, d.dept_name, d.order_num, d.leader, d.status as dept_status,
r.role_id, r.role_name, r.role_key, r.role_sort, r.data_scope, r.status as role_status r.role_id, r.role_name, r.role_key, r.role_sort, r.data_scope, r.status as role_status
from sys_user u from sys_user u