From 207dc8655711cddac2653e18b51e58a88dba2084 Mon Sep 17 00:00:00 2001 From: yj <Administrator@192> Date: 星期五, 06 三月 2020 18:14:36 +0800 Subject: [PATCH] 发圈处理 --- fanli/src/main/java/com/yeshi/fanli/service/impl/user/invite/ThreeSaleSerivceImpl.java | 252 +++++++++++++++---------------------------------- 1 files changed, 78 insertions(+), 174 deletions(-) diff --git a/fanli/src/main/java/com/yeshi/fanli/service/impl/user/invite/ThreeSaleSerivceImpl.java b/fanli/src/main/java/com/yeshi/fanli/service/impl/user/invite/ThreeSaleSerivceImpl.java index 815ba2c..14c3df9 100644 --- a/fanli/src/main/java/com/yeshi/fanli/service/impl/user/invite/ThreeSaleSerivceImpl.java +++ b/fanli/src/main/java/com/yeshi/fanli/service/impl/user/invite/ThreeSaleSerivceImpl.java @@ -13,16 +13,18 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import com.aliyun.openservices.ons.api.Message; +import com.aliyun.openservices.ons.api.Producer; import com.yeshi.fanli.dao.mybatis.ThreeSaleMapper; import com.yeshi.fanli.dao.mybatis.UserInfoMapper; +import com.yeshi.fanli.dto.mq.user.UserTopicTagEnum; +import com.yeshi.fanli.dto.mq.user.body.UserInviteMQMsg; import com.yeshi.fanli.entity.bus.user.ThreeSale; import com.yeshi.fanli.entity.bus.user.ThreeSaleExtraInfo; import com.yeshi.fanli.entity.bus.user.UserActiveLog; import com.yeshi.fanli.entity.bus.user.UserInfo; import com.yeshi.fanli.exception.user.ThreeSaleException; -import com.yeshi.fanli.log.LogHelper; import com.yeshi.fanli.service.inter.order.config.HongBaoManageService; -import com.yeshi.fanli.service.inter.tlj.UserTaoLiJinOriginService; import com.yeshi.fanli.service.inter.user.UserActiveLogService; import com.yeshi.fanli.service.inter.user.UserInfoExtraService; import com.yeshi.fanli.service.inter.user.UserInfoService; @@ -34,7 +36,8 @@ import com.yeshi.fanli.util.Constant; import com.yeshi.fanli.util.StringUtil; import com.yeshi.fanli.util.VersionUtil; -import com.yeshi.fanli.util.cmq.ThreeSaleCMQManager; +import com.yeshi.fanli.util.rocketmq.MQMsgBodyFactory; +import com.yeshi.fanli.util.rocketmq.MQTopicName; import net.sf.json.JSONArray; import net.sf.json.JSONObject; @@ -61,9 +64,6 @@ private MsgInviteDetailService msgInviteDetailService; @Resource - private UserTaoLiJinOriginService userTaoLiJinOriginService; - - @Resource private UserActiveLogService userActiveLogService; @Resource @@ -79,11 +79,14 @@ @Resource(name = "taskExecutor") private TaskExecutor executor; + @Resource(name = "producer") + private Producer producer; + public UserInfo getBoss(final long uid) { return threeSaleMapper.selectBoss(uid); } - @Transactional + @Transactional(rollbackFor = Exception.class) public void bind(UserInfo worker, UserInfo inviter) throws ThreeSaleException { if (worker == null || inviter == null) throw new ThreeSaleException(1, "鐢ㄦ埛淇℃伅涓虹┖"); @@ -192,8 +195,7 @@ ts.setSucceedTime(System.currentTimeMillis()); ts.setWorker(worker); threeSaleMapper.insertSelective(ts); - ThreeSaleCMQManager.getInstance().addThreeSaleMsg(ts); - userInviteMsgNotificationService.inviteSuccess(inviter.getId(), ts); + inviteSuccess(inviter.getId(), worker.getId(), ts); } else { if (!list.get(0).getState() && list.get(0).getExpire() == ThreeSale.EXPIRE_NORMAL && list.get(0).getBoss().getId() == inviter.getId().longValue()) {// 鏈敓鏁堢殑涓婄骇鍜岀幇鍦ㄤ笂绾т竴鏍峰氨鐢熸晥 @@ -201,8 +203,7 @@ update.setState(true); update.setSucceedTime(System.currentTimeMillis()); threeSaleMapper.updateByPrimaryKeySelective(update); - ThreeSaleCMQManager.getInstance().addThreeSaleMsg(list.get(0));// 娣诲姞閫氱煡 - userInviteMsgNotificationService.inviteSuccess(inviter.getId(), list.get(0)); + inviteSuccess(list.get(0).getBoss().getId(), list.get(0).getWorker().getId(), list.get(0)); } } } @@ -233,14 +234,11 @@ oldSale.setState(update.getState()); oldSale.setSucceedTime(update.getSucceedTime()); - UserInfo inviter = list.get(0).getBoss(); // 涓嶄互閭�璇蜂汉鏁拌绠楃瓑绾� // if (inviter != null) // reComputeUserRank(inviter.getId()); // 娣诲姞鍒伴槦鍒� - ThreeSaleCMQManager.getInstance().addThreeSaleMsg(oldSale); - // 閫氱煡 - userInviteMsgNotificationService.inviteSuccess(inviter.getId(), oldSale); + inviteSuccess(oldSale.getBoss().getId(), oldSale.getWorker().getId(), oldSale); } } @@ -502,187 +500,74 @@ } @Override - @Transactional + @Transactional(rollbackFor = Exception.class) public void bindRelationshipByInviteCode(UserInfo invitee, UserInfo inviter) throws ThreeSaleException { - if (invitee == null || inviter == null) throw new ThreeSaleException(1, "鐢ㄦ埛淇℃伅涓虹┖"); - // 鑾峰彇鏈夋晥鐨勯個璇峰叧绯� - ThreeSale threeSale = threeSaleMapper.getRelationshipByBossIdAndWorkerId(inviter.getId(), invitee.getId()); + // 鏂板缓绔嬬‘瀹氬叧绯� + ThreeSale threeSale = new ThreeSale(); + threeSale.setBoss(inviter); + threeSale.setWorker(invitee); + threeSale.setState(true); + threeSale.setExpire(ThreeSale.EXPIRE_NORMAL); + threeSale.setSucceedTime(java.lang.System.currentTimeMillis()); + threeSale.setCreateTime(java.lang.System.currentTimeMillis()); + threeSale.setUpdateTime(java.lang.System.currentTimeMillis()); + threeSaleMapper.insertSelective(threeSale); - if (threeSale != null) { - // 鏈夋晥鍏崇郴--鐢熸晥 - threeSale.setBoss(inviter); - threeSale.setWorker(invitee); - threeSale.setState(true); - threeSale.setExpire(ThreeSale.EXPIRE_NORMAL); - threeSale.setSucceedTime(java.lang.System.currentTimeMillis()); - threeSale.setUpdateTime(java.lang.System.currentTimeMillis()); - threeSaleMapper.updateByPrimaryKeySelective(threeSale); - } else { - // 鏂板缓绔嬬‘瀹氬叧绯� - threeSale = new ThreeSale(); - threeSale.setBoss(inviter); - threeSale.setWorker(invitee); - threeSale.setState(true); - threeSale.setExpire(ThreeSale.EXPIRE_NORMAL); - threeSale.setSucceedTime(java.lang.System.currentTimeMillis()); - threeSale.setCreateTime(java.lang.System.currentTimeMillis()); - threeSale.setUpdateTime(java.lang.System.currentTimeMillis()); - threeSaleMapper.insertSelective(threeSale); - } - - List<ThreeSale> listExpire = threeSaleMapper.getExpireRecord(inviter.getId(), invitee.getId()); - if (listExpire != null && listExpire.size() > 0) { - // 鍒犻櫎鍘嗗彶閫氱煡 - for (ThreeSale saleExpire : listExpire) { - msgInviteDetailService.deleteByThreeSale(saleExpire); - } - // 鍒犻櫎宸插け鏁堝叧绯� - threeSaleMapper.deleteExpireRecord(inviter.getId(), invitee.getId()); - } - - // 娣诲姞鍒伴槦鍒� - ThreeSaleCMQManager.getInstance().addThreeSaleMsg(threeSale); - - // 閭�璇锋秷鎭� - userInviteMsgNotificationService.inviteSuccess(inviter.getId(), threeSale); - - executor.execute(new Runnable() { - @Override - public void run() { - - UserActiveLog activeLog = userActiveLogService.getUserLatestActiveInfo(inviter.getId()); - try { - if (activeLog != null && !StringUtil.isNullOrEmpty(activeLog.getVersionCode())) { - String versionCode = activeLog.getVersionCode(); - String channel = activeLog.getChannel(); - - boolean result = false; - // 娓犻亾鏄痑ppstore 鍒ゆ柇涓篒OS - if (!StringUtil.isNullOrEmpty(channel) && "appstore".equalsIgnoreCase(channel)) { - result = VersionUtil.greaterThan_1_5_60("ios", versionCode); - } else { - result = VersionUtil.greaterThan_1_5_60("android", versionCode); - } - - if (result) { - // 琚個璇峰悕绉� - String inviteName = invitee.getNickName(); - if (StringUtil.isNullOrEmpty(inviteName)) { - UserInfo userInfo = userInfoService.selectByPKey(invitee.getId()); - if (userInfo != null) { - inviteName = userInfo.getNickName(); - } - } - // 濂栧姳閭�璇风孩鍖咃紙娣樼ぜ閲戯級 - userTaoLiJinOriginService.addInviteWinMoney(inviter.getId(), inviteName); - } - } - } catch (Exception e) { - LogHelper.errorDetailInfo(e); - } - - // 閭�璇烽噾甯� - integralGetService.addInviteLevelOne(inviter.getId(), invitee.getId()); - } - }); - + inviteSuccess(inviter.getId(), invitee.getId(), threeSale); } @Override - @Transactional - public void bindRelationshipByWX(UserInfo invitee, Long inviterId, ThreeSale threeSaleOld) - throws ThreeSaleException { - - if (invitee == null || (inviterId == null && threeSaleOld == null)) + @Transactional(rollbackFor = Exception.class) + public void bindRelationshipByWX(UserInfo invitee, Long inviterId) throws ThreeSaleException { + if (invitee == null || inviterId == null) throw new ThreeSaleException(1, "鐢ㄦ埛淇℃伅涓虹┖"); - - ThreeSale threeSale = null; - if (inviterId != null) { - // 鏂板缓绔嬬‘瀹氬叧绯� - threeSale = new ThreeSale(); - threeSale.setBoss(new UserInfo(inviterId)); - threeSale.setWorker(invitee); - threeSale.setState(true); - threeSale.setExpire(ThreeSale.EXPIRE_NORMAL); - threeSale.setSucceedTime(java.lang.System.currentTimeMillis()); - threeSale.setCreateTime(java.lang.System.currentTimeMillis()); - threeSale.setUpdateTime(java.lang.System.currentTimeMillis()); - threeSaleMapper.insertSelective(threeSale); - - // 閭�璇峰叧绯诲け鏁� 1.5.3 涔嬪墠澶辨晥 - if (threeSaleOld != null) { - ThreeSale three = new ThreeSale(); - three.setId(threeSaleOld.getId()); - three.setExpire(ThreeSale.EXPIRE_OUTOFDATE); - three.setUpdateTime(java.lang.System.currentTimeMillis()); - threeSaleMapper.updateByPrimaryKeySelective(three); - } - } else if (threeSaleOld != null && inviterId == null) { - // 1.5.3 涔嬪墠鐢熸晥 - threeSaleOld.setState(true); - threeSaleOld.setExpire(ThreeSale.EXPIRE_NORMAL); - threeSaleOld.setSucceedTime(java.lang.System.currentTimeMillis()); - threeSaleOld.setUpdateTime(java.lang.System.currentTimeMillis()); - threeSaleMapper.updateByPrimaryKeySelective(threeSaleOld); - - threeSale = threeSaleOld; - } - - if (threeSale == null) { - throw new ThreeSaleException(1, "鍏崇郴缁戝畾澶辫触"); - } + // 鏂板缓绔嬬‘瀹氬叧绯� + ThreeSale threeSale = new ThreeSale(); + threeSale.setBoss(new UserInfo(inviterId)); + threeSale.setWorker(invitee); + threeSale.setState(true); + threeSale.setExpire(ThreeSale.EXPIRE_NORMAL); + threeSale.setSucceedTime(java.lang.System.currentTimeMillis()); + threeSale.setCreateTime(java.lang.System.currentTimeMillis()); + threeSale.setUpdateTime(java.lang.System.currentTimeMillis()); + threeSaleMapper.insertSelective(threeSale); UserInfo boss = userInfoService.selectByPKey(threeSale.getBoss().getId()); threeSale.setBoss(boss); threeSale.setWorker(invitee); - // 娣诲姞鍒伴槦鍒� - ThreeSaleCMQManager.getInstance().addThreeSaleMsg(threeSale); + // 閭�璇锋垚鍔燂細娑堟伅銆佺浉鍏冲鐞� + inviteSuccess(boss.getId(), invitee.getId(), threeSale); + } + /** + * 閭�璇锋垚鍔� + */ + @Transactional + private void inviteSuccess(Long bossId, Long workerId, ThreeSale threeSale) { // 閭�璇锋秷鎭� - userInviteMsgNotificationService.inviteSuccess(threeSale.getBoss().getId(), threeSale); + UserActiveLog activeLog = userActiveLogService.getUserLatestActiveInfo(bossId); + if (activeLog != null && VersionUtil.greaterThan_2_0_5( + "appstore".equalsIgnoreCase(activeLog.getChannel()) ? "ios" : "android", activeLog.getVersionCode())) { // 2.1鐗堟湰浠ヤ笂 + userInviteMsgNotificationService.inviteSuccess2_1(bossId, threeSale); + } else { // 鏈�鍒濇秷鎭� + userInviteMsgNotificationService.inviteSuccess(threeSale.getBoss().getId(), threeSale); + } executor.execute(new Runnable() { @Override public void run() { - try { - UserActiveLog activeLog = userActiveLogService.getUserLatestActiveInfo(inviterId); - if (activeLog != null && !StringUtil.isNullOrEmpty(activeLog.getVersionCode())) { - boolean result = false; - String versionCode = activeLog.getVersionCode(); - String channel = activeLog.getChannel(); - - // 娓犻亾鏄痑ppstore 鍒ゆ柇涓篒OS - if (!StringUtil.isNullOrEmpty(channel) && "appstore".equalsIgnoreCase(channel)) { - result = VersionUtil.greaterThan_1_5_60("ios", versionCode); - } else { - result = VersionUtil.greaterThan_1_5_60("android", versionCode); - } - - if (result) { - // 琚個璇峰悕绉� - String inviteName = invitee.getNickName(); - if (StringUtil.isNullOrEmpty(inviteName)) { - UserInfo userInfo = userInfoService.selectByPKey(invitee.getId()); - if (userInfo != null) { - inviteName = userInfo.getNickName(); - } - } - // 濂栧姳閭�璇风孩鍖咃紙娣樼ぜ閲戯級 - userTaoLiJinOriginService.addInviteWinMoney(inviterId, inviteName); - } - } - } catch (Exception e) { - LogHelper.errorDetailInfo(e); - } - // 閭�璇烽噾甯� - integralGetService.addInviteLevelOne(boss.getId(), invitee.getId()); + integralGetService.addInviteLevelOne(bossId, workerId); } }); + UserInviteMQMsg msg = new UserInviteMQMsg(bossId, workerId, null, new Date(), UserInviteMQMsg.STATE_SUCCESS); + Message message = MQMsgBodyFactory.create(MQTopicName.TOPIC_USER, UserTopicTagEnum.inviteSuccess, msg); + if (!Constant.IS_TEST) + producer.send(message); } /** @@ -707,6 +592,11 @@ } @Override + public ThreeSale getNearRelationByBossIdAndWorkerId(Long bossId, Long workerId) { + return threeSaleMapper.getNearRelationByBossIdAndWorkerId(bossId, workerId); + } + + @Override public List<ThreeSale> getSuccessByDate(Long bossId, Long minTime, Long maxTime) { return threeSaleMapper.getSuccessByDate(bossId, minTime, maxTime); } @@ -723,8 +613,22 @@ @Override public ThreeSale selectLatestByWorkerIdAndState(Long workerId, int state) { - return threeSaleMapper.selectLatestByWorkerIdAndState(workerId, state); } + @Override + public ThreeSale getByWorkerIdAndTime(Long workerId, long time) { + return threeSaleMapper.getByWorkerIdAndTime(workerId, time); + } + + @Override + public void inviteSeparate(Long workerId, Long bossId) { + threeSaleMapper.inviteSeparate(workerId, bossId); + } + + @Override + public long getTeamOrderNumByWorkerId(Long workerId) { + return threeSaleMapper.getTeamOrderNumByWorkerId(workerId); + } + } -- Gitblit v1.8.0