Просмотр исходного кода

feat(membership): Controller 改为调用 createOrderWithPayType,支持 openid 参数

iwt 2 месяцев назад
Родитель
Сommit
439cbb2b52

+ 18 - 9
cfc-backend/src/main/java/com/etotem/cfc/controller/MembershipController.java

@@ -222,35 +222,44 @@ public class MembershipController {
             return Result.error("用户未登录");
         }
 
+        User user = userMapper.selectById(userId);
+        if (user == null) {
+            return Result.error("用户不存在");
+        }
+
         Long familyId = membershipService.getUserFamilyId(userId);
         String levelCode = params.get("levelCode").toString();
         String paymentType = params.get("paymentType").toString();
         String period = params.get("period") != null ? params.get("period").toString() : "yearly";
         Long couponId = ParamUtils.getLong(params.get("couponId"));
-
-        PaymentOrderDTO order = membershipService.createOrder(userId, familyId, levelCode, paymentType, period, couponId);
+        String openid = params.get("openid") != null ? params.get("openid").toString() : null;
 
         // trial 单:createOrder 内已直接开通(status=paid),无需支付,原样返回
         if ("trial".equals(paymentType)) {
+            PaymentOrderDTO order = membershipService.createOrder(userId, familyId, levelCode, paymentType, period, couponId);
             return Result.success(order);
         }
 
-        // testMode 兼容:返回订单信息,前端继续走 /notify 模拟支付(保留现有模拟逻辑)
+        // testMode:保持现有模拟逻辑(不触发真实虚拟/普通支付)
         if (testMode) {
+            PaymentOrderDTO order = membershipService.createOrder(userId, familyId, levelCode, paymentType, period, couponId);
             return Result.success(order);
         }
 
-        // sessionKey 后端从登录态取(users.session_key,@JsonIgnore 防泄露),不由前端传
-        User user = userMapper.selectById(userId);
-        if (user == null || user.getSessionKey() == null || user.getSessionKey().isEmpty()) {
+        // sessionKey 后端从登录态取,虚拟/普通支付路径均需有效 sessionKey
+        if (user.getSessionKey() == null || user.getSessionKey().isEmpty()) {
             return Result.error(400, "会话失效,请重新登录");
         }
 
-        VirtualPayParamsDTO dto = virtualPayService.generateMembershipPayParams(order.getOrderNo(), user.getSessionKey());
-        if (dto == null) {
+        // 调用新方法,按开关分流
+        Map<String, Object> result = membershipService.createOrderWithPayType(
+                userId, familyId, levelCode, paymentType, period, couponId,
+                user.getSessionKey(), openid);
+
+        if (result == null) {
             return Result.error(46001, "该商品暂未开放购买");
         }
-        return Result.success(dto);
+        return Result.success(result);
     }
 
     /**