package com.ruoyi.web.controller.task; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.ruoyi.common.constant.Constants; import com.ruoyi.common.core.redis.RedisCache; import com.ruoyi.system.model.TAppUser; import com.ruoyi.system.model.TAppUserPositioning; import com.ruoyi.system.service.TAppUserPositioningService; import com.ruoyi.system.service.TAppUserService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import org.springframework.util.CollectionUtils; import org.springframework.util.StringUtils; import java.time.LocalDate; import java.util.ArrayList; import java.util.List; /** * @author xiaochen * @date 2025/10/11 8:39 */ @Component public class TaskUtil { @Autowired private RedisCache redisCache; @Autowired private TAppUserService appUserService; @Autowired private TAppUserPositioningService appUserPositioningService; //每天0点30分执行 @Scheduled(cron = "0 30 0 * * ?") public void dayOfSavePositioning() { try { // 获取前一天时间 LocalDate localDate = LocalDate.now().minusDays(1); // 查询所有的用户 List appUserList = appUserService.list(Wrappers.lambdaQuery(TAppUser.class) .eq(TAppUser::getState, 1) .eq(TAppUser::getState, 1)); List appUserPositioningList = new ArrayList<>(); for (TAppUser appUser : appUserList) { TAppUserPositioning appUserPositioning = new TAppUserPositioning(); // 获取定位 String location = redisCache.getCacheObject(Constants.LOCATION + appUser.getId() + ":" + localDate); if(StringUtils.hasLength(location)){ appUserPositioning.setAppUserId(appUser.getId()); appUserPositioning.setUserLocation(location); appUserPositioning.setCreateTime(localDate.atStartOfDay()); appUserPositioningList.add(appUserPositioning); } } if(!CollectionUtils.isEmpty(appUserPositioningList)){ appUserPositioningService.saveBatch(appUserPositioningList); } } catch (Exception e) { e.printStackTrace(); } } }