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; } }