Ver Fonte

订单接口完成

yq há 3 anos atrás
pai
commit
5c0f85c99a

+ 0 - 3
src/main/java/com/usky/dxtop/model/CallApiLog.java

@@ -49,7 +49,4 @@ public class CallApiLog extends BaseEntity implements Serializable {
      * api返回数据
      */
     private String apiResultData;
-
-
-
 }

+ 0 - 1
src/main/java/com/usky/dxtop/model/Order.java

@@ -81,5 +81,4 @@ public class Order extends BaseEntity implements Serializable {
      */
     private Double topRadio;
 
-
 }

+ 34 - 0
src/main/java/com/usky/dxtop/service/OrderService.java

@@ -2,6 +2,9 @@ package com.usky.dxtop.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.usky.dxtop.model.Order;
+import com.usky.dxtop.service.vo.OrderRequest;
+
+import java.util.List;
 
 
 /**
@@ -14,4 +17,35 @@ import com.usky.dxtop.model.Order;
  */
 public interface OrderService extends IService<Order> {
 
+
+    /**
+     * 添加订单(现金支付)
+     * @param order
+     * @return
+     */
+    boolean add(Order order);
+
+
+    List<Order> list(OrderRequest orderRequest);
+
+    /**
+     * 扫码支付api
+     * @param order
+     * @return
+     */
+    String getTopScanPayApi(Order order);
+
+    /**
+     * 生成扫码支付二维码
+     * @param order
+     * @return
+     */
+    String getTopScanPayQr(Order order);
+
+    /**
+     * 订单详情api
+     * @param orderNumber
+     * @return
+     */
+    String getTopFindOrderInfoApi(String orderNumber);
 }

+ 5 - 5
src/main/java/com/usky/dxtop/service/api/TopApi.java

@@ -55,14 +55,14 @@ public class TopApi {
      * 拼接扫码支付参数
      * @return
      */
-    public static TreeMap<String, String> generateScanPayApiParam(String orderNo, Integer amount, String note,
+    public static TreeMap<String, String> generateScanPayApiParam(String merchantOrderNo, Integer amount, String note,
                                                                   String storeNo, String backUrl, String orderNumber,
                                                                   String validTime, String remark, String goods){
         TreeMap<String, String> tMap = new TreeMap<>();
         tMap.put("version",VERSION);
         tMap.put("payTime",DateUtils.dateTimeNow());
         tMap.put("merchantNo",MERCHANT_NO);
-        tMap.put("merchantOrderNo",orderNo);
+        tMap.put("merchantOrderNo",merchantOrderNo);
         tMap.put("amount",amount.toString());
         tMap.put("note",note);
         tMap.put("storeNo",storeNo);
@@ -77,15 +77,15 @@ public class TopApi {
 
     /**
      * 扫码支付api
-     * @param orderNo
+     * @param merchantOrderNo
      * @param amount
      * @param note
      * @return
      */
-    public static String generateScanPayApi(String orderNo,Integer amount,String note,
+    public static String generateScanPayApi(String merchantOrderNo,Integer amount,String note,
                                             String storeNo,String backUrl,String orderNumber,
                                             String validTime,String remark,String goods){
-        TreeMap<String, String> params = generateScanPayApiParam(orderNo, amount, note,
+        TreeMap<String, String> params = generateScanPayApiParam(merchantOrderNo, amount, note,
                 storeNo,backUrl,orderNumber,validTime,remark,goods);
         return String.format("%s?%s&sign=%s",SCAN_TO_PAY_URL,
                 joinParam(params),

+ 31 - 0
src/main/java/com/usky/dxtop/service/emun/OrderPayType.java

@@ -0,0 +1,31 @@
+package com.usky.dxtop.service.emun;
+
+/**
+ * @author yq
+ * @date 2021/8/27 15:45
+ */
+public enum OrderPayType {
+
+
+    XJ(1,"现金支付"),
+
+    WX(2,"微信支付"),
+
+    ZFB(3,"支付宝支付");
+    private Integer payCode;
+
+    private String name;
+
+
+    OrderPayType(Integer payCode,String name){
+        this.payCode = payCode;
+        this.name = name;
+    }
+
+    public Integer getPayCode(){
+        return payCode;
+    }
+    public String getName(){
+        return name;
+    }
+}

+ 34 - 0
src/main/java/com/usky/dxtop/service/emun/OrderStatus.java

@@ -0,0 +1,34 @@
+package com.usky.dxtop.service.emun;
+
+/**
+ * @author yq
+ * @date 2021/8/27 15:57
+ */
+public enum OrderStatus {
+
+    NO_PAYMENT(0,"未支付"),
+
+    PAYMENT_ERROR_NO_DEBIT(1,"支付失败未扣款"),
+
+    PAYMENT_ERROR_DEBIT(2,"支付失败已扣款,联系管理员充值"),
+
+    SUCCESS(3,"支付成功");
+
+    private Integer code;
+
+    private String name;
+
+    OrderStatus(Integer code,String name){
+        this.code = code;
+        this.name = name;
+    }
+
+
+    public Integer getCode(){
+        return code;
+    }
+
+    public String getName(){
+        return name;
+    }
+}

+ 87 - 0
src/main/java/com/usky/dxtop/service/impl/OrderServiceImpl.java

@@ -1,10 +1,30 @@
 package com.usky.dxtop.service.impl;
 
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.sun.xml.internal.ws.api.ComponentEx;
+import com.usky.dxtop.common.exception.CustomException;
+import com.usky.dxtop.common.utils.Arith;
+import com.usky.dxtop.common.utils.QRCodeUtil;
+import com.usky.dxtop.common.utils.http.HttpUtils;
+import com.usky.dxtop.common.utils.spring.GlobalUtils;
 import com.usky.dxtop.mapper.OrderMapper;
+import com.usky.dxtop.model.CallApiLog;
 import com.usky.dxtop.model.Order;
+import com.usky.dxtop.service.CallApiLogService;
 import com.usky.dxtop.service.OrderService;
+import com.usky.dxtop.service.api.TopApi;
+import com.usky.dxtop.service.emun.OrderPayType;
+import com.usky.dxtop.service.emun.OrderStatus;
+import com.usky.dxtop.service.vo.OrderRequest;
+import org.apache.logging.log4j.core.util.JsonUtils;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+import java.util.TreeMap;
 
 /**
  * <p>
@@ -17,4 +37,71 @@ import org.springframework.stereotype.Service;
 @Service
 public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements OrderService {
 
+    @Autowired
+    private CallApiLogService callApiLogService;
+
+    @Override
+    public boolean add(Order order) {
+        order.setOrderFlag(OrderStatus.SUCCESS.getCode());
+        baseMapper.insert(order);
+        //调用卡充值api
+        return false;
+    }
+
+    @Override
+    public List<Order> list(OrderRequest orderRequest) {
+        return null;
+    }
+
+
+    /**
+     * 东信扫码支付api
+     * @param order
+     * @return
+     */
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public String getTopScanPayApi(Order order){
+        String orderNumber = TopApi.getOrderNumber();
+        order.setOrderNumber(orderNumber);
+        TreeMap<String, String> params = TopApi.generateScanPayApiParam(order.getOrderNumber(),
+                                        new Double(Arith.mul(order.getMoney(),100)).intValue(), null,
+                null,null,null,null,null,null);
+        String scanPayUrl = String.format("%s?%s&sign=%s", TopApi.SCAN_TO_PAY_URL,
+                TopApi.joinParam(params),
+                TopApi.signData(params));
+        baseMapper.insert(order);
+        CallApiLog callApiLog = new CallApiLog();
+        callApiLog.setApiUrl(TopApi.SCAN_TO_PAY_URL);
+        callApiLog.setApiParam(JSONObject.toJSONString(params));
+        callApiLog.setOrderNumber(order.getOrderNumber());
+        callApiLog.setName("扫码支付");
+        callApiLogService.save(callApiLog);
+        return scanPayUrl;
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public String getTopScanPayQr(Order order) {
+        String destPath;
+        try {
+            String topScanPayApi = getTopScanPayApi(order);
+            String codeName = String.format("%s-%s.jpg", "usky", System.currentTimeMillis() + "");
+            destPath = String.format("%s%s", GlobalUtils.getTempBaseDir(),codeName);
+            //生成二维码
+            QRCodeUtil.encode(topScanPayApi, null, destPath, true);
+        }catch (Exception e){
+            throw new CustomException("生成二维码失败");
+        }
+        return destPath;
+    }
+
+    @Override
+    public String getTopFindOrderInfoApi(String orderNumber) {
+        TreeMap<String, String> param = TopApi.generateDealSelectParam(orderNumber, null, null, null);
+        String format = String.format("%s&sign=%s", TopApi.joinParam(param),
+                TopApi.signData(param));
+        return HttpUtils.sendGet(TopApi.DEAL_SELECT_URL, format);
+    }
+
 }

+ 46 - 0
src/main/java/com/usky/dxtop/service/vo/OrderRequest.java

@@ -0,0 +1,46 @@
+package com.usky.dxtop.service.vo;
+
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * @author yq
+ * @date 2021/8/27 15:39
+ */
+@Data
+public class OrderRequest {
+
+    /**
+     * 用户名称
+     */
+    private String userName;
+
+    /**
+     * 用户手机号
+     */
+    private String userPhone;
+
+    /**
+     * 订单状态(0未支付2已支付3支付失败)
+     */
+    private Integer orderFlag;
+
+    /**
+     * 充值来源
+     */
+    private Integer topSource;
+
+    /**
+     * 支付方式
+     */
+    private Integer payType;
+
+    private Date startTime;
+
+    private Date endTime;
+
+    private Double startMoney;
+
+    private Double endMoney;
+}