159 lines
6.5 KiB
Java
159 lines
6.5 KiB
Java
package com.linln.admin.config;
|
|
|
|
import com.linln.admin.orders.domain.*;
|
|
import com.linln.admin.orders.repository.*;
|
|
import com.linln.admin.users.domain.UserCoupons;
|
|
import com.linln.admin.users.repository.UsersCouponsRepository;
|
|
import com.linln.admin.users.repository.UsersRepository;
|
|
import com.linln.common.enums.StatusEnum;
|
|
import lombok.Data;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import org.springframework.boot.availability.ApplicationAvailabilityBean;
|
|
import org.springframework.boot.availability.AvailabilityChangeEvent;
|
|
import org.springframework.boot.availability.ReadinessState;
|
|
import org.springframework.scheduling.annotation.Scheduled;
|
|
import org.springframework.stereotype.Component;
|
|
|
|
import javax.annotation.Resource;
|
|
import java.util.*;
|
|
import java.util.stream.Collectors;
|
|
|
|
/**
|
|
* @author: yan.y
|
|
* @Description:
|
|
* @Date: Created in 22:40 2023/7/3
|
|
* @Modified by:
|
|
*/
|
|
@Slf4j
|
|
@Component
|
|
public class InitLoadDataService extends ApplicationAvailabilityBean {
|
|
|
|
public static final Map<Long, Goods> GOODS_MAP = new HashMap<>();
|
|
public static final Map<Long, Car> CAR_MAP = new HashMap<>();
|
|
|
|
public static final Map<Long, CarUser> CAR_USER_MAP = new HashMap<>();
|
|
public static final Map<Long, PetBaseInfo> PET_BASE_INFO_MAP = new HashMap<>();
|
|
public static final Map<String, List<Goods>> PET_GOODS_MAP = new HashMap<>();
|
|
public static final List<ServiceAddrs> SERVICE_ADDRS = new ArrayList<>();
|
|
public static final Map<Long, Coupons> COUPONS_MAP = new HashMap<>();
|
|
|
|
@Resource
|
|
private PetBaseInfoRepository petBaseInfoRepository;
|
|
|
|
@Resource
|
|
private GoodsRepository goodsRepository;
|
|
|
|
@Resource
|
|
private CarRepository carRepository;
|
|
|
|
@Resource
|
|
private CarUserRepository carUserRepository;
|
|
|
|
@Resource
|
|
private UsersRepository usersRepository;
|
|
|
|
@Resource
|
|
private PetGoodsRepository petGoodsRepository;
|
|
|
|
@Resource
|
|
private ServiceAddrsRepository servicesRepository;
|
|
|
|
@Resource
|
|
private UsersCouponsRepository usersCouponsRepository;
|
|
|
|
@Resource
|
|
private CouponsRepository couponsRepository;
|
|
|
|
@Resource
|
|
private CarConfigRepository carConfigRepository;
|
|
|
|
@Override
|
|
public void onApplicationEvent(AvailabilityChangeEvent<?> event) {
|
|
super.onApplicationEvent(event);
|
|
if (ReadinessState.ACCEPTING_TRAFFIC.equals(event.getState())) {
|
|
loadData();
|
|
}
|
|
}
|
|
|
|
@Scheduled(cron = "0 0/2 * * * ?")
|
|
public void loadData() {
|
|
List<Goods> goodsList = goodsRepository.findAll();
|
|
GOODS_MAP.clear();
|
|
GOODS_MAP.putAll(goodsList.stream().collect(Collectors.toMap(Goods::getId, goods -> goods)));
|
|
List<PetBaseInfo> petBaseInfoList = petBaseInfoRepository.findAll();
|
|
PET_BASE_INFO_MAP.clear();
|
|
PET_BASE_INFO_MAP.putAll(petBaseInfoList.stream().collect(Collectors.toMap(PetBaseInfo::getId, petBaseInfo -> petBaseInfo)));
|
|
List<Car> carList = carRepository.findAll();
|
|
CAR_MAP.clear();
|
|
CAR_MAP.putAll(carList.stream().collect(Collectors.toMap(Car::getId, car -> car)));
|
|
List<CarUser> carUserList = carUserRepository.findAll();
|
|
for (CarUser carUser : carUserList) {
|
|
carUser.setUsers(usersRepository.findById(carUser.getUid()).get());
|
|
}
|
|
CAR_USER_MAP.clear();
|
|
CAR_USER_MAP.putAll(carUserList.stream().collect(Collectors.toMap(CarUser::getId, carUser -> carUser)));
|
|
List<PetGoods> petGoodsList = petGoodsRepository.findAll();
|
|
Map<String, List<Goods>> petGoodsMap = new HashMap<>();
|
|
for (PetGoods petGoods : petGoodsList) {
|
|
String key = petGoods.getAssortment() + "" + petGoods.getPetType() + petGoods.getWeight() + petGoods.getHair();
|
|
if (petGoodsMap.containsKey(key)) {
|
|
petGoodsMap.get(key).add(GOODS_MAP.get(petGoods.getGoodsId()));
|
|
} else {
|
|
List<Goods> petGoodsList1 = new ArrayList<>();
|
|
petGoodsList1.add(GOODS_MAP.get(petGoods.getGoodsId()));
|
|
petGoodsMap.put(key, petGoodsList1);
|
|
}
|
|
}
|
|
PET_GOODS_MAP.clear();
|
|
PET_GOODS_MAP.putAll(petGoodsMap);
|
|
List<ServiceAddrs> serviceAddrs = servicesRepository.findAll();
|
|
SERVICE_ADDRS.clear();
|
|
SERVICE_ADDRS.addAll(serviceAddrs);
|
|
List<Coupons> couponsList = couponsRepository.findAll();
|
|
COUPONS_MAP.clear();
|
|
COUPONS_MAP.putAll(couponsList.stream().collect(Collectors.toMap(Coupons::getId, coupons -> coupons)));
|
|
log.info("goods load all as : {}", GOODS_MAP);
|
|
log.info("petBaseInfos load all as : {}", PET_BASE_INFO_MAP);
|
|
log.info("carList load all as : {}", CAR_MAP);
|
|
log.info("petGoodsList load all as : {}", PET_GOODS_MAP);
|
|
log.info("serviceAddrs load all as : {}", serviceAddrs);
|
|
}
|
|
|
|
/**
|
|
* 优惠券过期逻辑
|
|
*/
|
|
@Scheduled(cron = "0 0/1 * * * ?")
|
|
public void couponsExpire() {
|
|
List<UserCoupons> userCouponsList = usersCouponsRepository.findUserCouponsByLastExpireTimeLessThan(new Date());
|
|
for (UserCoupons userCoupons : userCouponsList) {
|
|
userCoupons.setCouponsStatus(3);
|
|
}
|
|
usersCouponsRepository.saveAllAndFlush(userCouponsList);
|
|
List<Coupons> couponsList = couponsRepository.findAllByExpireTimeLessThan(System.currentTimeMillis());
|
|
for (Coupons coupons : couponsList) {
|
|
coupons.setStatus(StatusEnum.DELETE.getCode());
|
|
}
|
|
couponsRepository.saveAllAndFlush(couponsList);
|
|
List<CarConfig> carConfigs = carConfigRepository.findAll();
|
|
for (CarConfig carConfig : carConfigs) {
|
|
if (carConfig.getStartDownTime() == null && carConfig.getEndDownTime() == null
|
|
&& CAR_MAP.get(carConfig.getCarId()).getCarStatus() == 2) {
|
|
Car car = CAR_MAP.get(carConfig.getCarId());
|
|
car.setCarStatus(1);
|
|
carRepository.save(car);
|
|
} else if (System.currentTimeMillis() >= carConfig.getStartDownTime().getTime() && System.currentTimeMillis() < carConfig.getEndDownTime().getTime()
|
|
&& CAR_MAP.get(carConfig.getCarId()).getCarStatus() == 1) {
|
|
Car car = CAR_MAP.get(carConfig.getCarId());
|
|
car.setCarStatus(2);
|
|
carRepository.save(car);
|
|
} else if (System.currentTimeMillis() >= carConfig.getEndDownTime().getTime()
|
|
&& CAR_MAP.get(carConfig.getCarId()).getCarStatus() == 2) {
|
|
Car car = CAR_MAP.get(carConfig.getCarId());
|
|
car.setCarStatus(1);
|
|
carRepository.save(car);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|