Procházet zdrojové kódy

订单脚印统一

Veronique před 2 roky
rodič
revize
5a5e687260

+ 93 - 0
conf/apiFiles/orderProcess.xml

@@ -32,4 +32,97 @@
         </params>
 
     </api>
+
+    <api>
+        <!-- 接口名称 -->
+        <methodName>门店出餐完成</methodName>
+        <!-- 排序 -->
+        <sort>11</sort>
+        <!-- 使用的脚本业务名称 不要BE_ -->
+        <businessMethod>Order_CookingDone_Request</businessMethod>
+        <!-- 是否需要token,留着空表示不需要,需要token的写上获取token的方法,不能不要该节点 -->
+        <tokenFrom></tokenFrom>
+        <!-- 是否需要分页,留着空表示不需要,随便写的啥表示需要分页参数,不能不要该节点 -->
+        <pageFrom></pageFrom>
+
+        <!--
+            参数信息,paramOnly和params是互斥的,有的时候我们需要的参数是单个类的json就完事,但是又懒得一个一个写param,可以只用paramOnly标识,里面输入带包类名,
+            然后在类里面用@ApiPlce("脚本业务名称")标记上需要的字段即可,不能不要该节点,使用params时,paramOnly写空即可。
+        -->
+        <paramOnly></paramOnly>
+        <!--
+            参数信息,
+        -->
+        <params>
+            <param>
+                <!-- 参数说明 -->
+                <paramComment>订单id</paramComment>
+                <!-- 参数名称 -->
+                <paramKey>idOrder</paramKey>
+                <!-- 参数类型 "Integer", "Long", "Double", "Float", "Boolean", "String" 为基础类型 -->
+                <paramKind>Long</paramKind>
+            </param>
+        </params>
+
+    </api>
+
+    <api>
+        <!-- 接口名称 -->
+        <methodName>商户同意/拒绝退款请求</methodName>
+        <!-- 排序 -->
+        <sort>11</sort>
+        <!-- 使用的脚本业务名称 不要BE_ -->
+        <businessMethod>Order_ProcessRefund_Request</businessMethod>
+        <!-- 是否需要token,留着空表示不需要,需要token的写上获取token的方法,不能不要该节点 -->
+        <tokenFrom></tokenFrom>
+        <!-- 是否需要分页,留着空表示不需要,随便写的啥表示需要分页参数,不能不要该节点 -->
+        <pageFrom></pageFrom>
+
+        <!--
+            参数信息,paramOnly和params是互斥的,有的时候我们需要的参数是单个类的json就完事,但是又懒得一个一个写param,可以只用paramOnly标识,里面输入带包类名,
+            然后在类里面用@ApiPlce("脚本业务名称")标记上需要的字段即可,不能不要该节点,使用params时,paramOnly写空即可。
+        -->
+        <paramOnly></paramOnly>
+        <!--
+            参数信息,
+        -->
+        <params>
+            <param>
+                <!-- 参数说明 -->
+                <paramComment>客户退款申请id</paramComment>
+                <!-- 参数名称 -->
+                <paramKey>idRefundRequest</paramKey>
+                <!-- 参数类型 "Integer", "Long", "Double", "Float", "Boolean", "String" 为基础类型 -->
+                <paramKind>Long</paramKind>
+            </param>
+
+            <param>
+                <!-- 参数说明 -->
+                <paramComment>同意/拒绝退款</paramComment>
+                <!-- 参数名称 -->
+                <paramKey>approve</paramKey>
+                <!-- 参数类型 "Integer", "Long", "Double", "Float", "Boolean", "String" 为基础类型 -->
+                <paramKind>Integer</paramKind>
+            </param>
+
+            <param>
+                <!-- 参数说明 -->
+                <paramComment>拒绝原因代码,如"[101,102,103]",注意这个括号不能少必须是数组形式</paramComment>
+                <!-- 参数名称 -->
+                <paramKey>rejectReasonCode</paramKey>
+                <!-- 参数类型 "Integer", "Long", "Double", "Float", "Boolean", "String" 为基础类型 -->
+                <paramKind>String</paramKind>
+            </param>
+
+            <param>
+                <!-- 参数说明 -->
+                <paramComment>拒绝原因备注</paramComment>
+                <!-- 参数名称 -->
+                <paramKey>rejectMemo</paramKey>
+                <!-- 参数类型 "Integer", "Long", "Double", "Float", "Boolean", "String" 为基础类型 -->
+                <paramKind>String</paramKind>
+            </param>
+        </params>
+
+    </api>
 </apis>

+ 1 - 1
conf/script/1000/orderApi/BE_Order_AcceptOrder_DYLK.groovy

@@ -120,7 +120,7 @@ class BE_Order_AcceptOrder_DYLK implements BusinessExecutor<InvokeCallParams, In
         esOrder.setOrderStatus(BusinessOrderStatus.accept.value)
         BusinessOrder.update(esOrder, currentUser.id)
 
-        OrderStep orderStep = orderStepService.parseOrderStep(esOrder.id, "[" + storePlatform.platformName + "]商家接单完成", storePlatform.platformCode, currentUser)
+        OrderStep orderStep = orderStepService.parseOrderStep(esOrder.id, "商家接单完成", "[" + storePlatform.platformName + "]", currentUser)
 
 
         //持久化

+ 1 - 1
conf/script/1000/orderApi/BE_Order_CancelOrder_DYLK.groovy

@@ -131,7 +131,7 @@ class BE_Order_CancelOrder_DYLK implements BusinessExecutor<InvokeCallParams, In
         BusinessOrder.update(esOrder, currentUser.id)
 
         OrderStep orderStep = orderStepService.parseOrderStep(esOrder.id,
-                "[" + storePlatform.platformName + "]订单取消: " + invokeOrder["apply_source"], storePlatform.platformCode, currentUser)
+                "订单取消", "[" + storePlatform.platformName + "] 发起方:" + invokeOrder["apply_source"], currentUser)
 
         OrderAfterSaleBill afterSaleBill = new OrderAfterSaleBill()
         afterSaleBill.setId(tableIdService.getTableIdMulti("deOrderAfterSaleBill.id", 1, dataSourceId, String.valueOf(supplierCode)))

+ 1 - 1
conf/script/1000/orderApi/BE_Order_CompleteOrder_DYLK.groovy

@@ -121,7 +121,7 @@ class BE_Order_CompleteOrder_DYLK implements BusinessExecutor<InvokeCallParams,
         esOrder.setOrderStatus(BusinessOrderStatus.orderComplete.value)
         BusinessOrder.update(esOrder, currentUser.id)
 
-        OrderStep orderStep = orderStepService.parseOrderStep(esOrder.id, "[" + storePlatform.platformName + "]订单已完成", storePlatform.platformCode, currentUser)
+        OrderStep orderStep = orderStepService.parseOrderStep(esOrder.id, "订单已完成", "[" + storePlatform.platformName + "]", currentUser)
 
 
         //持久化

+ 12 - 1
conf/script/1000/orderApi/BE_Order_CreateOrder_DYLK.groovy

@@ -127,6 +127,7 @@ class BE_Order_CreateOrder_DYLK implements BusinessExecutor<InvokeCallParams, In
         //写入订单序号
         long sequence = orderService.getOrderSequence(storeInfo.id, storePlatform.idPlatformInfo, supplierCode)
         businessOrder.setOrderSequence(sequence)
+        BusinessOrder.create(businessOrder, currentUser.id)
 
         //订单金额类信息
         OrderFinances orderFinances = new OrderFinances()
@@ -136,10 +137,14 @@ class BE_Order_CreateOrder_DYLK implements BusinessExecutor<InvokeCallParams, In
         orderFinances.setDeliverFee(deliverFee)
         orderFinances.setCustomerPaid(ERPUtils.money(invokeOrder["amount_info"]["pay_amount"] as int))
         orderFinances.setStoreRealCollection(ERPUtils.money(invokeOrder["amount_info"]["estimated_order_income"] as int))
+        orderFinances.setPlatformServiceFee(ERPUtils.money(invokeOrder["amount_info"]["commission_amount"] as int))
+        OrderFinances.create(orderFinances, currentUser.id)
 
         businessOrder.setOrderFinances(orderFinances)
 
         //订单折扣信息,归属于金额信息系列
+        //分别合计以下平台补贴和商户补贴
+        def platDiscount = 0, merchantDiscount = 0
         List<OrderDiscount> discountList = new ArrayList<>()
         long idDiscount = tableIdService.getTableIdMulti("deOrderDiscount.id", (invokeOrder["amount_info"]["discounts"] as ArrayList).size(),
                 dataSourceId, String.valueOf(supplierCode))
@@ -153,12 +158,16 @@ class BE_Order_CreateOrder_DYLK implements BusinessExecutor<InvokeCallParams, In
             orderDiscount.setMerchantDiscountAmount(discount["merchant_discount_amount"] as int)
             orderDiscount.setPlatformDiscountAmount(discount["platform_discount_amount"] as int)
             OrderDiscount.create(orderDiscount, currentUser.id)
+            platDiscount += orderDiscount.platformDiscountAmount
+            merchantDiscount += orderDiscount.merchantDiscountAmount
 
             discountList.add(orderDiscount)
 
             idDiscount++
         }
         businessOrder.setOrderDiscountList(discountList)
+        orderFinances.setOrderPlatformSubsidy(ERPUtils.money(platDiscount))
+        orderFinances.setStoreDiscount(ERPUtils.money(merchantDiscount))
 
         //订单配送类信息
         OrderDeliveryInfo orderDeliveryInfo = new OrderDeliveryInfo()
@@ -177,6 +186,7 @@ class BE_Order_CreateOrder_DYLK implements BusinessExecutor<InvokeCallParams, In
         orderDeliveryInfo.setBookingDeliverTimeLong(suggestTimeLong * 1000)
         orderDeliveryInfo.setBookingDeliverTime(new Date(orderDeliveryInfo.bookingDeliverTimeLong))
         orderDeliveryInfo.setCustomerMemo(invokeOrder["order"]["remark"] as String)
+        OrderDeliveryInfo.create(orderDeliveryInfo, currentUser.id)
 
         businessOrder.setOrderDeliveryInfo(orderDeliveryInfo)
 
@@ -192,13 +202,14 @@ class BE_Order_CreateOrder_DYLK implements BusinessExecutor<InvokeCallParams, In
             item.setItemCount(it["num"] as int)
             item.setItemMoney(it["origin_amount"] as BigDecimal)
             item.setItemDetail(jsonConvert.convertTo(it["commodities"]))
+            OrderDetailItem.create(item, currentUser.id)
 
             itemList.add(item)
         }
 
         businessOrder.setDetailItemList(itemList)
 
-        OrderStep orderStep = orderStepService.parseOrderStep(businessOrder.id, "[抖音来客]顾客完成付款下单", "DYLK", currentUser)
+        OrderStep orderStep = orderStepService.parseOrderStep(businessOrder.id, "顾客完成付款下单", "[抖音来客]", currentUser)
 
         //持久化
         //订单主表

+ 2 - 1
conf/script/1000/orderApi/BE_Order_DeliveryChange_DYLK.groovy

@@ -18,6 +18,7 @@ import com.dderp.common.entity.order.OrderDeliveryInfo
 import com.dderp.common.entity.order.OrderStep
 import com.dderp.common.entity.site.ERPTokenUser
 import com.dderp.common.entity.store.StorePlatform
+import com.dderp.common.tool.ERPUtils
 import com.dySweetFishPlugin.elasticsearch.ESClient
 import com.dySweetFishPlugin.sql.TableIdService
 import com.dySweetFishPlugin.sql.dao.TunaService
@@ -179,7 +180,7 @@ class BE_Order_DeliveryChange_DYLK implements BusinessExecutor<InvokeCallParams,
             orderDeliveryInfo.setBookingDeliverTime(new Date(orderDeliveryInfo.bookingDeliverTimeLong))
             orderDeliveryInfo.setCustomerMemo(dyOrder["order"]["remark"] as String)
 
-            BigDecimal deliverFee = com.dderp.common.tool.ERPUtils((dyOrder["amount_info"]["freight_pay_amount"] as int) / 100).setScale(2, RoundingMode.CEILING)
+            BigDecimal deliverFee = ERPUtils.money(dyOrder["amount_info"]["freight_pay_amount"] as int)
             esOrder.setDeliverFee(deliverFee)
 
             esOrder.setDeliverAddressAll(address)

+ 3 - 7
conf/script/1000/orderApi/BE_Order_PartRefund_DYLK.groovy

@@ -3,7 +3,6 @@ import com.dderp.common.api.BusinessExecutor
 import com.dderp.common.api.StoreService
 import com.dderp.common.api.SupplierInitService
 import com.dderp.common.api.flycat.IncomePlatformService
-import com.dderp.common.api.flycat.IncomePlatformService
 import com.dderp.common.api.flycat.OrderSearchService
 import com.dderp.common.api.flycat.OrderService
 import com.dderp.common.api.flycat.OrderStepService
@@ -11,17 +10,15 @@ import com.dderp.common.datas.ERPModule
 import com.dderp.common.datas.ESKeys
 import com.dderp.common.datas.ReadOrderOption
 import com.dderp.common.datas.flycat.PlatformType
-import com.dderp.common.datas.flycat.RefundRequestStatus
-import com.dderp.common.datas.flycat.VoidFlagStatus
 import com.dderp.common.entity.base.InvokeCallParams
 import com.dderp.common.entity.base.InvokeCallResult
 import com.dderp.common.entity.order.BusinessOrder
 import com.dderp.common.entity.order.OrderAfterSaleBill
 import com.dderp.common.entity.order.OrderFinances
-import com.dderp.common.entity.order.OrderRefundRequest
 import com.dderp.common.entity.order.OrderStep
 import com.dderp.common.entity.site.ERPTokenUser
 import com.dderp.common.entity.store.StorePlatform
+import com.dderp.common.tool.ERPUtils
 import com.dySweetFishPlugin.elasticsearch.ESClient
 import com.dySweetFishPlugin.sql.TableIdService
 import com.dySweetFishPlugin.sql.dao.TunaService
@@ -39,7 +36,6 @@ import org.elasticsearch.common.xcontent.XContentType
 import org.rex.RMap
 
 import javax.annotation.Resource
-import java.math.RoundingMode
 import java.time.LocalDateTime
 import java.time.ZoneOffset
 
@@ -162,8 +158,8 @@ class BE_Order_PartRefund_DYLK implements BusinessExecutor<InvokeCallParams, Inv
 
         OrderFinances.update(esOrder.orderFinances, currentUser.id)
 
-        OrderStep orderStep = orderStepService.parseOrderStep(esOrder.id, "订单已部分退款,原因:" + refundReasonMsg,
-                "退款金额: " + ERPUtils.money(invokeOrder["user_refund_amount"] as int) +
+        OrderStep orderStep = orderStepService.parseOrderStep(esOrder.id, "订单已部分退款",
+                "原因:" + refundReasonMsg + " 退款金额: " + ERPUtils.money(invokeOrder["user_refund_amount"] as int) +
                         " 商户预计收入: " + esOrder.orderFinances.storeRealCollection, currentUser)
 
         //持久化

+ 1 - 1
conf/script/1000/orderApi/BE_Order_RejectOrder_DYLK.groovy

@@ -129,7 +129,7 @@ class BE_Order_RejectOrder_DYLK implements BusinessExecutor<InvokeCallParams, In
         BusinessOrder.update(esOrder, currentUser.id)
 
         OrderStep orderStep = orderStepService.parseOrderStep(esOrder.id,
-                "[" + storePlatform.platformName + "]商家拒绝接单: " + invokeOrder["description"], storePlatform.platformCode, currentUser)
+                "商家拒绝接单" , "[" + storePlatform.platformName + "] 原因: " + invokeOrder["description"], currentUser)
 
         OrderAfterSaleBill afterSaleBill = new OrderAfterSaleBill()
         afterSaleBill.setId(tableIdService.getTableIdMulti("deOrderAfterSaleBill.id", 1, dataSourceId, String.valueOf(supplierCode)))

+ 2 - 2
conf/script/1000/orderApi/BE_Order_UserRefundRequest_DYLK.groovy

@@ -144,8 +144,8 @@ class BE_Order_UserRefundRequest_DYLK implements BusinessExecutor<InvokeCallPara
         esOrder.setVoidFlagIn(VoidFlagStatus.requestRefund.value)
         BusinessOrder.update(esOrder, currentUser.id)
 
-        OrderStep orderStep = orderStepService.parseOrderStep(esOrder.id, "用户申请退款,原因:" + refundRequest.userRefundMemo,
-                storePlatform.platformCode, currentUser)
+        OrderStep orderStep = orderStepService.parseOrderStep(esOrder.id, "用户申请退款",
+                "[" + storePlatform.platformName + "]原因: " + refundRequest.userRefundMemo, currentUser)
 
         //持久化
         //订单主表

+ 3 - 3
ddCommon/src/main/java/com/dderp/common/api/flycat/OrderSearchService.java

@@ -94,7 +94,7 @@ public interface OrderSearchService extends ScriptService {
                                                            ReadOrderOption... options);
 
     /**
-     * 查询单个订单信息
+     * 查询单个订单退款申请
      * <br>在groovy里面使用可以按下面的方法调用
      * <br>RetResult<PrintOrder> orderResult = orderSearchService.searchBusinessOrder(new RMap<>("${ERPUtils.PARAM_SEARCH_ID}": 100L), currentUser, dataSourceId, supplierCode)
      * <br>或者在java里面封装一个
@@ -116,7 +116,7 @@ public interface OrderSearchService extends ScriptService {
 
 
     /**
-     * 多订单查询,无需分页参数,
+     * 多订单退款申请查询,无需分页参数,
      * <br>在groovy里面使用可以按下面的方法调用,比如通过多id获取订单
      * <br>RetResult<List<BusinessOrder></BusinessOrder>> orderResult = orderSearchService.searchBusinessOrderList(new RMap<>("${ERPUtils.PARAM_SEARCH_IDS}": "1,2,3"), currentUser, dataSourceId, supplierCode)
      * <br>或者在java里面封装一个
@@ -137,7 +137,7 @@ public interface OrderSearchService extends ScriptService {
                                                            ReadOrderOption[] options);
 
     /**
-     * 多订单分页查询
+     * 多订单退款申请分页查询
      *
      * @param searchData   查询条件
      * @param currentUser  操作人

+ 43 - 0
ddWebCore/src/main/java/com/dderp/webcore/rest/flycat/OrderRest.java

@@ -12,6 +12,7 @@ import com.dderp.common.entity.base.InvokeCallParams;
 import com.dderp.common.entity.base.InvokeCallResult;
 import com.dderp.common.entity.order.*;
 import com.dderp.common.entity.site.ERPTokenUser;
+import com.dderp.common.tool.ERPUtils;
 import com.dySweetFishPlugin.sql.RMapUtils;
 import com.sweetfish.net.http.*;
 import com.sweetfish.service.Local;
@@ -163,4 +164,46 @@ public class OrderRest extends BaseService {
                 }, getExecutor()
         );
     }
+
+
+    @RestMapping(name = "queryOrderRefundRequestList", auth = true, sort = 6, comment = "获取订单退款申请列表", methods = {"GET", "POST"})
+    @WebApiBean(result = true, type = OrderRefundRequest.class)
+    public CompletableFuture<RMap> queryOrderRefundRequestList(
+            @RestParam(name = "params", comment = "搜索内容", required = false) RMap searchData,
+            @RestParam(name = "page", comment = "分页信息", required = false) PageFlipper pageFlipper,
+            @RestParam(name = "&", comment = "登录用户,无需传入") ERPTokenUser currentUser,
+            @RestHeader(name = ERPHeader.HTTPHEADER_DATASOURCE) String dataSourceId,
+            @RestHeader(name = ERPHeader.HTTPHEADER_SUPPLIER) String supplierCode) {
+        return CompletableFuture.supplyAsync(
+                () -> {
+                    RetResult<List<OrderRefundRequest>> retResult = orderSearchService.searchOrderRefundRequestList(searchData, currentUser, null,
+                            pageFlipper, dataSourceId, Long.parseLong(supplierCode), null);
+                    if (retResult.isSuccess()) {
+                        return RMapUtils.successV2(retResult.getResult(), retResult.getAttachRMap(), retResult.getPageFlipper());
+                    }
+                    return RMapUtils.error(HttpCode.NOT_FOUND.value(), retResult.getRetinfo());
+                }, getExecutor()
+        );
+    }
+
+    @RestMapping(name = "getOrderRefundRequest", auth = true, sort = 7, comment = "获取订单退款申请详情", methods = {"GET", "POST"})
+    @WebApiBean(type = OrderRefundRequest.class, result = true)
+    public CompletableFuture<RMap> getOrderRefundRequest(
+            @RestParam(name = "idRefundRequest", comment = "订单退款申请id") long idRefundRequest,
+            @RestParam(name = "&", comment = "登录用户,无需传入") ERPTokenUser currentUser,
+            @RestHeader(name = ERPHeader.HTTPHEADER_DATASOURCE) String dataSourceId,
+            @RestHeader(name = ERPHeader.HTTPHEADER_SUPPLIER) String supplierCode) {
+        return CompletableFuture.supplyAsync(
+                () -> {
+                    RMap params = new RMap();
+                    params.set(ERPUtils.PARAM_SEARCH_ID, idRefundRequest);
+                    RetResult<OrderRefundRequest> result = orderSearchService.searchOrderRefundRequest(params,
+                            currentUser, dataSourceId, Long.parseLong(supplierCode), null);
+                    if (!result.isSuccess()) {
+                        return RMapUtils.error(HttpCode.BAD_REQUEST.value(), result.getRetinfo());
+                    }
+                    return RMapUtils.successV2(result.getResult(), null, null);
+                }, getExecutor()
+        );
+    }
 }