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/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/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,135 @@ 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(); Long succeedTime = firstTeam.getSucceedTime(); if (succeedTime == null) { succeedTime = firstTeam.getCreateTime(); } // 单(分享 + 自购)实付款大于1元 long countValid = commonOrderService.countOrderByUidAndSettled(wid, Constant.VIP_ORDER_PAY); if (countValid > 0) { countTeam1 ++; try { String uniqueKey = StringUtil.Md5(wid + "#" + UserInviteValidRecord.TYPE_ONE); UserInviteValidRecord record = userInviteValidRecordMapper.selectByUniqueKey(uniqueKey); if (record == null) { record = new UserInviteValidRecord(); record.setUid(uid); record.setWorkerId(wid); record.setType(UserInviteValidRecord.TYPE_ONE); record.setUniqueKey(uniqueKey); record.setCreateTime(new Date()); userInviteValidRecordMapper.insertSelective(record); } } catch (Exception e) { } } } } 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(); Long succeedTime = team.getSucceedTime(); if (succeedTime == null) { succeedTime = team.getCreateTime(); } // 单(分享 + 自购)实付款大于1元 long countValid = commonOrderService.countOrderByUidAndSettled(wid, Constant.VIP_ORDER_PAY); if (countValid > 0) { countTeam2 ++; try { String uniqueKeySuper = StringUtil.Md5(wid + "#" + UserInviteValidRecord.TYPE_TWO); UserInviteValidRecord recordSuper = userInviteValidRecordMapper.selectByUniqueKey(uniqueKeySuper); if (recordSuper == null) { recordSuper = new UserInviteValidRecord(); recordSuper.setUid(superUid); recordSuper.setWorkerId(wid); recordSuper.setType(UserInviteValidRecord.TYPE_TWO); recordSuper.setUniqueKey(uniqueKeySuper); recordSuper.setCreateTime(new Date()); userInviteValidRecordMapper.insertSelective(recordSuper); } } catch (Exception e) { } } } } 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); }