yfh há 1 mês atrás
pai
commit
393333373e

+ 1 - 1
fs-admin/src/main/java/com/fs/task/FsStoreTask.java

@@ -36,4 +36,4 @@ public class FsStoreTask {
         }
     }
 
-}
+}

+ 2 - 58
fs-service/src/main/java/com/fs/course/service/impl/FsCourseRedPacketLogServiceImpl.java

@@ -1,6 +1,8 @@
 package com.fs.course.service.impl;
 
 import java.math.BigDecimal;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
 import java.util.Date;
 import java.util.HashMap;
 import java.util.List;
@@ -311,64 +313,6 @@ public class FsCourseRedPacketLogServiceImpl implements IFsCourseRedPacketLogSer
         }
     }
 
-    @Override
-    public void queryRedPacketResult(String startTime, String endTime) {
-        LocalDateTime tenMinutesAgo;
-        LocalDateTime twentyMinutesAgo;
-        if(StringUtils.isEmpty(startTime) || StringUtils.isEmpty(endTime)){
-            // 获取前十分钟时间 和 前二十分钟时间
-            tenMinutesAgo = LocalDateTime.now().minusMinutes(10);
-            twentyMinutesAgo = tenMinutesAgo.minusMinutes(10);
-        }else {
-            tenMinutesAgo = LocalDateTime.parse(endTime, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
-            twentyMinutesAgo = LocalDateTime.parse(startTime, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
-        }
-
-        // 获取前分钟时间
-        Map<String, Object> params = new HashMap<>();
-        params.put("startTime", twentyMinutesAgo);
-        params.put("endTime",tenMinutesAgo);
-        // 获取前十分钟红包记录状态为发送中的记录
-        List<FsCourseRedPacketLog> redPacketLogs = fsCourseRedPacketLogMapper.selectFsCourseRedPacketLogListBySending(params);
-        if(redPacketLogs!=null && !redPacketLogs.isEmpty()){
-            String json = configService.selectConfigByKey("redPacket.config");
-            RedPacketConfig config = JSONUtil.toBean(json, RedPacketConfig.class);
-            //创建微信订单
-            WxPayConfig payConfig = new WxPayConfig();
-            BeanUtils.copyProperties(config,payConfig);
-            WxPayService wxPayService = new WxPayServiceImpl();
-            wxPayService.setConfig(payConfig);
-            TransferService transferService=wxPayService.getTransferService();
-            for(FsCourseRedPacketLog redPacket:redPacketLogs){
-                // 获取批次号
-                // redPacket.getResult() {"msg":"发送红包成功","code":200,"mchId":"1703311381","data":{"createTime":"2025-06-26T18:00:48+08:00","outBillNo":"fsCourse1938175604536901632","packageInfo":"ABBQO+oYAAABAAAAAABRil0NtaWxBS5JURpdaBAAAADnGpepZahT9IkJjn90+1qgtzWOmCRNZJfek1QMbZ9ktG8idrj37//0xOSt0T67XUFE+PGeXO8qZoNKHYlU3RicIHExIjZr342xE+QjrpjaHIFYoPg=","state":"WAIT_USER_CONFIRM","transferBillNo":"1330007292140242506260028904279364"},"isNew":1}
-                // 获取 transferBillNo
-                String batchId;
-                try {
-                    batchId = StringUtils.isNotEmpty(redPacket.getBatchId())?redPacket.getBatchId():JSON.parseObject(redPacket.getResult()).getJSONObject("data").getString("transferBillNo");
-                }catch (Exception e){
-                    logger.error("【红包处理】获取批次号失败,FsCourseRedPacketLog-log_id:{}",redPacket.getLogId());
-                    continue;
-                }
-
-                try {
-                    TransferBillsGetResult queryRedPacketResult = transferService.getBillsByTransferBillNo(batchId);
-                    logger.info("FsCourseRedPacketLog-log_id:{},【红包处理】查询批次结果:{}",redPacket.getLogId(),queryRedPacketResult);
-                    if(queryRedPacketResult!=null && "SUCCESS".equals(queryRedPacketResult.getState())){
-                        FsCourseRedPacketLog fsCourseRedPacketLog=new FsCourseRedPacketLog();
-                        fsCourseRedPacketLog.setLogId(redPacket.getLogId());
-                        fsCourseRedPacketLog.setStatus(1); // 已发送
-                        fsCourseRedPacketLog.setUpdateTime(new Date());
-//                        updateFsCourseRedPacketLog(fsCourseRedPacketLog);
-                    }
-                } catch (WxPayException e) {
-                    logger.error(e.getMessage());
-                }
-            }
-        }
-    }
-
-
     private void processRedPacket(FsCourseRedPacketLog redPacket, CourseConfig config) {
         // 获取用户信息
         FsUser user = fsUserMapper.selectFsUserByUserId(redPacket.getUserId());

+ 2 - 0
fs-service/src/main/java/com/fs/hisStore/mapper/FsStoreProductScrmMapper.java

@@ -398,4 +398,6 @@ public interface FsStoreProductScrmMapper
             "where find_in_set(p.product_id,#{ids})  " +
             "</script>"})
     List<FsStoreProductActivityListVO> selectFsStoreProductByIdsAudit(String productIds,@Param("config") MedicalMallConfig  config);
+
+    List<FsStoreProductScrm> bulkCopyFsStoreProductByIds(@Param("productId") Long[] productIds);
 }

+ 97 - 1
fs-service/src/main/java/com/fs/hisStore/service/impl/FsStoreProductScrmServiceImpl.java

@@ -161,7 +161,7 @@ public class FsStoreProductScrmServiceImpl implements IFsStoreProductScrmService
      * @param productIds 需要删除的商品ID
      * @return 结果
      */
-    
+
     @Override
     public int deleteFsStoreProductByIds(Long[] productIds)
     {
@@ -1027,4 +1027,100 @@ public class FsStoreProductScrmServiceImpl implements IFsStoreProductScrmService
     public List<FsStoreProductActivityListVO> selectFsStoreProductByIdsAudit(String productIds) {
         return fsStoreProductMapper.selectFsStoreProductByIdsAudit(productIds,medicalMallConfig);
     }
+
+    @Override
+    @Transactional
+    public R bulkCopyFsStoreProductByIds(Long[] productIds) {
+        storeAuditLogUtil.addBatchAuditArray(productIds, "", "");
+        List<FsStoreProductScrm> list = fsStoreProductMapper.bulkCopyFsStoreProductByIds(productIds);
+        if(list != null && !list.isEmpty()){
+            for (FsStoreProductScrm product : list) {
+                List<FsStoreProductAttrValueScrm> param = fsStoreProductAttrValueMapper.selectFsStoreProductAttrValueByProductId(product.getProductId());
+                //获取店铺
+                FsStoreScrm store = fsStoreScrmService.selectFsStoreByStoreId(product.getStoreId());
+                if(store == null || 1 != store.getStatus()){
+                    return R.error("ID为:" + product.getProductId() + "的店铺不存在或未启用");
+                }else{
+                    //验证资质
+                    switch (product.getProductType()){
+                        case 1://非处方
+                            break;
+                        case 2://处方
+                            if("".equals(store.getDrugLicense()) ||  LocalDate.now().isBefore(store.getDrugLicenseExpiryEnd())){
+                                return R.error("ID为:" + product.getProductId() + "的店铺药品资质为空或已过期,请完善后再添加");
+                            }
+                            break;
+                        case 3://食品
+                            if("".equals(store.getFoodLicense()) ||  LocalDate.now().isBefore(store.getFoodLicenseExpiryEnd())){
+                                return R.error("ID为:" + product.getProductId() + "的店铺食品资质为空或已过期,请完善后再添加");
+                            }
+                            break;
+                        case 4://器械
+                            if("".equals(store.getMedicalDevice3()) ||  LocalDate.now().isBefore(store.getMedicalDevice3ExpiryEnd())){
+                                return R.error("ID为:" + product.getProductId() + "的店铺器械资质为空或已过期,请完善后再添加");
+                            }
+                            break;
+                        default:
+                            return R.error("ID为:" + product.getProductId() + "的商品类型错误");
+                    }
+                }
+
+                fsStoreProductMapper.insertFsStoreProduct(product);
+                Long fsStoreProductId = product.getProductId();
+
+                storeAuditLogUtil.addOperLog(product.getProductId());
+
+                if (product.getSpecType().equals(0)) {
+                    ProductArrtDTO fromatDetailDto = ProductArrtDTO.builder()
+                            .value("规格")
+                            .detail(ListUtil.toList("默认"))
+                            .build();
+                    List<ProductArrtDTO> items=new ArrayList<>();
+                    items.add(fromatDetailDto);
+                    param.get(0).setSku("默认");
+                    addProductAttr(product.getProductId(),items,param);
+                } else {
+                    List<FsStoreProductAttrScrm> items = fsStoreProductAttrMapper.selectFsStoreProductAttrByProductId(product.getProductId());
+
+                    //清空attr
+                    fsStoreProductAttrMapper.clear(fsStoreProductId);
+                    //清空values
+                    //查出商品属性所有ID;
+                    List<FsStoreProductAttrValueScrm> attrValues=fsStoreProductAttrValueMapper.selectFsStoreProductAttrValueByProductId(fsStoreProductId);
+                    fsStoreProductAttrValueMapper.deleteFsStoreProductAttrValueByProductId(fsStoreProductId);
+
+                    //写入attr
+                    for(FsStoreProductAttrScrm vo:items){
+                        vo.setProductId(fsStoreProductId);
+                        fsStoreProductAttrMapper.insertFsStoreProductAttr(vo);
+                    }
+                    Map<String,Object> map = new LinkedHashMap<>();
+                    map.put("attr",items);
+                    // map.put("value",values);
+
+                    for(FsStoreProductAttrValueScrm val: param){
+                        //更新套餐商品属性ID  获取套餐
+                        Long id=val.getId();
+                        if(val.getDetail()!=null){
+                            List<String> stringList = new ArrayList<>(val.getDetail().values());
+                            Collections.sort(stringList);
+                            val.setSku(StrUtil.join(",",stringList));
+                        }
+                        val.setProductId(fsStoreProductId);
+                        fsStoreProductAttrValueMapper.insertFsStoreProductAttrValue(val);
+                        if(attrValues!=null && !attrValues.isEmpty()){
+                            for(FsStoreProductAttrValueScrm attrValue:attrValues){
+                                if(attrValue.getId().equals(id)){
+                                    fsStoreProductGroupMapper.updateProducts(attrValue.getId(),val.getId());
+                                    fsStoreProductPackageMapper.updateProducts(attrValue.getId(),val.getId());
+                                }
+                            }
+                        }
+                    }
+                }
+            }
+            return R.ok();
+        }
+        return R.ok();
+    }
 }

+ 9 - 0
fs-service/src/main/resources/mapper/hisStore/FsStoreProductScrmMapper.xml

@@ -487,4 +487,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         </if>
         and  p.is_good=1 and p.is_display=1 order by p.sort desc
     </select>
+
+
+    <select id="bulkCopyFsStoreProductByIds" resultMap="FsStoreProductResult">
+        <include refid="selectFsStoreProductVo"/>
+        where product_id in
+        <foreach item="productId" collection="array" open="(" separator="," close=")">
+            #{productId}
+        </foreach>
+    </select>
 </mapper>