admin
2020-03-15 b16f2b0126281e87346db9e6efd1db960ecc872a
Merge remote-tracking branch 'origin/div' into div
11个文件已修改
270 ■■■■■ 已修改文件
fanli/src/main/java/com/yeshi/fanli/dao/mybatis/HongBaoV2CountMapper.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/entity/system/ConfigKeyEnum.java 3 ●●●●● 补丁 | 查看 | 原始文档 | 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/order/CommonOrderServiceImpl.java 37 ●●●● 补丁 | 查看 | 原始文档 | 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/util/VersionUtil.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/vo/order/CommonOrderVO.java 22 ●●●●● 补丁 | 查看 | 原始文档 | 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/entity/system/ConfigKeyEnum.java
@@ -181,6 +181,9 @@
    
    evaluateEmojis("evaluate_emojis", "发圈评论Emojis"),
    evaluateText("evaluate_text", "发圈评论文本"),
    shareOrderRebateDescLink("share_order_rebate_desc_link", "分享订单返利计算说明链接"),
    ;
    private final String key;
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/order/CommonOrderServiceImpl.java
@@ -38,6 +38,7 @@
import com.yeshi.fanli.entity.order.HongBaoOrder;
import com.yeshi.fanli.entity.order.InviteOrderSubsidy;
import com.yeshi.fanli.entity.pdd.PDDOrder;
import com.yeshi.fanli.entity.system.ConfigKeyEnum;
import com.yeshi.fanli.entity.system.SystemCoupon.CouponTypeEnum;
import com.yeshi.fanli.entity.taobao.TaoBaoGoodsBrief;
import com.yeshi.fanli.entity.taobao.TaoBaoOrder;
@@ -293,11 +294,15 @@
        boolean vip = userVIPInfoService.isVIP(uid);
        // 是否存在奖励券
        boolean hasRewardCoupon = userSystemCouponService.getValidRebateCoupon(uid);
        long nowTime = java.lang.System.currentTimeMillis();
        for (CommonOrderVO order : listOrder) {
            String orderNo = order.getOrderNo();
            Integer sourceType = order.getSourceType();
            Integer hongBaoType = order.getHongBaoType();
            BigDecimal totalPay = new BigDecimal(0);
            BigDecimal totalActual = new BigDecimal(0);
            // 商品信息组合
            for (CommonOrderVO commonOrder : listGoods) {
                CommonOrderGoods goods = commonOrder.getCommonOrderGoods();
@@ -327,7 +332,16 @@
                    }
                    commonGoodsVO.setActualPay("付款金额:¥" + totalSettlement);
                    Integer hongBaoType = order.getHongBaoType();
                    totalPay = MoneyBigDecimalUtil.add(totalPay, totalSettlement);
                    // 商品价格
                    BigDecimal actualPrice = commonGoodsVO.getActualPrice();
                    if (actualPrice != null) {
                        Integer totalCount = commonOrder.getTotalCount();
                        totalActual = MoneyBigDecimalUtil.add(totalActual,
                                MoneyBigDecimalUtil.mul(new BigDecimal(totalCount), actualPrice));
                    }
                    // 邀请订单信息保护
                    if (HongBaoV2.TYPE_YAOQING == hongBaoType || HongBaoV2.TYPE_YIJI == hongBaoType
                            || HongBaoV2.TYPE_ERJI == hongBaoType || HongBaoV2.TYPE_SHARE_YIJI == hongBaoType
@@ -354,11 +368,19 @@
                    order.getListOrderGoods().add(commonGoodsVO);
                }
            }
            Date thirdCreateTime = order.getThirdCreateTime();
            if (thirdCreateTime != null) {
                order.setDownTime("下单时间:" + format.format(thirdCreateTime));
                order.setObtainTime(thirdCreateTime.getTime());
            order.setDownTime("下单时间:" + format.format(thirdCreateTime));
            order.setObtainTime(thirdCreateTime.getTime());
            // 2.1分享订单和返利订单实付金额大于或者小于券后价的时候,订单页面 只显示3天 下单时间开始
            if (VersionUtil.greaterThan_2_1(acceptData.getPlatform(), acceptData.getVersion())) {
                if (HongBaoV2.TYPE_SHARE_YIJI == hongBaoType
                        && DateUtil.plusDayDate(3, thirdCreateTime).getTime() > nowTime
                        && totalPay.compareTo(totalActual) != 0) {
                    order.setFanliDesc("由实付金额*返利比计算而来");
                    order.setFanliDescLink(configService.get(ConfigKeyEnum.shareOrderRebateDescLink.getKey()));
                }
            }
            Date settleTime = order.getSettleTime();
@@ -446,7 +468,6 @@
            // 订单标识
            List<String> signList = new ArrayList<String>();
            /* 订单返利类型 转换 */
            Integer hongBaoType = order.getHongBaoType();
            if (HongBaoV2.TYPE_ZIGOU == hongBaoType || 2 == hongBaoType) {
                // 自购
                hongbaoInfo = "返利";
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;
fanli/src/main/java/com/yeshi/fanli/util/VersionUtil.java
@@ -98,6 +98,14 @@
            return false;
    }
    public static boolean greaterThan_2_1(String platform, String versionCode) {
        if ((("android".equalsIgnoreCase(platform) && Integer.parseInt(versionCode) >= 56))
                || (("ios".equalsIgnoreCase(platform) && Integer.parseInt(versionCode) >= 78)))
            return true;
        else
            return false;
    }
    public static boolean smallerThan_1_5_1(String platform, String versionCode) {
        if ((("android".equalsIgnoreCase(platform) && Integer.parseInt(versionCode) < 36))
                || (("ios".equalsIgnoreCase(platform) && Integer.parseInt(versionCode) < 44)))
fanli/src/main/java/com/yeshi/fanli/vo/order/CommonOrderVO.java
@@ -127,6 +127,11 @@
    
    @Expose
    private String vipOrderDesc;// 超级订单描述
    @Expose
    private String fanliDesc;// 返利说明
    @Expose
    private String fanliDescLink;// 返利说明链接
    public String getVipOrderDesc() {
@@ -432,4 +437,21 @@
    public void setSubsidyList(List<String> subsidyList) {
        this.subsidyList = subsidyList;
    }
    public String getFanliDesc() {
        return fanliDesc;
    }
    public void setFanliDesc(String fanliDesc) {
        this.fanliDesc = fanliDesc;
    }
    public String getFanliDescLink() {
        return fanliDescLink;
    }
    public void setFanliDescLink(String fanliDescLink) {
        this.fanliDescLink = fanliDescLink;
    }
}