Преглед изворни кода

订单创建/支付/取消/详情 单元测试

xufeng пре 2 година
родитељ
комит
0afcbcdb0b

+ 0 - 13
game-module/game-sdk/GameApplicationTests.java

@@ -1,13 +0,0 @@
-package com.hzshengmel.game;
-
-import org.junit.jupiter.api.Test;
-import org.springframework.boot.test.context.SpringBootTest;
-
-@SpringBootTest
-class GameApplicationTests {
-
-    @Test
-    void contextLoads() {
-    }
-
-}

+ 8 - 7
game-module/game-sdk/src/main/java/com/zanxiang/sdk/domain/bo/PlatformOrderBO.java

@@ -8,12 +8,13 @@ import java.util.Date;
 
 @Data
 public class PlatformOrderBO {
+    
     private String id;
 
     /**
      * cpId
      */
-    private Long cpId;
+    private String cpId;
 
     /**
      * CP订单号
@@ -24,18 +25,18 @@ public class PlatformOrderBO {
      * 充值用户
      */
 //    @NonNull
-    private Long userId;
+    private String userId;
 
     /**
      * 游戏玩家ID
      */
-    private Long mgUserId;
+    private String mgUserId;
 
     /**
      * 游戏ID
      */
 //    @NonNull
-    private Long gameId;
+    private String gameId;
 
     /**
      * 货物总价
@@ -101,7 +102,7 @@ public class PlatformOrderBO {
     private String merchantOrderNo;
 
     /**
-     * 支付状态,1待支付,2 支付成功,3 已取消
+     * 支付状态,1待支付,2 支付成功,-1 已取消
      */
     private Integer status;
 
@@ -136,7 +137,7 @@ public class PlatformOrderBO {
     private Integer isDistribute;
 
     /**
-     * CP通知状态,1为待处理,2为成功,3为失败
+     * CP通知状态,1为待处理,2为成功,-1为失败
      */
     private Integer cpStatus;
 
@@ -163,6 +164,6 @@ public class PlatformOrderBO {
     /**
      * 渠道
      */
-    private Long channel;
+    private String channel;
 
 }

+ 19 - 11
game-module/game-sdk/src/main/java/com/zanxiang/sdk/domain/dto/PlatformOrderDTO.java

@@ -1,17 +1,20 @@
 package com.zanxiang.sdk.domain.dto;
 
-import net.sf.jsqlparser.expression.DateTimeLiteralExpression;
+import lombok.Data;
 
+import java.io.Serializable;
 import java.math.BigDecimal;
 import java.util.Date;
 
-public class PlatformOrderDTO {
-    private Long id;
+@Data
+public class PlatformOrderDTO implements Serializable {
+    
+    private String id;
 
     /**
      * cpId
      */
-    private Long cpId;
+    private String cpId;
 
     /**
      * CP订单号
@@ -21,21 +24,24 @@ public class PlatformOrderDTO {
     /**
      * 充值用户
      */
-    private Long userId;
+//    @NonNull
+    private String userId;
 
     /**
      * 游戏玩家ID
      */
-    private Long mgUserId;
+    private String mgUserId;
 
     /**
      * 游戏ID
      */
-    private Long gameId;
+//    @NonNull
+    private String gameId;
 
     /**
      * 货物总价
      */
+//    @NonNull
     private BigDecimal amount;
 
     /**
@@ -51,11 +57,13 @@ public class PlatformOrderDTO {
     /**
      * 游戏商品数量
      */
+//    @NonNull
     private Integer productCnt;
 
     /**
      * 游戏商品名称
      */
+//    @NonNull
     private String productName;
 
     /**
@@ -94,7 +102,7 @@ public class PlatformOrderDTO {
     private String merchantOrderNo;
 
     /**
-     * 支付状态,1待支付,2 支付成功,3 已取消
+     * 支付状态,1待支付,2 支付成功,-1 已取消
      */
     private Integer status;
 
@@ -116,7 +124,7 @@ public class PlatformOrderDTO {
     /**
      * 最近通知时间
      */
-    private Date lastCpNotifyTime;
+    private Long lastCpNotifyTime;
 
     /**
      * 客服处理: 2正常; 1纠纷
@@ -129,7 +137,7 @@ public class PlatformOrderDTO {
     private Integer isDistribute;
 
     /**
-     * CP通知状态,1为待处理,2为成功,3为失败
+     * CP通知状态,1为待处理,2为成功,-1为失败
      */
     private Integer cpStatus;
 
@@ -156,5 +164,5 @@ public class PlatformOrderDTO {
     /**
      * 渠道
      */
-    private Long channel;
+    private String channel;
 }

+ 16 - 12
game-module/game-sdk/src/main/java/com/zanxiang/sdk/domain/entity/Order.java

@@ -21,7 +21,6 @@ import java.util.Date;
 @Data
 @NoArgsConstructor
 @AllArgsConstructor
-@ToString
 @TableName("h_order")
 public class Order {
 
@@ -34,7 +33,7 @@ public class Order {
     /**
      * cpId
      */
-    private Long cpId;
+    private String cpId;
 
     /**
      * CP订单号
@@ -44,21 +43,24 @@ public class Order {
     /**
      * 充值用户
      */
-    private Long userId;
+//    @NonNull
+    private String userId;
 
     /**
      * 游戏玩家ID
      */
-    private Long mgUserId;
+    private String mgUserId;
 
     /**
      * 游戏ID
      */
-    private Long gameId;
+//    @NonNull
+    private String gameId;
 
     /**
      * 货物总价
      */
+//    @NonNull
     private BigDecimal amount;
 
     /**
@@ -74,11 +76,13 @@ public class Order {
     /**
      * 游戏商品数量
      */
+//    @NonNull
     private Integer productCnt;
 
     /**
      * 游戏商品名称
      */
+//    @NonNull
     private String productName;
 
     /**
@@ -117,7 +121,7 @@ public class Order {
     private String merchantOrderNo;
 
     /**
-     * 支付状态,1待支付,2 支付成功,3 已取消
+     * 支付状态,1待支付,2 支付成功,-1 已取消
      */
     private Integer status;
 
@@ -129,7 +133,7 @@ public class Order {
     /**
      * 支付时间
      */
-    private LocalDateTime payTime;
+    private Date payTime;
 
     /**
      * 通知次数
@@ -139,20 +143,20 @@ public class Order {
     /**
      * 最近通知时间
      */
-    private String lastCpNotifyTime;
+    private Long lastCpNotifyTime;
 
     /**
      * 客服处理: 2正常; 1纠纷
      */
-    private Byte isHandle;
+    private Integer isHandle;
 
     /**
      * 是否已分成  1未分成 2 已分成
      */
-    private Boolean isDistribute;
+    private Integer isDistribute;
 
     /**
-     * CP通知状态,1为待处理,2为成功,3为失败
+     * CP通知状态,1为待处理,2为成功,-1为失败
      */
     private Integer cpStatus;
 
@@ -179,6 +183,6 @@ public class Order {
     /**
      * 渠道
      */
-    private Long channel;
+    private String channel;
 
 }

+ 22 - 12
game-module/game-sdk/src/main/java/com/zanxiang/sdk/service/Impl/PlatformOrderServiceImpl.java

@@ -16,11 +16,21 @@ import lombok.extern.slf4j.Slf4j;
 import org.junit.jupiter.api.extension.ParameterResolutionException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Component;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.time.LocalDateTime;
+import java.util.Date;
 
+/**
+ * 平台订单逻辑开发
+ *
+ * @author xufeng
+ * @date 2022-06-06 17:06
+ */
+
+@Component
 @Slf4j
 @Service
 public class PlatformOrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements PlatformOrderService {
@@ -53,18 +63,17 @@ public class PlatformOrderServiceImpl extends ServiceImpl<OrderMapper, Order> im
             if (!order.getStatus().equals(OrderStateEnum.NO_PAY.getCode())) {
                 throw new ParameterResolutionException("订单状态非待支付");
             }
+            if (!order.getUserId().equals(platformOrderBO.getUserId())) {
+                throw new ParameterResolutionException("订单与用户关系不符");
+            }
             order.setRealAmount(platformOrderBO.getRealAmount());
             order.setMerchantOrderNo(platformOrderBO.getMerchantOrderNo());
             order.setStatus(OrderStateEnum.SUCCESS.getCode());
             order.setGamePaywayId(platformOrderBO.getGamePaywayId());
-            order.setPayTime(LocalDateTime.now());
+            order.setPayTime(platformOrderBO.getPayTime() == null ? platformOrderBO.getPayTime() : new Date());
             order.setMemNote(StringUtils.isEmpty(platformOrderBO.getMemNote()) ? null : platformOrderBO.getMemNote());
             logger.info("订单支付提交数据 data:{}", order);
-            LambdaUpdateWrapper<Order> wrapper = Wrappers.lambdaUpdate(Order.class)
-                    .eq(Order::getId, platformOrderBO.getId())
-                    .eq(Order::getUserId, platformOrderBO.getUserId())
-                    .setEntity(order);
-            return super.update(wrapper);
+            return updateById(order);
         } catch (ParameterResolutionException e) {
             logger.error("订单支付失败 platformOrderBO:{}, error:{}", platformOrderBO, e);
             e.printStackTrace();
@@ -84,10 +93,7 @@ public class PlatformOrderServiceImpl extends ServiceImpl<OrderMapper, Order> im
             order.setAdminNote(StringUtils.isEmpty(platformOrderBO.getAdminNote()) ? null : platformOrderBO.getAdminNote());
             order.setRemark(StringUtils.isEmpty(platformOrderBO.getRemark()) ? null : platformOrderBO.getRemark());
             logger.info("订单取消提交数据 data:{}", order);
-            LambdaUpdateWrapper<Order> wrapper = Wrappers.lambdaUpdate(Order.class)
-                    .eq(Order::getId, platformOrderBO.getId())
-                    .setEntity(order);
-            return super.update(wrapper);
+            return updateById(order);
         } catch (Exception e) {
             logger.error("订单取消失败 platformOrderBO:{}, error:{}", platformOrderBO, e);
             e.printStackTrace();
@@ -96,13 +102,13 @@ public class PlatformOrderServiceImpl extends ServiceImpl<OrderMapper, Order> im
     }
 
     @Override
-    public PlatformOrderDTO info(Long id) {
+    public PlatformOrderDTO info(String id) {
         Order order = getOne(new LambdaQueryWrapper<Order>().eq(Order::getId, id));
         return BeanUtils.copy(order, PlatformOrderDTO.class);
     }
 
     /**
-     * 检查订单创建参数
+     * 检查订单参数
      *
      * @param platformOrderBO
      * @return
@@ -136,6 +142,9 @@ public class PlatformOrderServiceImpl extends ServiceImpl<OrderMapper, Order> im
                 if (platformOrderBO.getId() == null) {
                     throw new NullPointerException("id");
                 }
+                if (platformOrderBO.getUserId() == null) {
+                    throw new NullPointerException("UserId");
+                }
                 if (platformOrderBO.getStatus() == 0) {
                     throw new NullPointerException("Status");
                 }
@@ -149,6 +158,7 @@ public class PlatformOrderServiceImpl extends ServiceImpl<OrderMapper, Order> im
                     throw new NullPointerException("MerchantOrderNo");
                 }
 
+
                 break;
 
             case "cancel":

+ 20 - 4
game-module/game-sdk/src/main/java/com/zanxiang/sdk/service/PlatformOrderService.java

@@ -1,13 +1,17 @@
 package com.zanxiang.sdk.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
-import com.zanxiang.sdk.SDKApplication;
 import com.zanxiang.sdk.domain.bo.PlatformOrderBO;
 import com.zanxiang.sdk.domain.dto.PlatformOrderDTO;
 import com.zanxiang.sdk.domain.entity.Order;
-import org.springframework.boot.test.context.SpringBootTest;
 
-@SpringBootTest(classes = {SDKApplication.class})
+/**
+ * 平台订单逻辑开发
+ *
+ * @author xufeng
+ * @date 2022-06-06 17:06
+ */
+
 public interface PlatformOrderService extends IService<Order> {
 
     /**
@@ -26,7 +30,19 @@ public interface PlatformOrderService extends IService<Order> {
      */
     Boolean pay(PlatformOrderBO platformOrderBO);
 
+    /**
+     * 订单取消
+     *
+     * @param platformOrderBO
+     * @return true/false
+     */
     Boolean cancel(PlatformOrderBO platformOrderBO);
 
-    PlatformOrderDTO info(Long id);
+    /**
+     * 单一订单详情获取
+     *
+     * @param id
+     * @return PlatformOrderDTO
+     */
+    PlatformOrderDTO info(String id);
 }

+ 0 - 88
game-module/game-sdk/src/main/resources/mapper/DemoMapper.xml

@@ -1,88 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
-<mapper namespace="com.zanxiang.manage.mapper.DemoMapper">
-    <resultMap id="BaseResultMap" type="com.zanxiang.sdk.domain.entity.Demo">
-        <id column="id" jdbcType="BIGINT" property="id"/>
-        <result column="name" jdbcType="VARCHAR" property="name"/>
-        <result column="is_enable" jdbcType="TINYINT" property="isEnable"/>
-        <result column="content" jdbcType="VARCHAR" property="content"/>
-    </resultMap>
-    <sql id="Base_Column_List">
-        id
-        , name, is_enable, content
-    </sql>
-
-    <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">
-        select
-        <include refid="Base_Column_List"/>
-        from demo
-        where id = #{id,jdbcType=BIGINT}
-    </select>
-
-    <delete id="deleteByPrimaryKey" parameterType="java.lang.Long">
-        delete
-        from demo
-        where id = #{id,jdbcType=BIGINT}
-    </delete>
-
-    <insert id="insert" parameterType="com.zanxiang.sdk.domain.entity.Demo">
-        <selectKey keyProperty="id" order="AFTER" resultType="java.lang.Long">
-            SELECT LAST_INSERT_ID()
-        </selectKey>
-        insert into demo(name, is_enable, content)
-        values (#{name,jdbcType=VARCHAR}, #{isEnable,jdbcType=TINYINT}, #{content,jdbcType=VARCHAR})
-    </insert>
-
-    <insert id="insertSelective" parameterType="com.zanxiang.sdk.domain.entity.Demo">
-        <selectKey keyProperty="id" order="AFTER" resultType="java.lang.Long">
-            SELECT LAST_INSERT_ID()
-        </selectKey>
-        insert into demo
-        <trim prefix="(" suffix=")" suffixOverrides=",">
-            <if test="name != null">
-                name,
-            </if>
-            <if test="isEnable != null">
-                is_enable,
-            </if>
-            <if test="content != null">
-                content,
-            </if>
-        </trim>
-        <trim prefix="values (" suffix=")" suffixOverrides=",">
-            <if test="name != null">
-                #{name,jdbcType=VARCHAR},
-            </if>
-            <if test="isEnable != null">
-                #{isEnable,jdbcType=TINYINT},
-            </if>
-            <if test="content != null">
-                #{content,jdbcType=VARCHAR},
-            </if>
-        </trim>
-    </insert>
-
-    <update id="updateByPrimaryKeySelective" parameterType="com.zanxiang.sdk.domain.entity.Demo">
-        update demo
-        <set>
-            <if test="name != null">
-                name = #{name,jdbcType=VARCHAR},
-            </if>
-            <if test="isEnable != null">
-                is_enable = #{isEnable,jdbcType=TINYINT},
-            </if>
-            <if test="content != null">
-                content = #{content,jdbcType=VARCHAR},
-            </if>
-        </set>
-        where id = #{id,jdbcType=BIGINT}
-    </update>
-
-    <update id="updateByPrimaryKey" parameterType="com.zanxiang.sdk.domain.entity.Demo">
-        update demo
-        set name      = #{name,jdbcType=VARCHAR},
-            is_enable = #{isEnable,jdbcType=TINYINT},
-            content   = #{content,jdbcType=VARCHAR}
-        where id = #{id,jdbcType=BIGINT}
-    </update>
-</mapper>

+ 69 - 0
game-module/game-sdk/src/test/java/com/zanxiang/sdk/OrderTests.java

@@ -0,0 +1,69 @@
+package com.zanxiang.sdk;
+
+import java.math.BigDecimal;
+
+import com.zanxiang.sdk.domain.bo.PlatformOrderBO;
+import com.zanxiang.sdk.domain.dto.PlatformOrderDTO;
+import com.zanxiang.sdk.service.PlatformOrderService;
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+
+/**
+ * 订单模块单元测试类
+ *
+ * @author xufeng
+ * @date 2022-06-06 17:06
+ */
+
+public class OrderTests extends SDKApplicationTests {
+
+    @Autowired
+    private PlatformOrderService platformOrderService;
+
+    @Test
+    void getOrderInfo() {
+        PlatformOrderDTO info = platformOrderService.info("1");
+        System.out.println(info);
+    }
+
+    @Test
+    void createOrder() {
+        PlatformOrderBO bo = new PlatformOrderBO();
+        bo.setCpId("1");
+        bo.setCpOrderId("cp00001");
+        bo.setUserId("1");
+        bo.setMgUserId("1");
+        bo.setGameId("1");
+        bo.setAmount(new BigDecimal("0.01"));
+        bo.setProductId("cs0001");
+        bo.setProductCnt(1);
+        bo.setProductName("测试商品1");
+        String orderId = platformOrderService.create(bo);
+        System.out.println(orderId);
+    }
+
+    @Test
+    void payOrder() {
+        String orderId = "1534374084091142145";
+        PlatformOrderBO bo = new PlatformOrderBO();
+
+        bo.setId(orderId);
+        bo.setUserId("1");
+        bo.setRealAmount(new BigDecimal("0.01"));
+        bo.setMerchantOrderNo("alipay0000001");
+        bo.setGamePaywayId("1");
+        bo.setStatus(2);
+        Boolean result = platformOrderService.pay(bo);
+        System.out.println(result);
+    }
+
+    @Test
+    void cancelPay() {
+        String orderId = "1";
+        PlatformOrderBO bo = new PlatformOrderBO();
+        bo.setId(orderId);
+        Boolean result = platformOrderService.cancel(bo);
+        System.out.println(result);
+    }
+
+}

+ 12 - 5
game-module/game-sdk/src/test/java/com/zanxiang/sdk/SDKApplicationTests.java

@@ -1,16 +1,23 @@
 package com.zanxiang.sdk;
 
 import org.junit.jupiter.api.Test;
-import org.junit.runner.RunWith;
+import org.mybatis.spring.annotation.MapperScan;
 import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.test.context.junit4.SpringRunner;
 
-@RunWith(SpringRunner.class)
-@SpringBootTest
-class SDKApplicationTests {
+/**
+ * 单元测试主体
+ *
+ * @author xufeng
+ * @date 2022-06-06 17:06
+ */
+
+@SpringBootTest(classes = SDKApplication.class)
+@MapperScan("com.zanxiang.sdk.mapper")
+public class SDKApplicationTests {
 
     @Test
     void contextLoads() {
+
     }
 
 }

+ 0 - 38
game-module/game-sdk/src/test/java/com/zanxiang/sdk/orderTests.java

@@ -1,38 +0,0 @@
-package com.zanxiang.sdk;
-
-import com.zanxiang.sdk.domain.bo.PlatformOrderBO;
-import com.zanxiang.sdk.service.Impl.PlatformOrderServiceImpl;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.test.context.junit4.SpringRunner;
-
-import java.lang.reflect.Method;
-import java.math.BigDecimal;
-
-@RunWith(SpringRunner.class)
-@SpringBootTest
-public class orderTests extends SDKApplicationTests {
-//    @Autowired
-//    private PlatformOrderServiceImpl platformOrderService;
-
-    @Test
-    public void orderCreate() {
-        String typeName = this.getClass().getCanonicalName();
-        System.out.println(typeName);
-        PlatformOrderBO bo = new PlatformOrderBO();
-        bo.setCpId(1L);
-        bo.setCpOrderId("100001");
-        bo.setUserId(1L);
-        bo.setMgUserId(1L);
-        bo.setGameId(1L);
-        bo.setAmount(new BigDecimal("0.01"));
-        bo.setProductId("cx00001");
-        bo.setProductCnt(1);
-        bo.setProductName("测试商品1");
-//        Long orderId = platformOrderService.create(bo);
-//        System.out.println(orderId);
-//        System.out.println("1111");
-    }
-}