فهرست منبع

溯源码机械类和保健食品类区分

yjwang 5 روز پیش
والد
کامیت
511c516c5e
16فایلهای تغییر یافته به همراه187 افزوده شده و 90 حذف شده
  1. 1 1
      fs-service/src/main/java/com/fs/course/service/impl/FsCourseLinkServiceImpl.java
  2. 3 3
      fs-service/src/main/java/com/fs/course/service/impl/FsUserCourseVideoServiceImpl.java
  3. 3 0
      fs-service/src/main/java/com/fs/hisStore/domain/FsStoreAfterSalesScrm.java
  4. 4 0
      fs-service/src/main/java/com/fs/hisStore/domain/FsStoreOrderScrm.java
  5. 5 1
      fs-service/src/main/java/com/fs/hisStore/mapper/FsStoreAfterSalesScrmMapper.java
  6. 12 1
      fs-service/src/main/java/com/fs/hisStore/mapper/FsStoreProductScrmMapper.java
  7. 3 0
      fs-service/src/main/java/com/fs/hisStore/param/FsStoreOrderParam.java
  8. 22 7
      fs-service/src/main/java/com/fs/hisStore/service/impl/FsStoreCartScrmServiceImpl.java
  9. 93 72
      fs-service/src/main/java/com/fs/hisStore/service/impl/FsStoreOrderScrmServiceImpl.java
  10. 3 0
      fs-service/src/main/java/com/fs/hisStore/vo/FsStoreAfterSalesVO.java
  11. 2 0
      fs-service/src/main/java/com/fs/hisStore/vo/FsStoreOrderVO.java
  12. 5 2
      fs-service/src/main/resources/mapper/hisStore/FsStoreOrderScrmMapper.xml
  13. 12 1
      fs-service/src/main/resources/mapper/hisStore/FsStoreProductScrmMapper.xml
  14. 7 2
      fs-user-app/src/main/java/com/fs/app/controller/store/ProductScrmController.java
  15. 10 0
      fs-user-app/src/main/java/com/fs/app/controller/store/StoreOrderScrmController.java
  16. 2 0
      fs-user-app/src/main/java/com/fs/app/redis/RedisKeyExpirationListener.java

+ 1 - 1
fs-service/src/main/java/com/fs/course/service/impl/FsCourseLinkServiceImpl.java

@@ -857,7 +857,7 @@ public class FsCourseLinkServiceImpl implements IFsCourseLinkService
                 query = URLEncoder.encode(query, StandardCharsets.UTF_8.toString());
 
 
-                List<FsCoursePlaySourceConfig> list = fsCoursePlaySourceConfigService.list(new QueryWrapper<FsCoursePlaySourceConfig>().ne("type", 2).eq("is_del", 0));
+                List<FsCoursePlaySourceConfig> list = fsCoursePlaySourceConfigService.list(new QueryWrapper<FsCoursePlaySourceConfig>().eq("appid",appId).ne("type", 2).eq("is_del", 0));
 //                SysConfig sysConfig3 = sysConfigMapper.selectConfigByConfigKey("courseMa.config");
 //                List<CourseMaConfig> courseMaConfigs = JSON.parseArray(sysConfig3.getConfigValue(), CourseMaConfig.class);
                 if (list!=null&& !list.isEmpty()){

+ 3 - 3
fs-service/src/main/java/com/fs/course/service/impl/FsUserCourseVideoServiceImpl.java

@@ -496,9 +496,9 @@ public class FsUserCourseVideoServiceImpl implements IFsUserCourseVideoService
             return R.error(401,"未授权");
         }
 
-        if (StringUtil.strIsNullOrEmpty(fsUser.getMpOpenId())){
-            return R.error(401,"授权后可继续!");
-        }
+//        if (StringUtil.strIsNullOrEmpty(fsUser.getMpOpenId())){
+//            return R.error(401,"授权后可继续!");
+//        }
 
         if (fsUser.getStatus()==0){
             return R.error("会员被停用,无权限,请联系客服!");

+ 3 - 0
fs-service/src/main/java/com/fs/hisStore/domain/FsStoreAfterSalesScrm.java

@@ -175,4 +175,7 @@ public class FsStoreAfterSalesScrm extends BaseEntity
     private Integer transactionStatus;
     //评价投诉
     private String complaint;
+
+    //核销溯源码
+    private String verifyCodes;
 }

+ 4 - 0
fs-service/src/main/java/com/fs/hisStore/domain/FsStoreOrderScrm.java

@@ -386,4 +386,8 @@ public class FsStoreOrderScrm extends BaseEntity
     //组合订单标识
     private String combinationOrderId;
 
+    //溯源码
+    @TableField(exist = false)
+    private String verifyCodes;
+
 }

+ 5 - 1
fs-service/src/main/java/com/fs/hisStore/mapper/FsStoreAfterSalesScrmMapper.java

@@ -88,7 +88,7 @@ public interface FsStoreAfterSalesScrmMapper
 
     @Select({"<script> " +
             "select DISTINCT s.*,o.delivery_status,o.delivery_id,u.phone as user_phone,c.company_name ," +
-            "cu.nick_name as company_user_nick_name ,cu.phonenumber as company_usere_phonenumber,ssc.store_name as storeName,ssc.store_seq as storeSeq,ssc.merchant_id as merchantId,hps.serial_no  " +
+            "cu.nick_name as company_user_nick_name ,cu.phonenumber as company_usere_phonenumber,ssc.store_name as storeName,ssc.store_seq as storeSeq,ssc.merchant_id as merchantId,hps.serial_no,vc.verify_code AS verifyCodes  " +
             "from fs_store_after_sales_scrm s INNER join fs_store_order_scrm o on o.order_code=s.order_code " +
             "inner join fs_store_order_item_scrm ois on o.id = ois.order_id " +
             "inner join fs_store_product_scrm p on  p.product_id = ois.product_id " +
@@ -96,6 +96,7 @@ public interface FsStoreAfterSalesScrmMapper
             "left join company_user cu on cu.user_id=s.company_user_id " +
             "left join fs_store_scrm ssc on o.store_id=ssc.store_id " +
             "left join fs_store_hospital580_prescription_scrm hps on hps.store_order_id = o.id " +
+            "LEFT JOIN fs_store_verify_code_scrm vc ON o.id = vc.order_id " +
             "<if test = 'maps.complaint != null and maps.complaint.trim() !=  \"\" '> " +
             "inner join fs_user_complaint uc on FIND_IN_SET(p.product_id, uc.product_ids) " +
             "</if>" +
@@ -142,6 +143,9 @@ public interface FsStoreAfterSalesScrmMapper
             "<if test = 'maps.consigneePhone != null and  maps.consigneePhone !=\"\"     '> " +
             "and o.user_phone like CONCAT('%',#{maps.consigneePhone},'%') " +
             "</if>" +
+            "          <if test=\"maps.verifyCodes != null and  maps.verifyCodes !=  '' \">\n" +
+            "                and vc.verify_code like concat('%', #{maps.verifyCodes}, '%')\n" +
+            "            </if>" +
             "<if test = 'maps.endTime != null and maps.endTime != \"\"   '> " +
             " AND date_format(s.create_time,'%y%m%d') &lt;= date_format(#{maps.endTime},'%y%m%d') " +
             "</if>" +

+ 12 - 1
fs-service/src/main/java/com/fs/hisStore/mapper/FsStoreProductScrmMapper.java

@@ -329,7 +329,18 @@ public interface FsStoreProductScrmMapper
 
     @Select({"<script> " +
             "  select p.*,pc.cate_name,hs.push_status from (SELECT ave.bar_code as bar_code,p.product_id, p.image, p.slider_image,p.product_name, p.product_info,p.keyword, p.cate_id, p.price, p.vip_price, " +
-            " p.ot_price,p.agent_price, p.postage,p.unit_name,p.sort,( SELECT COUNT(*) FROM fs_store_verify_code_scrm vc WHERE vc.product_id = p.product_id AND vc.outbound_status = 1 AND is_del = 0) AS sales,( SELECT COUNT(*) FROM fs_store_verify_code_scrm vc WHERE vc.product_id = p.product_id AND vc.outbound_status = 0 AND is_del = 0) AS stock,p.is_show,p.is_hot,p.is_benefit,p.is_best,p.is_new,p.description,p.create_time,p.update_time,p.is_postage,p.is_del,p.give_integral," +
+            " p.ot_price,p.agent_price, p.postage,p.unit_name,p.sort,CASE \n" +
+            "\tWHEN p.cate_id = '202' OR p.cate_id = '232' OR p.cate_id = '201' OR P.cate_id = '233' THEN\n" +
+            "\t\tp.stock\n" +
+            "\tELSE\n" +
+            "\t\t( SELECT COUNT(*) FROM fs_store_verify_code_scrm vc WHERE vc.product_id = p.product_id AND vc.outbound_status = 0 AND is_del = 0)\n" +
+            "END AS stock,\n" +
+            " CASE \n" +
+            "\tWHEN p.cate_id = '202' OR p.cate_id = '232' OR p.cate_id = '201' OR P.cate_id = '233' THEN\n" +
+            "\t\tp.sales\n" +
+            "\tELSE\n" +
+            "\t\t( SELECT COUNT(*) FROM fs_store_verify_code_scrm vc WHERE vc.product_id = p.product_id AND vc.outbound_status = 1 AND is_del = 0)\n" +
+            "END AS sales,p.is_show,p.is_hot,p.is_benefit,p.is_best,p.is_new,p.description,p.create_time,p.update_time,p.is_postage,p.is_del,p.give_integral," +
             " p.cost,p.is_good,p.browse,p.code_path,p.temp_id,p.spec_type,p.is_integral,p.integral,p.product_type,p.prescribe_code, p.prescribe_spec,p.prescribe_factory,p.prescribe_name,p.is_display,p.tui_cate_id" +
             " FROM fs_store_product_scrm p LEFT JOIN fs_store_product_attr_value_scrm ave on p.product_id=ave.product_id  WHERE ave.bar_code != '' and p.product_id is not null" +
             ") p left join fs_store_product_category_scrm pc on p.cate_id=pc.cate_id   " +

+ 3 - 0
fs-service/src/main/java/com/fs/hisStore/param/FsStoreOrderParam.java

@@ -149,4 +149,7 @@ public class FsStoreOrderParam extends BaseEntity implements Serializable
      private Integer transactionStatus;
      //评价投诉
      private String complaint;
+
+     //核销溯源码
+     private String verifyCodes;
 }

+ 22 - 7
fs-service/src/main/java/com/fs/hisStore/service/impl/FsStoreCartScrmServiceImpl.java

@@ -164,7 +164,13 @@ public class FsStoreCartScrmServiceImpl implements IFsStoreCartScrmService
                     .isBuy(cartParam.getIsBuy())
                     .build();
             storeCart.setCreateTime(new Date());
-            checkProductStock(cartParam.getProductId(),storeCart.getProductAttrValueId());
+            if(cartParam.getType() == 1 && checkProductCater(storeCart.getProductId())){//加入校验
+                if(checkCarNumber(storeCart.getProductId(),storeCart.getCartNum())){
+                    return R.error("商品数量大于库存数量!");
+                }
+            }else {
+                checkProductStock(cartParam.getProductId(),storeCart.getProductAttrValueId());
+            }
             fsStoreCartMapper.insertFsStoreCart(storeCart);
             return R.ok().put("id",storeCart.getId());
 
@@ -190,11 +196,12 @@ public class FsStoreCartScrmServiceImpl implements IFsStoreCartScrmService
                         .isBuy(0)
                         .build();
                 storeCart.setCreateTime(new Date());
-                checkProductStock(cartParam.getProductId(),storeCart.getProductAttrValueId());
-                if(cartParam.getType() == 1){//加入校验
+                if(cartParam.getType() == 1 && checkProductCater(storeCart.getProductId())){//加入校验
                     if(checkCarNumber(storeCart.getProductId(),storeCart.getCartNum())){
                         return R.error("商品数量大于库存数量!");
                     }
+                }else {
+                    checkProductStock(cartParam.getProductId(),storeCart.getProductAttrValueId());
                 }
                 fsStoreCartMapper.insertFsStoreCart(storeCart);
                 return R.ok().put("id",storeCart.getId());
@@ -203,11 +210,12 @@ public class FsStoreCartScrmServiceImpl implements IFsStoreCartScrmService
                 storeCart=cart.get(0);
                 storeCart.setCartNum(cartParam.getCartNum() + cart.get(0).getCartNum());
                 storeCart.setUpdateTime(new Date());
-                checkProductStock(cartParam.getProductId(),storeCart.getProductAttrValueId());
-                if(cartParam.getType() == 1){//加入校验
+                if(cartParam.getType() == 1 && checkProductCater(storeCart.getProductId())){//加入校验
                     if(checkCarNumber(storeCart.getProductId(),storeCart.getCartNum())){
                         return R.error("商品数量大于库存数量!");
                     }
+                }else {
+                    checkProductStock(cartParam.getProductId(),storeCart.getProductAttrValueId());
                 }
                 fsStoreCartMapper.updateFsStoreCart(storeCart);
                 return R.ok().put("id",storeCart.getId());
@@ -245,7 +253,6 @@ public class FsStoreCartScrmServiceImpl implements IFsStoreCartScrmService
                             .eq(FsStoreVerifyCodeScrm::getProductId, cart.getProductId())
                             .eq(FsStoreVerifyCodeScrm::getOutboundStatus, 0L)
                             .eq(FsStoreVerifyCodeScrm::getIsDel, 0L)
-                            .last("FOR UPDATE")
             );
             if (targetNum > availableStock) {
                 FsStoreProductScrm product = fsStoreProductMapper.selectFsStoreProductById(cart.getProductId());
@@ -420,7 +427,6 @@ public class FsStoreCartScrmServiceImpl implements IFsStoreCartScrmService
                         .eq(FsStoreVerifyCodeScrm::getProductId, productId)
                         .eq(FsStoreVerifyCodeScrm::getOutboundStatus, 0L)
                         .eq(FsStoreVerifyCodeScrm::getIsDel, 0L)
-                        .last("FOR UPDATE")
         );
         if (num > availableStock) {
             return true;
@@ -428,4 +434,13 @@ public class FsStoreCartScrmServiceImpl implements IFsStoreCartScrmService
         return false;
     }
 
+    //校验商品类型
+    public boolean checkProductCater(Long productId){
+        FsStoreProductScrm product = fsStoreProductMapper.selectFsStoreProductById(productId);
+        if(product.getCateId().equals(202L) || product.getCateId().equals(232L) || product.getCateId().equals(201L) || product.getCateId().equals(233L)){
+            return false;
+        }
+        return true;
+    }
+
 }

+ 93 - 72
fs-service/src/main/java/com/fs/hisStore/service/impl/FsStoreOrderScrmServiceImpl.java

@@ -990,33 +990,35 @@ public class FsStoreOrderScrmServiceImpl implements IFsStoreOrderScrmService {
                 }
                 fsStoreOrderItemMapper.insertFsStoreOrderItem(item);
 
-                // ===================== 溯源码核心逻辑 ==================
-                Integer buyCount = vo.getCartNum();
-                Long productId = vo.getProductId();
-                String productName = vo.getProductName();
-
-                if (buyCount <= 0) {
-                    throw new ServiceException("商品[" + productName + "]购买数量不能为0");
-                }
+                if(checkProductCater(vo.getProductId())){
+                    // ===================== 溯源码核心逻辑 ==================
+                    Integer buyCount = vo.getCartNum();
+                    Long productId = vo.getProductId();
+                    String productName = vo.getProductName();
+
+                    if (buyCount <= 0) {
+                        throw new ServiceException("商品[" + productName + "]购买数量不能为0");
+                    }
 
-                //查询并锁定未出库溯源码带行锁
-                List<FsStoreVerifyCodeScrm> availableVerifyCodes = verifyCodeMapper.selectUnOutboundVerifyCodesWithLock(productId, buyCount);
-                if (availableVerifyCodes == null || availableVerifyCodes.size() < buyCount) {
-                    String errorMsg = String.format("商品[%s]库存不足,需%s个,仅剩余%s个",
-                            productName, buyCount, (availableVerifyCodes == null ? 0 : availableVerifyCodes.size()));
-                    throw new ServiceException(errorMsg);
-                }
+                    //查询并锁定未出库溯源码带行锁
+                    List<FsStoreVerifyCodeScrm> availableVerifyCodes = verifyCodeMapper.selectUnOutboundVerifyCodesWithLock(productId, buyCount);
+                    if (availableVerifyCodes == null || availableVerifyCodes.size() < buyCount) {
+                        String errorMsg = String.format("商品[%s]库存不足,需%s个,仅剩余%s个",
+                                productName, buyCount, (availableVerifyCodes == null ? 0 : availableVerifyCodes.size()));
+                        throw new ServiceException(errorMsg);
+                    }
 
-                for (FsStoreVerifyCodeScrm code : availableVerifyCodes) {
-                    code.setOutboundStatus(1L);
-                    code.setOrderId(storeOrder.getId());
-                    code.setOrderItemId(item.getItemId());
-                    code.setUpdateTime(new Date());
-                }
-                if (!availableVerifyCodes.isEmpty()) {
-                    verifyCodeService.updateBatchById(availableVerifyCodes);
+                    for (FsStoreVerifyCodeScrm code : availableVerifyCodes) {
+                        code.setOutboundStatus(1L);
+                        code.setOrderId(storeOrder.getId());
+                        code.setOrderItemId(item.getItemId());
+                        code.setUpdateTime(new Date());
+                    }
+                    if (!availableVerifyCodes.isEmpty()) {
+                        verifyCodeService.updateBatchById(availableVerifyCodes);
+                    }
+                    // ===================== 溯源码逻辑END =====================
                 }
-                // ===================== 溯源码逻辑END =====================
                 listOrderItem.add(item);
             }
             if (listOrderItem.size() > 0) {
@@ -1185,33 +1187,36 @@ public class FsStoreOrderScrmServiceImpl implements IFsStoreOrderScrmService {
                 item.setOrderId(order.getId());
                 fsStoreOrderItemMapper.insertFsStoreOrderItem(item);
 
-                // ===================== 溯源码核心逻辑 ==================
-                Integer buyCount = item.getNum();
-                Long productId = item.getProductId();
-                String productName = productMap.get(productId) == null ? "商品" : productMap.get(productId);
+                if(checkProductCater(item.getProductId())){
+                    // ===================== 溯源码核心逻辑 ==================
+                    Integer buyCount = item.getNum();
+                    Long productId = item.getProductId();
+                    String productName = productMap.get(productId) == null ? "商品" : productMap.get(productId);
 
-                if (buyCount <= 0) {
-                    throw new ServiceException("商品[" + productName + "]购买数量不能为0");
-                }
+                    if (buyCount <= 0) {
+                        throw new ServiceException("商品[" + productName + "]购买数量不能为0");
+                    }
 
-                //查询并锁定未出库溯源码带行锁
-                List<FsStoreVerifyCodeScrm> availableVerifyCodes = verifyCodeMapper.selectUnOutboundVerifyCodesWithLock(productId, buyCount);
-                if (availableVerifyCodes == null || availableVerifyCodes.size() < buyCount) {
-                    String errorMsg = String.format("商品[%s]库存不足",
-                            productName, buyCount, (availableVerifyCodes == null ? 0 : availableVerifyCodes.size()));
-                    throw new ServiceException(errorMsg);
-                }
+                    //查询并锁定未出库溯源码带行锁
+                    List<FsStoreVerifyCodeScrm> availableVerifyCodes = verifyCodeMapper.selectUnOutboundVerifyCodesWithLock(productId, buyCount);
+                    if (availableVerifyCodes == null || availableVerifyCodes.size() < buyCount) {
+                        String errorMsg = String.format("商品[%s]库存不足",
+                                productName, buyCount, (availableVerifyCodes == null ? 0 : availableVerifyCodes.size()));
+                        throw new ServiceException(errorMsg);
+                    }
 
-                for (FsStoreVerifyCodeScrm code : availableVerifyCodes) {
-                    code.setOutboundStatus(1L);
-                    code.setOrderId(order.getId());
-                    code.setOrderItemId(item.getItemId());
-                    code.setUpdateTime(new Date());
-                }
-                if (!availableVerifyCodes.isEmpty()) {
-                    verifyCodeService.updateBatchById(availableVerifyCodes);
+                    for (FsStoreVerifyCodeScrm code : availableVerifyCodes) {
+                        code.setOutboundStatus(1L);
+                        code.setOrderId(order.getId());
+                        code.setOrderItemId(item.getItemId());
+                        code.setUpdateTime(new Date());
+                    }
+                    if (!availableVerifyCodes.isEmpty()) {
+                        verifyCodeService.updateBatchById(availableVerifyCodes);
+                    }
+                    // ===================== 溯源码逻辑END =====================
                 }
-                // ===================== 溯源码逻辑END =====================
+
             }
             fsStoreOrderLogsService.create(order.getId(), FsStoreOrderLogEnum.CREATE_ORDER.getValue(),
                     FsStoreOrderLogEnum.CREATE_ORDER.getDesc());
@@ -4960,9 +4965,14 @@ public class FsStoreOrderScrmServiceImpl implements IFsStoreOrderScrmService {
             //检测库存
             //如果是美乳产品,发武汉仓库
             Integer meiruCount = 0;
-
+            Map<Long,Boolean> checkMap = new HashMap<>();
             for (FsStoreCartScrmQueryVO cart : carts) {
-                cartService.checkProductStocks(cart.getProductId(), cart.getProductAttrValueId(), cart.getCartNum());
+                if(checkProductCater(cart.getProductId())){
+                    checkMap.put(cart.getProductId(),true);
+                }else {
+                    checkMap.put(cart.getProductId(),false);
+                    cartService.checkProductStocks(cart.getProductId(), cart.getProductAttrValueId(), cart.getCartNum());
+                }
                 totalNum += cart.getCartNum();
                 integral = NumberUtil.add(integral,
                         NumberUtil.mul(cart.getCartNum(), cart.getIntegral()));
@@ -5125,33 +5135,35 @@ public class FsStoreOrderScrmServiceImpl implements IFsStoreOrderScrmService {
                 }
                 fsStoreOrderItemMapper.insertFsStoreOrderItem(item);
 
-                // ===================== 溯源码核心逻辑 ==================
-                Integer buyCount = vo.getCartNum();
-                Long productId = vo.getProductId();
-                String productName = vo.getProductName();
+                if(checkMap.get(vo.getProductId())){
+                    // ===================== 溯源码核心逻辑 ==================
+                    Integer buyCount = vo.getCartNum();
+                    Long productId = vo.getProductId();
+                    String productName = vo.getProductName();
 
-                if (buyCount <= 0) {
-                    throw new ServiceException("商品[" + productName + "]购买数量不能为0");
-                }
+                    if (buyCount <= 0) {
+                        throw new ServiceException("商品[" + productName + "]购买数量不能为0");
+                    }
 
-                //查询并锁定未出库溯源码带行锁
-                List<FsStoreVerifyCodeScrm> availableVerifyCodes = verifyCodeMapper.selectUnOutboundVerifyCodesWithLock(productId, buyCount);
-                if (availableVerifyCodes == null || availableVerifyCodes.size() < buyCount) {
-                    String errorMsg = String.format("商品[%s]库存不足",
-                            productName, buyCount, (availableVerifyCodes == null ? 0 : availableVerifyCodes.size()));
-                    throw new ServiceException(errorMsg);
-                }
+                    //查询并锁定未出库溯源码带行锁
+                    List<FsStoreVerifyCodeScrm> availableVerifyCodes = verifyCodeMapper.selectUnOutboundVerifyCodesWithLock(productId, buyCount);
+                    if (availableVerifyCodes == null || availableVerifyCodes.size() < buyCount) {
+                        String errorMsg = String.format("商品[%s]库存不足",
+                                productName, buyCount, (availableVerifyCodes == null ? 0 : availableVerifyCodes.size()));
+                        throw new ServiceException(errorMsg);
+                    }
 
-                for (FsStoreVerifyCodeScrm code : availableVerifyCodes) {
-                    code.setOutboundStatus(1L);
-                    code.setOrderId(storeOrder.getId());
-                    code.setOrderItemId(item.getItemId());
-                    code.setUpdateTime(new Date());
-                }
-                if (!availableVerifyCodes.isEmpty()) {
-                    verifyCodeService.updateBatchById(availableVerifyCodes);
+                    for (FsStoreVerifyCodeScrm code : availableVerifyCodes) {
+                        code.setOutboundStatus(1L);
+                        code.setOrderId(storeOrder.getId());
+                        code.setOrderItemId(item.getItemId());
+                        code.setUpdateTime(new Date());
+                    }
+                    if (!availableVerifyCodes.isEmpty()) {
+                        verifyCodeService.updateBatchById(availableVerifyCodes);
+                    }
+                    // ===================== 溯源码逻辑END =====================
                 }
-                // ===================== 溯源码逻辑END =====================
                 listOrderItem.add(item);
             }
             if (listOrderItem.size() > 0) {
@@ -5858,4 +5870,13 @@ public class FsStoreOrderScrmServiceImpl implements IFsStoreOrderScrmService {
             return false;
         }
     }
+
+    //校验商品类型
+    public boolean checkProductCater(Long productId){
+        FsStoreProductScrm product = fsStoreProductMapper.selectFsStoreProductById(productId);
+        if(product.getCateId().equals(202L) || product.getCateId().equals(232L) || product.getCateId().equals(201L) || product.getCateId().equals(233L)){
+            return false;
+        }
+        return true;
+    }
 }

+ 3 - 0
fs-service/src/main/java/com/fs/hisStore/vo/FsStoreAfterSalesVO.java

@@ -117,4 +117,7 @@ public class FsStoreAfterSalesVO implements Serializable
      * 处方编号
      * **/
     private String serialNo;
+
+    //溯源码
+    private String verifyCodes;
 }

+ 2 - 0
fs-service/src/main/java/com/fs/hisStore/vo/FsStoreOrderVO.java

@@ -274,4 +274,6 @@ public class FsStoreOrderVO implements Serializable
      * **/
     private String serialNo;
 
+    //溯源码
+    private String verifyCodes;
 }

+ 5 - 2
fs-service/src/main/resources/mapper/hisStore/FsStoreOrderScrmMapper.xml

@@ -1579,15 +1579,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         select DISTINCT o.*,u.phone,u.register_code,u.register_date,u.source, c.company_name ,cu.nick_name as company_user_nick_name ,cu.phonenumber as company_usere_phonenumber
         , csc.name miniProgramName,ssc.store_name,
         ssc.store_seq,
-        ssc.merchant_id,hps.serial_no
+        ssc.merchant_id,hps.serial_no,vc.verify_code AS verifyCodes
         from fs_store_order_scrm o
         left join fs_store_hospital580_prescription_scrm hps on hps.store_order_id = o.id
         left join fs_user u on o.user_id=u.user_id
         left join company c on c.company_id=o.company_id
         left join company_user cu on cu.user_id=o.company_user_id
+        LEFT JOIN fs_store_verify_code_scrm vc ON o.id = vc.order_id
         <if test="maps.erpAccount != null and maps.erpAccount != ''">
             LEFT JOIN fs_store_order_df df on df.order_id=o.id
-
         </if>
 
         left join fs_store_order_item_scrm oi on o.id = oi.order_id
@@ -1686,6 +1686,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="maps.productName != null and  maps.productName !=  '' ">
                 and fsp.product_name like concat('%', #{maps.productName}, '%')
             </if>
+            <if test="maps.verifyCodes != null and  maps.verifyCodes !=  '' ">
+                and vc.verify_code like concat('%', #{maps.verifyCodes}, '%')
+            </if>
             <if test="maps.orderType != null    ">
                 and o.order_type =#{maps.orderType}
             </if>

+ 12 - 1
fs-service/src/main/resources/mapper/hisStore/FsStoreProductScrmMapper.xml

@@ -872,7 +872,18 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 
     <sql id="baseSql">
        DISTINCT p.product_id, p.image,p.video, p.slider_image, p.product_name, p.product_info, p.keyword, p.bar_code,
-       p.cate_id, p.price, p.vip_price, p.ot_price, p.postage, p.unit_name, p.sort, ( SELECT COUNT(*) FROM fs_store_verify_code_scrm vc WHERE vc.product_id = p.product_id AND vc.outbound_status = 0 AND is_del = 0) AS stock,( SELECT COUNT(*) FROM fs_store_verify_code_scrm vc WHERE vc.product_id = p.product_id AND vc.outbound_status = 1 AND is_del = 0) AS sales,
+       p.cate_id, p.price, p.vip_price, p.ot_price, p.postage, p.unit_name, p.sort, CASE
+	WHEN p.cate_id = '202' OR p.cate_id = '232' OR p.cate_id = '201' OR P.cate_id = '233' THEN
+		p.stock
+	ELSE
+		( SELECT COUNT(*) FROM fs_store_verify_code_scrm vc WHERE vc.product_id = p.product_id AND vc.outbound_status = 0 AND is_del = 0)
+       END AS stock,
+ CASE
+	WHEN p.cate_id = '202' OR p.cate_id = '232' OR p.cate_id = '201' OR P.cate_id = '233' THEN
+		p.sales
+	ELSE
+		( SELECT COUNT(*) FROM fs_store_verify_code_scrm vc WHERE vc.product_id = p.product_id AND vc.outbound_status = 1 AND is_del = 0)
+       END AS sales,
        p.is_hot, p.is_benefit, p.is_best, p.is_new, p.description, p.create_time, p.update_time, p.is_postage,
        p.is_del, p.give_integral, p.cost, p.is_good, p.browse, p.code_path, p.temp_id, p.spec_type, p.is_integral,
        p.integral, p.product_type, p.prescribe_code, p.prescribe_spec, p.prescribe_factory, p.prescribe_name,

+ 7 - 2
fs-user-app/src/main/java/com/fs/app/controller/store/ProductScrmController.java

@@ -154,8 +154,13 @@ public class ProductScrmController extends AppBaseController {
         List<FsStoreProductAttrScrm> productAttr=attrService.selectFsStoreProductAttrByProductId(product.getProductId());
         List<FsStoreProductAttrValueScrm> productValues=attrValueService.selectFsStoreProductAttrValueByProductId(product.getProductId());
 
-        //获取商品溯源码库存
-        int number = verifyCodeScrmMapper.selectCount(new LambdaQueryWrapper<FsStoreVerifyCodeScrm>().eq(FsStoreVerifyCodeScrm::getProductId,product.getProductId()).eq(FsStoreVerifyCodeScrm::getOutboundStatus,0L).eq(FsStoreVerifyCodeScrm::getIsDel,0L));
+        //根据商品类型区分显示库存
+        int number;
+        if(product.getCateId().equals(202L) || product.getCateId().equals(232L) || product.getCateId().equals(201L) || product.getCateId().equals(233L)){
+        number = product.getStock().intValue();
+        }else {
+           number = verifyCodeScrmMapper.selectCount(new LambdaQueryWrapper<FsStoreVerifyCodeScrm>().eq(FsStoreVerifyCodeScrm::getProductId,product.getProductId()).eq(FsStoreVerifyCodeScrm::getOutboundStatus,0L).eq(FsStoreVerifyCodeScrm::getIsDel,0L));
+        }
 
 
 //        for(FsStoreProductAttrValue value:productValues){

+ 10 - 0
fs-user-app/src/main/java/com/fs/app/controller/store/StoreOrderScrmController.java

@@ -31,6 +31,7 @@ import com.fs.hisStore.domain.*;
 import com.fs.hisStore.dto.FsStoreOrderComputeDTO;
 import com.fs.hisStore.enums.OrderInfoEnum;
 import com.fs.hisStore.mapper.FsStorePaymentScrmMapper;
+import com.fs.hisStore.mapper.FsStoreVerifyCodeScrmMapper;
 import com.fs.hisStore.param.*;
 import com.fs.hisStore.service.*;
 import com.fs.hisStore.vo.FsHuiFuPayInfo;
@@ -146,6 +147,9 @@ public class StoreOrderScrmController extends AppBaseController {
     @Autowired
     private IFsStoreScrmService storeScrmService;
 
+    @Autowired
+    private FsStoreVerifyCodeScrmMapper verifyCodeScrmMapper;
+
     //TODO 应该没用到
     private IErpOrderService getErpService(){
         //判断是否开启erp
@@ -259,6 +263,12 @@ public class StoreOrderScrmController extends AppBaseController {
                 storeName=storeScrm.getStoreName();
             }
         }
+
+        //获取订单下的溯源码
+        List<FsStoreVerifyCodeScrm> verifyCodes = verifyCodeScrmMapper.selectList(new LambdaQueryWrapper<FsStoreVerifyCodeScrm>().select(FsStoreVerifyCodeScrm::getVerifyCode).eq(FsStoreVerifyCodeScrm::getOrderId, orderId).eq(FsStoreVerifyCodeScrm::getOutboundStatus,1L).eq(FsStoreVerifyCodeScrm::getIsDel,0L));
+        if(!verifyCodes.isEmpty()){
+            order.setVerifyCodes(verifyCodes.stream().map(FsStoreVerifyCodeScrm::getVerifyCode).collect(Collectors.joining()));
+        }
         return R.ok().put("isAfterSales",isAfterSales).put("order",order).put("items",list).put("payLimitTime",payLimitTime).put("prescribe",prescribe).put("prescriptionAuditStatus",prescriptionAuditStatus)
                 .put("storeName",storeName);
     }

+ 2 - 0
fs-user-app/src/main/java/com/fs/app/redis/RedisKeyExpirationListener.java

@@ -132,6 +132,8 @@ public class RedisKeyExpirationListener extends KeyExpirationEventMessageListene
                                         verifyCodes.forEach(v->{
                                             v.setVerifyStatus(0L);
                                             v.setOutboundStatus(0L);
+                                            v.setOrderId(0L);
+                                            v.setOrderItemId(0L);
                                         });
                                         //批量更新数据
                                         verifyCodeScrmService.updateBatchById(verifyCodes);