Browse Source

初始化商户密码

Veronique 2 years ago
parent
commit
5cf0aac828

+ 128 - 0
conf/script/1000/orderApi/BE_Order_ProcessRefundRequest.groovy

@@ -0,0 +1,128 @@
+import com.dderp.business.dao.OrderDao
+import com.dderp.common.api.BusinessExecutor
+import com.dderp.common.api.StoreService
+import com.dderp.common.api.SupplierInitService
+import com.dderp.common.api.flycat.DouyinService
+import com.dderp.common.api.flycat.OrderSearchService
+import com.dderp.common.api.flycat.OrderService
+import com.dderp.common.api.flycat.OrderStepService
+import com.dderp.common.datas.ERPModule
+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.site.ERPTokenUser
+import com.dderp.common.entity.store.StorePlatform
+import com.dySweetFishPlugin.elasticsearch.ESClient
+import com.dySweetFishPlugin.sql.TableIdService
+import com.dySweetFishPlugin.sql.dao.TunaService
+import com.sweetfish.convert.json.JsonConvert
+import com.sweetfish.service.RetResult
+import groovy.json.JsonSlurper
+import org.apache.logging.log4j.LogManager
+import org.apache.logging.log4j.Logger
+
+import javax.annotation.Resource
+import java.time.LocalDateTime
+import java.time.ZoneOffset
+
+@SuppressWarnings("unused")
+class BE_Order_ProcessRefundRequest implements BusinessExecutor<InvokeCallParams, InvokeCallResult> {
+
+    private final Logger logger = LogManager.getLogger(this.getClass().getSimpleName())
+
+    @Resource
+    private JsonConvert jsonConvert
+
+    @Resource
+    private TableIdService tableIdService
+
+    @Resource
+    private StoreService storeService
+
+    @Resource
+    private ESClient esClient
+
+    @Resource
+    private SupplierInitService supplierInitService
+
+    @Resource
+    private OrderStepService orderStepService
+
+    @Resource
+    private OrderService orderService
+
+    @Resource
+    private OrderSearchService orderSearchService
+
+    @Resource
+    private DouyinService douyinService
+
+    @Resource
+    private TunaService tunaService
+
+    private OrderDao orderDao
+
+    @Override
+    String scriptName() {
+        return "商户同意/拒绝退款请求"
+    }
+
+    @Override
+    ERPModule module() {
+        return ERPModule.ORDER_API
+    }
+
+    @Override
+    RetResult<InvokeCallParams> beforeExecute(InvokeCallParams source) {
+        return super.beforeExecute(source)
+    }
+
+    /*
+    params : {
+        "idRefundRequest" : 2 ,                         客户退款申请id
+        "approve" : 0 ,                                 拒绝0同意1
+        "rejectReasonCode" : "101,102,103" ,            拒绝原因代码
+        "rejectMemo" : "拒绝原因备注"                     拒绝原因备注
+    }
+    */
+
+    RetResult<InvokeCallResult> execute(InvokeCallParams source) {
+        //秒级时间戳,groovy里面不让用system
+        long currentTime = LocalDateTime.now().toEpochSecond(ZoneOffset.ofHours(8))
+        String dataSourceId = source.dataSourceId
+        long supplierCode = source.supplierCode
+        ERPTokenUser currentUser = source.currentUser
+
+        def jsonSlurper = new JsonSlurper()
+        def invokeOrder = jsonSlurper.parseText(source.params)
+        long idOrder = invokeOrder["idOrder"] as Long
+        RetResult<BusinessOrder> orderResult = orderSearchService.getBusinessOrder(idOrder, currentUser, dataSourceId, supplierCode, null)
+        if (!orderResult.isSuccess()) return RetResult.<InvokeCallResult> errorT().retinfo(orderResult.retinfo)
+
+        BusinessOrder esOrder = orderResult.result
+
+        StorePlatform storePlatform = storeService.getStorePlatformInfo(esOrder.incomePlatformId, supplierCode)
+        if (storePlatform == null) return RetResult.<InvokeCallResult> errorT().retinfo("订单来源平台未知!")
+
+        //根据订单来源平台,回调平台的接单接口
+        switch (storePlatform.platformCode) {
+            case "DYLK": {
+                //抖音来客
+                def postBody = [
+                        order_id:
+                                esOrder.incomePlatformOrderCode
+                ]
+                String responseStr = douyinService.postInvoker("/goodlife/v1/trade/buy/merchant_confirm_order/", jsonConvert.convertTo(postBody))
+                def response = jsonSlurper.parseText(responseStr)
+                if (response["data"]["error_code"] as Integer == 0) {
+                    return RetResult.<InvokeCallResult> successT()
+                } else {
+                    //todo 抖音侧调用失败,怎么处理?
+                    logger.error("[抖音来客]商户接单平台接口调用失败:" + response["data"]["description"] as String)
+                    return RetResult.<InvokeCallResult> errorT().retinfo("[抖音来客]商户接单平台接口调用失败:" + response["data"]["description"] as String)
+                }
+            }
+        }
+        return RetResult.<InvokeCallResult> errorT().retinfo("订单来源平台未知!")
+    }
+}

+ 9 - 0
conf/script/1000/scriptFiles/refuseToRefundReason_DYLK.json

@@ -0,0 +1,9 @@
+{
+  "101": "商家已出餐",
+  "102": "骑手已在取货途中",
+  "103": "其他原因",
+  "104": "商品已送出",
+  "105": "已与用户达成一致",
+  "106": "用户已收到商品",
+  "107": "餐品已在制作中"
+}

+ 26 - 0
ddBusiness/src/main/java/com/dderp/business/service/StoreServiceImpl.java

@@ -16,6 +16,7 @@ import com.dderp.common.tool.ERPUtils;
 import com.dySweetFishPlugin.elasticsearch.ESClient;
 import com.dySweetFishPlugin.sql.TableIdService;
 import com.dySweetFishPlugin.sql.dao.TunaService;
+import com.dySweetFishPlugin.tool.crypto.EncryptUtil;
 import com.sweetfish.convert.json.JsonConvert;
 import com.sweetfish.service.Local;
 import com.sweetfish.service.RetResult;
@@ -69,6 +70,9 @@ public class StoreServiceImpl extends BaseService implements StoreService {
 
     private StoreDao storeDao;
 
+    @Resource(name = "property.passwordSalt")
+    private String passwordSalt;
+
     @Override
     public void start(AnyValue config) {
         super.start(config);
@@ -386,6 +390,9 @@ public class StoreServiceImpl extends BaseService implements StoreService {
         if (StringUtils.isBlank(storeInfo.getStoreName()))
             return RetResult.<StoreInfo>errorT().retinfo("门店名称不可为空");
 
+        if (StringUtils.isBlank(storeInfo.getLoginAccount()))
+            return RetResult.<StoreInfo>errorT().retinfo("门店登陆账号不可为空");
+
         //其他是否必须输入 前端判断
         //先查一下有没有重名的平台信息
         StoreBrand esInfo = this.getESOneInfo(esClient, jsonConvert,
@@ -401,10 +408,29 @@ public class StoreServiceImpl extends BaseService implements StoreService {
 
         if (esInfo != null) return RetResult.<StoreInfo>errorT().retinfo("已存在同名的门店");
 
+        esInfo = this.getESOneInfo(esClient, jsonConvert,
+                StoreBrand.class,
+                (a) -> {
+                    BoolQueryBuilder qb = QueryBuilders.boolQuery().must(QueryBuilders.typeQuery(ESKeys.ES_DELIVER_STORE_INFO_TYPE));
+                    qb.must(QueryBuilders.termQuery("loginAccount.raw", storeInfo.getLoginAccount()));
+
+                    return qb;
+                },
+                keysService.getESKey(ESKeys.ES_DELIVER_STORE_INFO_INDEX, supplierCode),
+                null);
+
+        if (esInfo != null) return RetResult.<StoreInfo>errorT().retinfo("已存在同账号的门店");
+
         storeInfo.setId(tableIdService.getTableIdMulti("tbStoreInfo.id", 1, dataSourceId, String.valueOf(supplierCode)));
         if (storeInfo.getLocation() != null) {
             storeInfo.setLocationStr(jsonConvert.convertTo(storeInfo.getLocation()));
         }
+
+        //密码初始化和账号一样
+        if (StringUtils.isNotBlank(storeInfo.getLoginAccount())) {
+            storeInfo.setLoginPass(EncryptUtil.md5Digest(storeInfo.getLoginAccount() + passwordSalt));
+        }
+
         StoreInfo.create(storeInfo, currentUser.getId());
         storeInfo.setEnableInvoice(0);