Browse Source

订单预下单逻辑

xufeng 2 years ago
parent
commit
2392d5fa88

+ 2 - 1
game-module/game-mybatis/src/main/java/com/zanxiang/mybatis/entity/Order.java

@@ -156,7 +156,7 @@ public class Order {
     /**
      * 是否切量  0 否 1 是
      */
-    private Integer isSwitch;
+    private Boolean isSwitch;
 
     /**
      * CP通知状态,1为待处理,2为成功,-1为失败
@@ -211,6 +211,7 @@ public class Order {
 
     private String payDevice;
 
+
     /**
      * 创建时间
      */

+ 25 - 6
game-module/game-sdk/src/main/java/com/zanxiang/sdk/controller/OrderController.java

@@ -1,12 +1,19 @@
 package com.zanxiang.sdk.controller;
 
 import com.zanxiang.common.domain.ResultMap;
+import com.zanxiang.common.utils.StringUtils;
+import com.zanxiang.common.utils.bean.BeanUtils;
 import com.zanxiang.sdk.common.annotation.ValidLogin;
-import com.zanxiang.sdk.domain.params.PlatformOrderParam;
+import com.zanxiang.sdk.domain.bo.PlatformOrderBO;
+import com.zanxiang.sdk.domain.params.PreOrderParam;
 import com.zanxiang.sdk.domain.params.UserData;
+import com.zanxiang.sdk.domain.vo.PreOrderVO;
+import com.zanxiang.sdk.service.GameStrategyService;
 import com.zanxiang.sdk.service.PlatformOrderService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiResponse;
+import io.swagger.annotations.ApiResponses;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestBody;
@@ -24,11 +31,23 @@ public class OrderController {
     @Autowired
     private PlatformOrderService orderService;
 
+    @Autowired
+    private GameStrategyService gameStrategyService;
+
     @ApiOperation(value = "订单生成")
-    @GetMapping(value = "/create")
-    public ResultMap create(@ValidLogin UserData user, @RequestBody PlatformOrderParam order) {
-//        orderService.create();
-//        return ResultVo.fail("111");
-        return null;
+    @GetMapping(value = "/preOrder")
+    @ApiResponses(value = {@ApiResponse(code = 200, message = "成功", response = PreOrderVO.class)})
+    public ResultMap preOrder(@ValidLogin UserData user, @RequestBody PreOrderParam order) {
+        PlatformOrderBO orderBo = BeanUtils.copy(order, PlatformOrderBO.class);
+        Boolean paySwitch = gameStrategyService.paySwitch(user, orderBo);
+        orderBo.setIsSwitch(paySwitch);
+        String orderId = orderService.create(orderBo);
+        if (StringUtils.isEmpty(orderId)) {
+            return ResultMap.error("生成订单失败");
+        }
+        PreOrderVO data = new PreOrderVO();
+        data.setOrderId(orderId);
+        data.setPaySwitch(paySwitch);
+        return ResultMap.ok(data);
     }
 }

+ 2 - 0
game-module/game-sdk/src/main/java/com/zanxiang/sdk/controller/PayController.java

@@ -69,6 +69,8 @@ public class PayController {
             orderBO.setUserId(userId);
             orderBO.setGameId(Long.valueOf(product.getGameId()));
             orderBO.setCpId(cpId);
+            orderBO.setFromDevice(userData.getDeviceSystem());
+            orderBO.setPayDevice(userData.getDeviceType().toString());
             String orderId = platformOrderService.create(orderBO);
             product.setOrderId(orderId);
         }

+ 12 - 0
game-module/game-sdk/src/main/java/com/zanxiang/sdk/domain/bo/PlatformOrderBO.java

@@ -124,6 +124,11 @@ public class PlatformOrderBO {
      * 最近通知时间
      */
     private Long lastCpNotifyTime;
+    
+    /**
+     * 是否切量  0 否 1 是
+     */
+    private Boolean isSwitch;
 
     /**
      * 客服处理: 2正常; 1纠纷
@@ -135,6 +140,13 @@ public class PlatformOrderBO {
      */
     private Integer isDistribute;
 
+    /**
+     * 操作系统
+     */
+    private String fromDevice;
+
+    private String payDevice;
+
     /**
      * CP通知状态,1为待处理,2为成功,-1为失败
      */

+ 35 - 95
game-module/game-sdk/src/main/java/com/zanxiang/sdk/domain/params/PlatformOrderParam.java

@@ -1,7 +1,9 @@
 package com.zanxiang.sdk.domain.params;
 
+import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
+import javax.validation.constraints.NotNull;
 import java.math.BigDecimal;
 import java.util.Date;
 
@@ -10,159 +12,97 @@ public class PlatformOrderParam {
 
     private String id;
 
-    /**
-     * cpId
-     */
+    @ApiModelProperty("cpId")
     private String cpId;
 
-    /**
-     * CP订单号
-     */
+    @ApiModelProperty("CP订单号")
     private String cpOrderId;
 
-    /**
-     * 充值用户
-     */
-//    @NonNull
+    @ApiModelProperty("充值用户")
     private String userId;
 
-    /**
-     * 游戏玩家ID
-     */
+    @ApiModelProperty("游戏玩家ID")
     private String mgUserId;
 
-    /**
-     * 游戏ID
-     */
-//    @NonNull
+    @ApiModelProperty("角色id")
+    private String roleId;
+
+    @ApiModelProperty("游戏ID")
     private String gameId;
 
-    /**
-     * 货物总价
-     */
-//    @NonNull
+    @ApiModelProperty("货物总价")
     private BigDecimal amount;
 
-    /**
-     * 实际支付金额
-     */
+    @ApiModelProperty("实际支付金额")
     private BigDecimal realAmount;
 
-    /**
-     * 游戏商品ID
-     */
+    @ApiModelProperty("游戏商品ID")
     private String productId;
 
-    /**
-     * 游戏商品数量
-     */
-//    @NonNull
+    @ApiModelProperty("游戏商品数量")
     private Integer productCnt;
 
-    /**
-     * 游戏商品名称
-     */
-//    @NonNull
+    @ApiModelProperty("游戏商品名称")
     private String productName;
 
-    /**
-     * 优惠券抵扣
-     */
+    @ApiModelProperty("优惠券抵扣")
     private BigDecimal couponAmount;
 
-    /**
-     * 平台币使用金额
-     */
+    @ApiModelProperty("平台币使用金额")
     private BigDecimal ptbAmount;
 
-    /**
-     * 游戏币使用余额
-     */
+    @ApiModelProperty("游戏币使用余额")
     private BigDecimal gmAmount;
 
-    /**
-     * 使用积分
-     */
+    @ApiModelProperty("使用积分")
     private Integer integral;
 
-    /**
-     * 使用积分抵多少钱
-     */
+    @ApiModelProperty("使用积分抵多少钱")
     private BigDecimal integralMoney;
 
-    /**
-     * 返利数量 默认为0
-     */
+    @ApiModelProperty("返利数量 默认为0")
     private BigDecimal rebateAmount;
 
-    /**
-     * 支付平台返回交易订单号
-     */
+    @ApiModelProperty("支付平台返回交易订单号")
     private String merchantOrderNo;
 
-    /**
-     * 支付状态,1待支付,2 支付成功,-1 已取消
-     */
+    @ApiModelProperty("支付状态,1待支付,2 支付成功,-1 已取消")
     private Integer status;
 
-    /**
-     * 支付方式
-     */
+    @ApiModelProperty("支付方式")
     private String gamePaywayId;
 
-    /**
-     * 支付时间
-     */
+    @ApiModelProperty("支付时间")
     private Date payTime;
 
-    /**
-     * 通知次数
-     */
+    @ApiModelProperty("通知次数")
     private Integer cpNotifyCnt;
 
-    /**
-     * 最近通知时间
-     */
+    @ApiModelProperty("最近通知时间")
     private Long lastCpNotifyTime;
 
-    /**
-     * 客服处理: 2正常; 1纠纷
-     */
+    @ApiModelProperty("客服处理: 2正常; 1纠纷")
     private Integer isHandle;
 
-    /**
-     * 是否已分成  1未分成 2 已分成
-     */
+    @ApiModelProperty("是否已分成  1未分成 2 已分成")
     private Integer isDistribute;
 
-    /**
-     * CP通知状态,1为待处理,2为成功,-1为失败
-     */
+    @ApiModelProperty("CP通知状态,1为待处理,2为成功,-1为失败")
     private Integer cpStatus;
 
-    /**
-     * CP附加参数
-     */
+    @ApiModelProperty("CP附加参数")
     private String ext;
 
-    /**
-     * 用户备注
-     */
+    @ApiModelProperty("用户备注")
     private String memNote;
 
-    /**
-     * 管理员备注
-     */
+    @ApiModelProperty("管理员备注")
     private String adminNote;
 
-    /**
-     * 订单成功备注信息
-     */
+    @ApiModelProperty("订单成功备注信息")
     private String remark;
 
-    /**
-     * 渠道
-     */
+    @ApiModelProperty("渠道")
     private String channel;
 
 }

+ 113 - 0
game-module/game-sdk/src/main/java/com/zanxiang/sdk/domain/params/PreOrderParam.java

@@ -0,0 +1,113 @@
+package com.zanxiang.sdk.domain.params;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+import java.math.BigDecimal;
+import java.util.Date;
+
+@Data
+public class PreOrderParam extends CommonParam {
+
+    @ApiModelProperty("cpId")
+    @NotNull(message = "cpId不可为空")
+    private String cpId;
+
+    @ApiModelProperty("CP订单号")
+    @NotNull(message = "cpOrderId不可为空")
+    private String cpOrderId;
+
+    @ApiModelProperty("充值用户")
+    @NotNull(message = "userId不可为空")
+    private String userId;
+
+    @ApiModelProperty("游戏玩家ID")
+    @NotNull(message = "mgUserId不可为空")
+    private String mgUserId;
+
+    @ApiModelProperty("角色id")
+    @NotNull(message = "roleId不可为空")
+    private String roleId;
+
+    @ApiModelProperty("游戏ID")
+    @NotNull(message = "gameId不可为空")
+    private String gameId;
+
+    @ApiModelProperty("货物总价")
+    @NotNull(message = "amount不可为空")
+    private BigDecimal amount;
+
+    @ApiModelProperty("实际支付金额")
+    private BigDecimal realAmount;
+
+    @ApiModelProperty("游戏商品ID")
+    private String productId;
+
+    @ApiModelProperty("游戏商品数量")
+    private Integer productCnt;
+
+    @ApiModelProperty("游戏商品名称")
+    private String productName;
+
+    @ApiModelProperty("优惠券抵扣")
+    private BigDecimal couponAmount;
+
+    @ApiModelProperty("平台币使用金额")
+    private BigDecimal ptbAmount;
+
+    @ApiModelProperty("游戏币使用余额")
+    private BigDecimal gmAmount;
+
+    @ApiModelProperty("使用积分")
+    private Integer integral;
+
+    @ApiModelProperty("使用积分抵多少钱")
+    private BigDecimal integralMoney;
+
+    @ApiModelProperty("返利数量 默认为0")
+    private BigDecimal rebateAmount;
+
+    @ApiModelProperty("支付平台返回交易订单号")
+    private String merchantOrderNo;
+
+    @ApiModelProperty("支付状态,1待支付,2 支付成功,-1 已取消")
+    private Integer status;
+
+    @ApiModelProperty("支付方式")
+    private String gamePaywayId;
+
+    @ApiModelProperty("支付时间")
+    private Date payTime;
+
+    @ApiModelProperty("通知次数")
+    private Integer cpNotifyCnt;
+
+    @ApiModelProperty("最近通知时间")
+    private Long lastCpNotifyTime;
+
+    @ApiModelProperty("客服处理: 2正常; 1纠纷")
+    private Integer isHandle;
+
+    @ApiModelProperty("是否已分成  1未分成 2 已分成")
+    private Integer isDistribute;
+
+    @ApiModelProperty("CP通知状态,1为待处理,2为成功,-1为失败")
+    private Integer cpStatus;
+
+    @ApiModelProperty("CP附加参数")
+    private String ext;
+
+    @ApiModelProperty("用户备注")
+    private String memNote;
+
+    @ApiModelProperty("管理员备注")
+    private String adminNote;
+
+    @ApiModelProperty("订单成功备注信息")
+    private String remark;
+
+    @ApiModelProperty("渠道")
+    private String channel;
+
+}

+ 19 - 0
game-module/game-sdk/src/main/java/com/zanxiang/sdk/domain/vo/PreOrderVO.java

@@ -0,0 +1,19 @@
+package com.zanxiang.sdk.domain.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 预下单返回值
+ */
+@Data
+public class PreOrderVO {
+    @ApiModelProperty(notes = "订单id")
+    private String orderId;
+
+    @ApiModelProperty(notes = "支付是否切换 true 切换 false 不切换")
+    private Boolean paySwitch;
+}

+ 17 - 0
game-module/game-sdk/src/main/java/com/zanxiang/sdk/service/GameStrategyService.java

@@ -0,0 +1,17 @@
+package com.zanxiang.sdk.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.zanxiang.mybatis.entity.GameStrategy;
+import com.zanxiang.sdk.domain.bo.PlatformOrderBO;
+import com.zanxiang.sdk.domain.params.PreOrderParam;
+import com.zanxiang.sdk.domain.params.UserData;
+
+/**
+ * 游戏策略 服务类接口
+ *
+ * @author xufeng
+ * @date 2022-07-01 11:38
+ */
+public interface GameStrategyService extends IService<GameStrategy> {
+    Boolean paySwitch(UserData user, PlatformOrderBO orderBo);
+}

+ 18 - 0
game-module/game-sdk/src/main/java/com/zanxiang/sdk/service/Impl/GameStrategyServiceImpl.java

@@ -0,0 +1,18 @@
+package com.zanxiang.sdk.service.Impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.zanxiang.mybatis.entity.GameStrategy;
+import com.zanxiang.mybatis.mapper.GameStrategyMapper;
+import com.zanxiang.sdk.service.GameStrategyService;
+import org.springframework.stereotype.Service;
+
+/**
+ * 游戏策略 服务实现类
+ *
+ * @author xufeng
+ * @date 2022-07-01 11:38
+ */
+@Service
+public class GameStrategyServiceImpl extends ServiceImpl<GameStrategyMapper, GameStrategy> implements GameStrategyService {
+
+}