Browse Source

下单并支付
申请售后

zhangwl 1 month ago
parent
commit
882fda47d3

+ 1 - 3
src/main/java/zs/payment/controller/YxSupplyChannelManualController.java

@@ -65,7 +65,7 @@ public class YxSupplyChannelManualController {
     }
     }
 
 
 
 
-    //申请售后
+    //申请售后 - 根据订单编号 去创建
     @PostMapping("/afterSalesCreate")
     @PostMapping("/afterSalesCreate")
     public Result afterSalesCreate(@Valid @RequestBody AfterSalesOrderReq req){
     public Result afterSalesCreate(@Valid @RequestBody AfterSalesOrderReq req){
         return paySupplyService.afterSalesCreate(req);
         return paySupplyService.afterSalesCreate(req);
@@ -75,8 +75,6 @@ public class YxSupplyChannelManualController {
     //关闭售后
     //关闭售后
     @PostMapping("/afterSalesClose")
     @PostMapping("/afterSalesClose")
     public Result afterSalesClose(@Valid @RequestBody AfterSalesCloseReq req){
     public Result afterSalesClose(@Valid @RequestBody AfterSalesCloseReq req){
-
-
         return paySupplyService.afterSalesClose(req.getId());
         return paySupplyService.afterSalesClose(req.getId());
     }
     }
 
 

+ 1 - 1
src/main/java/zs/payment/entity/mongodb/supply/Orders.java

@@ -15,7 +15,7 @@ import java.util.List;
 @NoArgsConstructor
 @NoArgsConstructor
 public class Orders {
 public class Orders {
 
 
-    // 订单id,中台返回的订单id,用于后续售后
+    // 订单id,
     @Id
     @Id
     private Integer id;
     private Integer id;
     // 创建时间
     // 创建时间

+ 1 - 1
src/main/java/zs/payment/entity/mysql/ImsEweiShopGoods.java

@@ -206,7 +206,7 @@ public class ImsEweiShopGoods {
     private String detail_btntext2;
     private String detail_btntext2;
     // 按钮2链接 默认"进店逛逛"及"默认的小店或商城连接"
     // 按钮2链接 默认"进店逛逛"及"默认的小店或商城连接"
     private String detail_btnurl2;
     private String detail_btnurl2;
-    // 多重分类数据集
+    // 多重分类数据集,这个是重点,用于商品分类
     private String cates;
     private String cates;
     // 营销文章ID
     // 营销文章ID
     private Integer artid;
     private Integer artid;

+ 5 - 4
src/main/java/zs/payment/messages/KafkaConsumer.java

@@ -224,6 +224,7 @@ public class KafkaConsumer {
                     goods.setPcates("");
                     goods.setPcates("");
                     goods.setCcates("");
                     goods.setCcates("");
                     goods.setTcates("");
                     goods.setTcates("");
+                    goods.setCates(pcate+","+ccate+","+tcate);
                     goods.setType(1);
                     goods.setType(1);
                     //启用商品规格
                     //启用商品规格
                     goods.setHasoption(1);
                     goods.setHasoption(1);
@@ -236,11 +237,11 @@ public class KafkaConsumer {
                     //商品单位: 件
                     //商品单位: 件
                     goods.setUnit(dto.getUnit());
                     goods.setUnit(dto.getUnit());
                     goods.setContent(dto.getDetail_images());
                     goods.setContent(dto.getDetail_images());
-                    //================价格====================
-                    //原价-市场价
-                    goods.setProductprice(new BigDecimal(dto.getGuide_price() ).divide(new BigDecimal(100)));
-                    //售价-用户需要支付的价格
+                    //================以下价格对应企业商城商品价格====================
+                    // 商品售价-用户需要支付的价格 ,要求售价不能大于原价【原需求如此,这边处理方案为原价=商品售价】
                     goods.setMarketprice(new BigDecimal(dto.getMarket_price() ).divide(new BigDecimal(100)));
                     goods.setMarketprice(new BigDecimal(dto.getMarket_price() ).divide(new BigDecimal(100)));
+                    // 原价
+                    goods.setProductprice(new BigDecimal(dto.getMarket_price() ).divide(new BigDecimal(100)));
                     // 生态供应价
                     // 生态供应价
                     goods.setCostprice(new BigDecimal(dto.getCost_price() ).divide(new BigDecimal(100)));
                     goods.setCostprice(new BigDecimal(dto.getCost_price() ).divide(new BigDecimal(100)));
                     // 成本价
                     // 成本价

+ 14 - 12
src/main/java/zs/payment/req/aftersales/AfterSalesOrderReq.java

@@ -12,25 +12,27 @@ import javax.validation.constraints.NotNull;
 public class AfterSalesOrderReq {
 public class AfterSalesOrderReq {
     //中台订单id- 实际场合下不适合
     //中台订单id- 实际场合下不适合
 //    @NotNull(message = "id不能为空")
 //    @NotNull(message = "id不能为空")
-    private Integer orderId;
+//    private Integer orderId;
 
 
-    //第三方订单号(提交订单使用的订单号),两个参数二选一
-    private String thirdOrderSn;
-    //是否收到货 1是0否
-    @NotNull(message = "填写收货")
+    //第三方订单号(提交订单使用的订单号),两个参数二选一  , 前端传值
+    @NotNull(message = "订单编号不能为空")
+    private String orderSn;
+    //是否收到货 1是0否  ,前端传值
+    @NotNull(message = "是否收到货")
     private Integer isReceived;
     private Integer isReceived;
     //订单详情的order_items中的id
     //订单详情的order_items中的id
-    @NotNull(message = "子订单id不能为空")
-    private Integer orderItemId;
-    //退款金额(单位分)
-    private Integer amount;
+//    @NotNull(message = "子订单id不能为空") - 需要自行查询出来
+//    private Integer orderItemId;
+    //退款金额(单位分)
+//    private Integer amount;
 
 
-    // 退款方式: "0": "退款",  "1": "退货退款"
+    // 退款方式: "0": "退款",  "1": "退货退款" , 前端传值
+    @NotNull(message = "退款方式不能为空")
     private Integer refundType;
     private Integer refundType;
 
 
     //技术服务费(单位分)
     //技术服务费(单位分)
-    private Integer technicalServicesFee;
+//    private Integer technicalServicesFee;
 
 
     //运费(单位分)
     //运费(单位分)
-    private Integer freight;
+//    private Integer freight;
 }
 }

+ 9 - 0
src/main/java/zs/payment/service/order/OrdersService.java

@@ -9,4 +9,13 @@ public interface OrdersService {
     void addOrder(Orders order) ;
     void addOrder(Orders order) ;
 
 
     void addBatchOrder(List<Orders> ordersList);
     void addBatchOrder(List<Orders> ordersList);
+
+    /**
+     * 第三方订单编号(自研系统的订单编号) 查询供应商中台的订单
+     * @param orderSn
+     * @return
+     */
+    Orders getOrderBySn(String orderSn);
+
+    Orders saveOrders(Orders orders);
 }
 }

+ 13 - 0
src/main/java/zs/payment/service/order/impl/OrdersServiceImpl.java

@@ -1,6 +1,8 @@
 package zs.payment.service.order.impl;
 package zs.payment.service.order.impl;
 
 
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.mongodb.core.query.Criteria;
+import org.springframework.data.mongodb.core.query.Query;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 import zs.payment.dao.OrderDao;
 import zs.payment.dao.OrderDao;
 import zs.payment.entity.mongodb.supply.Orders;
 import zs.payment.entity.mongodb.supply.Orders;
@@ -25,4 +27,15 @@ public class OrdersServiceImpl implements OrdersService {
     public void addBatchOrder(List<Orders> ordersList) {
     public void addBatchOrder(List<Orders> ordersList) {
         orderDao.insertBatch(ordersList);
         orderDao.insertBatch(ordersList);
     }
     }
+
+    @Override
+    public Orders getOrderBySn(String orderSn) {
+        Query query = new Query(Criteria.where("third_order_sn").is(orderSn));
+        return orderDao.queryOne(query);
+    }
+
+    @Override
+    public Orders saveOrders(Orders orders) {
+        return orderDao.save(orders);
+    }
 }
 }

+ 5 - 1
src/main/java/zs/payment/service/supply/order/impl/OrderSupplyServiceImpl.java

@@ -83,7 +83,11 @@ public class OrderSupplyServiceImpl implements OrderSupplyService {
         );
         );
         log.info("第三方订单编号{},完成下单并支付",req.getOrderSn());
         log.info("第三方订单编号{},完成下单并支付",req.getOrderSn());
         ordersService.addBatchOrder(orders);
         ordersService.addBatchOrder(orders);
-        return Result.success(orders.stream().map(o -> o.getId().toString()).collect(Collectors.joining(",")));
+        // 供应链中台的订单id
+        String ids = orders.stream().map(o -> o.getId().toString()).collect(Collectors.joining(","));
+        Map<String, Object> body = new HashMap<>();
+        body.put("orderId", ids);
+        return Result.success(body);
     }
     }
 
 
     @Override
     @Override

+ 1 - 0
src/main/java/zs/payment/service/supply/paysupply/PaySupplyService.java

@@ -30,6 +30,7 @@ public interface PaySupplyService {
      */
      */
     Result afterSalesCreate(AfterSalesOrderReq req);
     Result afterSalesCreate(AfterSalesOrderReq req);
 
 
+
     /**
     /**
      * 取消售后
      * 取消售后
      * @param id
      * @param id

+ 52 - 29
src/main/java/zs/payment/service/supply/paysupply/impl/PaySupplyServiceImpl.java

@@ -7,13 +7,18 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 import org.springframework.util.ObjectUtils;
 import org.springframework.util.ObjectUtils;
+import zs.payment.dto.AfterSalesDTO;
+import zs.payment.dto.OrderItemDTO;
 import zs.payment.entity.mongodb.supply.Orders;
 import zs.payment.entity.mongodb.supply.Orders;
+import zs.payment.exception.ApiException;
 import zs.payment.messages.KafkaProducer;
 import zs.payment.messages.KafkaProducer;
 import zs.payment.req.*;
 import zs.payment.req.*;
 import zs.payment.req.aftersales.AfterSalesOrderReq;
 import zs.payment.req.aftersales.AfterSalesOrderReq;
 import zs.payment.req.aftersales.AfterSalesOrderTypeReq;
 import zs.payment.req.aftersales.AfterSalesOrderTypeReq;
 import zs.payment.resp.Result;
 import zs.payment.resp.Result;
 
 
+import zs.payment.service.order.OrdersService;
+import zs.payment.service.supply.order.OrderSupplyService;
 import zs.payment.service.supply.paysupply.PaySupplyService;
 import zs.payment.service.supply.paysupply.PaySupplyService;
 import zs.payment.service.supply.token.SupplyTokenService;
 import zs.payment.service.supply.token.SupplyTokenService;
 import zs.payment.utils.HttpUtil;
 import zs.payment.utils.HttpUtil;
@@ -21,6 +26,7 @@ import zs.payment.utils.HttpUtil;
 import java.util.HashMap;
 import java.util.HashMap;
 import java.util.List;
 import java.util.List;
 import java.util.Map;
 import java.util.Map;
+import java.util.Optional;
 
 
 @Service
 @Service
 @Slf4j
 @Slf4j
@@ -33,6 +39,13 @@ public class PaySupplyServiceImpl implements PaySupplyService {
     private SupplyTokenService supplyTokenService;
     private SupplyTokenService supplyTokenService;
 
 
 
 
+    /**
+     * 芸信供应的中台订单
+     */
+    @Autowired
+    private OrdersService ordersService;
+
+
     @Override
     @Override
     public Result orderPayOnly(OrderPayReq req) {
     public Result orderPayOnly(OrderPayReq req) {
         Map<String, String> headers = supplyTokenService.buildAuthHeaders();
         Map<String, String> headers = supplyTokenService.buildAuthHeaders();
@@ -86,38 +99,48 @@ public class PaySupplyServiceImpl implements PaySupplyService {
             return Result.fail("获取token失败");
             return Result.fail("获取token失败");
         }
         }
 
 
-        Map<String, Object> params = new HashMap<>();
-        params.put("third_order_sn", req.getThirdOrderSn());
-        params.put("is_received",req.getIsReceived());
-        params.put("order_item_id",req.getOrderItemId());
-        if (!ObjectUtils.isEmpty(req.getAmount())){
-            //退款总额不为空
-            params.put("amount",req.getAmount());
-        }
-        if (!ObjectUtils.isEmpty(req.getRefundType())){
-            // 退款方式: "0": "退款",  "1": "退货退款"
-            params.put("refund_type",req.getRefundType());
-        }
-        if (!ObjectUtils.isEmpty(req.getTechnicalServicesFee())){
-            //技术服务费
-            params.put("technical_services_fee",req.getTechnicalServicesFee());
-        }
-
-        if (!ObjectUtils.isEmpty(req.getFreight())){
-            //运费
-            params.put("freight",req.getFreight());
-        }
-
-        String resp = HttpUtil.restTemplatePost(prefixUrl + "/supplyapi/app/afterSales/create", params, headers);
-        JSONObject respJson = JSONObject.parseObject(resp);
-        if (respJson.getIntValue("code") != 0) {
-            return Result.fail(respJson.getString("msg"));
+        Orders orders = ordersService.getOrderBySn(req.getOrderSn());
+        if (Optional.ofNullable(orders).isPresent()) {
+
+            for (int i = 0; i < orders.getOrderItems().size(); i++) {
+                OrderItemDTO item = orders.getOrderItems().get(i);
+                Map<String, Object> params = new HashMap<>();
+                params.put("third_order_sn", req.getOrderSn());
+                params.put("is_received",req.getIsReceived());
+                params.put("order_item_id",item.getId());
+                //退款总额不为空
+                params.put("amount",item.getAmount());
+                //技术服务费
+                params.put("technical_services_fee",orders.getTechnicalServicesFee());
+                //运费
+                params.put("freight",orders.getFreight());
+                if (!ObjectUtils.isEmpty(req.getRefundType())){
+                    // 退款方式: "0": "退款",  "1": "退货退款"
+                    params.put("refund_type",req.getRefundType());
+                }
+
+                String resp = HttpUtil.restTemplatePost(prefixUrl + "/supplyapi/app/afterSales/create", params, headers);
+                JSONObject respJson = JSONObject.parseObject(resp);
+                if (respJson.getIntValue("code") != 0) {
+                    log.error("--第三方订单编号{}申请售后失败,错误原因---",req.getOrderSn(),respJson.getString("msg"));
+                    throw new ApiException(req.getOrderSn()+"申请售后失败");
+                }
+
+                //todo 将申请售后id存储到Orders表中,方便后续通过第三方订单编号取消申请售后
+                log.info("----申请售后成功,返回了{}------",respJson.get("data"));
+                AfterSalesDTO afterSalesDTO=new AfterSalesDTO();
+                afterSalesDTO.setId(respJson.getInteger("data"));
+                item.setAfter_sales(afterSalesDTO);
+
+            }
+            //保存order
+            ordersService.saveOrders(orders);
+        }else {
+            return Result.fail("订单不存在");
         }
         }
 
 
-        //todo 需要把data进行存储,方便之后的取消售后操作
+        return Result.success();
 
 
-
-        return Result.success(respJson.getJSONObject("data"));
     }
     }
 
 
     @Override
     @Override