zyp 3 週間 前
コミット
6975fae74f

+ 10 - 0
fs-admin/src/main/java/com/fs/task/StoreTask.java

@@ -105,6 +105,16 @@ public class StoreTask
     @Autowired
     private IFsStoreAfterSalesService fsStoreAfterSalesService;
 
+    public void PushErp() throws ParseException {
+        List<Long> ids = fsStoreOrderMapper.selectFsStoreOrderNoCreateOms();
+        for (Long id : ids) {
+            fsStoreOrderService.createOmsOrder(id);
+        }
+
+
+    }
+
+
     //每5分钟执行一次
     public void deliveryOp()
     {

+ 1 - 1
fs-admin/src/main/resources/application.yml

@@ -6,4 +6,4 @@ server:
 spring:
   profiles:
     active: dev
-    include: common,config-dev
+    include: common,config-zkzh

+ 3 - 0
fs-service-system/src/main/java/com/fs/store/mapper/FsStoreOrderMapper.java

@@ -1025,4 +1025,7 @@ public interface FsStoreOrderMapper
     FsStoreOrder selectOrderByUserIdLimit1(Long userId);
 
     List<FsStoreOrder> selectFsStoreOrderStatisticsByUserId(@Param("ids") List<Long> ids);
+
+    @Select("select id from fs_store_order WHERE `status`= 1  and  extend_order_id is null ")
+    List<Long> selectFsStoreOrderNoCreateOms();
 }

+ 4 - 4
fs-service-system/src/main/java/com/fs/store/service/impl/FsStoreCartServiceImpl.java

@@ -143,7 +143,7 @@ public class FsStoreCartServiceImpl implements IFsStoreCartService
                     .isBuy(cartParam.getIsBuy())
                     .build();
             storeCart.setCreateTime(new Date());
-//            checkProductStock(cartParam.getProductId(),storeCart.getProductAttrValueId());
+            checkProductStock(cartParam.getProductId(),storeCart.getProductAttrValueId());
             fsStoreCartMapper.insertFsStoreCart(storeCart);
             return R.ok().put("id",storeCart.getId());
 
@@ -169,7 +169,7 @@ public class FsStoreCartServiceImpl implements IFsStoreCartService
                         .isBuy(0)
                         .build();
                 storeCart.setCreateTime(new Date());
-//                checkProductStock(cartParam.getProductId(),storeCart.getProductAttrValueId());
+                checkProductStock(cartParam.getProductId(),storeCart.getProductAttrValueId());
                 fsStoreCartMapper.insertFsStoreCart(storeCart);
                 return R.ok().put("id",storeCart.getId());
             }
@@ -177,7 +177,7 @@ public class FsStoreCartServiceImpl implements IFsStoreCartService
                 storeCart=cart.get(0);
                 storeCart.setCartNum(cartParam.getCartNum() + cart.get(0).getCartNum());
                 storeCart.setUpdateTime(new Date());
-//                checkProductStock(cartParam.getProductId(),storeCart.getProductAttrValueId());
+                checkProductStock(cartParam.getProductId(),storeCart.getProductAttrValueId());
                 fsStoreCartMapper.updateFsStoreCart(storeCart);
                 return R.ok().put("id",storeCart.getId());
             }
@@ -199,7 +199,7 @@ public class FsStoreCartServiceImpl implements IFsStoreCartService
     @Override
     public R changeNum(long userId, FsStoreCartNumParam cartParam) {
         FsStoreCart cart=fsStoreCartMapper.selectFsStoreCartById(cartParam.getId());
-//        checkProductStock(cart.getProductId(),cart.getProductAttrValueId());
+        checkProductStock(cart.getProductId(),cart.getProductAttrValueId());
         cart.setCartNum(cartParam.getNumber());
         cart.setUpdateTime(new Date());
         fsStoreCartMapper.updateFsStoreCart(cart);

+ 11 - 39
fs-service-system/src/main/java/com/fs/store/service/impl/FsStoreOrderServiceImpl.java

@@ -45,6 +45,7 @@ import com.fs.erp.service.IErpOrderService;
 import com.fs.huifuPay.domain.HuiFuRefundResult;
 import com.fs.huifuPay.sdk.opps.core.request.V2TradePaymentScanpayRefundRequest;
 import com.fs.huifuPay.service.HuiFuService;
+import com.fs.kingbos.service.K9OrderService;
 import com.fs.pay.pay.domain.RefundResult;
 import com.fs.pay.pay.service.PayService;
 import com.fs.store.config.StoreConfig;
@@ -453,46 +454,20 @@ public class FsStoreOrderServiceImpl implements IFsStoreOrderService
         //计算金额
         FsStoreOrderComputeDTO dto=this.computedOrder(userId, computedParam);
         String cartIds = redisCache.getCacheObject("orderKey:" + param.getOrderKey());
-        Integer totalNum = 0;
+//        Integer totalNum = 0;
         BigDecimal integral = BigDecimal.ZERO;
         if(cartIds!=null){
             //获取购物车列表
             List<FsStoreCartQueryVO> carts = redisCache.getCacheObject("orderCarts:" + param.getOrderKey());
             //获取地址
             FsUserAddress address=userAddressMapper.selectFsUserAddressById(param.getAddressId());
-            //检测库存
-            //三种特定产品发YDSP001
-            int ydspHouse = 0;
-            //如果是美乳产品,发武汉仓库
-            Integer meiruCount=0;
-            for (FsStoreCartQueryVO cart : carts) {
-//                cartService.checkProductStock( cart.getProductId(),cart.getProductAttrValueId());
-                totalNum += cart.getCartNum();
-                integral = NumberUtil.add(integral,
-                        NumberUtil.mul(cart.getCartNum(), cart.getIntegral()));
-//                if(cart.getCateId()!=null&&cart.getCateId().equals(176L)){
-//                    meiruCount++;
-//                }
-                //判断是否是三种特定产品
-                if(cart.getProductId()!=null&&(cart.getProductId().equals(3168L)||cart.getProductId().equals(3184L)||cart.getProductId().equals(3185L))){
-                    ydspHouse++;
-                }
-            }
             //生成分布式唯一值
             String orderSn = IdUtil.getSnowflake(0, 0).nextIdStr();
             //是否使用积分
             Boolean isIntegral=false;
             //组合数据
             FsStoreOrder storeOrder = new FsStoreOrder();
-
-            //修改默认仓库
-            if(ydspHouse>0){
-//                storeOrder.setStoreHouseCode("WHSP001");
-                storeOrder.setStoreHouseCode("YDSP001");
-            }
-            else{
-                storeOrder.setStoreHouseCode("CQDS001");
-            }
+            storeOrder.setStoreHouseCode("CK01");
             storeOrder.setCompanyId(param.getCompanyId());
             storeOrder.setCompanyUserId(param.getCompanyUserId());
             if(param.getCompanyUserId()!=null){
@@ -586,13 +561,6 @@ public class FsStoreOrderServiceImpl implements IFsStoreOrderService
             if (flag==0) {
                 return R.error("订单创建失败");
             }
-            //收款单更新
-//            if(param.getPaymentId()!=null&&param.getPaymentId()>0){
-//                FsStorePayment payment=new FsStorePayment();
-//                payment.setOrderId(storeOrder.getId());
-//                payment.setPaymentId(param.getPaymentId());
-//                paymentService.updateFsStorePayment(payment);
-//            }
             //使用了积分扣积分
             if (dto.getUsedIntegral() > 0) {
                 this.decIntegral(userId, dto.getUsedIntegral(), dto.getDeductionPrice().doubleValue(),storeOrder.getId().toString());
@@ -966,7 +934,7 @@ public class FsStoreOrderServiceImpl implements IFsStoreOrderService
                     .isBuy(0)
                     .build();
             storeCart.setCreateTime(new Date());
-//            cartService.checkProductStock(productAttrValue.getProductId(),storeCart.getProductAttrValueId());
+            cartService.checkProductStock(productAttrValue.getProductId(),storeCart.getProductAttrValueId());
             cartService.insertFsStoreCart(storeCart);
             cartIds.add(storeCart.getId().toString());
         }
@@ -1089,7 +1057,7 @@ public class FsStoreOrderServiceImpl implements IFsStoreOrderService
 
                     }
                 }
-                //cartService.checkProductStock(attrValue.getProductId(),attrValue.getId(), goods.getCount() );
+                cartService.checkProductStock(attrValue.getProductId(),attrValue.getId());
             }
             //生成分布式唯一值
             String orderSn = IdUtil.getSnowflake(0, 0).nextIdStr();
@@ -1365,14 +1333,18 @@ public class FsStoreOrderServiceImpl implements IFsStoreOrderService
     }
 
 
+    @Autowired
+    private K9OrderService k9OrderService;
     @Override
     public void createOmsOrder(Long orderId) throws ParseException {
         FsStoreOrder order=fsStoreOrderMapper.selectFsStoreOrderById(orderId);
         if(!StringUtils.isEmpty(order.getExtendOrderId())&&order.getStatus()!=1){
             return;
         }
-        ErpOrder erpOrder = getErpOrder(order);
-        ErpOrderResponse response= erpOrderService.addOrder(erpOrder);
+//        ErpOrder erpOrder = getErpOrder(order);
+//        ErpOrderResponse response= erpOrderService.addOrder(erpOrder);
+        ErpOrderResponse response= k9OrderService.addOmsOrder(order.getId());
+
         //写入日志
         logger.info("ErpCreate:"+order.getOrderCode()+":"+JSONUtil.toJsonStr(response));
         //支付成功后 将订单号写入待发货的REDIS中

+ 110 - 0
fs-service-system/src/main/resources/application-config-zkzh.yml

@@ -0,0 +1,110 @@
+#中康配置
+fsConfig:
+  #快递鸟
+  kdnId: 1762981
+  kdnKeyId: 024e89b1-25c7-4725-8a3c-1bf1ca3ddcab
+  kdnUrl: http://api.kdniao.com/Ebusiness/EbusinessOrderHandle.aspx
+  kdnSubscribeUrl: https://api.kdniao.com/api/dist
+  kdnAddressUrl: https://api.kdniao.com/api/dist
+  #ERP配置
+  erpOpen: 1
+  erpAppKey: 108123
+  erpSessionKey: 9caae15474cb443ea22235e7bb86016b
+  erpSecret: 96f774dbd60847b59a16f92fd963a0c8
+  erpUrl: http://v2.api.guanyierp.com/rest/erp_open
+  erpShopCode: test
+  #ERP-hc
+  erpWdAppKey: beiliyou2-test
+  erpWdAppsecret: 6ec212f06
+  erpWdSid: apidevnew2
+  erpWdShopCode: beiliyou2-test
+  erpWdBaseUrl: https://api.wangdian.cn/openapi2/
+  erpWarehouseCode: beiliyou2-test
+
+  #金博ERP
+  kingbosan: "陕西中康"
+  kingbosSecret: 12CA1038CE8A45D1BA325898A3F2F029
+  kingbosUrl: http://zkyf888.gnway.cc:53868/?an=陕西中康&do=k9save&timestep=&sign=&corgid=zy01
+  corgid: zy01
+  cwarehouseCode: "CK01"
+  cwarehouseName: "合格仓"
+  #第三方支付配置
+  payOpen: 1
+  payPartnerId: 22051909542647100020
+  payKey: f256bd35aa36115d729537e1a1e01b92
+  payGateWayUrl: https://openapi.t2bank.cn/gateway.html
+  payNotifyUrl: https://api.yjf.runtzh.com/app/pay/payNotify
+  refundNotifyUrl: https://api.yjf.runtzh.com/app/pay/refundNotify
+  # 腾讯云IM
+  sdkAppId: 1400693126
+  sdkAppKey: 9afa6e63db943293680e37b3ba032e52cdb238112750806e82e58e9240604b70
+  # 处方接口Test
+#  prescribeUrl: https://yixian-new-test.yixianmedical.com/platform-shenfang/nethosp/webservice/jsonapi
+#  actId:  uporder
+#  appId: 1646204278
+#  manuId:  3981112bfcc64bf68f7744ffec7e3ca7
+#  callbackUrl:  https://api.hospital.ifeiyu100.com/app/prescribe/presribeNotify
+  # 处方接口g
+  prescribeUrl: https://app3.nxk520.com/platform-shenfang/nethosp/webservice/jsonapi
+  actId: uporder
+  appId: 1661496555
+  manuId: 0212af1e742b41b09089afeec98f8276
+  callbackUrl: https://api.yjf.runtzh.com/app/prescribe/presribeNotify
+logging:
+  level:
+    org.springframework.web: INFO
+    com.github.binarywang.demo.wx.cp: DEBUG
+    me.chanjar.weixin: DEBUG
+wx:
+  cp:
+    corpId: wwb2a1055fb6c9a7c2
+    appConfigs:
+      - agentId: 1000002
+        secret: bhj3402rPCT0YGcosffyTO3eUMs1G2MFHMspXVBNf-c
+        token: PPKOdAlCoMO
+        aesKey: PKvaxtpSv8NGpfTDm7VUHIK8Wok2ESyYX24qpXJAdMP
+  miniapp:
+    configs:
+      - appid: wx4115995705bb0ea0   #中康
+        secret: 58910ae743005c396012b029c7def579
+        token: Ncbnd7lJvkripVOpyTFAna6NAWCxCrvC
+        aesKey: HlEiBB55eaWUaeBVAQO3cWKWPYv1vOVQSq7nFNICw4E
+        msgDataFormat: JSON
+
+  pay:
+    appId: wx11a2ce7c2bbc4521 #微信公众号或者小程序等的appid
+    mchId: 1703311381 #微信支付商户号
+    mchKey: FotTIbIzn4AisMW7de712LJQIazSqqAl #微信支付商户密钥
+    v3Key: y5Eo99q93qzdQRAs6E2BDKIF7f3EnS3G
+    subAppId:  #服务商模式下的子商户公众账号ID
+    subMchId:  #服务商模式下的子商户号
+    keyPath: c:\\Tools\\cert\\apiclient_cert.p12 # p12证书的位置,可以指定绝对路径,也可以指定类路径(以classpath:开头)
+    notifyUrl:  https://userapp.bly.ylrztop.com/app/wxpay/wxPayNotify
+  mp:
+    useRedis: false
+    redisConfig:
+      host: 127.0.0.1
+      port: 6379
+      timeout: 2000
+    configs:
+      - appId: wx961fadab9bcb792b # 第一个公众号的appid  //公众号名称:云联
+        secret: eddde2a1d4ca0c6c443a67e542b6864c
+        token: PPKOdAlCoMO # 接口配置里的Token值
+        aesKey: Eswa6VjwtVMCcw03qZy6fWllgrv5aytIA1SZPEU0kU2 # 接口配置里的EncodingAESKey值
+jpush:
+  appKey: cc9a0120a3e4270c9cba340d
+  masterSecret: cfc2575d3cd7470d584c990c
+  liveTime: 1000
+  apnsProduction: true
+aifabu:  #爱链接
+  appKey: 7b471be905ab17e00f3b858c6710dd117601d008
+
+tencent_cloud_config:
+  secret_id: AKIDiMq9lDf2EOM9lIfqqfKo7FNgM5meD0sT
+  secret_key: u5SuS80342xzx8FRBukza9lVNHKNMSaB
+  bucket: zkzh-1323137866
+  app_id: 1323137866
+  region: chongqing
+  proxy: zkzh
+cloud_host:
+  company_name: 中康

+ 137 - 0
fs-service-system/src/main/resources/application-druid-zk.yml

@@ -0,0 +1,137 @@
+# 数据源配置
+spring:
+    # redis 配置
+    redis:
+        # 地址
+        host: 127.0.0.1
+        # 端口,默认为6379
+        port: 6379
+        # 密码
+        password:
+        # 连接超时时间
+        timeout: 30s
+        lettuce:
+            pool:
+                # 连接池中的最小空闲连接
+                min-idle: 0
+                # 连接池中的最大空闲连接
+                max-idle: 8
+                # 连接池的最大数据库连接数
+                max-active: 8
+                # #连接池最大阻塞等待时间(使用负值表示没有限制)
+                max-wait: -1ms
+        database: 0
+    datasource:
+        mysql:
+            type: com.alibaba.druid.pool.DruidDataSource
+            driverClassName: com.mysql.cj.jdbc.Driver
+            druid:
+                # 主库数据源
+                master:
+                    url: jdbc:mysql://127.0.0.1:3306/jz_store?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
+                    username: root
+                    password: sP4dQO0BzgeNkKuJ
+                # 从库数据源
+                slave:
+                    # 从数据源开关/默认关闭
+                    enabled: false
+                    url:
+                    username:
+                    password:
+                # 初始连接数
+                initialSize: 5
+                # 最小连接池数量
+                minIdle: 10
+                # 最大连接池数量
+                maxActive: 20
+                # 配置获取连接等待超时的时间
+                maxWait: 60000
+                # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
+                timeBetweenEvictionRunsMillis: 60000
+                # 配置一个连接在池中最小生存的时间,单位是毫秒
+                minEvictableIdleTimeMillis: 300000
+                # 配置一个连接在池中最大生存的时间,单位是毫秒
+                maxEvictableIdleTimeMillis: 900000
+                # 配置检测连接是否有效
+                validationQuery: SELECT 1 FROM DUAL
+                testWhileIdle: true
+                testOnBorrow: false
+                testOnReturn: false
+                webStatFilter:
+                    enabled: true
+                statViewServlet:
+                    enabled: true
+                    # 设置白名单,不填则允许所有访问
+                    allow:
+                    url-pattern: /druid/*
+                    # 控制台管理用户名和密码
+                    login-username: fs
+                    login-password: 123456
+                filter:
+                    stat:
+                        enabled: true
+                        # 慢SQL记录
+                        log-slow-sql: true
+                        slow-sql-millis: 1000
+                        merge-sql: true
+                    wall:
+                        config:
+                            multi-statement-allow: true
+        sop:
+            type: com.alibaba.druid.pool.DruidDataSource
+            driverClassName: com.mysql.cj.jdbc.Driver
+            druid:
+                # 主库数据源
+                master:
+                    url: jdbc:mysql://127.0.0.1:3306/sop?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
+                    username: root
+                    password: sP4dQO0BzgeNkKuJ
+                # 初始连接数
+                initialSize: 5
+                # 最小连接池数量
+                minIdle: 10
+                # 最大连接池数量
+                maxActive: 20
+                # 配置获取连接等待超时的时间
+                maxWait: 60000
+                # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
+                timeBetweenEvictionRunsMillis: 60000
+                # 配置一个连接在池中最小生存的时间,单位是毫秒
+                minEvictableIdleTimeMillis: 300000
+                # 配置一个连接在池中最大生存的时间,单位是毫秒
+                maxEvictableIdleTimeMillis: 900000
+                # 配置检测连接是否有效
+                validationQuery: SELECT 1 FROM DUAL
+                testWhileIdle: true
+                testOnBorrow: false
+                testOnReturn: false
+                webStatFilter:
+                    enabled: true
+                statViewServlet:
+                    enabled: true
+                    # 设置白名单,不填则允许所有访问
+                    allow:
+                    url-pattern: /druid/*
+                    # 控制台管理用户名和密码
+                    login-username: fs
+                    login-password: 123456
+                filter:
+                    stat:
+                        enabled: true
+                        # 慢SQL记录
+                        log-slow-sql: true
+                        slow-sql-millis: 1000
+                        merge-sql: true
+                    wall:
+                        config:
+                            multi-statement-allow: true
+rocketmq:
+    name-server: rmq-1243b25nj.rocketmq.gz.public.tencenttdmq.com:8080 # RocketMQ NameServer 地址
+    producer:
+        group: my-producer-group
+        access-key: ak1243b25nj17d4b2dc1a03 # 替换为实际的 accessKey
+        secret-key: sk08a7ea1f9f4b0237 # 替换为实际的 secretKey
+    consumer:
+        group: test-group
+        access-key: ak1243b25nj17d4b2dc1a03 # 替换为实际的 accessKey
+        secret-key: sk08a7ea1f9f4b0237 # 替换为实际的 secretKey

+ 1 - 0
pom.xml

@@ -221,6 +221,7 @@
         <module>fs-qw-api</module>
         <module>fs-qw-task</module>
         <module>fs-ad-api</module>
+        <module>fs-qw-api-msg</module>
     </modules>
     <packaging>pom</packaging>