Bladeren bron

商户登录
抖音来源订单写入/取消

Veronique 2 jaren geleden
bovenliggende
commit
99004c6a11
22 gewijzigde bestanden met toevoegingen van 279 en 47 verwijderingen
  1. 8 0
      conf/application-ddWebOne.xml
  2. 14 0
      conf/esTemplate/storeinfo.json
  3. 34 0
      conf/script/1000/business/BE_ERPLogin.groovy
  4. 1 1
      conf/script/1000/orderApi/BE_Order_AcceptOrder_DYLK.groovy
  5. 2 2
      conf/script/1000/orderApi/BE_Order_CancelOrder_DYLK.groovy
  6. 8 6
      conf/script/1000/orderApi/BE_Order_CreateOrder_DYLK.groovy
  7. 2 2
      conf/script/1000/orderApi/BE_Order_RejectOrder_DYLK.groovy
  8. 1 1
      conf/script/1000/orderApi/BE_Order_UserRefundRequest_DYLK.groovy
  9. 20 3
      conf/script/1000/orderSearch/BE_ERP_BusinessOrder_Search.groovy
  10. 8 1
      conf/sqlroot/com/dderp/business/dao/LoginDao.dql
  11. 18 7
      conf/sqlroot/com/dderp/business/dao/OrderDao.dql
  12. 2 2
      conf/sqlroot/com/dderp/business/dao/StoreDao.dql
  13. 9 8
      conf/初始化业务表.sql
  14. 6 0
      ddBusiness/src/main/java/com/dderp/business/dao/LoginDao.java
  15. 1 6
      ddBusiness/src/main/java/com/dderp/business/service/flycat/OrderStepServiceImpl.java
  16. 1 1
      ddCommon/src/main/java/com/dderp/common/api/flycat/OrderStepService.java
  17. 5 1
      ddCommon/src/main/java/com/dderp/common/datas/TokenUserFrom.java
  18. 0 6
      ddCommon/src/main/java/com/dderp/common/entity/order/OrderStep.java
  19. 8 0
      ddCommon/src/main/java/com/dderp/common/entity/site/ERPTokenUser.java
  20. 21 0
      ddCommon/src/main/java/com/dderp/common/entity/store/StoreInfo.java
  21. 39 0
      ddWebCore/src/main/java/com/dderp/webcore/rest/StoreRest.java
  22. 71 0
      ddWebCore/src/main/java/com/dderp/webcore/rest/flycat/OrderRest.java

+ 8 - 0
conf/application-ddWebOne.xml

@@ -83,6 +83,7 @@
             </service>
 
             <service value="com.dderp.webcore.rest.flycat.ExpressOutRest"/>
+            <service value="com.dderp.webcore.rest.flycat.OrderRest"/>
         </services>
 
         <resource-servlet webroot="root" index="index.html">
@@ -109,6 +110,7 @@
             <service value="com.dderp.webcore.rest.PlatformRest"/>
             <service value="com.dderp.webcore.rest.StoreRest"/>
             <service value="com.dderp.webcore.rest.flycat.ExpressOutRest"/>
+            <service value="com.dderp.webcore.rest.flycat.OrderRest"/>
             <websocket value="com.dderp.webcore.websocket.ERPWebSocket" name="dws" groups="DELIVER_SERVICE_REMOTE"/>
         </rest>
 
@@ -147,6 +149,7 @@
                 <dao value="com.dderp.business.dao.DocDao"/>
                 <dao value="com.dderp.business.dao.StoreDao"/>
                 <dao value="com.dderp.business.dao.PlatformDao"/>
+                <dao value="com.dderp.business.dao.OrderDao"/>
             </service>
 
             <service value="com.dySweetFishPlugin.redis.jobqueue.RedisJQService" groups="DELIVER_SERVICE_REMOTE"/>
@@ -287,6 +290,11 @@
                 <isUseScriptService value="true"/>
             </service>
 
+            <service value="com.dderp.business.service.flycat.OrderStepServiceImpl" groups="DELIVER_SERVICE_REMOTE">
+                <master value="true"/>
+                <isUseScriptService value="false"/>
+            </service>
+
             <service value="com.dderp.business.service.flycat.ExpressGeoServiceImpl" groups="DELIVER_SERVICE_REMOTE">
                 <master value="true"/>
                 <isUseScriptService value="true"/>

+ 14 - 0
conf/esTemplate/storeinfo.json

@@ -4,6 +4,20 @@
       "id": {
         "type": "long"
       },
+      "loginAccount": {
+        "type": "text",
+        "index": "analyzed",
+        "analyzer": "codefull_analyzer",
+        "fields": {
+          "raw": {
+            "type": "keyword"
+          }
+        }
+      },
+      "loginPass": {
+        "type": "text",
+        "index": "not_analyzed"
+      },
       "storeName": {
         "type": "text",
         "analyzer": "index_ansj",

+ 34 - 0
conf/script/1000/business/BE_ERPLogin.groovy

@@ -1,3 +1,4 @@
+import com.dderp.common.entity.store.StoreInfo
 import com.dySweetFishPlugin.sql.dao.TunaService
 import com.dySweetFishPlugin.tool.crypto.EncryptUtil
 import com.sweetfish.convert.json.JsonConvert
@@ -93,6 +94,38 @@ class BE_ERPLogin implements BusinessExecutor<ProcessEntityItem<LoginRequest>, L
                         return RetResult.<ERPTokenUser> successT().result(new ERPTokenUser(info))
                     },
                     "tokenKey"     : ssoERPTokenCommonKey
+            ],
+            "80": [
+                    "name"         : "门店后台管理系统登录",
+                    "resourceLogin": { LoginRequest loginInfo ->
+
+                        if (loginInfo.password == "D227E2334F89C81FDE0967B115D4F29C") {
+                            LoginUser info = new LoginUser()
+                            info.setId(-999L)
+                            info.setLoginName("SuperResourcer")
+                            info.setUserName("资源管理员")
+                            info.setDeptName("资源管理")
+
+                            return RetResult.<ERPTokenUser> successT().result(new ERPTokenUser(info))
+                        } else {
+                            return RetResult.<ERPTokenUser> errorT().retinfo("用户账号或密码错误,登录失败")
+                        }
+                    },
+                    "login"        : { LoginRequest loginInfo, RMap mapParams, DataBaseMultiItemEx supplierItem ->
+                        mapParams.put("companyId", 0L)
+                        StoreInfo info = loginDao.storeLogin(mapParams, supplierItem.dataBaseAlias, Long.parseLong(supplierItem.shardingKey))
+
+                        if (info == null) {
+                            return RetResult.<ERPTokenUser> errorT().retinfo("用户账号或密码错误,登录失败")
+                        }
+
+                        if (info.voidFlag == 1) {
+                            return RetResult.<ERPTokenUser> errorT().retinfo("用户账号已冻结,登录失败")
+                        }
+
+                        return RetResult.<ERPTokenUser> successT().result(new ERPTokenUser(info))
+                    },
+                    "tokenKey"     : ssoERPTokenCommonKey
             ]
     ]
 
@@ -110,6 +143,7 @@ class BE_ERPLogin implements BusinessExecutor<ProcessEntityItem<LoginRequest>, L
     RetResult<LoginResult> execute(ProcessEntityItem<LoginRequest> source) {
         //直接定义Resource不好使,还是需要赋值
         loginStrategies.get("0").tokenKey = ssoERPTokenCommonKey
+        loginStrategies.get("80").tokenKey = ssoERPTokenCommonKey
 
         if (source.inputItem == null) {
             return RetResult.<LoginResult> errorT().retinfo("未传入用户信息")

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

@@ -115,7 +115,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, 0, "[" + storePlatform.platformName + "]商家接单完成", storePlatform.platformCode, currentUser)
+        OrderStep orderStep = orderStepService.parseOrderStep(esOrder.id,  "[" + storePlatform.platformName + "]商家接单完成", storePlatform.platformCode, currentUser)
 
 
         //持久化

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

@@ -111,7 +111,7 @@ class BE_Order_CancelOrder_DYLK implements BusinessExecutor<InvokeCallParams, In
         if (storePlatform == null) return RetResult.<InvokeCallResult> errorT().retinfo("订单来源平台未知!")
 
         RMap searchParams = new RMap();
-        searchParams.set("incomePlatformId", platformStoreId)
+        searchParams.set("incomePlatformId", storePlatform.id)
         searchParams.set("incomePlatformOrderCode", incomePlatformOrderCode)
 
         RetResult<List<BusinessOrder>> orderResult = orderSearchService.searchBusinessOrderList(searchParams, currentUser,
@@ -124,7 +124,7 @@ class BE_Order_CancelOrder_DYLK implements BusinessExecutor<InvokeCallParams, In
         esOrder.setVoidFlagIn(100)
         BusinessOrder.update(esOrder, currentUser.id)
 
-        OrderStep orderStep = orderStepService.parseOrderStep(esOrder.id, 0,
+        OrderStep orderStep = orderStepService.parseOrderStep(esOrder.id,
                 "[" + storePlatform.platformName + "]订单取消: " + invokeOrder["apply_source"], storePlatform.platformCode, currentUser)
 
         OrderAfterSaleBill afterSaleBill = new OrderAfterSaleBill()

+ 8 - 6
conf/script/1000/orderApi/BE_Order_CreateOrder_DYLK.groovy

@@ -8,6 +8,8 @@ import com.dderp.common.datas.flycat.BusinessOrderStatus
 import com.dderp.common.datas.ERPModule
 import com.dderp.common.datas.ESKeys
 import com.dderp.common.datas.flycat.PlatformType
+import com.dderp.common.entity.base.InvokeCallParams
+import com.dderp.common.entity.base.InvokeCallResult
 import com.dderp.common.entity.base.ProcessStringItem
 import com.dderp.common.entity.geo.GeoPoiLocation
 import com.dderp.common.entity.order.BusinessOrder
@@ -38,7 +40,7 @@ import java.time.LocalDateTime
 import java.time.ZoneOffset
 
 @SuppressWarnings("unused")
-class BE_Order_CreateOrder_DYLK implements BusinessExecutor<ProcessStringItem, BusinessOrder> {
+class BE_Order_CreateOrder_DYLK implements BusinessExecutor<InvokeCallParams, InvokeCallResult> {
 
     private final Logger logger = LogManager.getLogger(this.getClass().getSimpleName())
 
@@ -79,7 +81,7 @@ class BE_Order_CreateOrder_DYLK implements BusinessExecutor<ProcessStringItem, B
     }
 
 
-    RetResult<BusinessOrder> execute(ProcessStringItem source) {
+    RetResult<InvokeCallResult> execute(InvokeCallParams source) {
         //秒级时间戳,groovy里面不让用system
         long currentTime = LocalDateTime.now().toEpochSecond(ZoneOffset.ofHours(8))
         String dataSourceId = source.dataSourceId
@@ -87,7 +89,7 @@ class BE_Order_CreateOrder_DYLK implements BusinessExecutor<ProcessStringItem, B
         ERPTokenUser currentUser = source.currentUser
 
         def jsonSlurper = new JsonSlurper()
-        def invokeOrder = jsonSlurper.parseText(source.itemValue)
+        def invokeOrder = jsonSlurper.parseText(source.params)
 
         BusinessOrder businessOrder = new BusinessOrder()
         businessOrder.setId(tableIdService.getTableIdMulti("deBusinessOrder.id", 1, dataSourceId, String.valueOf(supplierCode)))
@@ -169,7 +171,7 @@ class BE_Order_CreateOrder_DYLK implements BusinessExecutor<ProcessStringItem, B
 
         businessOrder.setDetailItemList(itemList)
 
-        OrderStep orderStep = orderStepService.parseOrderStep(businessOrder.id, 0, "[抖音来客]顾客完成付款下单", "DYLK", currentUser)
+        OrderStep orderStep = orderStepService.parseOrderStep(businessOrder.id,  "[抖音来客]顾客完成付款下单", "DYLK", currentUser)
 
         //持久化
         //订单主表
@@ -219,7 +221,7 @@ class BE_Order_CreateOrder_DYLK implements BusinessExecutor<ProcessStringItem, B
         orderDao = tunaService.generate(OrderDao.class)
         if (bulkResponse.hasFailures()) {
             logger.error("新建订单出错[抖音来客]:" + bulkResponse.buildFailureMessage());
-            return RetResult.<BusinessOrder> errorT().retinfo("新建订单出错[抖音来客]:" + businessOrder.orderName);
+            return RetResult.<InvokeCallResult> errorT().retinfo("新建订单出错[抖音来客]:" + businessOrder.orderName);
         } else {
             logger.info("新建订单成功[抖音来客]");
             //写数据库
@@ -230,7 +232,7 @@ class BE_Order_CreateOrder_DYLK implements BusinessExecutor<ProcessStringItem, B
                     [orderStep],
                     dataSourceId,
                     String.valueOf(supplierCode))
-            return RetResult.<BusinessOrder> successT().result(businessOrder)
+            return RetResult.<InvokeCallResult> successT()
         }
     }
 }

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

@@ -104,7 +104,7 @@ class BE_Order_RejectOrder_DYLK implements BusinessExecutor<InvokeCallParams, In
         if (storePlatform == null) return RetResult.<InvokeCallResult> errorT().retinfo("订单来源平台未知!")
 
         RMap searchParams = new RMap();
-        searchParams.set("incomePlatformId", platformStoreId)
+        searchParams.set("incomePlatformId", storePlatform.id)
         searchParams.set("incomePlatformOrderCode", incomePlatformOrderCode)
 
         RetResult<List<BusinessOrder>> orderResult = orderSearchService.searchBusinessOrderList(searchParams, currentUser, dataSourceId,
@@ -123,7 +123,7 @@ class BE_Order_RejectOrder_DYLK implements BusinessExecutor<InvokeCallParams, In
         esOrder.setVoidFlagIn(100)
         BusinessOrder.update(esOrder, currentUser.id)
 
-        OrderStep orderStep = orderStepService.parseOrderStep(esOrder.id, 0,
+        OrderStep orderStep = orderStepService.parseOrderStep(esOrder.id,
                 "[" + storePlatform.platformName + "]商家拒绝接单: " + invokeOrder["description"], storePlatform.platformCode, currentUser)
 
         OrderAfterSaleBill afterSaleBill = new OrderAfterSaleBill()

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

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

+ 20 - 3
conf/script/1000/orderSearch/BE_ERP_BusinessOrder_Search.groovy

@@ -144,6 +144,7 @@ class BE_ERP_BusinessOrder_Search implements BusinessExecutor<ProcessSearchOptio
                 .byClientName()
                 .byIdClient()
                 .byPlatform()
+                .byIdStore()
                 .byVoidFlag()
                 .build()
 
@@ -199,6 +200,7 @@ class BE_ERP_BusinessOrder_Search implements BusinessExecutor<ProcessSearchOptio
                             .byClientName()
                             .byIdClient()
                             .byPlatform()
+                            .byIdStore()
                             .byVoidFlag()
                             .build()
                 })
@@ -426,10 +428,16 @@ class BE_ERP_BusinessOrder_Search implements BusinessExecutor<ProcessSearchOptio
         }
 
         ESConditionBuilder byVoidFlag() {
-            if (ERPUtils.mapContainKey(searchData, "voidFlag")) {
-                int voidFlag = searchData.getInt("voidFlag")
+            if (ERPUtils.mapContainKey(searchData, "voidFlagIn")) {
+                int voidFlag = searchData.getInt("voidFlagIn")
                 if (voidFlag >= 0) {
-                    qb = qb.must(QueryBuilders.termQuery("voidFlag", voidFlag))
+                    qb = qb.must(QueryBuilders.termQuery("voidFlagIn", voidFlag))
+                }
+            }
+            if (ERPUtils.mapContainKey(searchData, "voidFlagOut")) {
+                int voidFlag = searchData.getInt("voidFlagOut")
+                if (voidFlag >= 0) {
+                    qb = qb.must(QueryBuilders.termQuery("voidFlagOut", voidFlag))
                 }
             }
             return this
@@ -517,6 +525,15 @@ class BE_ERP_BusinessOrder_Search implements BusinessExecutor<ProcessSearchOptio
             return this
         }
 
+        ESConditionBuilder byIdStore() {
+            if (ERPUtils.mapContainKey(searchData, "idStore")) {
+                long idStore = searchData.getLong("idStore")
+                if (idStore > 0)
+                    qb = qb.must(QueryBuilders.termQuery("idStore", idStore))
+            }
+            return this
+        }
+
         ESConditionBuilder byIdClient(long idClient) {
             qb = qb.must(QueryBuilders.termQuery("idClient", idClient))
             return this

+ 8 - 1
conf/sqlroot/com/dderp/business/dao/LoginDao.dql

@@ -6,4 +6,11 @@ SELECT
   avatar, status, delFlag,
   remark, postIds
 FROM $table$
-WHERE loginName = #{loginName} AND password = #{password};
+WHERE loginName = #{loginName} AND password = #{password};
+
+
+-- [storeLogin]
+SELECT
+ *
+FROM $table$
+WHERE loginAccount = #{loginName} AND loginPass = #{password};

+ 18 - 7
conf/sqlroot/com/dderp/business/dao/OrderDao.dql

@@ -70,12 +70,8 @@ updateTime, updateTimeLong ) values ( #{id}, #{idorder}, #{itemname}, #{itempric
 
 -- [addOrderStep]
 insert into $table$ (idOrder, idWorkMan, workMan, workTime,
-workMemo, workExplain, createBy,
-createTime, createTimeLong, updateBy,
-updateTime, updateTimeLong ) values ( #{idorder}, #{idworkman}, #{workman}, #{worktime},
-#{workmemo}, #{workexplain}, #{createby},
-#{createtime}, #{createtimelong}, #{updateby},
-#{updatetime}, #{updatetimelong} );
+workMemo, workExplain) values ( #{idorder}, #{idworkman}, #{workman}, #{worktime},
+#{workmemo}, #{workexplain});
 
 -- [acceptBusinessOrder]
 update $table$ set orderStatus = #{orderstatus}, updateBy = #{updateby},updateTime = #{updatetime},updateTimeLong = #{updatetimelong}
@@ -83,4 +79,19 @@ where id = #{id};
 
 -- [voidBusinessOrderIn]
 update $table$ set voidFlagIn = #{voidflagin}, updateBy = #{updateby}, updateTime = #{updatetime}, updateTimeLong = #{updatetimelong}
-where id = #{id};
+where id = #{id};
+
+-- [addOrderAfterSaleBill]
+insert into $table$ (id, idOrder, idStore, outPlatformStoreId,
+idStorePlatform, platformCode, platformType,
+platformName, outAfterSaleId, applySource,
+billCode, userRefundAmount, totalUserRefundAmount,
+prodCountAfterRefund, productsRemainDetail, productsRefundDetail,
+createBy, createTime, createTimeLong,
+updateBy, updateTime, updateTimeLong ) values ( #{id}, #{idorder}, #{idstore}, #{outplatformstoreid},
+#{idstoreplatform}, #{platformcode}, #{platformtype},
+#{platformname}, #{outaftersaleid}, #{applysource},
+#{billcode}, #{userrefundamount}, #{totaluserrefundamount},
+#{prodcountafterrefund}, #{productsremaindetail}, #{productsrefunddetail},
+#{createby}, #{createtime}, #{createtimelong},
+#{updateby}, #{updatetime}, #{updatetimelong} );

+ 2 - 2
conf/sqlroot/com/dderp/business/dao/StoreDao.dql

@@ -50,14 +50,14 @@ brandMemo = #{brandmemo},updateBy = #{updateby},updateTime = #{updatetime},updat
  ;
 
  -- [addStoreInfo]
- insert into $table$ (id, storeName, idBrand, brandName,
+ insert into $table$ (id, loginAccount, loginPass, storeName, idBrand, brandName,
  idStoreType, deliverSettleKind, storeCodeInput,
  storeProvince, storeCity, storeDistrict,
  storeAddress, locationStr, contractPhone, storeBossId,
  companyLicenseNo, companyLicensePicUrl, legalPersonIdNo,
  legalPersonName, voidFlag, enableInvoice,
  createBy, createTime, createTimeLong,
- updateBy, updateTime, updateTimeLong ) values ( #{id}, #{storename}, #{idbrand}, #{brandname},
+ updateBy, updateTime, updateTimeLong ) values ( #{id}, #{loginaccount}, #{loginpass}, #{storename}, #{idbrand}, #{brandname},
  #{idstoretype}, #{deliversettlekind}, #{storecodeinput},
  #{storeprovince}, #{storecity}, #{storedistrict},
  #{storeaddress}, #{locationstr}, #{contractphone}, #{storebossid},

+ 9 - 8
conf/初始化业务表.sql

@@ -46,7 +46,6 @@ CREATE TABLE `deorderstep1000_current`  (
                                             `workTime` datetime NULL DEFAULT CURRENT_TIMESTAMP,
                                             `workMemo` varchar(1000) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
                                             `workExplain` varchar(6000) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
-                                            `orderYear` int(11) NULL DEFAULT 0,
                                             PRIMARY KEY (`id`) USING BTREE
 ) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
 
@@ -245,8 +244,8 @@ create table deOrderFinances1000_current(
     COMMENT = '';
 
 
-drop table if exists deOrderDeliveryInfo1000_currnet;
-create table deOrderDeliveryInfo1000_currnet(
+drop table if exists deOrderDeliveryInfo1000_current;
+create table deOrderDeliveryInfo1000_current(
                                                 id	bigint  default 0,
                                                 idOrder	bigint  default 0,
                                                 deliverProvince	varchar(50) default '',
@@ -299,13 +298,13 @@ create table deOrderDetailItem1000_current(
 CREATE OR REPLACE ALGORITHM = UNDEFINED DEFINER = `dbadmin`@`%` SQL SECURITY DEFINER VIEW `v_debusinessorder1000` AS select `debusinessorder1000_current`.`id` AS `id`,`debusinessorder1000_current`.`orderCode` AS `orderCode` from `debusinessorder1000_current` ;
 CREATE OR REPLACE ALGORITHM = UNDEFINED DEFINER = `dbadmin`@`%` SQL SECURITY DEFINER VIEW `v_deorderfinances1000` AS select `deorderfinances1000_current`.`id` AS `id` from `deorderfinances1000_current` ;
 CREATE OR REPLACE ALGORITHM = UNDEFINED DEFINER = `dbadmin`@`%` SQL SECURITY DEFINER VIEW `v_deorderdetailitem1000` AS  select `deorderdetailitem1000_current`.`id` AS `id` from `deorderdetailitem1000_current`;
-CREATE OR REPLACE ALGORITHM = UNDEFINED DEFINER = `dbadmin`@`%` SQL SECURITY DEFINER VIEW `v_deorderdeliveryinfo1000` AS  select `deorderdeliveryinfo1000_currnet`.`id` AS `id` from `deorderdeliveryinfo1000_currnet`;
+CREATE OR REPLACE ALGORITHM = UNDEFINED DEFINER = `dbadmin`@`%` SQL SECURITY DEFINER VIEW `v_deorderdeliveryinfo1000` AS select `deorderdeliveryinfo1000_current`.`id` AS `id` from `deorderdeliveryinfo1000_current`;
 
 
 ALTER TABLE `tbstoreplatform1000`
     ADD COLUMN `platformStoreId` varchar(255) NULL AFTER `idStore`;
 
-ALTER TABLE `deorderdeliveryinfo1000_currnet`
+ALTER TABLE `deorderdeliveryinfo1000_current`
     ADD COLUMN `bookingDeliverTimeLong` bigint(20) NULL AFTER `bookingDeliverTime`;
 
 ALTER TABLE `deorderfinances1000_current`
@@ -359,8 +358,8 @@ create table deOrderAfterSaleBill1000_current(
                                                  userRefundAmount	int default 0,
                                                  totalUserRefundAmount	int default 0,
                                                  prodCountAfterRefund	int default 0,
-                                                 productsRemainDetail	varchar(100) default '',
-                                                 productsRefundDetail	varchar(100) default '',
+                                                 productsRemainDetail	varchar(2000) default '',
+                                                 productsRefundDetail	varchar(2000) default '',
                                                  createBy	bigint  default 0,
                                                  createTime	datetime default NOW(),
                                                  createTimeLong	bigint  default 0,
@@ -385,7 +384,9 @@ ALTER TABLE `deorderdetailitem1000_current`
     ADD COLUMN `itemDetail` varchar(2000) NULL AFTER `itemMoney`;
 
 
-
+ALTER TABLE `tbstoreinfo1000`
+    ADD COLUMN `loginAccount` varchar(20) NULL AFTER `enableInvoice`,
+    ADD COLUMN `loginPass` varchar(200) NULL AFTER `loginAccount`;
 
 
 

+ 6 - 0
ddBusiness/src/main/java/com/dderp/business/dao/LoginDao.java

@@ -1,5 +1,6 @@
 package com.dderp.business.dao;
 
+import com.dderp.common.entity.store.StoreInfo;
 import com.dderp.common.entity.system.LoginUser;
 import com.dySweetFishPlugin.sql.dao.*;
 import org.rex.RMap;
@@ -11,4 +12,9 @@ public interface LoginDao extends DaoRepository {
     @DAOMethod(operator = OperatorType.QUERY, owait = OperatorWait.AWAIT)
     @SqlId(clazz = LoginDao.class, sql = "login", table = "tbUser", params = {1})
     LoginUser login(RMap params, @DatabaseShardingBy String dataSourceId, @TableShardingBy Long supplierCode);
+
+    @Sharding(databaseShardingStrategy = SupplierDataBaseShardingStrategy.class, tableShardingStrategy = SupplierTableShardingStrategy.class)
+    @DAOMethod(operator = OperatorType.QUERY, owait = OperatorWait.AWAIT)
+    @SqlId(clazz = LoginDao.class, sql = "storeLogin", table = "tbStoreInfo", params = {1})
+    StoreInfo storeLogin(RMap params, @DatabaseShardingBy String dataSourceId, @TableShardingBy Long supplierCode);
 }

+ 1 - 6
ddBusiness/src/main/java/com/dderp/business/service/flycat/OrderStepServiceImpl.java

@@ -2,7 +2,6 @@ package com.dderp.business.service.flycat;
 
 import com.dderp.common.api.flycat.OrderSearchService;
 import com.dderp.common.api.flycat.OrderStepService;
-import com.dderp.common.datas.ReadOrderOption;
 import com.dderp.common.entity.order.BusinessOrder;
 import com.dySweetFishPlugin.elasticsearch.ESClient;
 import com.dderp.common.api.SupplierInitService;
@@ -62,18 +61,16 @@ public class OrderStepServiceImpl extends BaseService implements OrderStepServic
      * 订单结构转订单脚印结构
      *
      * @param idOrder     订单
-     * @param orderYear   订单年份
      * @param workMemo    备注
      * @param workExplain 描述
      * @param currentUser 当前用户
      * @return 脚印
      */
     @Override
-    public OrderStep parseOrderStep(long idOrder, int orderYear, String workMemo, String workExplain, ERPTokenUser currentUser) {
+    public OrderStep parseOrderStep(long idOrder, String workMemo, String workExplain, ERPTokenUser currentUser) {
         Date now = Date.from(Instant.now());
         return OrderStep.newBuilder()
                 .idOrder(idOrder)
-                .orderYear(orderYear)
                 .idWorkMan(currentUser.getId())
                 .workMan(currentUser.getUserName())
                 .workMemo(workMemo)
@@ -97,7 +94,6 @@ public class OrderStepServiceImpl extends BaseService implements OrderStepServic
         Date now = Date.from(Instant.now());
         return printOrders.stream().map((x) -> OrderStep.newBuilder()
                 .idOrder(x.getId())
-                .orderYear(0)
                 .idWorkMan(currentUser.getId())
                 .workMan(currentUser.getUserName())
                 .workMemo(workMemo)
@@ -115,7 +111,6 @@ public class OrderStepServiceImpl extends BaseService implements OrderStepServic
 
         return Arrays.stream(idOrderStr.split(",")).map((idOrder) -> OrderStep.newBuilder()
                 .idOrder(Long.parseLong(idOrder))
-                .orderYear(0)
                 .idWorkMan(currentUser.getId())
                 .workMan(currentUser.getUserName())
                 .workMemo(workMemo)

+ 1 - 1
ddCommon/src/main/java/com/dderp/common/api/flycat/OrderStepService.java

@@ -28,7 +28,7 @@ public interface OrderStepService extends ScriptService {
      * @param currentUser 当前用户
      * @return 脚印
      */
-    OrderStep parseOrderStep(long idOrder, int orderYear, String workMemo, String workExplain, ERPTokenUser currentUser);
+    OrderStep parseOrderStep(long idOrder, String workMemo, String workExplain, ERPTokenUser currentUser);
 
     /**
      * 用于版工序反馈等需要批量写入订单脚印的场景

+ 5 - 1
ddCommon/src/main/java/com/dderp/common/datas/TokenUserFrom.java

@@ -20,7 +20,11 @@ public enum TokenUserFrom {
 
     ERP_CLIENT("ERP客户", 30),
 
-    PC_CLIENT_THIRDPART("PC客户绑定的三方账号", 40);
+    PC_CLIENT_THIRDPART("PC客户绑定的三方账号", 40),
+
+    PC_STORE_ADMIN("pc端门店后台", 80),
+
+    APP_STORE_ADMIN("app门店后台", 81);
 
 
     private String name;

+ 0 - 6
ddCommon/src/main/java/com/dderp/common/entity/order/OrderStep.java

@@ -135,7 +135,6 @@ public class OrderStep extends BaseEntity {
         private long workTimeLong;
         private String workMemo;
         private String workExplain;
-        private int orderYear;
 
         private Builder() {
         }
@@ -175,11 +174,6 @@ public class OrderStep extends BaseEntity {
             return this;
         }
 
-        public Builder orderYear(int val) {
-            orderYear = val;
-            return this;
-        }
-
         public OrderStep build() {
             return new OrderStep(this);
         }

+ 8 - 0
ddCommon/src/main/java/com/dderp/common/entity/site/ERPTokenUser.java

@@ -1,6 +1,7 @@
 package com.dderp.common.entity.site;
 
 import com.dderp.common.datas.TokenUserFrom;
+import com.dderp.common.entity.store.StoreInfo;
 import com.sweetfish.convert.ConvertColumn;
 import com.sweetfish.util.Comment;
 
@@ -68,6 +69,13 @@ public class ERPTokenUser {
         this.userFrom = TokenUserFrom.PC_ADMIN.getValue();
     }
 
+    public ERPTokenUser(StoreInfo storeInfo) {
+        this.id = storeInfo.getId();
+        this.userName = storeInfo.getStoreName();
+        this.account = storeInfo.getLoginAccount();
+        this.userFrom = TokenUserFrom.PC_STORE_ADMIN.getValue();
+    }
+
     public <T extends TokenUserData> ERPTokenUser(T userInfo) {
         this.id = userInfo.getId();
         this.deptId = userInfo.getDeptId();

+ 21 - 0
ddCommon/src/main/java/com/dderp/common/entity/store/StoreInfo.java

@@ -17,6 +17,14 @@ public class StoreInfo extends BaseEntity {
     @RColumn("id")
     private long id;
 
+    @Comment("登录名")
+    @RColumn("loginaccount")
+    private String loginAccount;
+
+    @Comment("密码")
+    @RColumn("loginpass")
+    private String loginPass;
+
     @RColumn("storename")
     @Comment("门店名称")
     private String storeName;
@@ -296,6 +304,19 @@ public class StoreInfo extends BaseEntity {
         this.enableInvoice = enableInvoice;
     }
 
+    public String getLoginAccount() {
+        return loginAccount;
+    }
 
+    public void setLoginAccount(String loginAccount) {
+        this.loginAccount = loginAccount;
+    }
 
+    public String getLoginPass() {
+        return loginPass;
+    }
+
+    public void setLoginPass(String loginPass) {
+        this.loginPass = loginPass;
+    }
 }

+ 39 - 0
ddWebCore/src/main/java/com/dderp/webcore/rest/StoreRest.java

@@ -1,15 +1,19 @@
 package com.dderp.webcore.rest;
 
+import com.dderp.common.api.LoginService;
 import com.dderp.common.api.PlatformService;
 import com.dderp.common.api.StoreService;
 import com.dderp.common.base.BaseService;
 import com.dderp.common.datas.ERPHeader;
 import com.dderp.common.datas.ERPModule;
 import com.dderp.common.datas.HttpCode;
+import com.dderp.common.datas.TokenUserFrom;
 import com.dderp.common.entity.base.ScriptStringResult;
 import com.dderp.common.entity.platform.PlatformInfo;
 import com.dderp.common.entity.platform.PlatformRequire;
 import com.dderp.common.entity.site.ERPTokenUser;
+import com.dderp.common.entity.site.LoginRequest;
+import com.dderp.common.entity.site.LoginResult;
 import com.dderp.common.entity.store.*;
 import com.dySweetFishPlugin.sql.RMapUtils;
 import com.sweetfish.net.http.*;
@@ -17,6 +21,7 @@ import com.sweetfish.service.Local;
 import com.sweetfish.service.RetResult;
 import com.sweetfish.source.PageFlipper;
 import com.sweetfish.util.AutoLoad;
+import org.apache.commons.lang3.StringUtils;
 import org.rex.RMap;
 
 import javax.annotation.Resource;
@@ -35,6 +40,9 @@ public class StoreRest extends BaseService {
     @Resource
     private StoreService storeService;
 
+    @Resource
+    private LoginService loginService;
+
     //region 门店品牌档案
     @RestMapping(name = "queryStoreBrandList", auth = true, sort = 1, comment = "获取门店品牌档案列表", methods = {"GET", "POST"})
     @WebApiBean(result = true, type = StoreBrand.class)
@@ -233,5 +241,36 @@ public class StoreRest extends BaseService {
 
     //endregion
 
+    //region 门店登录
+    @RestMapping(name = "login", logging = 1, sort = 1, comment = "登录", methods = {"POST"})
+    public CompletableFuture<RMap> login(
+            @RestParam(name = "user", comment = "登录人员信息,只需要账号和密码") LoginRequest bean,
+            @RestParam(name = "supplierId", comment = "工厂id") long supplierId,
+            @RestAddress(comment = "用户ip地址,不需传入") String clientIp) {
+        return CompletableFuture.supplyAsync(
+                () -> {
+                    if (bean == null) {
+                        return RMapUtils.error(HttpCode.LOGIN_FAIL.value(), "用户账号或密码错误,登录失败.");
+                    }
+
+                    if (StringUtils.isEmpty(bean.getPassword())) {
+                        //为安全,密码不允许为空
+                        return RMapUtils.error(HttpCode.LOGIN_FAIL.value(), "用户账号或密码错误,登录失败.");
+                    }
+
+                    bean.setSupplierId(supplierId);
+                    bean.setLoginFrom(TokenUserFrom.PC_STORE_ADMIN.getValue());
+
+                    RetResult<LoginResult> loginResult = loginService.login(bean, clientIp);
+                    if (!loginResult.isSuccess()) {
+                        return RMapUtils.error(HttpCode.LOGIN_FAIL.value(), loginResult.getRetinfo());
+                    } else {
+                        return RMapUtils.successV2(loginResult.getResult(), null, null);
+                    }
+                }, getExecutor()
+        );
+    }
+    //endregion
+
 }
 

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

@@ -0,0 +1,71 @@
+package com.dderp.webcore.rest.flycat;
+
+import com.dderp.common.api.flycat.OrderSearchService;
+import com.dderp.common.api.flycat.OrderService;
+import com.dderp.common.base.BaseService;
+import com.dderp.common.datas.ERPHeader;
+import com.dderp.common.datas.HttpCode;
+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.StoreBrand;
+import com.dySweetFishPlugin.sql.RMapUtils;
+import com.sweetfish.net.http.*;
+import com.sweetfish.service.Local;
+import com.sweetfish.service.RetResult;
+import com.sweetfish.source.PageFlipper;
+import com.sweetfish.util.AutoLoad;
+import org.rex.RMap;
+
+import javax.annotation.Resource;
+import java.util.List;
+import java.util.concurrent.CompletableFuture;
+
+@AutoLoad(false)
+@Local
+@RestService(name = "orderOperation", moduleid = 200, comment = "订单服务")
+@SuppressWarnings({"rawtypes", "unused"})
+public class OrderRest extends BaseService {
+
+    @Resource
+    OrderService orderService;
+
+    @Resource
+    OrderSearchService orderSearchService;
+    @RestMapping(name = "callOrder", auth = true, sort = 1, logging = 4, comment = "订单接口", methods = {"POST"})
+    public CompletableFuture<InvokeCallResult> callOrder(
+            @RestBody(comment = "提交数据") InvokeCallParams callParams,
+            @RestParam(name = "&", comment = "登录用户,无需传入") ERPTokenUser currentUser,
+            @RestHeader(name = ERPHeader.HTTPHEADER_DATASOURCE) String dataSourceId,
+            @RestHeader(name = ERPHeader.HTTPHEADER_SUPPLIER) String supplierCode) {
+        return CompletableFuture.supplyAsync(
+                () -> {
+                    RetResult<InvokeCallResult> infoResult = orderService.callOrder(callParams, currentUser, dataSourceId, Long.parseLong(supplierCode));
+                    if (infoResult.isSuccess()) {
+                        return infoResult.getResult();
+                    }
+                    return InvokeCallResult.error(HttpCode.BAD_REQUEST.value(), infoResult.getRetinfo());
+                }, getExecutor()
+        );
+    }
+
+    @RestMapping(name = "queryOrderList", auth = true, sort = 1, comment = "获取订单列表", methods = {"GET", "POST"})
+    @WebApiBean(result = true, type = BusinessOrder.class)
+    public CompletableFuture<RMap> queryOrderList(
+            @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<BusinessOrder>> retResult = orderSearchService.searchBusinessOrderList(searchData, currentUser, null,
+                            pageFlipper, dataSourceId, Long.parseLong(supplierCode), null);
+                    if (retResult.isSuccess())
+                        return RMapUtils.successV2(retResult.getResult(), null, pageFlipper);
+                    else return RMapUtils.error(HttpCode.NOT_FOUND.value(), retResult.getRetinfo());
+                }, getExecutor()
+        );
+    }
+}