| package cc.mrbird.febs.mall.quartz; | 
|   | 
| 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 lombok.extern.slf4j.Slf4j; | 
| import org.springframework.beans.factory.annotation.Autowired; | 
| import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; | 
| import org.springframework.stereotype.Component; | 
|   | 
| /** | 
|  * @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<MallOrderInfo> 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<MallOrderInfo> 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<MallOrderItem> 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)); | 
| // | 
| //        } | 
| //    } | 
|     /** | 
|      * 团长第二天才会结算前一天的所有提成 | 
|      * 从团长业绩表中查询出前一天的所有已完成订单金额*提成系数,得到今日提成 | 
|      * 修改业绩的状态 | 
|      * 并生成一条提成流水 | 
|      */ | 
| //    @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<Map<String, String>> allLeaderAchieve = mallLeaderAchieveMapper.selectListByStateAndCreateTimeAndUniqueCode(MallLeaderAchieve.STATE_ONE,dateTime); | 
| //        if (CollUtil.isNotEmpty(allLeaderAchieve)) { | 
| //            for (Map<String, String> 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); | 
| //    } | 
| } |