Kaynağa Gözat

实现定时同步客户信息表用户真实下单数据的功能

cgp 3 gün önce
ebeveyn
işleme
fd64bf130c

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

@@ -0,0 +1,37 @@
+package com.fs.his.task;
+
+
+import com.fs.hisStore.mapper.FsStoreOrderScrmMapper;
+import com.fs.hisStore.vo.FsStoreOrderScrmPhoneAndOrderNumVO;
+import com.fs.qw.mapper.FsCompanyCustomerMapper;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.collections4.CollectionUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+
+@Slf4j
+@Component("StoreTask")
+public class StoreTask {
+    
+    @Autowired
+    private FsStoreOrderScrmMapper fsStoreOrderScrmMapper;
+
+    @Autowired
+    private FsCompanyCustomerMapper fsCompanyCustomerMapper;
+    
+    /**
+     * 同步客户信息表客户的有效下单数
+     * */
+    public void syncStoreCompanyUserOrderNum(){
+        log.info("同步客户信息表客户的有效下单数据");
+        //获取商城处方订单每个手机号的有效下单数列表
+        List<FsStoreOrderScrmPhoneAndOrderNumVO> fsStoreOrderScrmPhoneAndOrderNumVOS = fsStoreOrderScrmMapper.fetchPharmacyPrescribeOrderPhoneCountList();
+        if (CollectionUtils.isEmpty(fsStoreOrderScrmPhoneAndOrderNumVOS)){
+            return;
+        }
+        //根据手机号批量更新客户信息表客户有效下单数
+        int updateResult=fsCompanyCustomerMapper.updateCompanyUserBuyCountByUserPhone(fsStoreOrderScrmPhoneAndOrderNumVOS);
+    }
+}

+ 8 - 0
fs-service/src/main/java/com/fs/hisStore/mapper/FsStoreOrderScrmMapper.java

@@ -1256,4 +1256,12 @@ public interface FsStoreOrderScrmMapper
      * 根据手写信息采集id查询订单列表信息
      * */
     List<FsStoreOrderScrmIdVo> selectIdListByHandleCollectionIds(@Param("handwriteCollectionIds") List<Long> handwriteCollectionIds);
+
+
+    /**
+     * 查询商城处方订单每个手机号的有效下单数列表
+     *
+     * @return 订单集合
+     */
+    public List<FsStoreOrderScrmPhoneAndOrderNumVO> fetchPharmacyPrescribeOrderPhoneCountList();
 }

+ 20 - 0
fs-service/src/main/java/com/fs/hisStore/vo/FsStoreOrderScrmPhoneAndOrderNumVO.java

@@ -0,0 +1,20 @@
+package com.fs.hisStore.vo;
+
+import lombok.Data;
+
+/**
+ * 统计商城处方订单每个手机号的有效下单数(排除待支付、已退款、已取消等等)
+ * */
+@Data
+public class FsStoreOrderScrmPhoneAndOrderNumVO {
+
+    /**
+     *  手机号
+     * */
+    private String phone;
+
+    /**
+     *  订单数量
+     * */
+    private Integer orderNum;
+}

+ 6 - 0
fs-service/src/main/java/com/fs/qw/mapper/FsCompanyCustomerMapper.java

@@ -1,5 +1,6 @@
 package com.fs.qw.mapper;
 
+import com.fs.hisStore.vo.FsStoreOrderScrmPhoneAndOrderNumVO;
 import com.fs.qw.domain.FsCompanyCustomer;
 import com.fs.qw.param.TransferCustomerParam;
 import org.apache.ibatis.annotations.Param;
@@ -91,4 +92,9 @@ public interface FsCompanyCustomerMapper {
      * 根据手机号查询客户信息表主键
      * */
     Long selectCompanyCustomerIdByPhone(String phone);
+
+    /**
+     * 根据手机号更新客户信息表购买次数
+     * */
+    int updateCompanyUserBuyCountByUserPhone(@Param("phoneList") List<FsStoreOrderScrmPhoneAndOrderNumVO> phoneList);
 }

+ 13 - 0
fs-service/src/main/resources/mapper/hisStore/FsStoreOrderScrmMapper.xml

@@ -1197,4 +1197,17 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     </foreach>
 </select>
 
+    <select id="fetchPharmacyPrescribeOrderPhoneCountList"
+            resultType="com.fs.hisStore.vo.FsStoreOrderScrmPhoneAndOrderNumVO">
+        SELECT user_phone, COUNT(*) AS valid_order_num
+        FROM fs_store_order_scrm
+        WHERE paid = 1
+          AND status IN (1, 2, 3)
+          AND extend_order_id IS NOT NULL
+          AND prescribe_id IS NOT NULL
+          AND is_del = 0
+          AND is_sys_del = 0
+        GROUP BY user_phone
+    </select>
+
 </mapper>

+ 13 - 0
fs-service/src/main/resources/mapper/qw/FsCompanyCustomerMapper.xml

@@ -409,4 +409,17 @@
         where prescribe_id = #{prescribeId}
     </update>
 
+    <update id="updateCompanyUserBuyCountByUserPhone" parameterType="list">
+        UPDATE fs_company_customer
+        SET buy_count = CASE phone
+        <foreach collection="phoneList" item="item" separator=" ">
+            WHEN #{item.userPhone} THEN #{item.orderNum}
+        </foreach>
+        END
+        WHERE phone IN
+        <foreach collection="phoneList" item="item" open="(" close=")" separator=",">
+            #{item.userPhone}
+        </foreach>
+    </update>
+
 </mapper>