admin
2020-04-26 d2f0048ff3d2e927ab0629fffe3e40ba91c11976
Merge remote-tracking branch 'origin/div' into div
16个文件已修改
410 ■■■■■ 已修改文件
fanli/src/main/java/com/yeshi/fanli/controller/client/v1/UserAuthController.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/controller/client/v2/UserAccountControllerV2.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/controller/wxmp/v1/UserAccountController.java 81 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/dao/mybatis/HongBaoV2CountMapper.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/dao/mybatis/order/CommonOrderMapper.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/entity/bus/msg/MsgOrderDetail.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/mapping/hongbao/HongBaoV2CountMapper.xml 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/mapping/order/CommonOrderMapper.xml 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/count/HongBaoV2CountServiceImpl.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/order/CommonOrderServiceImpl.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/user/invite/UserInviteServiceImpl.java 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/user/invite/UserInviteValidNumServiceImpl.java 133 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/inter/count/HongBaoV2CountService.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/inter/order/CommonOrderService.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/inter/user/invite/UserInviteValidNumService.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/util/factory/msg/MsgOrderDetailFactory.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/controller/client/v1/UserAuthController.java
@@ -14,6 +14,7 @@
import com.yeshi.fanli.entity.bus.user.UserExtraTaoBaoInfo;
import com.yeshi.fanli.entity.system.ConfigKeyEnum;
import com.yeshi.fanli.service.inter.config.ConfigService;
import com.yeshi.fanli.service.inter.user.UserInfoExtraService;
import com.yeshi.fanli.service.inter.user.tb.UserExtraTaoBaoInfoService;
import com.yeshi.fanli.util.StringUtil;
import com.yeshi.fanli.util.TaoBaoConstant;
@@ -31,6 +32,9 @@
    @Resource
    private ConfigService configService;
    @Resource
    private UserInfoExtraService userInfoExtraService;
    /**
     * 获取淘宝授权信息
     * 
@@ -61,7 +65,14 @@
            out.print(JsonUtil.loadFalseResult(1, "暂不开放申请"));
            return;
        }
        String inviteCode = userInfoExtraService.getInviteCodeByUid(uid);
        if (StringUtil.isNullOrEmpty(inviteCode)) {
            out.print(JsonUtil.loadFalseResult(3, "请激活邀请码"));
            return;
        }
        UserExtraTaoBaoInfo user = userExtraTaoBaoInfoService.getByUid(uid);
        if ("share".equalsIgnoreCase(source)) {
            if (user != null && !StringUtil.isNullOrEmpty(user.getRelationId()) && user.getRelationValid()) {
fanli/src/main/java/com/yeshi/fanli/controller/client/v2/UserAccountControllerV2.java
@@ -45,6 +45,7 @@
import com.yeshi.fanli.service.inter.homemodule.HomeNavbarUserService;
import com.yeshi.fanli.service.inter.money.UserMoneyDetailService;
import com.yeshi.fanli.service.inter.money.UserMoneyService;
import com.yeshi.fanli.service.inter.order.CommonOrderService;
import com.yeshi.fanli.service.inter.order.LostOrderService;
import com.yeshi.fanli.service.inter.order.config.HongBaoManageService;
import com.yeshi.fanli.service.inter.push.DeviceActiveService;
@@ -203,6 +204,9 @@
    
    @Resource
    private UserInviteValidNumService userInviteValidNumService;
    @Resource
    private CommonOrderService commonOrderService;
    
    
    /**
@@ -473,7 +477,7 @@
                    continue;
                }
                // 1、邀请关系成功后;2、单(分享 + 自购)实付款大于1元
                long countValid = hongBaoV2CountService.countValidOrderByUidAndTime(worker.getId(), three.getSucceedTime(), payMoney);
                long countValid = commonOrderService.countOrderByUidAndSettled(worker.getId(), payMoney);
                if (countValid > 0) {
                    finishTeam ++;
                }
fanli/src/main/java/com/yeshi/fanli/controller/wxmp/v1/UserAccountController.java
@@ -13,6 +13,7 @@
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.yeshi.utils.IPUtil;
@@ -48,6 +49,7 @@
import com.yeshi.fanli.service.inter.config.ConfigService;
import com.yeshi.fanli.service.inter.count.HongBaoV2CountService;
import com.yeshi.fanli.service.inter.money.UserMoneyDetailService;
import com.yeshi.fanli.service.inter.order.CommonOrderService;
import com.yeshi.fanli.service.inter.shop.BanLiShopOrderService;
import com.yeshi.fanli.service.inter.user.ForbiddenUserIdentifyCodeService;
import com.yeshi.fanli.service.inter.user.UserAccountService;
@@ -113,6 +115,9 @@
    @Resource
    private ThreeSaleSerivce threeSaleSerivce;
    @Resource
    private CommonOrderService commonOrderService;
    
    /**
@@ -565,7 +570,7 @@
                    continue;
                }
                // 1、邀请关系成功后;2、单(分享 + 自购)实付款大于1元
                long countValid = hongBaoV2CountService.countValidOrderByUidAndTime(worker.getId(), three.getSucceedTime(), payMoney);
                long countValid = commonOrderService.countOrderByUidAndSettled(worker.getId(),  payMoney);
                if (countValid > 0) {
                    finishTeam ++;
                }
@@ -634,77 +639,7 @@
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(1, "用户未登录"));
            return;
        }
        UserInfo userInfo = userInfoService.selectByPKey(uid);
        if (userInfo == null) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(1, "该用户不存在"));
            return;
        }
        // 省钱 -自购产生返利
        List<Integer> list = new ArrayList<Integer>();
        list.add(BanLiShopOrder.STATE_SUCCESS);
        BigDecimal payMoney = new BigDecimal(userVipConfigService.getValueByKey("require_order_pay"));
//        long finishTeam = hongBaoV2CountService.countValidOrderTeamUserByUid(uid,
//                TimeUtil.convertDateToTemp(Constant.VIP_ONLINE_TIME), payMoney);
        long finishTeam = 0L;
        long vipBegin = TimeUtil.convertDateToTemp(Constant.VIP_ONLINE_TIME);
        List<ThreeSale> listThreeSale = threeSaleSerivce.getValidWorkerIdsByTime(uid, vipBegin);
        if (listThreeSale != null && listThreeSale.size() > 0) {
            for (ThreeSale three: listThreeSale) {
                UserInfo worker = three.getWorker();
                if (worker == null || worker.getId() == null) {
                    continue;
                }
                // 1、邀请关系成功后;2、单(分享 + 自购)实付款大于1元
                long countValid = hongBaoV2CountService.countValidOrderByUidAndTime(worker.getId(), three.getSucceedTime(), payMoney);
                if (countValid > 0) {
                    finishTeam ++;
                }
            }
        }
        
        long finishHongBao = banLiShopOrderService.countByUidAndState(uid, list);
        BigDecimal finishMoney = hongBaoV2CountService.getRewardMoneyBySelf(uid);
        long limitTeam = 0;
        // 区分老用户和新用户
        String limtDate = userVipConfigService.getValueByKey("vip_execute_time");
        Date executeDate = null;
        try {
            SimpleDateFormat format = new SimpleDateFormat("yyyy-mm-dd");
            executeDate = format.parse(limtDate);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        UserInfoExtra extra = userInfoExtraService.getUserInfoExtra(uid);
        if (extra != null
                && (extra.getFirstLoginTime() == null || extra.getFirstLoginTime().getTime() < executeDate.getTime())) {
            limitTeam = (Long.parseLong(userVipConfigService.getValueByKey("require_invite_num_old_user")));
        } else {
            limitTeam = (Long.parseLong(userVipConfigService.getValueByKey("require_invite_num_new_user")));
        }
        long limitHongBao = (Long.parseLong(userVipConfigService.getValueByKey("require_shop_buy")));
        BigDecimal limitMoney = (new BigDecimal(userVipConfigService.getValueByKey("require_fan_money")));
        if (finishTeam >= limitTeam && finishHongBao >= limitHongBao && finishMoney.compareTo(limitMoney) >= 0) {
            // 条件符合
        } else {
            if (!StringUtil.isNullOrEmpty(callback)) {
                out.print(JsonUtil.loadJSONP(callback, JsonUtil.loadFalseResult("未达到开通条件")));
            } else {
                out.print(JsonUtil.loadFalseResult("未达到开通条件"));
            }
            return;
        }
        // 开通
        try {
            userVIPInfoService.applyVIP(uid);
        } catch (UserVIPInfoException e) {
@@ -717,9 +652,9 @@
        }
        if (!StringUtil.isNullOrEmpty(callback)) {
            out.print(JsonUtil.loadJSONP(callback, JsonUtil.loadTrueResult("已申请")));
            out.print(JsonUtil.loadJSONP(callback, JsonUtil.loadTrueResult("申请成功,正在受理中")));
        } else {
            out.print(JsonUtil.loadTrueResult("已申请"));
            out.print(JsonUtil.loadTrueResult("申请成功,正在受理中"));
        }
    }
fanli/src/main/java/com/yeshi/fanli/dao/mybatis/HongBaoV2CountMapper.java
@@ -133,19 +133,6 @@
     */
    BigDecimal getRewardMoneyByUid(@Param("uid") Long uid, @Param("list") List<Integer> list);
    
    /**
     *  注:1.有效一级队员定义:2019年1月1日起,自购或分享1笔且付款总金额不小于 payment 元(退款为失效
     * @param uid
     * @param list 类型
     * @return
     */
    Long countValidOrderByUidAndTime(@Param("uid") Long uid, @Param("limitTime") long limitTime,
            @Param("payment") BigDecimal payment);
    Long countOrderByUidAndSettled(@Param("uid") Long uid, @Param("limitTime") long limitTime,
            @Param("payment") BigDecimal payment);
    
    /**
     *  注:1笔且付款总金额不小于 payment 元(退款为失效
fanli/src/main/java/com/yeshi/fanli/dao/mybatis/order/CommonOrderMapper.java
@@ -409,4 +409,12 @@
            @Param("listSource") List<Integer> listSource);
    
    /**
     * 统计已结算且付款金额大于1的订单(不区分订单状态)
     * @param uid
     * @param payment
     * @return
     */
    Long countOrderByUidAndSettled(@Param("uid") Long uid, @Param("payment") BigDecimal payment);
}
fanli/src/main/java/com/yeshi/fanli/entity/bus/msg/MsgOrderDetail.java
@@ -22,12 +22,13 @@
    public final static int STATE_SX = 4;// 未付款/已退款
    public enum MsgTypeOrderTypeEnum {
        fanli("订单统计", "http://img.flqapp.com/resource/msg/icon_msg_order.png"),
        share("订单统计", "http://img.flqapp.com/resource/msg/icon_msg_order.png"),
        invite("订单统计", "http://img.flqapp.com/resource/msg/icon_msg_order.png"),
        fanli("返利订单", "http://img.flqapp.com/resource/msg/icon_msg_order.png"),
        share("分享订单", "http://img.flqapp.com/resource/msg/icon_msg_order.png"),
        invite("团队订单", "http://img.flqapp.com/resource/msg/icon_msg_order.png"),
        found("订单找回", "http://img.flqapp.com/resource/msg/icon_msg_order.png"), // 老版
        foundSucceed("订单找回", "http://img.flqapp.com/resource/msg/icon_msg_order.png"), 
        foundFail("订单找回", "http://img.flqapp.com/resource/msg/icon_msg_order.png"),
        orderStatistics("订单统计", "http://img.flqapp.com/resource/msg/icon_msg_order.png"),
        elme("饿了么订单", "http://img.flqapp.com/resource/msg/icon_msg_order.png");
        
        private final String desc;
fanli/src/main/java/com/yeshi/fanli/mapping/hongbao/HongBaoV2CountMapper.xml
@@ -294,15 +294,6 @@
        </if>
    </select>
        
    <select id="countValidOrderByUidAndTime" resultType="Long">
    SELECT COUNT(co.`co_id`) FROM yeshi_ec_hongbao_v2 v2
    LEFT JOIN yeshi_ec_hongbao_order h ON v2.`hb_id` = h.`ho_hongbao_id`
    LEFT JOIN yeshi_ec_common_order co ON h.`ho_order_id` = co.`co_id`
    WHERE v2.`hb_uid` = #{uid} AND (v2.`hb_type` = 1 OR v2.`hb_type` = 20)  AND v2.`hb_state` = 3
            AND co.`co_payment` >= #{payment} AND co.`co_third_create_time` >= #{limitTime}
    </select>
    <select id="countMyDirectOrderByCashArrival" resultType="Long">
        SELECT COUNT(0)  FROM (SELECT co.`co_order_no` FROM yeshi_ec_hongbao_v2 v2
        LEFT JOIN yeshi_ec_hongbao_order h ON v2.`hb_id` = h.`ho_hongbao_id`
@@ -312,14 +303,6 @@
        GROUP BY co.`co_order_no`,co.`co_source_type`)A
    </select>
    
    <select id="countOrderByUidAndSettled" resultType="Long">
        SELECT COUNT(0)  FROM (SELECT co.`co_order_no` FROM yeshi_ec_hongbao_v2 v2
        LEFT JOIN yeshi_ec_hongbao_order h ON v2.`hb_id` = h.`ho_hongbao_id`
        LEFT JOIN yeshi_ec_common_order co ON h.`ho_order_id` = co.`co_id`
        WHERE v2.`hb_uid` = #{uid} AND co.`co_settle_time` IS NOT NULL AND co.`co_payment` >=  #{payment}
        AND (v2.`hb_type` = 1 OR v2.`hb_type` = 20)
        GROUP BY co.`co_order_no`,co.`co_source_type`)A
    </select>
    
    <select id="getRewardMoneyByDate" resultType="BigDecimal">
        SELECT (COALESCE(SUM(v2.`hb_money`),0)- COALESCE(SUM(d.`wr_money`),0))AS totalmoney FROM (
fanli/src/main/java/com/yeshi/fanli/mapping/order/CommonOrderMapper.xml
@@ -1200,5 +1200,8 @@
        GROUP BY co.`co_order_no`, co.`co_source_type` )A
    </select>
    
    <select id="countOrderByUidAndSettled" resultType="Long">
        SELECT COUNT(d.`co_id`) FROM `yeshi_ec_common_order` d
        WHERE d.`co_uid` = #{uid} AND d.`co_settle_time` IS NOT NULL  AND d.`co_payment` >= #{payment}
    </select>
</mapper>
fanli/src/main/java/com/yeshi/fanli/service/impl/count/HongBaoV2CountServiceImpl.java
@@ -137,24 +137,6 @@
        return hongBaoV2CountMapper.getRewardMoneyByUid(uid, list);
    }
    
    @Override
    public long countValidOrderByUidAndTime(Long uid, Long time, BigDecimal payment) {
        Long count = hongBaoV2CountMapper.countValidOrderByUidAndTime(uid, time, payment);
        if (count == null) {
            count = 0L;
        }
        return count;
    }
    @Override
    public long countOrderByUidAndSettled(Long uid, Long time, BigDecimal payment) {
        Long count = hongBaoV2CountMapper.countOrderByUidAndSettled(uid, time, payment);
        if (count == null) {
            count = 0L;
        }
        return count;
    }
    
    @Override
    public long countMyDirectOrderByCashArrival(Long uid, BigDecimal payment) {
fanli/src/main/java/com/yeshi/fanli/service/impl/order/CommonOrderServiceImpl.java
@@ -2177,4 +2177,15 @@
            order.setRewardDetail(rewardMap);
        }
    }
    @Override
    public long countOrderByUidAndSettled(Long uid, BigDecimal payment) {
        Long count = commonOrderMapper.countOrderByUidAndSettled(uid, payment);
        if (count == null) {
            count = 0L;
        }
        return count;
    }
}
fanli/src/main/java/com/yeshi/fanli/service/impl/user/invite/UserInviteServiceImpl.java
@@ -7,6 +7,7 @@
import com.yeshi.fanli.dao.mybatis.user.vip.UserVIPLevelMapper;
import com.yeshi.fanli.dto.user.UserInviteLevelEnum;
import com.yeshi.fanli.dto.vip.UserVIPLevel;
import com.yeshi.fanli.entity.bus.user.vip.UserLevelEnum;
import com.yeshi.fanli.entity.bus.user.vip.UserVIPInfo;
import com.yeshi.fanli.entity.bus.user.vip.UserVIPPreInfo;
import com.yeshi.fanli.service.inter.user.UserInfoExtraService;
@@ -14,6 +15,7 @@
import com.yeshi.fanli.service.inter.user.vip.UserVIPInfoService;
import com.yeshi.fanli.service.inter.user.vip.UserVIPPreInfoService;
import com.yeshi.fanli.util.StringUtil;
import com.yeshi.fanli.util.user.UserLevelUtil;
@Service
public class UserInviteServiceImpl implements UserInviteService {
@@ -22,14 +24,12 @@
    @Resource
    private UserVIPInfoService userVIPInfoService;
    @Resource
    private UserVIPPreInfoService userVIPPreInfoService;
    @Resource
    private UserVIPLevelMapper userVIPLevelMapper;
    @Override
    public UserInviteLevelEnum getUserInviteLevel(Long uid) {
@@ -43,64 +43,70 @@
        if (info.getState() == UserVIPInfo.STATE_VERIFING)
            return UserInviteLevelEnum.vipApply;
        // TODO 没有判断导师
        return UserInviteLevelEnum.vip;
    }
    @Override
    public UserInviteLevelEnum getUserInviteLevelNew(Long uid) {
        String inviteCode = userInfoExtraService.getInviteCodeByUid(uid);
        if (StringUtil.isNullOrEmpty(inviteCode)) {
            return UserInviteLevelEnum.noActive;
        }
        UserVIPInfo info = userVIPInfoService.selectByUid(uid);
        if (info == null) {
            UserVIPPreInfo userVIPPreInfo = userVIPPreInfoService.getLatestProcessInfo(uid);
            if (userVIPPreInfo != null) {
        UserVIPPreInfo userVIPPreInfo = userVIPPreInfoService.getLatestProcessInfo(uid);
        if (userVIPPreInfo != null) {
            Integer process = userVIPPreInfo.getProcess();
            UserLevelEnum levelEnum = UserLevelUtil.getByLevel(process);
            levelEnum = UserLevelUtil.getShowLevel(levelEnum);
            if (levelEnum == null || levelEnum == UserLevelEnum.daRen) {
                return UserInviteLevelEnum.actived;
            }
            if (levelEnum == UserLevelEnum.highVIP) {
                UserVIPInfo info = userVIPInfoService.selectByUid(uid);
                if (info != null && info.getState() == UserVIPInfo.STATE_VERIFING) {
                    return UserInviteLevelEnum.vipApply;
                }
                return UserInviteLevelEnum.highVIP;
            }
        } else if (info.getState() == UserVIPInfo.STATE_VERIFING) {
            return UserInviteLevelEnum.vipApply;
        } else if (info.getState() == UserVIPInfo.STATE_SUCCESS) {
            return UserInviteLevelEnum.vip;
            if (levelEnum == UserLevelEnum.superVIP) {
                return UserInviteLevelEnum.vip;
            }
            if (levelEnum == UserLevelEnum.tearcher) {
                return UserInviteLevelEnum.tearcher;
            }
        }
        // TODO 没有判断导师
        return UserInviteLevelEnum.actived;
    }
    @Override
    public boolean verifyVIP(Long uid) {
        String inviteCode = userInfoExtraService.getInviteCodeByUid(uid);
        if (StringUtil.isNullOrEmpty(inviteCode)) {
            return false;
        }
        UserVIPInfo info = userVIPInfoService.selectByUid(uid);
        if (info != null && info.getState() == UserVIPInfo.STATE_SUCCESS) {
            return true;
        }
        UserVIPPreInfo userVIPPreInfo = userVIPPreInfoService.getLatestProcessInfo(uid);
        if (userVIPPreInfo != null) {
            return true;
        }
        return false;
    }
    @Override
    public UserVIPLevel getVIPLevelByUid(Long uid) {
        return userVIPLevelMapper.getLevelByUid(uid);
    }
}
fanli/src/main/java/com/yeshi/fanli/service/impl/user/invite/UserInviteValidNumServiceImpl.java
@@ -2,18 +2,23 @@
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
import javax.annotation.Resource;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.yeshi.fanli.dao.mybatis.user.UserInviteValidNumMapper;
import com.yeshi.fanli.dao.mybatis.user.UserInviteValidRecordMapper;
import com.yeshi.fanli.entity.bus.user.ThreeSale;
import com.yeshi.fanli.entity.bus.user.UserInfo;
import com.yeshi.fanli.entity.bus.user.UserInviteValidNum;
import com.yeshi.fanli.entity.bus.user.UserInviteValidRecord;
import com.yeshi.fanli.log.LogHelper;
import com.yeshi.fanli.service.inter.order.CommonOrderService;
import com.yeshi.fanli.service.inter.user.UserInfoService;
import com.yeshi.fanli.service.inter.user.invite.ThreeSaleSerivce;
import com.yeshi.fanli.service.inter.user.invite.UserInviteValidNumService;
import com.yeshi.fanli.util.Constant;
@@ -27,8 +32,18 @@
    @Resource
    private UserInviteValidRecordMapper userInviteValidRecordMapper;
    
    @Lazy
    @Resource
    private ThreeSaleSerivce threeSaleSerivce;
    @Lazy
    @Resource
    private UserInfoService userInfoService;
    @Lazy
    @Resource
    private CommonOrderService commonOrderService;
    
    
    @Override
@@ -207,5 +222,121 @@
            LogHelper.error(e);
        }
    }
    @Override
    public void syncInfoAgain(Long workerId) {
        // 更新上级
        ThreeSale threeSale = threeSaleSerivce.getByWorkerId(workerId);
        if (threeSale == null) {
            return;
        }
        Long uid = threeSale.getBoss().getId();
        UserInfo userInfo = userInfoService.selectByPKey(uid);
        if (userInfo == null || userInfo.getState() != UserInfo.STATE_NORMAL) {
            return;
        }
        int countTeam1 = 0;
        List<ThreeSale> listFirstTeam = threeSaleSerivce.listFirstTeam(0, Integer.MAX_VALUE, uid);
        if (listFirstTeam != null && listFirstTeam.size() > 0) {
            for (ThreeSale firstTeam: listFirstTeam) {
                if (firstTeam.getWorker() == null || firstTeam.getWorker().getId() == null) {
                    continue;
                }
                Long wid = firstTeam.getWorker().getId();
                String uniqueKey = StringUtil.Md5(wid + "#" + UserInviteValidRecord.TYPE_ONE);
                UserInviteValidRecord record = userInviteValidRecordMapper.selectByUniqueKey(uniqueKey);
                if (record != null) {
                    countTeam1 ++;
                } else {
                    long countValid = commonOrderService.countOrderByUidAndSettled(wid, Constant.VIP_ORDER_PAY);
                    if (countValid > 0) {
                        countTeam1 ++;
                        record = new UserInviteValidRecord();
                        record.setUid(uid);
                        record.setWorkerId(wid);
                        record.setType(UserInviteValidRecord.TYPE_ONE);
                        record.setUniqueKey(uniqueKey);
                        record.setCreateTime(new Date());
                        userInviteValidRecordMapper.insertSelective(record);
                    }
                }
            }
        }
        UserInviteValidNum inviteValid = userInviteValidNumMapper.selectForUpdate(uid);
        if (inviteValid != null) {
            UserInviteValidNum updateObj = new UserInviteValidNum();
            updateObj.setId(uid);
            updateObj.setNumFirst(countTeam1);;
            userInviteValidNumMapper.updateByPrimaryKeySelective(updateObj);
        } else {
            inviteValid = new UserInviteValidNum();
            inviteValid.setId(uid);
            inviteValid.setNumFirst(countTeam1);
            inviteValid.setNumSecond(0);
            inviteValid.setUpdateTime(new Date());
            userInviteValidNumMapper.insertSelective(inviteValid);
        }
        // 更新上上级信息
        ThreeSale superThreeSale = threeSaleSerivce.getByWorkerId(uid);
        if (superThreeSale == null) {
            return;
        }
        Long superUid = superThreeSale.getBoss().getId();
        UserInfo superUserInfo = userInfoService.selectByPKey(superUid);
        if (superUserInfo == null || superUserInfo.getState() != UserInfo.STATE_NORMAL) {
            return;
        }
        int countTeam2 = 0;
        List<ThreeSale> listSecondTeam = threeSaleSerivce.listSecondTeam(0,  Integer.MAX_VALUE, superUid);
        if (listSecondTeam != null && listSecondTeam.size() > 0) {
            for (ThreeSale team: listSecondTeam) {
                if (team.getWorker() == null || team.getWorker().getId() == null) {
                    continue;
                }
                Long wid = team.getWorker().getId();
                String uniqueKeySuper = StringUtil.Md5(wid + "#" + UserInviteValidRecord.TYPE_TWO);
                UserInviteValidRecord recordSuper = userInviteValidRecordMapper.selectByUniqueKey(uniqueKeySuper);
                if (recordSuper != null) {
                    countTeam2 ++;
                } else {
                    long countValid = commonOrderService.countOrderByUidAndSettled(wid, Constant.VIP_ORDER_PAY);
                    if (countValid > 0) {
                        countTeam2 ++;
                        recordSuper = new UserInviteValidRecord();
                        recordSuper.setUid(superUid);
                        recordSuper.setWorkerId(wid);
                        recordSuper.setType(UserInviteValidRecord.TYPE_TWO);
                        recordSuper.setUniqueKey(uniqueKeySuper);
                        recordSuper.setCreateTime(new Date());
                        userInviteValidRecordMapper.insertSelective(recordSuper);
                    }
                }
            }
        }
        UserInviteValidNum inviteValid2 = userInviteValidNumMapper.selectForUpdate(superUid);
        if (inviteValid2 != null) {
            UserInviteValidNum updateObj = new UserInviteValidNum();
            updateObj.setId(superUid);
            updateObj.setNumSecond(countTeam2);
            userInviteValidNumMapper.updateByPrimaryKeySelective(updateObj);
        } else {
            inviteValid2 = new UserInviteValidNum();
            inviteValid2.setId(superUid);
            inviteValid2.setNumFirst(0);
            inviteValid2.setNumSecond(countTeam2);
            inviteValid2.setUpdateTime(new Date());
            userInviteValidNumMapper.insertSelective(inviteValid2);
        }
    }
}
fanli/src/main/java/com/yeshi/fanli/service/inter/count/HongBaoV2CountService.java
@@ -152,14 +152,6 @@
     */
    public BigDecimal getRewardMoneyByInvite(Long uid);
    /**
     * 有效一级队员定义:2019年1月1日起(date),自购或分享1笔且付款总金额不小于 payment 元(退款为失效
     * @param uid
     * @param date
     * @param payment
     * @return
     */
    public long countValidOrderByUidAndTime(Long uid, Long time, BigDecimal payment);
    /**
     * 统计不同时间:奖励
@@ -206,14 +198,6 @@
     */
    public long countMyDirectOrderByCashArrival(Long uid, BigDecimal payment);
    /**
     * 统计已结算
     * @param uid
     * @param time
     * @param payment
     * @return
     */
    public long countOrderByUidAndSettled(Long uid, Long time, BigDecimal payment);
    public BigDecimal geBonusByuid(Long uid, Integer dateType, Integer hbType, Integer moneyState);
fanli/src/main/java/com/yeshi/fanli/service/inter/order/CommonOrderService.java
@@ -425,4 +425,13 @@
     */
    public BigDecimal getWeiQuanMoney(List<TaoBaoWeiQuanOrder> listWQ, int sourceType, Long uid);
    /**
     * 统计订单记录数量-非订单号为主
     * @param uid
     * @param payment
     * @return
     */
    public long countOrderByUidAndSettled(Long uid, BigDecimal payment);
}
fanli/src/main/java/com/yeshi/fanli/service/inter/user/invite/UserInviteValidNumService.java
@@ -34,5 +34,12 @@
     */
    public void reduceValidNumSecond(Long uid, Long workerId);
    /**
     * 重新同步有效队员信息
     * @param workerId 订单id
     */
    public void syncInfoAgain(Long workerId);
     
}
fanli/src/main/java/com/yeshi/fanli/util/factory/msg/MsgOrderDetailFactory.java
@@ -41,20 +41,16 @@
            return null;
        String fanliName = "";
        MsgTypeOrderTypeEnum typeEnum = null;
        String sourceName = Constant.getSourceName(source);
        if (Constant.TYPE_REBATE == type) {
            fanliName = "预估返利:";
            sourceName += "-返利订单";
            typeEnum = MsgTypeOrderTypeEnum.fanli;
        } else if (Constant.TYPE_SHAER == type) {
            fanliName = "预估奖金:";
            sourceName += "-分享订单";
            typeEnum = MsgTypeOrderTypeEnum.share;
        } else if (Constant.TYPE_INVITE == type) {
            fanliName = "预估收益:";
            sourceName += "-团队订单";
            typeEnum = MsgTypeOrderTypeEnum.invite;
        }
        // 添加内容
@@ -101,7 +97,7 @@
        detail.setOrderType(source);
        detail.setPayMoney(payMoney);
        detail.setRead(false);
        detail.setType(typeEnum);
        detail.setType(MsgTypeOrderTypeEnum.orderStatistics);
        detail.setUser(new UserInfo(uid));
        detail.setExtraInfo(new Gson().toJson(listMsg));
        return detail;