Просмотр исходного кода

顶级账号自动分红发放

dos 1 месяц назад
Родитель
Сommit
ce90c8ef35

+ 1 - 133
game-business/src/main/java/com/game/business/controller/AppUserCountDividendController.java

@@ -99,140 +99,8 @@ public class AppUserCountDividendController extends BaseController
         /*if(null == userId && StringUtils.isBlank(dateNo)){
             return HttpRet.fail("发放失败,参数为空");
         }*/
-        List<AppUserCountDividend> dividendList = appUserCountDividendService.selectUserDividendList(SecurityUtils.getUserId(), org.apache.commons.lang3.StringUtils.isBlank(userId)?null:Long.parseLong(userId),dateNo);
-        if(null == dividendList || dividendList.size() < 1){
-            return HttpRet.fail("发放失败,不存在或已发放");
-        }
-        /*AppUser curUser = appUserService.selectAppUserByUserid(curUserId);
-        if(curUser.getDiamondCoin() < dividendList.stream().mapToDouble(e->e.getDiamondCoin()).sum()){
-            return HttpRet.fail("发放失败,余额不足");
-        }
-        if(curUser.getCoin() < dividendList.stream().mapToDouble(e->e.getCoin()).sum()){
-            return HttpRet.fail("发放失败,金币不足");
-        }*/
-        //开始发放
-        List<Long> ids = dividendList.stream().map(AppUserCountDividend::getUserId).collect(Collectors.toList());
-        List<AppUser> userList = appUserService.selectListByIds(ids);
-        if(null != userList && userList.size()>0) {
-            Map<String, AppUser> userMap = userList.stream().collect(Collectors.toMap(e -> String.valueOf(e.getUserid()), Function.identity(), (k1, k2) -> k2));
-            String errMsg = "";
-            for(AppUserCountDividend countDividend : dividendList){
-                Long errUserId = countDividend.getUserId();
-                try {
-                    List<FinTranRecord> tranRecordList = new ArrayList<>();
-                    AppUser appUser = userMap.get(String.valueOf(countDividend.getUserId()));
-                    AppUser curUser = appUserService.selectAppUserByUserid(curUserId);
-                    if(!curUserId.equals(appUser.getPid())){
-                        throw new ServiceException("只能给直属团队成员发放");
-                    }
-                    /*AppUser updateAppUser = new AppUser();
-                    AppUser curUpdateAppUser = new AppUser();//当前用户*/
-                    //                updateAppUser.setUserid(appUser.getUserid());
-                    if (null != countDividend.getDiamondCoin() && countDividend.getDiamondCoin() > 0) {
-                        if(null != countDividend.getDiamondCoin() && curUser.getDiamondCoin() < countDividend.getDiamondCoin()){
-                            throw new ServiceException("余额不足");
-                        }
-                        //扣减发放用户
-                        /*curUser.setDiamondCoinCash(curUser.getDiamondCoinCash() - MoneyUtils.consumeCash(curUser.getDiamondCoin(),curUser.getDiamondCoinCash(),e.getDiamondCoin()));
-                        curUser.setDiamondCoin(curUser.getDiamondCoin() - e.getDiamondCoin());
-                        curUser.setDiamondCoinTotal(curUser.getDiamondCoinTotal() - e.getDiamondCoin());
-                        curUpdateAppUser.setUserid(curUser.getUserid());
-                        curUpdateAppUser.setDiamondCoinCash(curUser.getDiamondCoinCash());
-                        curUpdateAppUser.setDiamondCoin(curUser.getDiamondCoin());
-                        curUpdateAppUser.setDiamondCoinTotal(curUser.getDiamondCoinTotal());*/
-                        //发放用户扣减流水
-                        FinTranAddedInfo curAddedInfo = FinTranAddedInfo.createTranInfo(appUser.getUserid(), 0, 0, AppSceneType.Scene_None, "");
-                        FinTranRecord curTran = FinTranRecord.initFinTranRecordSomeParams(curAddedInfo, FinTranType3.AGENT_DIVIDED, FinTranType1.U_Outcome_Balance, curUser);
-                        curTran.setDiamondCoinChange(countDividend.getDiamondCoin() * -1);
-                        //                    curTran.setAfterDiamondCoin(curUser.getDiamondCoin());
-                        curTran.setCurrencyType(TranCurrencyType.Balance.getType());
-                        curTran.setRemarks(countDividend.getDateNo() + " 发放团队分红奖励");
-                        curTran.setFromUid(curUserId);
-//                        tranRecordList.add(curTran);
-                        appUserService.updateUserAmount(curTran);
-
-                        //受益用户
-                        /*updateAppUser.setDiamondCoin(appUser.getDiamondCoin() + e.getDiamondCoin());
-                        updateAppUser.setDiamondCoinTotal(appUser.getDiamondCoinTotal() + e.getDiamondCoin());
-                        updateAppUser.setDiamondCoinCash(appUser.getDiamondCoinCash() + e.getDiamondCoin());*/
-                        //流水 余额
-                        FinTranAddedInfo addedInfo = FinTranAddedInfo.createTranInfo(appUser.getUserid(), 0, 0, AppSceneType.Scene_None, "");
-                        FinTranRecord tran = FinTranRecord.initFinTranRecordSomeParams(addedInfo, FinTranType3.AGENT_DIVIDED, FinTranType1.Agent_Income_Diamond_Coin, appUser);
-                        tran.setDiamondCoinChange(countDividend.getDiamondCoin());
-                        tran.setAfterDiamondCoin(appUser.getDiamondCoin() + countDividend.getDiamondCoin());
-                        tran.setCurrencyType(TranCurrencyType.Balance.getType());
-                        tran.setRemarks(countDividend.getDateNo() + " 团队周分红奖励");
-                        tran.setFromUid(curUserId);
-                        //                    tranRecordList.add(tran);
-                        appUserService.updateUserAmount(tran);
-                    }
-                    if (null != countDividend.getCoin() && countDividend.getCoin() > 0) {
-                        if(null != countDividend.getCoin() && curUser.getCoin() < countDividend.getCoin()){
-                            throw new ServiceException("金币不足");
-                        }
-                        //扣减发放用户
-                        /*curUser.setCoinCash(curUser.getCoinCash() - MoneyUtils.consumeCash(curUser.getCoin(),curUser.getCoinCash(),e.getCoin()));
-                        curUser.setCoin(curUser.getCoin() - e.getCoin());
-                        curUpdateAppUser.setUserid(curUser.getUserid());
-                        curUpdateAppUser.setCoinCash(curUser.getCoinCash());
-                        curUpdateAppUser.setCoin(curUser.getCoin());*/
-                        //发放用户扣减流水
-                        FinTranAddedInfo curAddedInfo = FinTranAddedInfo.createTranInfo(appUser.getUserid(), 0, 0, AppSceneType.Scene_None, "");
-                        FinTranRecord curTran = FinTranRecord.initFinTranRecordSomeParams(curAddedInfo, FinTranType3.AGENT_DIVIDED, FinTranType1.U_Outcome_Coin, curUser);
-                        curTran.setDiamondCoinChange(countDividend.getDiamondCoin() * -1);
-                        //                    curTran.setAfterCoin(curUser.getCoin());
-                        curTran.setCurrencyType(TranCurrencyType.Coin.getType());
-                        curTran.setRemarks(countDividend.getDateNo() + " 发放团队分红奖励");
-                        curTran.setFromUid(curUserId);
-//                        tranRecordList.add(curTran);
-                        appUserService.updateUserAmount(curTran);
 
-                        //                    updateAppUser.setCoin(appUser.getDiamondCoin() + e.getDiamondCoin());
-                        //流水 余额
-                        FinTranAddedInfo addedInfo = FinTranAddedInfo.createTranInfo(appUser.getUserid(), 0, 0, AppSceneType.Scene_None, "");
-                        FinTranRecord tran = FinTranRecord.initFinTranRecordSomeParams(addedInfo, FinTranType3.AGENT_DIVIDED, FinTranType1.Agent_Income_Coin, appUser);
-                        tran.setDiamondCoinChange(countDividend.getDiamondCoin());
-                        //                    tran.setAfterDiamondCoin(appUser.getDiamondCoin() + e.getDiamondCoin());
-                        tran.setCurrencyType(TranCurrencyType.Coin.getType());
-                        tran.setRemarks(countDividend.getDateNo() + " 团队周分红奖励");
-                        tran.setFromUid(curUserId);
-                        appUserService.updateUserAmount(tran);
-                        //                    tranRecordList.add(tran);
-                    }
-                    /*appUserService.updateAppUser(updateAppUser);
-                    appUserService.updateAppUser(curUpdateAppUser);*/
-                    //清除用户缓存
-                    //                redisCache.deleteObject("U:UserInfo:".concat(String.valueOf(appUser.getUserid())));
-                    /*if(tranRecordList.size() > 0){
-                     *//*tranRecordList.forEach(t->{
-    //                        finTranRecordService.insertFinTranRecord(t);
-                            appUserService.updateUserAmount(t);
-                        });*//*
-                        for(FinTranRecord finTranRecord :tranRecordList){
-                            try {
-                                appUserService.updateUserAmount(finTranRecord);
-                            } catch (Exception ex) {
-                                throw new RuntimeException(ex);
-                            }
-                        }
-                    }*/
-                    AppUserCountDividend userCountDividend = new AppUserCountDividend();
-                    userCountDividend.setId(countDividend.getId());
-                    userCountDividend.setStatus(1);
-                    appUserCountDividendService.updateAppUserCountDividend(userCountDividend);
-                }catch (Exception ex){
-                    errMsg = "发放失败:" + ex.getMessage();
-                    logger.info("{}发放失败:{}",errUserId,ex.getMessage());
-                    break;
-                }
-            }
-            if(StringUtils.isNotBlank(errMsg)){
-                return HttpRet.fail(errMsg);
-            }
-        }
-        return HttpRet.success("发放成功",true);
-        /*
-        return appUserCountDividendService.send(dto.getUserId(),dto.getDateNum());*/
+        return appUserCountDividendService.send(userId,dateNo,curUserId);
     }
 
 }

+ 1 - 1
game-business/src/main/java/com/game/business/service/IAppUserCountDividendService.java

@@ -68,7 +68,7 @@ public interface IAppUserCountDividendService extends IService<AppUserCountDivid
     /**
      * 发放分红
      * */
-    public HttpRet<Boolean> send(String userId,String dateNo);
+    public HttpRet<Boolean> send(String userId,String dateNo,Long sendUserId);
 
     /**
      * 重载团队盈亏缓存

+ 125 - 51
game-business/src/main/java/com/game/business/service/impl/AppUserCountDividendServiceImpl.java

@@ -1,6 +1,7 @@
 package com.game.business.service.impl;
 
 import cn.hutool.core.date.DateUtil;
+import com.baomidou.dynamic.datasource.annotation.DSTransactional;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 
@@ -22,7 +23,9 @@ import com.game.common.constant.finance.FinTranType3;
 import com.game.common.constant.finance.TranCurrencyType;
 import com.game.common.core.domain.HttpRet;
 import com.game.common.core.redis.RedisCache;
+import com.game.common.exception.ServiceException;
 import com.game.common.utils.DateUtils;
+import com.game.common.utils.SecurityUtils;
 import com.game.common.utils.StringUtils;
 import lombok.extern.log4j.Log4j2;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -157,66 +160,137 @@ public class AppUserCountDividendServiceImpl extends ServiceImpl<AppUserCountDiv
     }
 
     @Override
-    @Transactional
-    public HttpRet<Boolean> send(String userId, String dateNo) {
-        if(null == userId && StringUtils.isBlank(dateNo)){
-            return HttpRet.fail("发放失败,参数为空");
-        }
-        LambdaQueryWrapper<AppUserCountDividend> queryWrapper = new LambdaQueryWrapper<>();
-        if(StringUtils.isNotBlank(dateNo)){
-            queryWrapper.eq(AppUserCountDividend::getDateNo,dateNo);
-        }
-        if(null != userId){
-            queryWrapper.eq(AppUserCountDividend::getUserId,userId);
-        }
-        queryWrapper.eq(AppUserCountDividend::getStatus,0);
-        List<AppUserCountDividend> dividendList = appUserCountDividendMapper.selectList(queryWrapper);
+    public HttpRet<Boolean> send(String userId, String dateNo,Long sendUserId) {
+        List<AppUserCountDividend> dividendList = this.selectUserDividendList(sendUserId, StringUtils.isBlank(userId)?null:Long.parseLong(userId),dateNo);
         if(null == dividendList || dividendList.size() < 1){
             return HttpRet.fail("发放失败,不存在或已发放");
         }
+        /*AppUser curUser = appUserService.selectAppUserByUserid(curUserId);
+        if(curUser.getDiamondCoin() < dividendList.stream().mapToDouble(e->e.getDiamondCoin()).sum()){
+            return HttpRet.fail("发放失败,余额不足");
+        }
+        if(curUser.getCoin() < dividendList.stream().mapToDouble(e->e.getCoin()).sum()){
+            return HttpRet.fail("发放失败,金币不足");
+        }*/
         //开始发放
         List<Long> ids = dividendList.stream().map(AppUserCountDividend::getUserId).collect(Collectors.toList());
         List<AppUser> userList = appUserService.selectListByIds(ids);
         if(null != userList && userList.size()>0) {
             Map<String, AppUser> userMap = userList.stream().collect(Collectors.toMap(e -> String.valueOf(e.getUserid()), Function.identity(), (k1, k2) -> k2));
-            dividendList.forEach(e->{
-                List<FinTranRecord> tranRecordList = new ArrayList<>();
-                AppUser appUser = userMap.get(String.valueOf(e.getUserId()));
-                AppUser updateAppUser = new AppUser();
-                updateAppUser.setUserid(appUser.getUserid());
-                if(null != e.getDiamondCoin() && e.getDiamondCoin()>0){
-                    updateAppUser.setDiamondCoin(appUser.getDiamondCoin() + e.getDiamondCoin());
-                    updateAppUser.setDiamondCoinTotal(appUser.getDiamondCoinTotal() + e.getDiamondCoin());
-                    updateAppUser.setDiamondCoinCash(updateAppUser.getDiamondCoinCash() + e.getDiamondCoin());
-                    //流水 余额
-                    FinTranAddedInfo addedInfo = FinTranAddedInfo.createTranInfo(appUser.getUserid(), 0, 0, AppSceneType.Scene_None, "");
-                    FinTranRecord tran = FinTranRecord.initFinTranRecordSomeParams(addedInfo, FinTranType3.AGENT_DIVIDED, FinTranType1.Agent_Income_Diamond_Coin, appUser);
-                    tran.setDiamondCoinChange(e.getDiamondCoin());
-                    tran.setAfterDiamondCoin(appUser.getDiamondCoin() + e.getDiamondCoin());
-                    tran.setCurrencyType(TranCurrencyType.Balance.getType());
-                    tranRecordList.add(tran);
-                }
-                if(null != e.getCoin() && e.getCoin()>0){
-                    updateAppUser.setCoin(appUser.getDiamondCoin() + e.getDiamondCoin());
-                    //流水 余额
-                    FinTranAddedInfo addedInfo = FinTranAddedInfo.createTranInfo(appUser.getUserid(), 0, 0, AppSceneType.Scene_None, "");
-                    FinTranRecord tran = FinTranRecord.initFinTranRecordSomeParams(addedInfo, FinTranType3.AGENT_DIVIDED, FinTranType1.Agent_Income_Coin, appUser);
-                    tran.setDiamondCoinChange(e.getDiamondCoin());
-                    tran.setAfterDiamondCoin(appUser.getDiamondCoin() + e.getDiamondCoin());
-                    tran.setCurrencyType(TranCurrencyType.Coin.getType());
-                    tranRecordList.add(tran);
-                }
-                appUserService.updateAppUser(updateAppUser);
-                if(tranRecordList.size() > 0){
-                    tranRecordList.forEach(t->{
-                        finTranRecordService.insertFinTranRecord(t);
-                    });
+            String errMsg = "";
+            for(AppUserCountDividend countDividend : dividendList){
+                Long errUserId = countDividend.getUserId();
+                try {
+                    List<FinTranRecord> tranRecordList = new ArrayList<>();
+                    AppUser appUser = userMap.get(String.valueOf(countDividend.getUserId()));
+                    AppUser curUser = appUserService.selectAppUserByUserid(sendUserId);
+                    if(!sendUserId.equals(appUser.getPid())){
+                        throw new ServiceException("只能给直属团队成员发放");
+                    }
+                    /*AppUser updateAppUser = new AppUser();
+                    AppUser curUpdateAppUser = new AppUser();//当前用户*/
+                    //                updateAppUser.setUserid(appUser.getUserid());
+                    if (null != countDividend.getDiamondCoin() && countDividend.getDiamondCoin() > 0) {
+                        if(null != countDividend.getDiamondCoin() && curUser.getDiamondCoin() < countDividend.getDiamondCoin()){
+                            throw new ServiceException("余额不足");
+                        }
+                        //扣减发放用户
+                        /*curUser.setDiamondCoinCash(curUser.getDiamondCoinCash() - MoneyUtils.consumeCash(curUser.getDiamondCoin(),curUser.getDiamondCoinCash(),e.getDiamondCoin()));
+                        curUser.setDiamondCoin(curUser.getDiamondCoin() - e.getDiamondCoin());
+                        curUser.setDiamondCoinTotal(curUser.getDiamondCoinTotal() - e.getDiamondCoin());
+                        curUpdateAppUser.setUserid(curUser.getUserid());
+                        curUpdateAppUser.setDiamondCoinCash(curUser.getDiamondCoinCash());
+                        curUpdateAppUser.setDiamondCoin(curUser.getDiamondCoin());
+                        curUpdateAppUser.setDiamondCoinTotal(curUser.getDiamondCoinTotal());*/
+                        //发放用户扣减流水
+                        FinTranAddedInfo curAddedInfo = FinTranAddedInfo.createTranInfo(appUser.getUserid(), 0, 0, AppSceneType.Scene_None, "");
+                        FinTranRecord curTran = FinTranRecord.initFinTranRecordSomeParams(curAddedInfo, FinTranType3.AGENT_DIVIDED, FinTranType1.U_Outcome_Balance, curUser);
+                        curTran.setDiamondCoinChange(countDividend.getDiamondCoin() * -1);
+                        //                    curTran.setAfterDiamondCoin(curUser.getDiamondCoin());
+                        curTran.setCurrencyType(TranCurrencyType.Balance.getType());
+                        curTran.setRemarks(countDividend.getDateNo() + " 发放团队分红奖励");
+                        curTran.setFromUid(sendUserId);
+//                        tranRecordList.add(curTran);
+                        appUserService.updateUserAmount(curTran);
+
+                        //受益用户
+                        /*updateAppUser.setDiamondCoin(appUser.getDiamondCoin() + e.getDiamondCoin());
+                        updateAppUser.setDiamondCoinTotal(appUser.getDiamondCoinTotal() + e.getDiamondCoin());
+                        updateAppUser.setDiamondCoinCash(appUser.getDiamondCoinCash() + e.getDiamondCoin());*/
+                        //流水 余额
+                        FinTranAddedInfo addedInfo = FinTranAddedInfo.createTranInfo(appUser.getUserid(), 0, 0, AppSceneType.Scene_None, "");
+                        FinTranRecord tran = FinTranRecord.initFinTranRecordSomeParams(addedInfo, FinTranType3.AGENT_DIVIDED, FinTranType1.Agent_Income_Diamond_Coin, appUser);
+                        tran.setDiamondCoinChange(countDividend.getDiamondCoin());
+                        tran.setAfterDiamondCoin(appUser.getDiamondCoin() + countDividend.getDiamondCoin());
+                        tran.setCurrencyType(TranCurrencyType.Balance.getType());
+                        tran.setRemarks(countDividend.getDateNo() + " 团队周分红奖励");
+                        tran.setFromUid(sendUserId);
+                        //                    tranRecordList.add(tran);
+                        appUserService.updateUserAmount(tran);
+                    }
+                    if (null != countDividend.getCoin() && countDividend.getCoin() > 0) {
+                        if(null != countDividend.getCoin() && curUser.getCoin() < countDividend.getCoin()){
+                            throw new ServiceException("金币不足");
+                        }
+                        //扣减发放用户
+                        /*curUser.setCoinCash(curUser.getCoinCash() - MoneyUtils.consumeCash(curUser.getCoin(),curUser.getCoinCash(),e.getCoin()));
+                        curUser.setCoin(curUser.getCoin() - e.getCoin());
+                        curUpdateAppUser.setUserid(curUser.getUserid());
+                        curUpdateAppUser.setCoinCash(curUser.getCoinCash());
+                        curUpdateAppUser.setCoin(curUser.getCoin());*/
+                        //发放用户扣减流水
+                        FinTranAddedInfo curAddedInfo = FinTranAddedInfo.createTranInfo(appUser.getUserid(), 0, 0, AppSceneType.Scene_None, "");
+                        FinTranRecord curTran = FinTranRecord.initFinTranRecordSomeParams(curAddedInfo, FinTranType3.AGENT_DIVIDED, FinTranType1.U_Outcome_Coin, curUser);
+                        curTran.setDiamondCoinChange(countDividend.getDiamondCoin() * -1);
+                        //                    curTran.setAfterCoin(curUser.getCoin());
+                        curTran.setCurrencyType(TranCurrencyType.Coin.getType());
+                        curTran.setRemarks(countDividend.getDateNo() + " 发放团队分红奖励");
+                        curTran.setFromUid(sendUserId);
+//                        tranRecordList.add(curTran);
+                        appUserService.updateUserAmount(curTran);
+
+                        //                    updateAppUser.setCoin(appUser.getDiamondCoin() + e.getDiamondCoin());
+                        //流水 余额
+                        FinTranAddedInfo addedInfo = FinTranAddedInfo.createTranInfo(appUser.getUserid(), 0, 0, AppSceneType.Scene_None, "");
+                        FinTranRecord tran = FinTranRecord.initFinTranRecordSomeParams(addedInfo, FinTranType3.AGENT_DIVIDED, FinTranType1.Agent_Income_Coin, appUser);
+                        tran.setDiamondCoinChange(countDividend.getDiamondCoin());
+                        //                    tran.setAfterDiamondCoin(appUser.getDiamondCoin() + e.getDiamondCoin());
+                        tran.setCurrencyType(TranCurrencyType.Coin.getType());
+                        tran.setRemarks(countDividend.getDateNo() + " 团队周分红奖励");
+                        tran.setFromUid(sendUserId);
+                        appUserService.updateUserAmount(tran);
+                        //                    tranRecordList.add(tran);
+                    }
+                    /*appUserService.updateAppUser(updateAppUser);
+                    appUserService.updateAppUser(curUpdateAppUser);*/
+                    //清除用户缓存
+                    //                redisCache.deleteObject("U:UserInfo:".concat(String.valueOf(appUser.getUserid())));
+                    /*if(tranRecordList.size() > 0){
+                     *//*tranRecordList.forEach(t->{
+    //                        finTranRecordService.insertFinTranRecord(t);
+                            appUserService.updateUserAmount(t);
+                        });*//*
+                        for(FinTranRecord finTranRecord :tranRecordList){
+                            try {
+                                appUserService.updateUserAmount(finTranRecord);
+                            } catch (Exception ex) {
+                                throw new RuntimeException(ex);
+                            }
+                        }
+                    }*/
+                    AppUserCountDividend userCountDividend = new AppUserCountDividend();
+                    userCountDividend.setId(countDividend.getId());
+                    userCountDividend.setStatus(1);
+                    this.updateAppUserCountDividend(userCountDividend);
+                }catch (Exception ex){
+                    errMsg = "发放失败:" + ex.getMessage();
+                    log.info("{}发放失败:{}",errUserId,ex.getMessage());
+                    break;
                 }
-                AppUserCountDividend userCountDividend = new AppUserCountDividend();
-                userCountDividend.setId(e.getId());
-                userCountDividend.setStatus(1);
-                this.updateAppUserCountDividend(userCountDividend);
-            });
+            }
+            if(StringUtils.isNotBlank(errMsg)){
+                return HttpRet.fail(errMsg);
+            }
         }
         return HttpRet.success("发放成功",true);
     }

+ 19 - 2
game-business/src/main/java/com/game/business/task/AppUserCountTask.java

@@ -9,6 +9,7 @@ import com.game.business.service.*;
 import com.game.common.constant.CacheConstants;
 import com.game.common.constant.finance.FinTranType1;
 import com.game.common.constant.finance.FinTranType3;
+import com.game.common.core.domain.HttpRet;
 import com.game.common.core.redis.RedisCache;
 import com.game.common.entity.KeyValue;
 import com.game.common.utils.DateUtils;
@@ -259,8 +260,21 @@ public class AppUserCountTask {
     public void calculateDividends(String dateTime){
         try {
             log.info("开始每周代理分红");
-            dealDividendsNew(dateTime);
+            String dateNo =  dealDividendsNew(dateTime);
             log.info("每周代理分红完成");
+            log.info("开始给系统用户的直属下级自动发放分红");
+            AppUser queryUser = new AppUser();
+            queryUser.setPid(0L);
+            List<AppUser> list = appUserService.selectAppUserList(queryUser);
+            if(null != list && list.size() > 0){
+                for(AppUser appUser : list){
+                    HttpRet<Boolean> httpRet = appUserCountDividendService.send(null,dateNo,appUser.getUserid());
+                    if(HttpRet.FAIL == httpRet.getCode()){
+                        log.info("{}用户,{}",appUser.getUserid(),httpRet.getMsg());
+                    }
+                }
+            }
+            log.info("系统用户的直属下级自动发放分红完成");
         }catch (Exception e){
             log.info("每周分红失败:{}",e.getMessage());
         }
@@ -352,7 +366,8 @@ public class AppUserCountTask {
     /**
      * 分红
      * */
-    private void dealDividendsNew(String dateTime){
+    private String dealDividendsNew(String dateTime){
+        String resDate = "";
         Date curDate = DateUtil.offsetDay(DateUtils.getNowDate(), -1);
         if (StringUtils.isNotBlank(dateTime)) {
             curDate = DateUtil.parse(dateTime, "yyyy-MM-dd");
@@ -361,6 +376,7 @@ public class AppUserCountTask {
         }
         Date beginTime = DateUtil.beginOfWeek(curDate);
         Date endTime = DateUtil.endOfWeek(curDate);
+        resDate = DateUtil.format(endTime, "yyyy-MM-dd");
         //查询所有总代理用户
         AppUser queryUser = new AppUser();
         queryUser.setAgentFlag(1);
@@ -424,6 +440,7 @@ public class AppUserCountTask {
                 }
             });
         }
+        return resDate;
     }
 
     /**