Bladeren bron

代码优化

qxy 1 maand geleden
bovenliggende
commit
7954a9d335
1 gewijzigde bestanden met toevoegingen van 76 en 42 verwijderingen
  1. 76 42
      alien-store/src/main/java/shop/alien/store/service/LifeUserDynamicsService.java

+ 76 - 42
alien-store/src/main/java/shop/alien/store/service/LifeUserDynamicsService.java

@@ -131,7 +131,7 @@ public class LifeUserDynamicsService extends ServiceImpl<LifeUserDynamicsMapper,
         return this.removeById(id);
     }
 
-    public LifeUserDynamics getDynamicsById(int id){
+    public LifeUserDynamics getDynamicsById(int id) {
         return this.getById(id);
     }
 
@@ -621,7 +621,7 @@ public class LifeUserDynamicsService extends ServiceImpl<LifeUserDynamicsMapper,
 
         LifeUserExpertOrder lifeUserExpertOrder = lifeUserExpertOrderMapper.selectOne(new LambdaQueryWrapper<LifeUserExpertOrder>()
                 .eq(LifeUserExpertOrder::getId, expertOrderId)
-                .eq(LifeUserExpertOrder::getDeleteFlag,0));
+                .eq(LifeUserExpertOrder::getDeleteFlag, 0));
         //查询达人购买商户订单状态不是已完成
         //判断达人动态浏览数和gmv 是否达到达人设置的限定值
         if (lifeUserExpertOrder != null && lifeUserExpertOrder.getStatus() != 5) {
@@ -651,60 +651,94 @@ public class LifeUserDynamicsService extends ServiceImpl<LifeUserDynamicsMapper,
 
     public boolean addUserStoreBrowseNumber(LifeBrowseRecord lifeBrowseRecord) {
         int liulanNum = 0;
-        int threeSecondsNum = 0;
+        // 1.处理当天浏览记录(去重插入)
+        handleTodayBrowseRecord(lifeBrowseRecord);
+
+        // 2.更新动态浏览统计数据并获取浏览数
+        LifeUserDynamics lifeUserDynamics = lifeUserDynamicsMapper.selectById(lifeBrowseRecord.getDynamicsId());
+        if (lifeUserDynamics == null) {
+            return false;
+        }
+
+        liulanNum = updateDynamicsBrowseCount(lifeBrowseRecord, lifeUserDynamics);
+
+        //3.查询gmv和动态浏览数是否满足当前达人订单规定值 都满足修改订单状态为已完成
+        LifeUserExpertOrder lifeUserExpertOrder = lifeUserExpertOrderMapper.selectOne(new LambdaQueryWrapper<LifeUserExpertOrder>()
+                .eq(LifeUserExpertOrder::getId, lifeBrowseRecord.getOrderId())
+                .eq(LifeUserExpertOrder::getDeleteFlag, 0));
+        if (lifeUserExpertOrder != null && lifeUserExpertOrder.getStatus() != 5) {
+            LifeUserExpertWorks lifeUserExpertWorks = lifeUserExpertWorksMapper.selectOne(new LambdaQueryWrapper<LifeUserExpertWorks>().eq(LifeUserExpertWorks::getDynamicsId, lifeBrowseRecord.getDynamicsId())
+                    .eq(LifeUserExpertWorks::getOrderId, lifeBrowseRecord.getOrderId())
+                    .eq(LifeUserExpertWorks::getDeleteFlag, 0));
+            if (lifeUserExpertWorks != null) {
+                if (lifeUserExpertWorks.getOrderGmv().compareTo(lifeUserExpertOrder.getOrderGmv()) >= 0 && liulanNum >= lifeUserExpertOrder.getOrderPlayCount()) {
+                    lifeUserExpertOrder.setStatus(5);
+                    lifeUserExpertOrderMapper.updateById(lifeUserExpertOrder);
+                }
+            }
+        }
+        return true;
+    }
+
+    /**
+     * 处理当天浏览记录(如果不存在则插入)
+     */
+    private void handleTodayBrowseRecord(LifeBrowseRecord lifeBrowseRecord) {
         // 获取当天开始时间(00:00:00)
         LocalDateTime todayStart = LocalDateTime.of(LocalDate.now(), LocalTime.MIN);
         // 获取当天结束时间(23:59:59.999)
         LocalDateTime todayEnd = LocalDateTime.of(LocalDate.now(), LocalTime.MAX);
-        LifeBrowseRecord selectOne = lifeBrowseRecordMapper.selectOne(new LambdaQueryWrapper<LifeBrowseRecord>().eq(LifeBrowseRecord::getUserId, lifeBrowseRecord.getUserId())
-                .between(LifeBrowseRecord::getLiulanTime, todayStart, todayEnd).in(LifeBrowseRecord::getDeleteFlag, 0, 1).eq(LifeBrowseRecord::getDynamicsId, lifeBrowseRecord.getDynamicsId())
-                .eq(LifeBrowseRecord::getOrderId, lifeBrowseRecord.getOrderId())
-                .eq(LifeBrowseRecord::getDynamicsType, lifeBrowseRecord.getDynamicsType()));
-        if (selectOne == null) {
+
+        LifeBrowseRecord existingRecord = lifeBrowseRecordMapper.selectOne(
+                new LambdaQueryWrapper<LifeBrowseRecord>()
+                        .eq(LifeBrowseRecord::getUserId, lifeBrowseRecord.getUserId())
+                        .between(LifeBrowseRecord::getLiulanTime, todayStart, todayEnd)
+                        .in(LifeBrowseRecord::getDeleteFlag, 0, 1)
+                        .eq(LifeBrowseRecord::getDynamicsId, lifeBrowseRecord.getDynamicsId())
+                        .eq(LifeBrowseRecord::getOrderId, lifeBrowseRecord.getOrderId())
+                        .eq(LifeBrowseRecord::getDynamicsType, lifeBrowseRecord.getDynamicsType())
+        );
+
+        if (existingRecord == null) {
             lifeBrowseRecord.setCreatedTime(new DateTime());
             lifeBrowseRecord.setLiulanTime(new DateTime());
             SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
             lifeBrowseRecord.setLiulanDate(sdf.format(new Date()));
             lifeBrowseRecordMapper.insert(lifeBrowseRecord);
         }
-        LifeUserDynamics lifeUserDynamics = lifeUserDynamicsMapper.selectById(lifeBrowseRecord.getDynamicsId());
-        if(lifeUserDynamics != null){
-            //查询达人动态正常浏览数
-            liulanNum = lifeBrowseRecordMapper.getCountBrowseNum(lifeBrowseRecord.getDynamicsId(),lifeBrowseRecord.getOrderId(),0);
-            if (liulanNum > lifeUserDynamics.getLiulanCount()) {
-                LambdaUpdateWrapper<LifeUserDynamics> lambdaUpdateWrapper = new LambdaUpdateWrapper<>();
-                lambdaUpdateWrapper.eq(LifeUserDynamics::getId, lifeBrowseRecord.getDynamicsId());
-                lambdaUpdateWrapper.set(LifeUserDynamics::getLiulanCount, liulanNum);
-                lifeUserDynamicsMapper.update(null, lambdaUpdateWrapper);
-            }
-            //查询达人动态停留三秒浏览数
-            threeSecondsNum = lifeBrowseRecordMapper.getCountBrowseNum(lifeBrowseRecord.getDynamicsId(),lifeBrowseRecord.getOrderId(),1);
-            if (threeSecondsNum > lifeUserDynamics.getRealityCount()) {
-                LambdaUpdateWrapper<LifeUserDynamics> lambdaUpdateWrapper = new LambdaUpdateWrapper<>();
-                lambdaUpdateWrapper.eq(LifeUserDynamics::getId, lifeBrowseRecord.getDynamicsId());
-                lambdaUpdateWrapper.set(LifeUserDynamics::getRealityCount, threeSecondsNum);
-                lifeUserDynamicsMapper.update(null, lambdaUpdateWrapper);
-            }
+    }
 
-            //查询gmv和动态浏览数是否满足当前达人订单规定值 都满足修改订单状态为已完成
-            LifeUserExpertOrder lifeUserExpertOrder = lifeUserExpertOrderMapper.selectOne(new LambdaQueryWrapper<LifeUserExpertOrder>()
-                    .eq(LifeUserExpertOrder::getId, lifeBrowseRecord.getOrderId())
-                    .eq(LifeUserExpertOrder::getDeleteFlag, 0));
-            if (lifeUserExpertOrder != null && lifeUserExpertOrder.getStatus() != 5) {
-                LifeUserExpertWorks lifeUserExpertWorks = lifeUserExpertWorksMapper.selectOne(new LambdaQueryWrapper<LifeUserExpertWorks>().eq(LifeUserExpertWorks::getDynamicsId, lifeBrowseRecord.getDynamicsId())
-                        .eq(LifeUserExpertWorks::getOrderId, lifeBrowseRecord.getOrderId())
-                        .eq(LifeUserExpertWorks::getDeleteFlag, 0));
-                if (lifeUserExpertWorks != null) {
-                    if (lifeUserExpertWorks.getOrderGmv().compareTo(lifeUserExpertOrder.getOrderGmv()) >= 0 && liulanNum >= lifeUserExpertOrder.getOrderPlayCount()) {
-                        lifeUserExpertOrder.setStatus(5);
-                        lifeUserExpertOrderMapper.updateById(lifeUserExpertOrder);
-                    }
-                }
-            }
+    /**
+     * 更新动态浏览统计数据
+     *
+     * @return 正常浏览数,用于后续订单状态判断
+     */
+    private int updateDynamicsBrowseCount(LifeBrowseRecord lifeBrowseRecord, LifeUserDynamics lifeUserDynamics) {
+        String dynamicsId = lifeBrowseRecord.getDynamicsId();
+        String orderId = lifeBrowseRecord.getOrderId();
+
+        // 更新正常浏览数
+        int liulanNum = lifeBrowseRecordMapper.getCountBrowseNum(dynamicsId, orderId, 0);
+        if (liulanNum > lifeUserDynamics.getLiulanCount()) {
+            LambdaUpdateWrapper<LifeUserDynamics> updateWrapper = new LambdaUpdateWrapper<>();
+            updateWrapper.eq(LifeUserDynamics::getId, dynamicsId)
+                    .set(LifeUserDynamics::getLiulanCount, liulanNum);
+            lifeUserDynamicsMapper.update(null, updateWrapper);
         }
-        return true;
+
+        // 更新停留三秒浏览数
+        int threeSecondsNum = lifeBrowseRecordMapper.getCountBrowseNum(dynamicsId, orderId, 1);
+        if (threeSecondsNum > lifeUserDynamics.getRealityCount()) {
+            LambdaUpdateWrapper<LifeUserDynamics> updateWrapper = new LambdaUpdateWrapper<>();
+            updateWrapper.eq(LifeUserDynamics::getId, dynamicsId)
+                    .set(LifeUserDynamics::getRealityCount, threeSecondsNum);
+            lifeUserDynamicsMapper.update(null, updateWrapper);
+        }
+
+        return liulanNum;
     }
 
+
     public int addTransferCount(String id) {
         LambdaUpdateWrapper<LifeUserDynamics> lambdaUpdateWrapper = new LambdaUpdateWrapper<>();
         lambdaUpdateWrapper.eq(LifeUserDynamics::getId, id)