From 744594ef1a2f530fc3e86ea9dc48b62247f79420 Mon Sep 17 00:00:00 2001 From: admin <weikou2014> Date: 星期二, 19 五月 2020 17:13:23 +0800 Subject: [PATCH] 饿了么绘图,添加口碑 --- fanli/src/main/java/com/yeshi/fanli/service/impl/redpack/RedPackWinInviteServiceImpl.java | 129 ++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 121 insertions(+), 8 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 2f4db5e..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; @@ -35,10 +36,12 @@ 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.redpack.RedPackWinProgressVO; @Service public class RedPackWinInviteServiceImpl implements RedPackWinInviteService { @@ -94,9 +97,41 @@ @Override @RequestSerializableByKeyService(key = "#teamUid") @Transactional(rollbackFor = Exception.class) + public void initCreateRedPackWin(Long bossId, Long teamUid) { + UserActiveLog activeLog = userActiveLogService.getUserLatestActiveInfo(bossId); + if (activeLog == null) + return; + + // 灏忎簬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, Constant.RED_PACK_REWARD_TIME); + ThreeSale threeSale = threeSaleSerivce.getByWorkerIdAndTime(teamUid, + TimeUtil.convertDateToTemp(Constant.RED_PACK_ONLINE_TIME)); if (threeSale == null) return; @@ -107,8 +142,13 @@ return; // 灏忎簬2.0.2鐗堟湰涓嶅鍔� - if (!VersionUtil.greaterThan_2_1("appstore".equalsIgnoreCase(activeLog.getChannel()) ? "ios" : "android", + 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; // 鍚屼竴闃熷憳濂栧姳涓�娆� @@ -161,7 +201,7 @@ dto.setNickName(userInfo.getNickName()); dto.setPortrait(userInfo.getPortrait()); userMoneyMsgNotificationService.teamRedPackRewardMsg(bossId, MsgTypeMoneyTypeEnum.redPackOneStageReward, money, - "闃熷憳锛堝ソ鍙嬶級瀹屾垚绗竴闃舵", new Gson().toJson(dto)); + "绮変笣锛堝ソ鍙嬶級瀹屾垚绗竴闃舵", new Gson().toJson(dto)); } @RequestSerializableByKeyService(key = "#uid") @@ -187,7 +227,8 @@ return; // 楠岃瘉涓婁笅绾у叧绯� - ThreeSale threeSale = threeSaleSerivce.getByWorkerIdAndTime(teamUid, Constant.RED_PACK_REWARD_TIME); + ThreeSale threeSale = threeSaleSerivce.getByWorkerIdAndTime(teamUid, + TimeUtil.convertDateToTemp(Constant.RED_PACK_ONLINE_TIME)); if (threeSale == null || threeSale.getBoss().getId().longValue() != uid.longValue()) return; @@ -217,7 +258,7 @@ * @param orderNo * @param bossId */ - @Transactional + @Transactional(rollbackFor = Exception.class) private void twoStageRewardToBoss(Long bossId, Long teamUid, Date oneStageTime, Integer source, String orderNo) throws Exception { // 绗竴闃舵瀹屾垚涔嬪悗鐨�90澶╁唴 ; 闃熷弸浜х敓鐨勮鍗曚腑锛堣嚜璐�+鍒嗕韩锛夛紝閭�璇蜂汉绱浜х敓鈮�1 鍏冨閲� @@ -259,7 +300,7 @@ dto.setNickName(userInfo.getNickName()); dto.setPortrait(userInfo.getPortrait()); userMoneyMsgNotificationService.teamRedPackRewardMsg(bossId, MsgTypeMoneyTypeEnum.redPackTwoStageReward, money, - "闃熷憳锛堝ソ鍙嬶級瀹屾垚绗簩闃舵", new Gson().toJson(dto)); + "绮変笣锛堝ソ鍙嬶級瀹屾垚绗簩闃舵", new Gson().toJson(dto)); } /** @@ -270,7 +311,7 @@ * @param orderNo * @param bossId */ - @Transactional + @Transactional(rollbackFor = Exception.class) private void threeStageRewardToBoss(Long bossId, Long teamUid, Date twoStageTime, Integer source, String orderNo) throws Exception { // 浜屻�佷笁闃舵涓嶅彲鍚屾湀 @@ -328,7 +369,79 @@ dto.setNickName(userInfo.getNickName()); dto.setPortrait(userInfo.getPortrait()); userMoneyMsgNotificationService.teamRedPackRewardMsg(bossId, MsgTypeMoneyTypeEnum.redPackThreeStageReward, - money, "闃熷憳锛堝ソ鍙嬶級瀹屾垚绗笁闃舵杩炵画[绗�" + monthSpace + "涓湀]", new Gson().toJson(dto)); + 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); + } + + @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