Explorar el Código

Merge remote-tracking branch 'origin/master'

吴树波 hace 1 mes
padre
commit
46f403ddc2
Se han modificado 23 ficheros con 655 adiciones y 31 borrados
  1. 55 3
      fs-common/src/main/java/com/fs/common/config/FSSysConfig.java
  2. 1 1
      fs-company-app/src/main/java/com/fs/app/controller/WxCompanyUserController.java
  3. 13 0
      fs-service-system/src/main/java/com/fs/course/domain/FsUserCoursePeriod.java
  4. 7 0
      fs-service-system/src/main/java/com/fs/course/service/impl/FsUserCoursePeriodDaysServiceImpl.java
  5. 9 0
      fs-service-system/src/main/java/com/fs/course/service/impl/FsUserCoursePeriodServiceImpl.java
  6. 29 0
      fs-service-system/src/main/java/com/fs/kingbos/domian/KbStockRequest.java
  7. 48 0
      fs-service-system/src/main/java/com/fs/kingbos/domian/KbStockResponse.java
  8. 33 0
      fs-service-system/src/main/java/com/fs/kingbos/domian/KingbosOrderD1Data.java
  9. 67 0
      fs-service-system/src/main/java/com/fs/kingbos/domian/KingbosOrderData.java
  10. 12 0
      fs-service-system/src/main/java/com/fs/kingbos/domian/KingbosOrderRequest.java
  11. 10 0
      fs-service-system/src/main/java/com/fs/kingbos/domian/KingbosOrderResponse.java
  12. 20 0
      fs-service-system/src/main/java/com/fs/kingbos/domian/KingbosRefundOrderD1Data.java
  13. 25 0
      fs-service-system/src/main/java/com/fs/kingbos/domian/KingbosRefundOrderData.java
  14. 12 0
      fs-service-system/src/main/java/com/fs/kingbos/domian/KingbosRefundOrderRequest.java
  15. 15 0
      fs-service-system/src/main/java/com/fs/kingbos/service/K9OrderService.java
  16. 19 0
      fs-service-system/src/main/java/com/fs/kingbos/service/K9StockService.java
  17. 152 0
      fs-service-system/src/main/java/com/fs/kingbos/service/impl/K9OrderServiceImpl.java
  18. 49 0
      fs-service-system/src/main/java/com/fs/kingbos/service/impl/K9StockServiceImpl.java
  19. 12 0
      fs-service-system/src/main/java/com/fs/kingbos/util/SignUtil.java
  20. 26 0
      fs-service-system/src/main/java/com/fs/kingbos/util/UrlUtil.java
  21. 25 27
      fs-service-system/src/main/java/com/fs/store/service/impl/FsStoreCartServiceImpl.java
  22. 7 0
      fs-service-system/src/main/resources/application-config.yml
  23. 9 0
      fs-service-system/src/main/resources/mapper/course/FsUserCoursePeriodMapper.xml

+ 55 - 3
fs-common/src/main/java/com/fs/common/config/FSSysConfig.java

@@ -1,14 +1,12 @@
 package com.fs.common.config;
 
 
-import lombok.Data;
 import org.springframework.boot.context.properties.ConfigurationProperties;
 import org.springframework.stereotype.Component;
 
 /**
  * 读取项目相关配置
  *
-
  */
 @Component
 @ConfigurationProperties(prefix = "fs-config")
@@ -43,7 +41,13 @@ public class FSSysConfig
     String payGateWayUrl;
     String payNotifyUrl;
     String refundNotifyUrl;
-
+    //金博erp
+    private String kingbosan;//账套名称
+    private String kingbosSecret;//金博密钥
+    private String kingbosUrl;//金博地址
+    private String corgid;//机构编码
+    private String cwarehouseCode;
+    private String cwarehouseName;
 
     public String getKdnId() {
         return kdnId;
@@ -236,4 +240,52 @@ public class FSSysConfig
     public void setRefundNotifyUrl(String refundNotifyUrl) {
         this.refundNotifyUrl = refundNotifyUrl;
     }
+
+    public String getKingbosan() {
+        return kingbosan;
+    }
+
+    public void setKingbosan(String kingbosan) {
+        this.kingbosan = kingbosan;
+    }
+
+    public String getCorgid() {
+        return corgid;
+    }
+
+    public void setCorgid(String corgid) {
+        this.corgid = corgid;
+    }
+
+    public String getKingbosUrl() {
+        return kingbosUrl;
+    }
+
+    public void setKingbosUrl(String kingbosUrl) {
+        this.kingbosUrl = kingbosUrl;
+    }
+
+    public String getKingbosSecret() {
+        return kingbosSecret;
+    }
+
+    public void setKingbosSecret(String kingbosSecret) {
+        this.kingbosSecret = kingbosSecret;
+    }
+
+    public String getCwarehouseCode() {
+        return cwarehouseCode;
+    }
+
+    public void setCwarehouseCode(String cwarehouseCode) {
+        this.cwarehouseCode = cwarehouseCode;
+    }
+
+    public String getCwarehouseName() {
+        return cwarehouseName;
+    }
+
+    public void setCwarehouseName(String cwarehouseName) {
+        this.cwarehouseName = cwarehouseName;
+    }
 }

+ 1 - 1
fs-company-app/src/main/java/com/fs/app/controller/WxCompanyUserController.java

@@ -36,7 +36,7 @@ import org.springframework.web.bind.annotation.*;
 import java.util.Date;
 import java.util.Objects;
 
-@Api("微信小程序相关接口")
+@Api("微信小程序相关接口(暂废弃,后面再删除)")
 @RestController
 @RequestMapping(value = "/app/wx/miniapp")
 @Slf4j

+ 13 - 0
fs-service-system/src/main/java/com/fs/course/domain/FsUserCoursePeriod.java

@@ -2,6 +2,7 @@ package com.fs.course.domain;
 
 import java.time.LocalDate;
 import java.time.LocalDateTime;
+import java.time.LocalTime;
 import java.util.Date;
 import java.util.List;
 
@@ -82,6 +83,18 @@ public class FsUserCoursePeriod
     @Excel(name = "营期状态,1-未开始,2-进行中,3-已结束")
     private Long periodStatus;
 
+    @JsonFormat(pattern = "HH:mm:ss")
+    @Excel(name = "开始看课时间")
+    private LocalTime viewStartTime;
+
+    @JsonFormat(pattern = "HH:mm:ss")
+    @Excel(name = "结束看课时间")
+    private LocalTime viewEndTime;
+
+    @JsonFormat(pattern = "HH:mm:ss")
+    @Excel(name = "领取红包结束时间")
+    private LocalTime lastJoinTime;
+
     @TableField(exist = false)
     private List<Long> companyIdList;
 }

+ 7 - 0
fs-service-system/src/main/java/com/fs/course/service/impl/FsUserCoursePeriodDaysServiceImpl.java

@@ -160,6 +160,13 @@ public class FsUserCoursePeriodDaysServiceImpl extends ServiceImpl<FsUserCourseP
             day.setLastJoinTime(LocalDateTime.of(day.getDayDate(), entity.getJoinTime()));
             day.setVideoId(e);
             day.setCreateTime(new Date());
+            // 默认开启今天及以后的两天
+            LocalDate compareDay = LocalDate.now().plusDays(1);
+            if(day.getDayDate().isBefore(compareDay)){
+                day.setStatus(1);
+            } else {
+                day.setStatus(0);
+            }
             return day;
         }).collect(Collectors.toList());
         super.saveBatch(collect);

+ 9 - 0
fs-service-system/src/main/java/com/fs/course/service/impl/FsUserCoursePeriodServiceImpl.java

@@ -1,5 +1,6 @@
 package com.fs.course.service.impl;
 
+import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.util.List;
 import com.fs.common.utils.DateUtils;
@@ -56,6 +57,14 @@ public class FsUserCoursePeriodServiceImpl implements IFsUserCoursePeriodService
     public int insertFsUserCoursePeriod(FsUserCoursePeriod fsUserCoursePeriod)
     {
         fsUserCoursePeriod.setCreateTime(LocalDateTime.now());
+        // 设置营期状态
+        if(LocalDate.now().isBefore(fsUserCoursePeriod.getPeriodStartingTime())){
+            fsUserCoursePeriod.setPeriodStatus(1L);
+        } else if(LocalDate.now().isAfter(fsUserCoursePeriod.getPeriodEndTime())){
+            fsUserCoursePeriod.setPeriodStatus(3L);
+        } else{
+            fsUserCoursePeriod.setPeriodStatus(2L);
+        }
         return fsUserCoursePeriodMapper.insertFsUserCoursePeriod(fsUserCoursePeriod);
     }
 

+ 29 - 0
fs-service-system/src/main/java/com/fs/kingbos/domian/KbStockRequest.java

@@ -0,0 +1,29 @@
+package com.fs.kingbos.domian;
+
+import com.alibaba.fastjson.annotation.JSONField;
+import lombok.Builder;
+import lombok.Data;
+
+@Data
+@Builder
+public class KbStockRequest {
+
+    /**
+     * 单据ID
+     */
+    @JSONField(name = "key", ordinal = 1)
+    @Builder.Default
+    private String key = "GoodStock";
+
+    /**
+     * 仓库编码
+     */
+    @JSONField(name = "ckid", ordinal = 2)
+    private String stockCode;
+
+    /**
+     * 商品编码 【注:不传值,默认查询对应仓库所有商品库存;传值查询对应商品库存。传值格式为:商品编码+英文逗号。如:123,456,789】
+     */
+    @JSONField(name = "cgoodsid", ordinal = 3)
+    private String goodsCode;
+}

+ 48 - 0
fs-service-system/src/main/java/com/fs/kingbos/domian/KbStockResponse.java

@@ -0,0 +1,48 @@
+package com.fs.kingbos.domian;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.alibaba.fastjson.annotation.JSONField;
+import lombok.Data;
+
+@Data
+public class KbStockResponse {
+
+    /**
+     * true:请求成功;false:请求失败;
+     */
+    @JSONField(name = "IsSuccess")
+    private Boolean success;
+
+    /**
+     * 提示消息
+     */
+    @JSONField(name = "errmsg")
+    private String msg;
+
+    /**
+     * 返回数据
+     */
+    @JSONField(name = "data")
+    private String data;
+
+    /**
+     * 库存
+     */
+    private Integer stock;
+
+    public Integer getStock() {
+        int stocks = 0;
+        JSONArray dataArray = JSON.parseArray(this.data);
+        for (int i = 0; i < dataArray.size(); i++) {
+            JSONObject base = dataArray.getJSONObject(i);
+            for (Object item : base.getJSONArray("base")) {
+                JSONObject json = (JSONObject) item;
+                stocks += json.getIntValue("fqty");
+            }
+        }
+
+        return stocks;
+    }
+}

+ 33 - 0
fs-service-system/src/main/java/com/fs/kingbos/domian/KingbosOrderD1Data.java

@@ -0,0 +1,33 @@
+package com.fs.kingbos.domian;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+public class KingbosOrderD1Data {
+    // OMS发货单号
+    private String cdo_id;
+    // OMS订单号
+    private String co_id;
+    // 药品编码
+    private String csku_id;
+    // ERP药品编码
+    private String cgoodsid;
+    // 药品名称
+    private String cname;
+    // 规格代码
+    private String cshop_sku_id;
+    // 数量
+    private BigDecimal iqty;
+    // 单价
+    private BigDecimal fprice;
+    // 总金额
+    private BigDecimal famount;
+    // 订单来源平台
+    private String cordersource;
+    // 是否退款
+    private Integer isreturn;
+    // 优惠金额
+    private BigDecimal fpromoamount;
+}

+ 67 - 0
fs-service-system/src/main/java/com/fs/kingbos/domian/KingbosOrderData.java

@@ -0,0 +1,67 @@
+package com.fs.kingbos.domian;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 金博订单实体  data
+ */
+@Data
+public class KingbosOrderData {
+    // 订单来源
+    private String cordersource;
+    // 订单下单时间
+    private Date dorder_date;
+    // 店铺买家编号
+    private String cshop_buyer_id;
+    // 平台类型
+    private String cplatformtype;
+    // 平台店铺编号
+    private String cshop_id;
+    // 平台店铺名称
+    private String cshop_name;
+    // 平台订单号
+    private String cso_id;
+    // OMS订单号
+    private String co_id;
+    // OMS发货单号
+    private String cdo_id;
+    // 应付金额
+    private BigDecimal fpay_amount;
+    // 已付金额
+    private BigDecimal fpaid_amount;
+    // 运费
+    private BigDecimal ffreight;
+    // 优惠金额
+    private BigDecimal ffree_amount;
+    // 订单状态
+    private String cstatus;
+    // 物流成本
+    private BigDecimal fpostcost;
+    // 最后更新时间
+    private Date dmodified;
+    // 收件人(省)
+    private String creceiver_state;
+    // 收件人(城市)
+    private String creceiver_city;
+    // 收件人(区)
+    private String creceiver_district;
+    // 收件人(详细地址)
+    private String creceiver_address;
+    // 收件人(名称)
+    private String creceiver_name;
+    // 收件人(电话)
+    private String creceiver_mobile;
+    // 快递单号
+    private String cexpress_no;
+    // 快递公司代码
+    private String cexpress_code;
+    // 快递公司名称
+    private String cexpress_name;
+    // 仓库代码
+    private String cwarehouse_code;
+    // 仓库名称
+    private String cwarehouse_name;
+}

+ 12 - 0
fs-service-system/src/main/java/com/fs/kingbos/domian/KingbosOrderRequest.java

@@ -0,0 +1,12 @@
+package com.fs.kingbos.domian;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class KingbosOrderRequest {
+    private String key;//单据ID
+    private KingbosOrderData data; //主表
+    private List<KingbosOrderD1Data> d1_data; //D1表
+}

+ 10 - 0
fs-service-system/src/main/java/com/fs/kingbos/domian/KingbosOrderResponse.java

@@ -0,0 +1,10 @@
+package com.fs.kingbos.domian;
+
+import lombok.Data;
+
+@Data
+public class KingbosOrderResponse {
+    private Boolean isSuccess; //true:请求成功;false:请求失败;
+    private String cbilid; //平台单号
+    private String errmsg;  //错误信息
+}

+ 20 - 0
fs-service-system/src/main/java/com/fs/kingbos/domian/KingbosRefundOrderD1Data.java

@@ -0,0 +1,20 @@
+package com.fs.kingbos.domian;
+
+import cn.hutool.core.annotation.Alias;
+import lombok.Data;
+
+@Data
+public class KingbosRefundOrderD1Data {
+
+    /**
+     * 平台订单来源
+     */
+    @Alias("cordersource")
+    private String corderSource;
+
+    /**
+     * OMS售后单号
+     */
+    @Alias("cas_id")
+    private String casId;
+}

+ 25 - 0
fs-service-system/src/main/java/com/fs/kingbos/domian/KingbosRefundOrderData.java

@@ -0,0 +1,25 @@
+package com.fs.kingbos.domian;
+
+import cn.hutool.core.annotation.Alias;
+import lombok.Data;
+
+@Data
+public class KingbosRefundOrderData {
+    /**
+     * 平台订单来源
+     */
+    @Alias("cordersource")
+    private String corderSource;
+
+    /**
+     * OMS售后单号
+     */
+    @Alias("cas_id")
+    private String casId;
+
+    /**
+     * OMS订单号
+     */
+    @Alias("co_id")
+    private String coId;
+}

+ 12 - 0
fs-service-system/src/main/java/com/fs/kingbos/domian/KingbosRefundOrderRequest.java

@@ -0,0 +1,12 @@
+package com.fs.kingbos.domian;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class KingbosRefundOrderRequest {
+    private String key;//单据ID
+    private KingbosRefundOrderData data; //主表
+    private List<KingbosRefundOrderD1Data> d1_data; //D1表
+}

+ 15 - 0
fs-service-system/src/main/java/com/fs/kingbos/service/K9OrderService.java

@@ -0,0 +1,15 @@
+package com.fs.kingbos.service;
+
+import com.fs.kingbos.domian.KingbosOrderRequest;
+import com.fs.kingbos.domian.KingbosOrderResponse;
+import com.fs.kingbos.domian.KingbosRefundOrderRequest;
+
+import java.text.ParseException;
+
+public interface K9OrderService {
+    KingbosOrderResponse addOrder(KingbosOrderRequest request);
+
+    KingbosOrderResponse refundOrder(KingbosRefundOrderRequest request);
+
+    void createOmsOrder(Long orderId) throws ParseException;
+}

+ 19 - 0
fs-service-system/src/main/java/com/fs/kingbos/service/K9StockService.java

@@ -0,0 +1,19 @@
+package com.fs.kingbos.service;
+
+import com.fs.common.exception.ServiceException;
+import com.fs.kingbos.domian.KbStockRequest;
+import com.fs.kingbos.domian.KbStockResponse;
+
+/**
+ * 库存服务
+ */
+public interface K9StockService {
+
+    /**
+     * 查看库存
+     * @param request 入参
+     * @return  KbStockResponse
+     * @throws ServiceException 异常
+     */
+    KbStockResponse getStock(KbStockRequest request) throws ServiceException;
+}

+ 152 - 0
fs-service-system/src/main/java/com/fs/kingbos/service/impl/K9OrderServiceImpl.java

@@ -0,0 +1,152 @@
+package com.fs.kingbos.service.impl;
+
+import cn.hutool.core.util.IdUtil;
+import cn.hutool.http.HttpUtil;
+import cn.hutool.json.JSONObject;
+import cn.hutool.json.JSONUtil;
+import com.fs.common.config.FSSysConfig;
+import com.fs.common.utils.StringUtils;
+import com.fs.kingbos.domian.*;
+import com.fs.kingbos.service.K9OrderService;
+import com.fs.kingbos.util.SignUtil;
+import com.fs.kingbos.util.UrlUtil;
+import com.fs.store.domain.FsStoreOrder;
+import com.fs.store.domain.FsStoreOrderItem;
+import com.fs.store.dto.FsStoreCartDTO;
+import com.fs.store.mapper.FsStoreOrderMapper;
+import com.fs.store.mapper.FsStoreProductMapper;
+import com.fs.store.service.IFsStoreOrderItemService;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.math.BigDecimal;
+import java.text.ParseException;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+@Service
+public class K9OrderServiceImpl implements K9OrderService {
+    public final static Logger logger = LoggerFactory.getLogger(K9OrderServiceImpl.class);
+    @Autowired
+    FSSysConfig sysConfig;
+    @Autowired
+    private FsStoreOrderMapper fsStoreOrderMapper;
+    @Autowired
+    private IFsStoreOrderItemService storeOrderItemService;
+    @Autowired
+    private FsStoreProductMapper productMapper;
+    @Override
+    public KingbosOrderResponse addOrder(KingbosOrderRequest request) {
+        JSONObject param = JSONUtil.createObj();
+        param.set("key", "OL");
+        param.set("data", request.getData());
+        param.set("d1_data", request.getD1_data());
+        String timeStep = System.currentTimeMillis() + "";
+        String sign = SignUtil.sign(param.toString(),sysConfig.getKingbosSecret(), sysConfig.getKingbosan(), timeStep);
+        String url = UrlUtil.getUrl(sysConfig.getKingbosUrl(),sign, timeStep);
+        String json = param.toString();
+        String result = HttpUtil.post(url, json);
+        logger.info("zyp \n【金博网络订单】:"+result);
+        KingbosOrderResponse response = JSONUtil.toBean(result, KingbosOrderResponse.class);
+        return response;
+    }
+
+
+    @Override
+    public KingbosOrderResponse refundOrder(KingbosRefundOrderRequest request) {
+        JSONObject param = JSONUtil.createObj();
+        param.set("key", "WR");
+        param.set("data", request.getData());
+        param.set("d1_data", request.getD1_data());
+        String timeStep = System.currentTimeMillis() + "";
+        String sign = SignUtil.sign(param.toString(),sysConfig.getKingbosSecret(), sysConfig.getKingbosan(), timeStep);
+        String url = UrlUtil.getUrl(sysConfig.getKingbosUrl(),sign, timeStep);
+        String result = HttpUtil.post(url, param.toString());
+        logger.info("zyp \n【金博网络退货单】:"+result);
+        KingbosOrderResponse response = JSONUtil.toBean(result, KingbosOrderResponse.class);
+        return response;
+    }
+
+
+    @Override
+    @Transactional
+    public void createOmsOrder(Long orderId) throws ParseException {
+        FsStoreOrder order=fsStoreOrderMapper.selectFsStoreOrderById(orderId);
+        if(StringUtils.isEmpty(order.getExtendOrderId())&&order.getStatus()!=1){
+            return;
+        }
+        //组装金博data
+        KingbosOrderData data = new KingbosOrderData();
+        data.setCordersource("中康未来智慧药房");
+        data.setDorder_date(order.getCreateTime());
+        data.setCshop_buyer_id("zkwlzhyf100");//传固定值不可变
+        data.setCplatformtype("zkwlzhyfminiapp");
+        data.setCshop_id("zkwlzhyf2024");//中康未来智慧药房
+        data.setCshop_name("中康未来智慧药房");
+        data.setCso_id(order.getOrderCode());
+        String orderSn = IdUtil.getSnowflake(0, 0).nextIdStr();
+        data.setCo_id(orderSn);
+        data.setCdo_id(orderSn);
+        data.setFpay_amount(order.getPayPrice());
+        data.setFpaid_amount(order.getPayMoney());
+        data.setFfreight(order.getTotalPostage());
+        data.setFfree_amount(order.getCouponPrice());
+        data.setCstatus("待发货");
+        data.setFpostcost(BigDecimal.ZERO);
+        data.setDmodified(new Date());
+        String[] address=order.getUserAddress().split(" ");
+        data.setCreceiver_state(address[0]);
+        data.setCreceiver_city(address[1]);
+        data.setCreceiver_district(address[2]);
+        //处理地址多空隔问题
+        if(address.length>3){
+            StringBuffer addrs=new StringBuffer();
+            for(int i=3;i<address.length;i++){
+                addrs.append(address[i]);
+            }
+            data.setCreceiver_address(addrs.toString());
+        }
+        else if(address.length==3){
+            data.setCreceiver_address(address[2]);
+        }
+        //处理地址字符问题
+        data.setCreceiver_address(data.getCreceiver_address().replace("+","加"));
+        data.setCreceiver_address(data.getCreceiver_address().replace("\n",""));
+        data.setCreceiver_name(order.getRealName());
+        data.setCreceiver_mobile(order.getUserPhone());
+        data.setCexpress_name(order.getDeliveryName());
+        data.setCexpress_code("SF");
+        data.setCwarehouse_code(sysConfig.getCwarehouseCode());
+        data.setCwarehouse_name(sysConfig.getCwarehouseName());
+        List<KingbosOrderD1Data> d1Datas = new ArrayList<>();
+        FsStoreOrderItem itemMap=new FsStoreOrderItem();
+        itemMap.setOrderId(order.getId());
+        List<FsStoreOrderItem> orderItems=storeOrderItemService.selectFsStoreOrderItemList(itemMap);
+        for (FsStoreOrderItem orderItem: orderItems){
+            FsStoreCartDTO cartDTO= JSONUtil.toBean(orderItem.getJsonInfo(),FsStoreCartDTO.class);
+            KingbosOrderD1Data item = new KingbosOrderD1Data();
+            item.setCdo_id(data.getCdo_id());
+            item.setCo_id(data.getCo_id());
+            item.setCsku_id(cartDTO.getBarCode());
+            item.setCgoodsid(cartDTO.getBarCode());
+            item.setCname(cartDTO.getProductName());
+            item.setCshop_sku_id(cartDTO.getBarCode());
+            item.setIqty(new BigDecimal(orderItem.getNum()));
+            item.setFprice(cartDTO.getPrice());
+            item.setFamount(new BigDecimal(orderItem.getNum()).multiply(cartDTO.getPrice()));
+            item.setCordersource(data.getCordersource());
+            item.setIsreturn(0);
+            item.setFpromoamount(BigDecimal.ZERO);
+            d1Datas.add(item);
+        }
+        KingbosOrderRequest request = new KingbosOrderRequest();
+        request.setData(data);
+        request.setD1_data(d1Datas);
+        KingbosOrderResponse response = this.addOrder(request);
+        logger.info("\n【金博网络订单】: addOrder  res:{}", response);
+    }
+}

+ 49 - 0
fs-service-system/src/main/java/com/fs/kingbos/service/impl/K9StockServiceImpl.java

@@ -0,0 +1,49 @@
+package com.fs.kingbos.service.impl;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.fs.common.config.FSSysConfig;
+import com.fs.common.exception.ServiceException;
+import com.fs.common.utils.StringUtils;
+import com.fs.common.utils.http.HttpUtils;
+import com.fs.kingbos.domian.KbStockRequest;
+import com.fs.kingbos.domian.KbStockResponse;
+import com.fs.kingbos.service.K9StockService;
+import com.fs.kingbos.util.SignUtil;
+import com.fs.kingbos.util.UrlUtil;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+@Service
+@Slf4j
+@AllArgsConstructor
+public class K9StockServiceImpl implements K9StockService {
+
+    private final FSSysConfig sysConfig;
+
+    /**
+     * 查看库存
+     * @param request 参数
+     * @return  KbStockResponse
+     * @throws ServiceException 异常
+     */
+    @Override
+    public KbStockResponse getStock(KbStockRequest request) throws ServiceException {
+        // 构造参数
+        String timeStep = System.currentTimeMillis() + "";
+        if (StringUtils.isBlank(request.getStockCode())) {
+            request.setStockCode(sysConfig.getCwarehouseCode());
+        }
+        String json = JSON.toJSONString(request);
+        String sign = SignUtil.sign(json, sysConfig.getKingbosSecret(), sysConfig.getKingbosan(), timeStep);
+        String url = sysConfig.getKingbosUrl().replace("do=k9save", "do=k9view");
+        url = UrlUtil.getUrl(url, sign, timeStep);
+
+        // 发送请求
+        log.info("\n【金博网络】: getStock send request url: {}", url);
+        String result = HttpUtils.doPost(url, json);
+        log.info("\n【金博网络】: getStock res:{}", result);
+        return JSONObject.parseObject(result, KbStockResponse.class);
+    }
+}

+ 12 - 0
fs-service-system/src/main/java/com/fs/kingbos/util/SignUtil.java

@@ -0,0 +1,12 @@
+package com.fs.kingbos.util;
+
+
+import com.fs.ad.yk.utils.Md5Util;
+
+public class SignUtil {
+
+    public static String sign(String data, String secret, String name, String timestamp) {
+        String enValue = "kingbos" + secret + timestamp + name + "zy01" + data;
+        return Md5Util.MD5(enValue);
+    }
+}

+ 26 - 0
fs-service-system/src/main/java/com/fs/kingbos/util/UrlUtil.java

@@ -0,0 +1,26 @@
+package com.fs.kingbos.util;
+
+
+import java.io.UnsupportedEncodingException;
+import java.net.URLEncoder;
+
+
+public class UrlUtil {
+    public static String getUrl(String url, String sign, String timeStep) {
+        String updatedUrl = updateURLParams(url, "timestep", timeStep);
+        updatedUrl = updateURLParams(updatedUrl, "sign", sign);
+        return updatedUrl;
+    }
+
+    public static String updateURLParams(String url, String param, String value) {
+        String encodedValue;
+        try {
+            encodedValue = URLEncoder.encode(value, "UTF-8");
+        } catch (UnsupportedEncodingException e) {
+            encodedValue = value;
+            e.printStackTrace();
+        }
+
+        return url.replaceAll(param + "=", param + "=" + encodedValue);
+    }
+}

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

@@ -1,32 +1,35 @@
 package com.fs.store.service.impl;
 
-import java.util.Date;
-import java.util.List;
-
 import cn.hutool.json.JSONArray;
 import cn.hutool.json.JSONUtil;
 import com.fs.common.core.domain.R;
 import com.fs.common.exception.CustomException;
 import com.fs.common.utils.DateUtils;
 import com.fs.common.utils.StringUtils;
-import com.fs.erp.domain.ErpGoodsStock;
-import com.fs.erp.dto.ErpGoodsStockQueryRequert;
-import com.fs.erp.dto.ErpGoodsStockQueryResponse;
 import com.fs.erp.service.IErpGoodsService;
+import com.fs.kingbos.domian.KbStockRequest;
+import com.fs.kingbos.domian.KbStockResponse;
+import com.fs.kingbos.service.K9StockService;
+import com.fs.store.domain.FsStoreCart;
 import com.fs.store.domain.FsStoreProductAttrValue;
 import com.fs.store.domain.FsStoreProductGroup;
 import com.fs.store.dto.StoreProductGroupDTO;
-import com.fs.store.mapper.*;
+import com.fs.store.mapper.FsStoreCartMapper;
+import com.fs.store.mapper.FsStoreProductAttrValueMapper;
+import com.fs.store.mapper.FsStoreProductGroupMapper;
+import com.fs.store.mapper.FsStoreProductMapper;
 import com.fs.store.param.FsStoreCartCountParam;
 import com.fs.store.param.FsStoreCartDelParam;
 import com.fs.store.param.FsStoreCartNumParam;
 import com.fs.store.param.FsStoreCartParam;
+import com.fs.store.service.IFsStoreCartService;
 import com.fs.store.vo.FsStoreCartVO;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
-import com.fs.store.domain.FsStoreCart;
-import com.fs.store.service.IFsStoreCartService;
+
+import java.util.Date;
+import java.util.List;
 
 /**
  * 购物车Service业务层处理
@@ -48,6 +51,9 @@ public class FsStoreCartServiceImpl implements IFsStoreCartService
     private FsStoreProductGroupMapper productGroupMapper;
     @Autowired
     IErpGoodsService goodsService;
+    @Autowired
+    private K9StockService k9StockService;
+
     /**
      * 查询购物车
      *
@@ -206,15 +212,11 @@ public class FsStoreCartServiceImpl implements IFsStoreCartService
         FsStoreProductAttrValue productAttrValue=valueMapper.selectFsStoreProductAttrValueById(productAttrValueId);
         if(StringUtils.isEmpty(productAttrValue.getGroupBarCode())){
             //单品
-            ErpGoodsStockQueryRequert request=new ErpGoodsStockQueryRequert();
-            request.setBarcode(productAttrValue.getBarCode());
-            ErpGoodsStockQueryResponse response=goodsService.getGoodsStock(request);
-            if(response.getStocks()!=null){
-                Integer stocks=0;
-                for(ErpGoodsStock stock:response.getStocks()){
-                    Double goodsStock=Double.parseDouble(stock.getSalable_qty());
-                    stocks+=goodsStock.intValue();
-                }
+            KbStockRequest request = KbStockRequest.builder().goodsCode(productAttrValue.getBarCode()).build();
+            KbStockResponse response = k9StockService.getStock(request);
+            if(response.getSuccess()){
+                int stocks = response.getStock();
+
                 if(stocks<=0){
                     productAttrValue.setStock(0);
                     valueMapper.updateFsStoreProductAttrValue(productAttrValue);
@@ -244,15 +246,11 @@ public class FsStoreCartServiceImpl implements IFsStoreCartService
                 if(productGroupDTOS!=null){
                     for(StoreProductGroupDTO dto:productGroupDTOS){
                         FsStoreProductAttrValue attrValue=valueMapper.selectFsStoreProductAttrValueById(dto.getId());
-                        ErpGoodsStockQueryRequert request=new ErpGoodsStockQueryRequert();
-                        request.setBarcode(attrValue.getBarCode());
-                        ErpGoodsStockQueryResponse response=goodsService.getGoodsStock(request);
-                        if(response.getStocks()!=null){
-                            Integer stocks=0;
-                            for(ErpGoodsStock stock:response.getStocks()){
-                                Double goodsStock=Double.parseDouble(stock.getSalable_qty());
-                                stocks+=goodsStock.intValue();
-                            }
+                        KbStockRequest request = KbStockRequest.builder().goodsCode(attrValue.getBarCode()).build();
+                        KbStockResponse response = k9StockService.getStock(request);
+                        if(response.getSuccess()){
+                            Integer stocks = response.getStock();
+
                             if(stocks<=0){
                                 attrValue.setStock(0);
                                 valueMapper.updateFsStoreProductAttrValue(attrValue);

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

@@ -20,6 +20,13 @@ fsConfig:
   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

+ 9 - 0
fs-service-system/src/main/resources/mapper/course/FsUserCoursePeriodMapper.xml

@@ -96,6 +96,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="periodType != null">period_type,</if>
             <if test="periodStartingTime != null">period_starting_time,</if>
             <if test="periodEndTime != null">period_end_time,</if>
+            <if test="viewStartTime != null">view_start_time,</if>
+            <if test="viewEndTime != null">view_end_time,</if>
+            <if test="lastJoinTime != null">last_join_time,</if>
          </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="periodId != null">#{periodId},</if>
@@ -110,6 +113,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="periodType != null">#{periodType},</if>
             <if test="periodStartingTime != null">#{periodStartingTime},</if>
             <if test="periodEndTime != null">#{periodEndTime},</if>
+            <if test="viewStartTime != null">#{viewStartTime},</if>
+            <if test="viewEndTime != null">#{viewEndTime},</if>
+            <if test="lastJoinTime != null">#{lastJoinTime},</if>
          </trim>
     </insert>
 
@@ -127,6 +133,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="periodType != null">period_type = #{periodType},</if>
             <if test="periodStartingTime != null">period_starting_time = #{periodStartingTime},</if>
             <if test="periodEndTime != null">period_end_time = #{periodEndTime},</if>
+            <if test="viewStartTime != null">view_start_time = #{viewStartTime},</if>
+            <if test="viewEndTime != null">view_end_time = #{viewEndTime},</if>
+            <if test="lastJoinTime != null">last_join_time = #{lastJoinTime},</if>
         </trim>
         where period_id = #{periodId}
     </update>