| | |
| | | package cc.mrbird.febs.mall.quartz; |
| | | |
| | | import cc.mrbird.febs.common.enumerates.AgentLevelEnum; |
| | | import cc.mrbird.febs.common.enumerates.DataDictionaryEnum; |
| | | 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.common.utils.MallUtils; |
| | | import cc.mrbird.febs.mall.entity.*; |
| | | 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 cn.hutool.core.collection.CollUtil; |
| | | import cn.hutool.core.date.DateTime; |
| | | import cn.hutool.core.date.DateUtil; |
| | | import cn.hutool.core.util.ObjectUtil; |
| | | 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.math.BigDecimal; |
| | | import java.util.Date; |
| | | import java.util.HashMap; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * @author wzy |
| | |
| | | **/ |
| | | @Slf4j |
| | | @Component |
| | | @ConditionalOnProperty(prefix = "system", name = "job", havingValue = "true") |
| | | public class OrderSettlementJob { |
| | | |
| | | @Autowired |
| | | private MallOrderInfoMapper mallOrderInfoMapper; |
| | | |
| | | @Autowired |
| | | private MallOrderItemMapper mallOrderItemMapper; |
| | | |
| | | @Autowired |
| | | private IApiMallMemberWalletService memberWalletService; |
| | |
| | | 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 MallMoneyFlowMapper mallMoneyFlowMapper; |
| | | |
| | | /** |
| | | * 普通商品结算 |
| | | */ |
| | | @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 * * ?") |
| | | // 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 * * ?") |
| | | public void orderAutoConfirmJob() { |
| | | log.info("自动确认收货"); |
| | | mallOrderInfoMapper.updateOrderConfirmStatus(DateUtil.offsetDay(new Date(), -7)); |
| | | 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){ |
| | | MallMember mallMember = mallMemberMapper.selectById(orderInfo.getMemberId()); |
| | | if(ObjectUtil.isNotEmpty(mallMember.getReferrerId())){ |
| | | String referrerId = mallMember.getReferrerId(); |
| | | MallMember mallMemberParent = mallMemberMapper.selectInfoByInviteId(referrerId); |
| | | Long parentId = mallMemberParent.getId(); |
| | | String orderNo = orderInfo.getOrderNo(); |
| | | MallMoneyFlow mallMoneyFlow = mallMoneyFlowMapper.selectOneByOrderNoAndMemberIdAndRtMemberId(orderNo, mallMember.getId(), parentId); |
| | | mallMoneyFlow.setStatus(2); |
| | | mallMoneyFlow.setIsReturn(1); |
| | | mallMoneyFlowMapper.updateById(mallMoneyFlow); |
| | | memberWalletService.add(mallMoneyFlow.getAmount(), parentId, "balance"); |
| | | } |
| | | } |
| | | 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); |
| | | // } |
| | | } |