瀏覽代碼

【feat】【v3】
1.新增新用户统计定时任务

ChenYL 10 月之前
父節點
當前提交
54ca414fc2

+ 6 - 0
src/main/java/com/punchsettle/server/atomic/service/IStatNewUserService.java

@@ -19,4 +19,10 @@ public interface IStatNewUserService {
      * @return
      */
     List<StatNewUser> queryByCondition(StatNewUserQuery query);
+
+    /**
+     * 新增
+     * @param statNewUser
+     */
+    void insert(StatNewUser statNewUser);
 }

+ 8 - 0
src/main/java/com/punchsettle/server/atomic/service/IUserService.java

@@ -57,4 +57,12 @@ public interface IUserService {
      * @param users
      */
     void batchUpdate(List<User> users);
+
+    /**
+     * 按条件统计
+     * @param creationTimeFrom 创建时间(开始)
+     * @param creationTimeTo 创建时间(结束)
+     * @return
+     */
+    int countByCondition(String creationTimeFrom, String creationTimeTo);
 }

+ 6 - 0
src/main/java/com/punchsettle/server/atomic/service/impl/StatNewUserServiceImpl.java

@@ -43,4 +43,10 @@ public class StatNewUserServiceImpl implements IStatNewUserService {
         }
         return statNewUserMapper.selectByExample(weekend);
     }
+
+    @Override
+    public void insert(StatNewUser statNewUser) {
+        Assert.isNull(statNewUser);
+        statNewUserMapper.insertSelective(statNewUser);
+    }
 }

+ 18 - 2
src/main/java/com/punchsettle/server/atomic/service/impl/UserServiceImpl.java

@@ -15,7 +15,7 @@ import com.punchsettle.server.atomic.mapper.UserMapper;
 import com.punchsettle.server.atomic.service.IUserService;
 import com.punchsettle.server.common.utils.Assert;
 
-import io.micrometer.common.util.StringUtils;
+import org.springframework.util.StringUtils;
 import tk.mybatis.mapper.weekend.Weekend;
 import tk.mybatis.mapper.weekend.WeekendCriteria;
 
@@ -41,7 +41,7 @@ public class UserServiceImpl implements IUserService {
 
     @Override
     public User getByOpenId(String openId) {
-        if (StringUtils.isBlank(openId)) {
+        if (!StringUtils.hasText(openId)) {
             return null;
         }
 
@@ -90,4 +90,20 @@ public class UserServiceImpl implements IUserService {
         Assert.notEmpty(users);
         userMapper.batchUpdateSelective(users);
     }
+
+    @Override
+    public int countByCondition(String creationTimeFrom, String creationTimeTo) {
+        Assert.isNull(creationTimeFrom);
+        Assert.isNull(creationTimeTo);
+
+        Weekend<User> weekend = WeekendUtils.createExcludeAuditFields(User.class);
+        WeekendCriteria<User, Object> criteria = weekend.weekendCriteria();
+        if (StringUtils.hasText(creationTimeFrom)) {
+            criteria.andGreaterThanOrEqualTo(User::getCreationTime, creationTimeFrom);
+        }
+        if (StringUtils.hasText(creationTimeTo)) {
+            criteria.andLessThanOrEqualTo(User::getCreationTime, creationTimeTo);
+        }
+        return userMapper.selectCountByExample(weekend);
+    }
 }

+ 25 - 1
src/main/java/com/punchsettle/server/task/StatNewUserTask.java

@@ -1,23 +1,47 @@
 package com.punchsettle.server.task;
 
+import com.punchsettle.server.atomic.entity.StatNewUser;
 import com.punchsettle.server.atomic.service.IStatNewUserService;
+import com.punchsettle.server.atomic.service.IUserService;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
+import java.time.LocalDate;
+
 /**
  * @author tyuio
  * @version 1.0.0
  * @date 2025/5/6 12:36
  * @description 新用户数据统计
  */
+@Slf4j
 @Component
 public class StatNewUserTask {
 
     @Autowired
     private IStatNewUserService statNewUserService;
 
+    @Autowired
+    private IUserService userService;
 
     public void execute() {
-//        statNewUserService.
+        log.info("========== 新用户数据统计定时任务 结束执行 ==========");
+
+        // 构建查询的时间范围
+        LocalDate statTime = LocalDate.now().minusDays(1);
+        String creationTimeFrom = String.format("%s 00:00:00.000", statTime.toString());
+        String creationTimeTo = String.format("%s 23:59:59.999", statTime.toString());
+
+        // 统计
+        int newUserCount = userService.countByCondition(creationTimeFrom, creationTimeTo);
+
+        // 数据入库
+        StatNewUser addStatNewUser = new StatNewUser();
+        addStatNewUser.setStatTime(statTime.toString());
+        addStatNewUser.setNewUserCount(newUserCount);
+        statNewUserService.insert(addStatNewUser);
+
+        log.info("========== 新用户数据统计定时任务 结束执行 ==========");
     }
 }