From 7e7db2fa55a9a3af46d4fd8ede0dee147f101d64 Mon Sep 17 00:00:00 2001 From: yujian <yujian@163.com> Date: 星期六, 09 五月 2020 21:41:27 +0800 Subject: [PATCH] 2.1需求 --- fanli/src/main/java/com/yeshi/fanli/service/impl/redpack/RedPackWinInviteServiceImpl.java | 500 +++++++++++++++++++++++++++++++++++++++--------------- 1 files changed, 357 insertions(+), 143 deletions(-) diff --git a/fanli/src/main/java/com/yeshi/fanli/service/impl/redpack/RedPackWinInviteServiceImpl.java b/fanli/src/main/java/com/yeshi/fanli/service/impl/redpack/RedPackWinInviteServiceImpl.java index 0ce5c0d..9687b36 100644 --- a/fanli/src/main/java/com/yeshi/fanli/service/impl/redpack/RedPackWinInviteServiceImpl.java +++ b/fanli/src/main/java/com/yeshi/fanli/service/impl/redpack/RedPackWinInviteServiceImpl.java @@ -1,6 +1,7 @@ package com.yeshi.fanli.service.impl.redpack; import java.math.BigDecimal; +import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -12,222 +13,435 @@ import com.google.gson.Gson; import com.yeshi.fanli.dao.mybatis.redpack.RedPackWinInviteMapper; -import com.yeshi.fanli.dto.msg.MsgRedPackAddContentDTO; +import com.yeshi.fanli.dto.msg.MsgRedPackTeamRewardContentDTO; import com.yeshi.fanli.entity.bus.msg.MsgMoneyDetail.MsgTypeMoneyTypeEnum; +import com.yeshi.fanli.entity.bus.user.ThreeSale; +import com.yeshi.fanli.entity.bus.user.UserActiveLog; +import com.yeshi.fanli.entity.bus.user.UserExtraTaoBaoInfo; import com.yeshi.fanli.entity.bus.user.UserInfo; +import com.yeshi.fanli.entity.order.CommonOrder; import com.yeshi.fanli.entity.redpack.RedPackWinInvite; import com.yeshi.fanli.entity.redpack.RedPackWinInvite.RedPackWinInviteTypeEnum; +import com.yeshi.fanli.service.inter.count.HongBaoV2CountService; import com.yeshi.fanli.service.inter.money.msg.UserMoneyMsgNotificationService; import com.yeshi.fanli.service.inter.order.CommonOrderService; import com.yeshi.fanli.service.inter.redpack.RedPackBalanceService; import com.yeshi.fanli.service.inter.redpack.RedPackConfigService; import com.yeshi.fanli.service.inter.redpack.RedPackWinInviteService; +import com.yeshi.fanli.service.inter.user.UserActiveLogService; +import com.yeshi.fanli.service.inter.user.UserInfoService; +import com.yeshi.fanli.service.inter.user.integral.IntegralTaskRecordService; import com.yeshi.fanli.service.inter.user.invite.ThreeSaleSerivce; +import com.yeshi.fanli.service.inter.user.tb.UserExtraTaoBaoInfoService; import com.yeshi.fanli.util.Constant; import com.yeshi.fanli.util.MoneyBigDecimalUtil; +import com.yeshi.fanli.util.StringUtil; +import com.yeshi.fanli.util.TimeUtil; +import com.yeshi.fanli.util.VersionUtil; +import com.yeshi.fanli.util.annotation.RequestSerializableByKeyService; +import com.yeshi.fanli.util.annotation.redpack.RedPackGetVersionLimit; import com.yeshi.fanli.util.factory.RedPackDetailFactory; -import com.yeshi.fanli.vo.order.CommonOrderVO; +import com.yeshi.fanli.vo.redpack.RedPackWinProgressVO; @Service public class RedPackWinInviteServiceImpl implements RedPackWinInviteService { @Resource private RedPackWinInviteMapper redPackWinInviteMapper; - + @Resource private RedPackConfigService redPackConfigService; - + @Resource private RedPackBalanceService redPackBalanceService; @Resource - private CommonOrderService commonOrderService; - + private CommonOrderService commonOrderService; + @Resource private ThreeSaleSerivce threeSaleSerivce; - + @Resource private UserMoneyMsgNotificationService userMoneyMsgNotificationService; - - + + @Resource + private UserInfoService userInfoService; + + @Resource + private UserExtraTaoBaoInfoService userExtraTaoBaoInfoService; + + @Resource + private IntegralTaskRecordService integralTaskRecordService; + + @Resource + private UserActiveLogService userActiveLogService; + + @Resource + private HongBaoV2CountService hongBaoV2CountService; + @Override + public List<RedPackWinInvite> getRewardList(int start, int count, Long uid) { + return redPackWinInviteMapper.getRewardList(start, count, uid); + } + + @Override + public Long countRewardRecord(Long uid) { + return redPackWinInviteMapper.countRewardRecord(uid); + } + + @Override + public BigDecimal getRewardMoney(Long uid) { + return redPackWinInviteMapper.getRewardMoney(uid); + } + + @Override + @RequestSerializableByKeyService(key = "#teamUid") @Transactional(rollbackFor = Exception.class) - public void orderArriveReward(Long uid, Integer source, String orderNo) throws Exception { - if (uid == null || source == null || orderNo == null) + public void initCreateRedPackWin(Long bossId, Long teamUid) { + UserActiveLog activeLog = userActiveLogService.getUserLatestActiveInfo(bossId); + if (activeLog == null) return; - - // 鑷繁鐨勫鍔� - firstReward(uid, source, orderNo); - - // 涓婁竴绾х殑濂栧姳 - UserInfo boss = threeSaleSerivce.getBoss(uid); - if(boss != null) { - firstSharedOrderRewardToBoss(boss.getId(), uid, source, orderNo); - firstSharedOrderRewardTheMonthToBoss(boss.getId(), uid, source, orderNo); - } + + // 灏忎簬2.0.5鐗堟湰涓嶅鍔� + if (!VersionUtil.greaterThan_2_0_5("appstore".equalsIgnoreCase(activeLog.getChannel()) ? "ios" : "android", + activeLog.getVersionCode())) + return; + + // 鍚屼竴闃熷憳鍙褰曚竴娆� + int totalReward = redPackWinInviteMapper.countByUidAndTeamUidAndType(bossId, teamUid, + RedPackWinInviteTypeEnum.zeroStageReward.name()); + if (totalReward > 0) + return; + + // 鑾峰緱绾㈠寘 + RedPackWinInvite winInvite = new RedPackWinInvite(); + winInvite.setUid(bossId); + winInvite.setTeamUid(teamUid); + winInvite.setMoney(new BigDecimal(0)); + winInvite.setType(RedPackWinInviteTypeEnum.zeroStageReward); + winInvite.setIdentifyCode(StringUtil.Md5(RedPackWinInviteTypeEnum.zeroStageReward.name() + ":" + teamUid)); + winInvite.setCreateTime(new Date()); + winInvite.setUpdateTime(new Date()); + redPackWinInviteMapper.insertSelective(winInvite); } - + + @Override + @RequestSerializableByKeyService(key = "#teamUid") + @Transactional(rollbackFor = Exception.class) + public void inviteSucceedReward(Long teamUid) throws Exception { + // 鏄惁鍦ㄤ笂绾夸箣鍚庣殑閭�璇峰叧绯� + ThreeSale threeSale = threeSaleSerivce.getByWorkerIdAndTime(teamUid, + TimeUtil.convertDateToTemp(Constant.RED_PACK_ONLINE_TIME)); + if (threeSale == null) + return; + + // 涓婄骇id + Long bossId = threeSale.getBoss().getId(); + UserActiveLog activeLog = userActiveLogService.getUserLatestActiveInfo(bossId); + if (activeLog == null) + return; + + // 灏忎簬2.0.2鐗堟湰涓嶅鍔� + if (!VersionUtil.greaterThan_2_0_5("appstore".equalsIgnoreCase(activeLog.getChannel()) ? "ios" : "android", + activeLog.getVersionCode())) + return; + + int totalRewardZero = redPackWinInviteMapper.countByUidAndTeamUidAndType(bossId, teamUid, + RedPackWinInviteTypeEnum.zeroStageReward.name()); + if (totalRewardZero <= 0) + return; + + // 鍚屼竴闃熷憳濂栧姳涓�娆� + int totalReward = redPackWinInviteMapper.countByUidAndTeamUidAndType(bossId, teamUid, + RedPackWinInviteTypeEnum.oneStageReward.name()); + if (totalReward > 0) + return; + + // 寤虹珛閭�璇峰叧绯绘椂闂磋秴杩�20澶� + Long succeedTime = threeSale.getSucceedTime(); + Date endDate = DateUtil.plusDayDate(Constant.ONE_STAGE_LIMIT_DAYS, new Date(succeedTime)); + if (endDate.getTime() < java.lang.System.currentTimeMillis()) + return; + + // 缁戝畾鐢佃瘽鍙风爜鍜屽井淇� + UserInfo userInfo = userInfoService.selectByPKey(teamUid); + if (userInfo == null || StringUtil.isNullOrEmpty(userInfo.getPhone()) + || StringUtil.isNullOrEmpty(userInfo.getWxOpenId())) + return; + + // 鎺堟潈娣樺疂 + UserExtraTaoBaoInfo taoBaoInfo = userExtraTaoBaoInfoService.getByUid(teamUid); + if (taoBaoInfo == null || StringUtil.isNullOrEmpty(taoBaoInfo.getTaoBaoUid())) + return; + + // 濂藉弸浜х敓涓�绗旇繑鍒╄鍗曪紙鑷喘锛変笖 24 灏忔椂鍐呬笉澶辨晥锛� + long validOrder = commonOrderService.count24HValidOrderByUid(teamUid, new Date(succeedTime)); + if (validOrder < 1) + return; + + // 濂栧姳閲戦 + BigDecimal money = Constant.ONE_STAGE_MONEY; + + // 鑾峰緱绾㈠寘 + RedPackWinInvite winInvite = new RedPackWinInvite(); + winInvite.setCreateTime(new Date()); + winInvite.setUpdateTime(new Date()); + winInvite.setType(RedPackWinInviteTypeEnum.oneStageReward); + winInvite.setUid(bossId); + winInvite.setTeamUid(teamUid); + winInvite.setMoney(money); + winInvite.setIdentifyCode(StringUtil.Md5(RedPackWinInviteTypeEnum.oneStageReward.name() + ":" + teamUid)); + redPackWinInviteMapper.insertSelective(winInvite); + + // 澧炲姞绾㈠寘 + redPackBalanceService.addRedPack(bossId, money, RedPackDetailFactory.createInvite(winInvite)); + + // 娑堟伅 + MsgRedPackTeamRewardContentDTO dto = new MsgRedPackTeamRewardContentDTO(); + dto.setNickName(userInfo.getNickName()); + dto.setPortrait(userInfo.getPortrait()); + userMoneyMsgNotificationService.teamRedPackRewardMsg(bossId, MsgTypeMoneyTypeEnum.redPackOneStageReward, money, + "绮変笣锛堝ソ鍙嬶級瀹屾垚绗竴闃舵", new Gson().toJson(dto)); + } + + @RequestSerializableByKeyService(key = "#uid") + @RedPackGetVersionLimit(uid = "#uid") + @Transactional(rollbackFor = Exception.class) + @Override + public void inviteOrderArriveReward(Long uid, Integer source, String orderNo) throws Exception { + if (uid == null || source == null || StringUtil.isNullOrEmpty(orderNo)) + return; + + // 鑾峰彇璁㈠崟瀵瑰簲涓嬪崟浜� + List<CommonOrder> list = commonOrderService.listBySourceTypeAndOrderId(source, orderNo); + if (list == null || list.isEmpty()) + return; + + CommonOrder commonOrder = list.get(0); + if (commonOrder == null || commonOrder.getUserInfo() == null) + return; + + // 涓嬪崟浜篿d + Long teamUid = commonOrder.getUserInfo().getId(); + if (teamUid == null) + return; + + // 楠岃瘉涓婁笅绾у叧绯� + ThreeSale threeSale = threeSaleSerivce.getByWorkerIdAndTime(teamUid, + TimeUtil.convertDateToTemp(Constant.RED_PACK_ONLINE_TIME)); + if (threeSale == null || threeSale.getBoss().getId().longValue() != uid.longValue()) + return; + + // 绗竴闃舵(楠岃瘉) + RedPackWinInvite oneStage = redPackWinInviteMapper.getByUidAndTeamUidAndType(uid, teamUid, + RedPackWinInviteTypeEnum.oneStageReward.name()); + if (oneStage == null) + return; + + // 绗簩闃舵(楠岃瘉) + RedPackWinInvite twoStage = redPackWinInviteMapper.getByUidAndTeamUidAndType(uid, teamUid, + RedPackWinInviteTypeEnum.twoStageReward.name()); + if (twoStage == null) { + twoStageRewardToBoss(uid, teamUid, oneStage.getCreateTime(), source, orderNo); + return; + } + + // 绗笁闃舵 + threeStageRewardToBoss(uid, teamUid, twoStage.getCreateTime(), source, orderNo); + } + /** - * 鏂颁汉濂栧姳锛氬畬鎴愰绗旇鍗� 锛堝凡鍒拌处锛� 棣栧崟=涓嶉檺鍒堕噾棰濄�佷笉闄愬埗鍟嗗搧銆佷笉闄愬埗鏁伴噺銆佷笉闄愬埗璁㈠崟绫诲瀷锛� + * 涓婄骇濂栧姳--绗簩闃舵 + * * @param uid * @param source * @param orderNo * @param bossId */ - @Transactional - private void firstReward(Long uid, Integer source, String orderNo) throws Exception{ - // 1銆佸垽鏂槸鍚︾敤鎴烽涓鍗� - CommonOrderVO order = commonOrderService.firstValidOrderByUid(uid); - if (order == null || source == order.getSourceType() || orderNo.equals(order.getOrderNo())) + @Transactional(rollbackFor = Exception.class) + private void twoStageRewardToBoss(Long bossId, Long teamUid, Date oneStageTime, Integer source, String orderNo) + throws Exception { + // 绗竴闃舵瀹屾垚涔嬪悗鐨�90澶╁唴 ; 闃熷弸浜х敓鐨勮鍗曚腑锛堣嚜璐�+鍒嗕韩锛夛紝閭�璇蜂汉绱浜х敓鈮�1 鍏冨閲� + Date endDate = DateUtil.plusDayDate(Constant.TWO_STAGE_LIMIT_DAYS, oneStageTime); + + // 缁熻璁㈠崟濂栭噾 锛堚�滃ソ鍙嬭嚜璐�濆拰鈥滃ソ鍙嬪垎浜�濓級 + BigDecimal rewardMoney = hongBaoV2CountService.getOrderRewardByTeamUid(bossId, teamUid, endDate); + if (rewardMoney == null || rewardMoney.compareTo(Constant.TWO_STAGE_ORDER_REWARD_MIN) < 0) return; - - // 閲戦 - BigDecimal money = new BigDecimal(redPackConfigService.getValueByKey("new_user_first_order")); - - // 3銆佽幏寰楃孩鍖呰褰� - RedPackWinInvite winInvite = new RedPackWinInvite(); - winInvite.setCreateTime(new Date()); - winInvite.setUpdateTime(new Date()); - winInvite.setType(RedPackWinInviteTypeEnum.newUserReward); - winInvite.setUid(uid); - winInvite.setTeamUid(null); - winInvite.setMoney(money); - winInvite.setSource(source); - winInvite.setOrderNo(orderNo); - redPackWinInviteMapper.insertSelective(winInvite); - - // 4銆佸鍔犵孩鍖� - redPackBalanceService.addRedPack(uid, money, RedPackDetailFactory.createNewUserReward(winInvite)); - - //娑堟伅 - MsgRedPackAddContentDTO dto = new MsgRedPackAddContentDTO(); - dto.setTitle("绾㈠寘澧炲姞"); - dto.setMoney("楼" + money.setScale(2)); - dto.setBalance("楼" + redPackBalanceService.getBalance(uid).setScale(2)); - userMoneyMsgNotificationService.redPackMsg(uid, MsgTypeMoneyTypeEnum.redPackNewUserReward, new Gson().toJson(dto), "绾㈠寘鍙敤浜庤喘涔颁細鍛�"); - } - - - /** - * 涓婄骇濂栧姳锛氳閭�璇蜂汉瀹屾垚棣栫瑪鍒嗕韩璁㈠崟 锛堝凡鍒拌处锛� - * @param uid - * @param source - * @param orderNo - * @param bossId - */ - @Transactional - private void firstSharedOrderRewardToBoss(Long uid, Long inviteeUid, Integer source, String orderNo) throws Exception{ - // 1銆佸垽鏂槸鍚︽槸鏀圭敤鎴烽涓垎浜鍗� - CommonOrderVO order = commonOrderService.firstValidOrderByUidAndType(inviteeUid, 2); - if (order == null || source == order.getSourceType() || orderNo.equals(order.getOrderNo())) - return; - - // 2銆佸垽鏂槸绗嚑涓汉 - long total = redPackWinInviteMapper.countByUidAndType(uid, RedPackWinInviteTypeEnum.firstSharedOrder.name()); - - // 璁$畻搴斿鍔犵孩鍖呴噾棰� - BigDecimal money = new BigDecimal(redPackConfigService.getValueByKey("first_shared_order")); - long num = total % 9; - if (num > 0) { - BigDecimal addMoney = new BigDecimal(redPackConfigService.getValueByKey("first_shared_order_add")); - money = MoneyBigDecimalUtil.add(money, MoneyBigDecimalUtil.mul(addMoney, new BigDecimal(num))); + + // 璁$畻濂栧姳 + BigDecimal money = Constant.TWO_STAGE_MONEY_MIN; + long total = redPackWinInviteMapper.countByUidAndType(bossId, RedPackWinInviteTypeEnum.twoStageReward.name()); + if (total > 0 && total < Constant.TWO_STAGE_MONEY_ADD_NUM) { + long num = total % Constant.TWO_STAGE_MONEY_ADD_NUM; + money = MoneyBigDecimalUtil.add(money, + MoneyBigDecimalUtil.mul(Constant.TWO_STAGE_MONEY_ADD, new BigDecimal(num))); } - - // 3銆佽幏寰楃孩鍖呰褰� + + // 鑾峰緱绾㈠寘璁板綍 RedPackWinInvite winInvite = new RedPackWinInvite(); - winInvite.setCreateTime(new Date()); - winInvite.setUpdateTime(new Date()); - winInvite.setType(RedPackWinInviteTypeEnum.firstSharedOrder); - winInvite.setUid(uid); - winInvite.setTeamUid(inviteeUid); + winInvite.setUid(bossId); + winInvite.setTeamUid(teamUid); winInvite.setMoney(money); winInvite.setSource(source); winInvite.setOrderNo(orderNo); + winInvite.setCreateTime(new Date()); + winInvite.setUpdateTime(new Date()); + winInvite.setType(RedPackWinInviteTypeEnum.twoStageReward); + winInvite.setIdentifyCode(StringUtil.Md5(RedPackWinInviteTypeEnum.twoStageReward.name() + ":" + teamUid)); redPackWinInviteMapper.insertSelective(winInvite); - + // 4銆佸鍔犵孩鍖� - redPackBalanceService.addRedPack(uid, money, RedPackDetailFactory.createIncreaseReward(winInvite)); - + redPackBalanceService.addRedPack(bossId, money, RedPackDetailFactory.createIncreaseReward(winInvite)); + // 5銆佹秷鎭� - MsgRedPackAddContentDTO dto = new MsgRedPackAddContentDTO(); - dto.setTitle("绾㈠寘澧炲姞"); - dto.setMoney("楼" + money.setScale(2)); - dto.setBalance("楼" + redPackBalanceService.getBalance(uid).setScale(2)); - userMoneyMsgNotificationService.redPackMsg(uid, MsgTypeMoneyTypeEnum.redPackFirstSharedOrder, new Gson().toJson(dto), "绾㈠寘鍙敤浜庤喘涔颁細鍛�"); + UserInfo userInfo = userInfoService.selectByPKey(teamUid); + MsgRedPackTeamRewardContentDTO dto = new MsgRedPackTeamRewardContentDTO(); + dto.setNickName(userInfo.getNickName()); + dto.setPortrait(userInfo.getPortrait()); + userMoneyMsgNotificationService.teamRedPackRewardMsg(bossId, MsgTypeMoneyTypeEnum.redPackTwoStageReward, money, + "绮変笣锛堝ソ鍙嬶級瀹屾垚绗簩闃舵", new Gson().toJson(dto)); } - - + /** * 涓婄骇濂栧姳锛氭鏈堝紑濮嬩骇鐢熸弧瓒虫潯浠剁殑鍒嗕韩璁㈠崟锛堝垎浜鍗曞疄浠樻鈮�10鍏冿級 杩炵画15涓湀 鑷劧鏈堣幏寰楋紙宸插埌璐︼級姣忔湀鏈�楂�2鍏� + * * @param uid * @param source * @param orderNo * @param bossId */ - @Transactional - private void firstSharedOrderRewardTheMonthToBoss(Long uid, Long inviteeUid, Integer source, String orderNo) throws Exception{ - // 1銆佸垽鏂槸鍚︽槸鏈湀棣栧崟 - CommonOrderVO order = commonOrderService.firstValidOrderTheMonthByUidAndType(inviteeUid, 2); - if (order == null || source == order.getSourceType() || orderNo.equals(order.getOrderNo()) || - order.getAccountTime() == null) + @Transactional(rollbackFor = Exception.class) + private void threeStageRewardToBoss(Long bossId, Long teamUid, Date twoStageTime, Integer source, String orderNo) + throws Exception { + // 浜屻�佷笁闃舵涓嶅彲鍚屾湀 + if (DateUtil.isSameMonth(twoStageTime, new Date())) return; - - // 鍒嗕韩璁㈠崟瀹炰粯娆锯墺10鍏� - if (order.getPayment() == null || order.getPayment().compareTo(Constant.RED_PACK_PAY_MIN) < 0) + + // 鏄惁宸查鍙栨湰鏈� + RedPackWinInvite threeStage = redPackWinInviteMapper.getByUidAndTeamUidAndTypeMonth(bossId, teamUid, + RedPackWinInviteTypeEnum.threeStageReward.name()); + if (threeStage != null) return; - - // 鏌ヨ棣栧崟濂栧姳鏃堕棿 - CommonOrderVO firstorder = commonOrderService.firstValidOrderByUidAndType(inviteeUid, 2); - if (firstorder == null || firstorder.getAccountTime() == null) + + // 宸插鍔辨鏁� + int totalNum = redPackWinInviteMapper.countByUidAndTeamUidAndType(bossId, teamUid, + RedPackWinInviteTypeEnum.threeStageReward.name()); + if (totalNum >= Constant.THREE_STAGE_REWARD_MONTH) return; - - // 绗竴娆″埌璐︾殑娆℃湀寮�濮嬭繛缁�15涓湀 鑷劧鏈堣幏寰楋紙宸插埌璐︼級 - int monthSpace = DateUtil.getMonthSpace( order.getAccountTime(), firstorder.getAccountTime()); - if (monthSpace == 0 || monthSpace > Constant.RED_PACK_REWARd_MONTH) + + // 鏄惁宸查棿鏂� + int monthSpace = DateUtil.getMonthSpace(twoStageTime, new Date()); + if (monthSpace != totalNum + 1) return; - - + + // 缁熻鏈湀鑾峰緱濂栭噾 锛堚�滃ソ鍙嬭嚜璐�濆拰鈥滃ソ鍙嬪垎浜�濓級 + BigDecimal rewardMoney = hongBaoV2CountService.getOrderRewardByTeamUidTheMonth(bossId, teamUid); + if (rewardMoney == null || rewardMoney.compareTo(Constant.THREE_STAGE_ORDER_REWARD_MIN) < 0) + return; + // 璁$畻闅忔満濂栧姳 - double randomMoney = Constant.RED_PACK_RANDOM_MIN + Math.random() * (Constant.RED_PACK_RANDOM_MAX - Constant.RED_PACK_RANDOM_MIN); + double randomMoney = Constant.THREE_STAGE_RANDOM_MIN + + Math.random() * (Constant.THREE_STAGE_RANDOM_MAX - Constant.THREE_STAGE_RANDOM_MIN); // 淇濈暀涓や綅灏忔暟 BigDecimal money = new BigDecimal(randomMoney).setScale(2, BigDecimal.ROUND_HALF_UP); - + // 3銆佽幏寰楃孩鍖呰褰� RedPackWinInvite winInvite = new RedPackWinInvite(); winInvite.setCreateTime(new Date()); winInvite.setUpdateTime(new Date()); - winInvite.setType(RedPackWinInviteTypeEnum.monthSharedOrder); - winInvite.setUid(uid); - winInvite.setTeamUid(inviteeUid); + winInvite.setType(RedPackWinInviteTypeEnum.threeStageReward); + winInvite.setUid(bossId); + winInvite.setTeamUid(teamUid); winInvite.setMoney(money); winInvite.setSource(source); winInvite.setOrderNo(orderNo); + winInvite.setIdentifyCode( + StringUtil.Md5(RedPackWinInviteTypeEnum.threeStageReward.name() + ":" + teamUid + "-" + monthSpace)); redPackWinInviteMapper.insertSelective(winInvite); + // 4銆佸鍔犵孩鍖� - redPackBalanceService.addRedPack(uid, money, RedPackDetailFactory.createSeriesReward(winInvite)); - - //娑堟伅 - MsgRedPackAddContentDTO dto = new MsgRedPackAddContentDTO(); - dto.setTitle("绾㈠寘澧炲姞"); - dto.setMoney("楼" + money.setScale(2)); - dto.setBalance("楼" + redPackBalanceService.getBalance(uid).setScale(2)); - userMoneyMsgNotificationService.redPackMsg(uid, MsgTypeMoneyTypeEnum.redPackMonthSharedOrder, new Gson().toJson(dto), "绾㈠寘鍙敤浜庤喘涔颁細鍛�"); + redPackBalanceService.addRedPack(bossId, money, RedPackDetailFactory.createSeriesReward(winInvite)); + + // 娑堟伅 + UserInfo userInfo = userInfoService.selectByPKey(teamUid); + MsgRedPackTeamRewardContentDTO dto = new MsgRedPackTeamRewardContentDTO(); + dto.setNickName(userInfo.getNickName()); + dto.setPortrait(userInfo.getPortrait()); + userMoneyMsgNotificationService.teamRedPackRewardMsg(bossId, MsgTypeMoneyTypeEnum.redPackThreeStageReward, + money, "绮変笣锛堝ソ鍙嬶級瀹屾垚绗笁闃舵杩炵画[绗�" + monthSpace + "涓湀]", new Gson().toJson(dto)); + } + + @Override + public List<RedPackWinProgressVO> getInviteProgressByWorkerId(Long uid, Long tid) { + List<RedPackWinProgressVO> listVO = new ArrayList<RedPackWinProgressVO>(); + ThreeSale threeSale = threeSaleSerivce.getNearRelationByBossIdAndWorkerId(uid, tid); + if (threeSale == null || threeSale.getSucceedTime() == null) + return listVO; + + UserInfo userInfo = userInfoService.selectByPKey(tid); + if (userInfo == null) + return listVO; + + // 濂栧姳璁板綍 + List<RedPackWinInvite> listWin = redPackWinInviteMapper.getWinListByBossIdAndTeamUid(uid, tid); + if (listWin == null || listWin.size() == 0) + return listVO; + + int month = 1; + for (RedPackWinInvite win : listWin) { + if (win.getType() == RedPackWinInviteTypeEnum.zeroStageReward) { + listVO.add(new RedPackWinProgressVO("鎴愬姛娉ㄥ唽", TimeUtil.formatDate(userInfo.getCreatetime()))); + listVO.add(new RedPackWinProgressVO("纭珛閭�璇�", TimeUtil.formatDate(threeSale.getSucceedTime()))); + } + String time = TimeUtil.formatDate(win.getCreateTime()); + BigDecimal money = win.getMoney().setScale(2); + if (win.getType() == RedPackWinInviteTypeEnum.oneStageReward) { + listVO.add(new RedPackWinProgressVO("绗竴闃舵", time, money.toString())); + continue; + } + + if (win.getType() == RedPackWinInviteTypeEnum.twoStageReward) { + listVO.add(new RedPackWinProgressVO("绗簩闃舵", time, money.toString())); + continue; + } + + if (win.getType() == RedPackWinInviteTypeEnum.threeStageReward) { + listVO.add(new RedPackWinProgressVO("绗笁闃舵绗�" + month + "涓湀", time, money.toString())); + month++; + continue; + } + } + return listVO; + } + + @Override + public List<RedPackWinInvite> getWinTopListByBossId(int page, int count, Long uid) { + return redPackWinInviteMapper.getWinTopListByBossId(count * (page - 1), count, uid); + } + + @Override + public long countWinTopListByBossId(Long uid) { + return redPackWinInviteMapper.countWinTopListByBossId(uid); + } + + @Override + public long countTeamNumByTid(Long uid, Long teamUid) { + return redPackWinInviteMapper.countTeamNumByTid(uid, teamUid); + } + + + @Override + public List<RedPackWinInvite> query(long page, int count, String key, String type){ + return redPackWinInviteMapper.query(count * (page - 1), count, key, type); } - - public List<RedPackWinInvite> getRewardList() { - - - - - - - - return null; + @Override + public long count(String key, String type){ + Long count = redPackWinInviteMapper.count(key, type); + if (count == null) { + count = 0L; + } + return count; } - - - - - } -- Gitblit v1.8.0