package cc.mrbird.febs.mall.quartz; import cc.mrbird.febs.common.enumerates.AgentLevelEnum; import cc.mrbird.febs.common.enumerates.FlowTypeEnum; import cc.mrbird.febs.common.enumerates.MoneyFlowTypeEnum; import cc.mrbird.febs.mall.entity.MallGoodsSku; import cc.mrbird.febs.mall.entity.MallMember; import cc.mrbird.febs.mall.entity.MallOrderInfo; import cc.mrbird.febs.mall.entity.MallOrderItem; import cc.mrbird.febs.mall.mapper.MallGoodsSkuMapper; import cc.mrbird.febs.mall.mapper.MallMemberMapper; import cc.mrbird.febs.mall.mapper.MallOrderInfoMapper; import cc.mrbird.febs.mall.mapper.MallOrderItemMapper; import cc.mrbird.febs.mall.service.IApiMallMemberWalletService; import cc.mrbird.febs.mall.service.IMallMoneyFlowService; import cc.mrbird.febs.mall.service.IMemberProfitService; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import java.math.BigDecimal; import java.util.Date; import java.util.List; /** * @author wzy * @date 2022-06-15 **/ @Slf4j @Component public class OrderSettlementJob { @Autowired private MallOrderInfoMapper mallOrderInfoMapper; @Autowired private IApiMallMemberWalletService memberWalletService; @Autowired private IMallMoneyFlowService mallMoneyFlowService; @Autowired private MallMemberMapper mallMemberMapper; @Autowired private MallGoodsSkuMapper mallGoodsSkuMapper; @Autowired private IMemberProfitService memberProfitService; /** * 普通商品结算 */ @Scheduled(cron = "0 0 0 * * ?") public void normalGoodsSettlementJob() { log.info("普通商品结算"); List orderInfos = mallOrderInfoMapper.selectOrderInfoWithNormalGoods(DateUtil.offsetDay(new Date(), -10)); if (CollUtil.isEmpty(orderInfos)) { return; } for (MallOrderInfo orderInfo : orderInfos) { MallMember member = mallMemberMapper.selectById(orderInfo.getMemberId()); if (AgentLevelEnum.ZERO_LEVEL.name().equals(member.getLevel())) { continue; } for (MallOrderItem item : orderInfo.getItems()) { MallGoodsSku sku = mallGoodsSkuMapper.selectById(item.getSkuId()); BigDecimal score = sku.getPresentPrice(); memberWalletService.add(score, member.getId(), "score"); mallMoneyFlowService.addMoneyFlow(member.getId(), score, MoneyFlowTypeEnum.STATIC_BONUS.getValue(), orderInfo.getOrderNo(), FlowTypeEnum.SCORE.getValue()); } // 普通商品动态分红结算 memberProfitService.dynamicProfit(orderInfo.getId(), 1); } } /** * 自动确认收货 */ @Scheduled(cron = "0 0 0 * * ?") public void orderAutoConfirmJob() { log.info("自动确认收货"); mallOrderInfoMapper.updateOrderConfirmStatus(DateUtil.offsetDay(new Date(), -7)); } }