yj
2020-03-15 348da0f1093bc6d83e91dc19a76122f1b5ecea5a
会员等级
7个文件已修改
200 ■■■■■ 已修改文件
fanli/src/main/java/com/yeshi/fanli/dao/mybatis/HongBaoV2CountMapper.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/mapping/hongbao/HongBaoV2CountMapper.xml 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/count/HongBaoV2CountServiceImpl.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/user/vip/UserVIPPreInfoServiceImpl.java 130 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/inter/count/HongBaoV2CountService.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/inter/user/vip/UserVIPPreInfoService.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/util/Constant.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/dao/mybatis/HongBaoV2CountMapper.java
@@ -211,6 +211,18 @@
            @Param("payment") BigDecimal payment);
    
    
    /**
     *  注:1笔且付款总金额不小于 payment 元(退款为失效
     * @param uid
     * @param list 类型
     * @return
     */
    Long counOrderByUidAndOrderType(@Param("uid") Long uid, @Param("payment") BigDecimal payment,
            @Param("type") int type);
    /**
     * 查询用户个类型预计奖金
     * @param uid
fanli/src/main/java/com/yeshi/fanli/mapping/hongbao/HongBaoV2CountMapper.xml
@@ -411,6 +411,16 @@
    </select>
    
    
    <select id="counOrderByUidAndOrderType" 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_state` = 3
            AND co.`co_payment` >= #{payment} AND v2.`hb_type` = #{type}
    </select>
    <select id="getRewardMoneyByDate" resultType="BigDecimal">
        SELECT (COALESCE(SUM(v2.`hb_money`),0)- COALESCE(SUM(d.`wr_money`),0))AS totalmoney FROM (
            SELECT * FROM yeshi_ec_hongbao_v2 v 
fanli/src/main/java/com/yeshi/fanli/service/impl/count/HongBaoV2CountServiceImpl.java
@@ -357,6 +357,17 @@
        return count;
    }
    
    @Override
    public long counOrderByUidAndOrderType(Long uid, BigDecimal payment,int type) {
        Long count = hongBaoV2CountMapper.counOrderByUidAndOrderType(uid, payment, type);
        if (count == null) {
            count = 0L;
        }
        return count;
    }
    @Override
    public BigDecimal getRewardMoneyToCount(Long uid, Integer dateType, Integer hbType, List<Integer> listSource) {
        return hongBaoV2CountMapper.getRewardMoneyByDate(uid, dateType, hbType, null, null, null, null, null, listSource);
fanli/src/main/java/com/yeshi/fanli/service/impl/user/vip/UserVIPPreInfoServiceImpl.java
@@ -8,17 +8,34 @@
import javax.annotation.Resource;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.yeshi.fanli.dao.mybatis.user.vip.UserVIPPreInfoMapper;
import com.yeshi.fanli.entity.bus.user.HongBaoV2;
import com.yeshi.fanli.entity.bus.user.vip.UserVIPInfo;
import com.yeshi.fanli.entity.bus.user.vip.UserVIPPreInfo;
import com.yeshi.fanli.exception.user.vip.UserVIPPreInfoException;
import com.yeshi.fanli.service.inter.count.HongBaoV2CountService;
import com.yeshi.fanli.service.inter.user.invite.ThreeSaleSerivce;
import com.yeshi.fanli.service.inter.user.vip.UserVIPInfoService;
import com.yeshi.fanli.service.inter.user.vip.UserVIPPreInfoService;
import com.yeshi.fanli.util.Constant;
import com.yeshi.fanli.util.annotation.RequestSerializableByKeyService;
@Service
public class UserVIPPreInfoServiceImpl implements UserVIPPreInfoService {
    @Resource
    private UserVIPPreInfoMapper userVIPPreInfoMapper;
    @Resource
    private HongBaoV2CountService hongBaoV2CountService;
    @Resource
    private ThreeSaleSerivce threeSaleSerivce;
    @Resource
    private UserVIPInfoService userVIPInfoService;
    @Override
    public void addUserVIPPreInfo(UserVIPPreInfo info) throws UserVIPPreInfoException {
@@ -51,4 +68,117 @@
        return infoList.get(0);
    }
    @RequestSerializableByKeyService(key = "#uid")
    @Transactional(rollbackFor = Exception.class)
    @Override
    public void verifyVipCondition(Long uid) {
        if (uid == null || uid <= 0)
            return;
        // 验证是否VIP
        boolean vip = userVIPInfoService.isVIP(uid);
        if (vip) {
            return;
        }
        // 邀请订单
        long countZiGou = hongBaoV2CountService.counOrderByUidAndOrderType(uid, Constant.VIP_ORDER_PAY, HongBaoV2.TYPE_ZIGOU);
        // 邀请订单
        long countShare = hongBaoV2CountService.counOrderByUidAndOrderType(uid, Constant.VIP_ORDER_PAY, HongBaoV2.TYPE_SHARE_GOODS);
        // 队员
        long firstTeam = threeSaleSerivce.countFirstTeam(uid, 1);
        long secondTeam = threeSaleSerivce.countSecondTeam(uid, 1);
        // 一阶段
        boolean process1 = oneProcess(uid, countZiGou, countShare, firstTeam, secondTeam);
        if (!process1) {
            return;
        }
        // 一阶段
        boolean process2 = twoProcess(uid, countZiGou, countShare, firstTeam, secondTeam);
        if (!process2) {
            return;
        }
        vipProcess(uid, countZiGou, countShare, firstTeam, secondTeam);
    }
    /**
     * 一阶段
     * @param uid
     * @param countZiGou
     * @param countShare
     * @param firstTeam
     * @param secondTeam
     */
    private boolean oneProcess(Long uid, long countZiGou, long countShare, long firstTeam, long secondTeam) {
        UserVIPPreInfo oldInfo = userVIPPreInfoMapper.selectByUidAndProcess(uid, UserVIPPreInfo.PROCESS_1);
        if (oldInfo != null) {
            return true;
        }
        if (countZiGou >= Constant.VIP_PROCESS_1_ZIGOU || countShare >= Constant.VIP_PROCESS_1_SHARE
                || (firstTeam >= Constant.VIP_PROCESS_1_TEAM && secondTeam >= Constant.VIP_PROCESS_1_TEAM_SECOND)) {
            UserVIPPreInfo info = new UserVIPPreInfo();
            info.setUid(uid);
            info.setProcess(UserVIPPreInfo.PROCESS_1);
            info.setCreateTime(new Date());
            info.setUpdateTime(new Date());
            userVIPPreInfoMapper.insertSelective(info);
            return true;
        }
        return false;
    }
    /**
     * 一阶段
     * @param uid
     * @param countZiGou
     * @param countShare
     * @param firstTeam
     * @param secondTeam
     */
    private boolean twoProcess(Long uid, long countZiGou, long countShare, long firstTeam, long secondTeam) {
        UserVIPPreInfo oldInfo = userVIPPreInfoMapper.selectByUidAndProcess(uid, UserVIPPreInfo.PROCESS_2);
        if (oldInfo != null) {
            return true;
        }
        if (countZiGou >= Constant.VIP_PROCESS_2_ZIGOU || countShare >= Constant.VIP_PROCESS_2_SHARE
                || (firstTeam >= Constant.VIP_PROCESS_2_TEAM && secondTeam >= Constant.VIP_PROCESS_2_TEAM_SECOND)) {
            UserVIPPreInfo info = new UserVIPPreInfo();
            info.setUid(uid);
            info.setProcess(UserVIPPreInfo.PROCESS_2);
            info.setCreateTime(new Date());
            info.setUpdateTime(new Date());
            userVIPPreInfoMapper.insertSelective(info);
            return true;
        }
        return false;
    }
    /**
     * 一阶段
     * @param uid
     * @param countZiGou
     * @param countShare
     * @param firstTeam
     * @param secondTeam
     */
    private boolean vipProcess(Long uid, long countZiGou, long countShare, long firstTeam, long secondTeam) {
        if (countZiGou >= Constant.VIP_PROCESS_3_ZIGOU || countShare >= Constant.VIP_PROCESS_3_SHARE
                || (firstTeam >= Constant.VIP_PROCESS_3_TEAM && secondTeam >= Constant.VIP_PROCESS_3_TEAM_SECOND)) {
            return true;
        }
        return false;
    }
}
fanli/src/main/java/com/yeshi/fanli/service/inter/count/HongBaoV2CountService.java
@@ -264,6 +264,16 @@
             Integer moneyState, String startTime, String endTime, List<Integer> listSource);
    
    public Integer countOrderByTypeAndDate(Integer orderType, String preDay);
    public Integer countOrderByTypeAndDate(Integer orderType, String preDay);
    /**
     * 统计订单数量
     * @param uid
     * @param time 下单开始时间
     * @param payment 付款金额
     * @param type 订单类型
     * @return
     */
    public long counOrderByUidAndOrderType(Long uid, BigDecimal payment, int type);
}
fanli/src/main/java/com/yeshi/fanli/service/inter/user/vip/UserVIPPreInfoService.java
@@ -28,4 +28,6 @@
     */
    public UserVIPPreInfo getLatestProcessInfo(Long uid);
    public void verifyVipCondition(Long uid);
}
fanli/src/main/java/com/yeshi/fanli/util/Constant.java
@@ -178,6 +178,29 @@
    public static final int VIP_COUPON_GIVEFREE_NUM = 5;
    // vip赠送金币
    public static final int VIP_COLDCOIN_NUM = 1800;
    // 订单实付款
    public static final BigDecimal VIP_ORDER_PAY = new BigDecimal("1");
    // vip-一阶段分享订单数据
    public static final int VIP_PROCESS_1_ZIGOU = 60;
    public static final int VIP_PROCESS_1_SHARE = 120;
    public static final int VIP_PROCESS_1_TEAM = 8;
    public static final int VIP_PROCESS_1_TEAM_SECOND = 16;
    // vip-二阶段分享订单数据
    public static final int VIP_PROCESS_2_ZIGOU = 120;
    public static final int VIP_PROCESS_2_SHARE = 240;
    public static final int VIP_PROCESS_2_TEAM = 16;
    public static final int VIP_PROCESS_2_TEAM_SECOND = 32;
    // vip-三阶段分享订单数据
    public static final int VIP_PROCESS_3_ZIGOU = 240;
    public static final int VIP_PROCESS_3_SHARE = 480;
    public static final int VIP_PROCESS_3_TEAM = 32;
    public static final int VIP_PROCESS_3_TEAM_SECOND = 64;
    // 奖励券倒计时 - 天数
    public static final int COUPON_REWARD_LIMIT_DAY = 5;