package com.mzl.flower.schedule;
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.mzl.flower.constant.Constants;
|
import com.mzl.flower.entity.flower.FlowerCategory;
|
import com.mzl.flower.entity.partner.Partner;
|
import com.mzl.flower.entity.payment.Order;
|
import com.mzl.flower.entity.payment.Transfer;
|
import com.mzl.flower.mapper.flower.FlowerCategoryMapper;
|
import com.mzl.flower.mapper.partner.PartnerMapper;
|
import com.mzl.flower.mapper.payment.OrderMapper;
|
import com.mzl.flower.service.flower.FlowerCategoryService;
|
import com.mzl.flower.service.flower.FlowerService;
|
import com.mzl.flower.service.payment.*;
|
import lombok.extern.slf4j.Slf4j;
|
import org.apache.commons.lang3.time.DateFormatUtils;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.scheduling.annotation.Scheduled;
|
import org.springframework.stereotype.Component;
|
|
import java.time.LocalDate;
|
import java.time.LocalDateTime;
|
import java.util.ArrayList;
|
import java.util.List;
|
|
@Component
|
@Slf4j
|
public class ScheduleService {
|
|
@Autowired
|
private FlowerCategoryMapper categoryMapper;
|
|
@Autowired
|
private PartnerMapper partnerMapper;
|
|
@Autowired
|
private FlowerService flowerService;
|
|
@Autowired
|
private OrderMapper orderMapper;
|
|
@Autowired
|
private UserPaymentV3Service paymentV3Service;
|
|
@Autowired
|
private OrderService orderService;
|
|
@Autowired
|
private OrderSettlementService settlementService;
|
|
@Autowired
|
private FlowerCategoryService categoryService;
|
|
@Autowired
|
private BillService billService;
|
|
@Autowired
|
private OrderItemSettlementService orderItemSettlementService;
|
|
@Scheduled(cron = "1 0/20 * * * ?")
|
public void calculateAvePrice() {
|
log.info("均价计算开始:" + DateFormatUtils.format(System.currentTimeMillis(), "yyyy-MM-dd HH:mm:ss"));
|
List<FlowerCategory> cLs = categoryMapper.selectList(new QueryWrapper<FlowerCategory>()
|
.isNotNull("parent_id"));
|
if(cLs != null && cLs.size() > 0){
|
List<Partner> ls = partnerMapper.selectList(new QueryWrapper<Partner>().eq("status", "P"));
|
for(FlowerCategory c : cLs){
|
flowerService.calculateCategoryDaily(c.getId(), null);
|
|
if(ls != null && ls.size() > 0){
|
for(Partner p : ls){
|
flowerService.calculateCategoryDaily(c.getId(), p.getId());
|
}
|
}
|
}
|
}
|
log.info("均价计算结束:" + DateFormatUtils.format(System.currentTimeMillis(), "yyyy-MM-dd HH:mm:ss"));
|
}
|
|
@Scheduled(cron = "1 1/30 * * * ?")
|
public void calculateCategoryPriceRange() {
|
log.info("分类加价缓存开始:" + DateFormatUtils.format(System.currentTimeMillis(), "yyyy-MM-dd HH:mm:ss"));
|
List<FlowerCategory> cLs = categoryMapper.selectList(new QueryWrapper<FlowerCategory>()
|
.isNotNull("parent_id"));
|
if(cLs != null && cLs.size() > 0){
|
List<Partner> ls = partnerMapper.selectList(new QueryWrapper<Partner>().eq("status", "P"));
|
for(FlowerCategory c : cLs){
|
categoryService.calculateCategoryPriceRange(c.getId(), null);
|
|
if(ls != null && ls.size() > 0){
|
for(Partner p : ls){
|
categoryService.calculateCategoryPriceRange(c.getId(), p.getId());
|
}
|
}
|
}
|
}
|
log.info("分类加价缓存结束:" + DateFormatUtils.format(System.currentTimeMillis(), "yyyy-MM-dd HH:mm:ss"));
|
}
|
|
@Scheduled(cron = "0 0/5 * * * ?")
|
public void checkPrepayOrder() {//五分钟未付款自动取消
|
log.info("未付款确认开始:" + DateFormatUtils.format(System.currentTimeMillis(), "yyyy-MM-dd HH:mm:ss"));
|
|
List<Order> ls = orderMapper.selectList(new QueryWrapper<Order>()
|
.eq("status", Constants.ORDER_STATUS_BACKEND.PENDING.name())
|
.eq("deleted", 0));
|
if(ls != null && ls.size() > 0){
|
for(Order o : ls){
|
try {
|
LocalDateTime createdTime = o.getCreateTime().plusMinutes(5);
|
if (createdTime.isBefore(LocalDateTime.now())) {
|
boolean f = paymentV3Service.checkOrderStatus(o.getId());
|
if(!f){
|
paymentV3Service.cancelOrder(o.getId());
|
}
|
}
|
} catch (Exception e) {
|
log.error(e.getMessage(), e);
|
}
|
}
|
}
|
|
log.info("未付款确认结束:" + DateFormatUtils.format(System.currentTimeMillis(), "yyyy-MM-dd HH:mm:ss"));
|
}
|
|
@Scheduled(cron = "0 10 0 1 * ?")
|
public void calculateSupplierSaleNum(){
|
log.info("计算上月供应商销售数量开始:" + DateFormatUtils.format(System.currentTimeMillis(), "yyyy-MM-dd HH:mm:ss"));
|
orderService.calculateSupplierSaleNum();
|
log.info("计算上月供应商销售数量结束:" + DateFormatUtils.format(System.currentTimeMillis(), "yyyy-MM-dd HH:mm:ss"));
|
}
|
|
@Scheduled(cron = "1 20 0/1 * * ?")
|
public void autoReceive() {
|
log.info("自动收货开始:" + DateFormatUtils.format(System.currentTimeMillis(), "yyyy-MM-dd HH:mm:ss"));
|
orderService.autoReceive();
|
log.info("自动收货结束:" + DateFormatUtils.format(System.currentTimeMillis(), "yyyy-MM-dd HH:mm:ss"));
|
}
|
|
@Scheduled(cron = "1 0 0 * * ?")
|
public void doSettlement() {
|
log.info("结算开始:" + DateFormatUtils.format(System.currentTimeMillis(), "yyyy-MM-dd HH:mm:ss"));
|
//settlementService.doSettlement();
|
|
//新结算
|
List<Order> ls = settlementService.getOrders4Settlement();
|
if(ls != null && ls.size() > 0){
|
List<String> orderIds = new ArrayList<>();
|
for(Order o : ls){
|
orderIds.add(o.getId());
|
}
|
orderItemSettlementService.saveItemSettlementInfo(orderIds);
|
settlementService.doSettlementNew(ls);
|
}
|
|
log.info("结算结束:" + DateFormatUtils.format(System.currentTimeMillis(), "yyyy-MM-dd HH:mm:ss"));
|
}
|
|
@Scheduled(cron = "2 0/10 * * * ?")
|
public void checkTransfer() {
|
log.info("确认转账开始:" + DateFormatUtils.format(System.currentTimeMillis(), "yyyy-MM-dd HH:mm:ss"));
|
List<Transfer> ls = paymentV3Service.getUnCompletedTransfer();
|
if(ls != null && ls.size() > 0){
|
for(Transfer t : ls){
|
try {
|
paymentV3Service.checkTransferStatus(t);
|
} catch (Exception e) {
|
log.error(e.getMessage(), e);
|
}
|
}
|
}
|
log.info("确认转账结束:" + DateFormatUtils.format(System.currentTimeMillis(), "yyyy-MM-dd HH:mm:ss"));
|
}
|
|
@Scheduled(cron = "1 30 0 * * ?")
|
public void generateBill() {
|
log.info("账单开始:" + DateFormatUtils.format(System.currentTimeMillis(), "yyyy-MM-dd HH:mm:ss"));
|
LocalDate date = LocalDate.now();
|
billService.generateBill(date.plusDays(-1));
|
log.info("账单结束:" + DateFormatUtils.format(System.currentTimeMillis(), "yyyy-MM-dd HH:mm:ss"));
|
}
|
}
|