package cc.mrbird.febs.mall.quartz; import cc.mrbird.febs.common.enumerates.DataDictionaryEnum; import cc.mrbird.febs.mall.entity.DataDictionaryCustom; import cc.mrbird.febs.mall.entity.MallOrderInfo; import cc.mrbird.febs.mall.mapper.*; import cc.mrbird.febs.mall.service.IApiMallMemberWalletService; import cc.mrbird.febs.mall.service.IMallAchieveService; import cc.mrbird.febs.mall.service.IMallMoneyFlowService; import cc.mrbird.febs.mall.service.IMemberProfitService; import cc.mrbird.febs.rabbit.producter.AgentProducer; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.date.DateUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import java.util.Date; import java.util.List; /** * @author wzy * @date 2022-06-15 **/ @Slf4j @Component @ConditionalOnProperty(prefix = "system", name = "job", havingValue = "true") public class OrderSettlementJob { @Autowired private MallOrderInfoMapper mallOrderInfoMapper; @Autowired private MallOrderItemMapper mallOrderItemMapper; @Autowired private IApiMallMemberWalletService memberWalletService; @Autowired private IMallMoneyFlowService mallMoneyFlowService; @Autowired private MallMemberMapper mallMemberMapper; @Autowired private MallGoodsSkuMapper mallGoodsSkuMapper; @Autowired private MallLeaderAchieveMapper mallLeaderAchieveMapper; @Autowired private MallTeamLeaderMapper mallTeamLeaderMapper; @Autowired private DataDictionaryCustomMapper dataDictionaryCustomMapper; @Autowired private IMemberProfitService memberProfitService; @Autowired private IMallAchieveService mallAchieveService; @Autowired private AgentProducer agentProducer; /** * 普通商品结算 */ // @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()); // // mallAchieveService.add(item.getId()); // } // // // 普通商品动态分红结算 // memberProfitService.dynamicProfit(orderInfo.getId(), 1); // } // } /** * 自动确认收货 */ @Scheduled(cron = "0 0 0 * * ?") // @Scheduled(cron = "1 * * * * ?") public void orderAutoConfirmJob() { log.info("自动确认收货"); DataDictionaryCustom dic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.OEDER_AUTO_CONFIRM.getType(), DataDictionaryEnum.OEDER_AUTO_CONFIRM.getCode()); Integer value = Integer.parseInt(dic.getValue()); List orderInfos = mallOrderInfoMapper.selectOrderByStatusAndPayTime(3,DateUtil.offsetDay(new Date(), -value)); if(CollUtil.isNotEmpty(orderInfos)){ // for(MallOrderInfo orderInfo : orderInfos){ // MallTeamLeader mallTeamLeader = mallTeamLeaderMapper.selectLeaderByUniqueCode(orderInfo.getTakeUniqueCode()); // Integer profitSwitch = mallTeamLeader.getProfitSwitch()==null?2:mallTeamLeader.getProfitSwitch(); // if(1 == profitSwitch){ // BigDecimal bonusPercent =new BigDecimal(mallTeamLeader.getBonusPercent()==null?"0":mallTeamLeader.getBonusPercent()); //// DataDictionaryCustom dicBonusPercent = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.BONUS_PERCENT.getType(), DataDictionaryEnum.BONUS_PERCENT.getCode()); //// BigDecimal bonusPercent = new BigDecimal(dicBonusPercent.getValue()).setScale(2,BigDecimal.ROUND_DOWN); // //生成一条团长提成记录 // Long id = orderInfo.getId(); // List mallOrderItemList = mallOrderItemMapper.selectListByOrderId(id); // if(CollUtil.isNotEmpty(mallOrderItemList)){ // for(MallOrderItem mallOrderItem : mallOrderItemList){ // Integer state = mallOrderItem.getState() == null ? 1 : mallOrderItem.getState(); // if(1 == state){ // MallLeaderAchieve mallLeaderAchieve = new MallLeaderAchieve(); // mallLeaderAchieve.setMemberId(orderInfo.getMemberId()); // mallLeaderAchieve.setOrderNo(orderInfo.getOrderNo()); // mallLeaderAchieve.setOrderItemId(mallOrderItem.getId()); // BigDecimal itemAmount = mallOrderItem.getAmount(); // mallLeaderAchieve.setAmount(itemAmount); // BigDecimal bigDecimal = bonusPercent.multiply(itemAmount).setScale(2, BigDecimal.ROUND_DOWN); // mallLeaderAchieve.setProfitAmount(bigDecimal); // mallLeaderAchieve.setUniqueCode(orderInfo.getTakeUniqueCode()); // mallLeaderAchieve.setState(MallLeaderAchieve.STATE_ONE); // mallLeaderAchieveMapper.insert(mallLeaderAchieve); // } // } // } // } // } mallOrderInfoMapper.updateOrderConfirmStatus(DateUtil.date(),DateUtil.offsetDay(new Date(), -value)); orderInfos.forEach(item -> { if(item.getOrderType() == 1){ agentProducer.sendGetScoreMsg(item.getId()); } }); } } /** * 团长第二天才会结算前一天的所有提成 * 从团长业绩表中查询出前一天的所有已完成订单金额*提成系数,得到今日提成 * 修改业绩的状态 * 并生成一条提成流水 */ // @Scheduled(cron = "0 0 1 * * ?") //// @Scheduled(cron = "1 * * * * ?") // public void leaderAchieveAuto() { // log.info("团长每日提成"); // //获取每日提成总数 // /** // * a.unique_code uniqueCode 团长特征码 // * , IFNULL(sum(a.amount),0) amount 每日提成总金额 // */ // DateTime dateTime = DateUtil.offsetDay(new Date(), -1); //// DateTime dateTime = DateUtil.offsetDay(new Date(), 0); // List> allLeaderAchieve = mallLeaderAchieveMapper.selectListByStateAndCreateTimeAndUniqueCode(MallLeaderAchieve.STATE_ONE,dateTime); // if (CollUtil.isNotEmpty(allLeaderAchieve)) { // for (Map map : allLeaderAchieve) { // String uniqueCode = map.get("uniqueCode"); // Object profitAmount = map.get("profitAmount"); // // MallTeamLeader mallTeamLeader = mallTeamLeaderMapper.selectLeaderByUniqueCode(uniqueCode); // Integer profitSwitch = mallTeamLeader.getProfitSwitch(); // if(1 == profitSwitch){ // //直接舍弃小数点的第三位 // BigDecimal achieveMoney = new BigDecimal(String.valueOf(profitAmount)).setScale(2,BigDecimal.ROUND_DOWN); // MallMember mallMember = mallMemberMapper.selectInfoByInviteId(uniqueCode); // memberWalletService.addBalance(achieveMoney,mallMember.getId()); // String achieveNo = "TC."+ MallUtils.getOrderNum(); // mallMoneyFlowService.addMoneyFlow( // mallMember.getId(), // achieveMoney, // MoneyFlowTypeEnum.LEADERACHIEVE.getValue(), // achieveNo, // FlowTypeEnum.BALANCE.getValue()); // // //更新到已提成状态 // mallLeaderAchieveMapper.updateByUniqueCodeStateAndTime(DateUtil.date(),uniqueCode,MallLeaderAchieve.STATE_ONE,dateTime); // } // } // } // } // public static void main(String[] args) { // BigDecimal bigDecimal = new BigDecimal(0.1256).setScale(2,BigDecimal.ROUND_DOWN); // System.out.println(bigDecimal); // } }