From 98b1a0affd69bbe63223c21fdd2c404e8bedfccb Mon Sep 17 00:00:00 2001 From: admin <weikou2014> Date: 星期三, 20 五月 2020 17:25:08 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/div' into 2.1.2 --- fanli/src/main/java/com/yeshi/fanli/service/impl/user/invite/ThreeSaleSerivceImpl.java | 412 +++++++++++++++++++++++++--------------------------------- 1 files changed, 176 insertions(+), 236 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 85fa7e8..b8c591e 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 @@ -15,14 +15,12 @@ import com.aliyun.openservices.ons.api.Message; import com.aliyun.openservices.ons.api.Producer; -import com.google.gson.Gson; 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.service.inter.order.config.HongBaoManageService; @@ -36,7 +34,7 @@ import com.yeshi.fanli.service.inter.user.invite.UserInviteMsgNotificationService; import com.yeshi.fanli.util.Constant; import com.yeshi.fanli.util.StringUtil; -import com.yeshi.fanli.util.VersionUtil; +import com.yeshi.fanli.util.rocketmq.MQMsgBodyFactory; import com.yeshi.fanli.util.rocketmq.MQTopicName; import net.sf.json.JSONArray; @@ -86,7 +84,7 @@ 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, "鐢ㄦ埛淇℃伅涓虹┖"); @@ -107,19 +105,6 @@ threeSale.setWorker(inviteeUser); threeSaleMapper.insertSelective(threeSale); - List<ThreeSale> listExpire = threeSaleMapper.getExpireRecord(inviter.getId(), inviteeUser.getId()); - if (listExpire != null && listExpire.size() > 0) { - // 鍒犻櫎澶辨晥 - for (ThreeSale saleExpire : listExpire) { - msgInviteDetailService.deleteByThreeSale(saleExpire); - } - // 鍒犻櫎宸插け鏁堝叧绯� - threeSaleMapper.deleteExpireRecord(inviter.getId(), inviteeUser.getId()); - } - - // 鍒涘缓閫氱煡 - userInviteMsgNotificationService.inviteScan(inviter.getId(), threeSale); - } else {// 鏄凡缁忓瓨鍦ㄧ殑鐢ㄦ埛 if (worker.getId().longValue() == inviter.getId()) throw new ThreeSaleException(4, "涓嶈兘缁戝畾鑷繁"); @@ -134,7 +119,7 @@ List<ThreeSale> list = listByWorkerId(worker.getId()); if (list != null && list.size() > 0) { for (ThreeSale ts : list) { - if (!ts.getState() && ts.getExpire() == ThreeSale.EXPIRE_OUTOFDATE) { + if (!ts.getState() && ts.getExpire() == ThreeSale.EXPIRE_BREAK) { outOfDateCount++; } } @@ -149,23 +134,6 @@ threeSale.setUpdateTime(java.lang.System.currentTimeMillis()); threeSale.setWorker(worker); threeSaleMapper.insertSelective(threeSale); - - // 鍒犻櫎宸插け鏁堝叧绯� - threeSaleMapper.deleteExpireRecord(inviter.getId(), worker.getId()); - - List<ThreeSale> listExpire = threeSaleMapper.getExpireRecord(inviter.getId(), worker.getId()); - if (listExpire != null && listExpire.size() > 0) { - // 鍒犻櫎鍘嗗彶閫氱煡 - for (ThreeSale saleExpire : listExpire) { - msgInviteDetailService.deleteByThreeSale(saleExpire); - } - // 鍒犻櫎宸插け鏁堝叧绯� - threeSaleMapper.deleteExpireRecord(inviter.getId(), worker.getId()); - } - - userInviteMsgNotificationService.inviteScan(inviter.getId(), threeSale); - // threeSaleSerivce.bind(invitee, inviter); - } else { // 杩樺瓨鍦ㄦ湁鏁堢殑閭�璇凤紝鍒欎笉鍋氬鐞� } @@ -179,7 +147,7 @@ if (list != null) for (int i = 0; i < list.size(); i++) { if (list.get(i).getState() != null && list.get(i).getState() == false - && list.get(i).getExpire() == ThreeSale.EXPIRE_OUTOFDATE) {// 杩囨湡鐨� + && list.get(i).getExpire() == ThreeSale.EXPIRE_BREAK) {// 杩囨湡鐨� list.remove(i); i--; } @@ -195,7 +163,6 @@ ts.setSucceedTime(System.currentTimeMillis()); ts.setWorker(worker); threeSaleMapper.insertSelective(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()) {// 鏈敓鏁堢殑涓婄骇鍜岀幇鍦ㄤ笂绾т竴鏍峰氨鐢熸晥 @@ -203,7 +170,6 @@ update.setState(true); update.setSucceedTime(System.currentTimeMillis()); threeSaleMapper.updateByPrimaryKeySelective(update); - inviteSuccess(list.get(0).getBoss().getId(), list.get(0).getWorker().getId(), list.get(0)); } } } @@ -238,80 +204,30 @@ // if (inviter != null) // reComputeUserRank(inviter.getId()); // 娣诲姞鍒伴槦鍒� - inviteSuccess(oldSale.getBoss().getId(), oldSale.getWorker().getId(), oldSale); + inviteSuccess(worker.getId(), oldSale.getBoss().getId()); } } @Override - public long getFirstUsersCount(Long uid) { - return threeSaleMapper.countFirstTeam(uid, null); - } - - @Override - public long getSecondUsersCount(Long uid) { - return threeSaleMapper.countSecondTeam(uid, null); - } - - @Override - public List<ThreeSale> queryMyFirstTeamList(int start, int count, String key, Long bossId) { - return threeSaleMapper.queryMyFirstTeamList(start, count, key, bossId); - } - - @Override - public long queryCountMyFirstTeamList(String key, Long bossId) { - return threeSaleMapper.queryCountMyFirstTeamList(key, bossId); - } - - @Override - public List<ThreeSale> queryMySecondTeamList(int start, int count, String key, Long bossId) { - return threeSaleMapper.queryMySecondTeamList(start, count, key, bossId); - } - - @Override - public long queryCountMySecondTeamList(String key, Long bossId) { - return threeSaleMapper.queryCountMySecondTeamList(key, bossId); - } - - @Override - public int deleteByPrimaryKey(Long id) { - return threeSaleMapper.deleteByPrimaryKey(id); - } - - @Override - public List<Long> queryLongTimeFailed(int daysNum) { - return threeSaleMapper.queryLongTimeFailed(daysNum); - } - - @Override - public List<ThreeSale> queryLongTimeSuccess(int daysNum) { - return threeSaleMapper.queryLongTimeSuccess(daysNum); - } - - @Override - public int updateExpire(List<Long> list) { - return threeSaleMapper.updateExpire(list); - } - - @Override public List<ThreeSale> listFirstTeamQuery(long start, int count, Long uid, Integer state, String startTime, - String endTime) { - return threeSaleMapper.listFirstTeamQuery(start, count, uid, state, startTime, endTime); + String endTime, Integer validState) { + return threeSaleMapper.listFirstTeamQuery(start, count, uid, state, startTime, endTime, validState); } @Override - public long countFirstTeamQuery(Long uid, Integer state, String startTime, String endTime) { - return threeSaleMapper.countFirstTeamQuery(uid, state, startTime, endTime); + public long countFirstTeamQuery(Long uid, Integer state, String startTime, String endTime, Integer validState) { + return threeSaleMapper.countFirstTeamQuery(uid, state, startTime, endTime, validState); } @Override public List<ThreeSale> listSecondTeamQuery(long start, int count, Long uid, Integer state, String startTime, - String endTime) { - return threeSaleMapper.listSecondTeamQuery(start, count, uid, state, startTime, endTime); + String endTime, Integer validState) { + return threeSaleMapper.listSecondTeamQuery(start, count, uid, state, startTime, endTime, validState); } @Override - public long countSecondTeamQuery(Long uid, Integer state, String startTime, String endTime) { - return threeSaleMapper.countSecondTeamQuery(uid, state, startTime, endTime); + public long countSecondTeamQuery(Long uid, Integer state, String startTime, String endTime, Integer validState) { + return threeSaleMapper.countSecondTeamQuery(uid, state, startTime, endTime, validState); } @Override @@ -322,16 +238,6 @@ @Override public long countSuperiorQuery(Integer state, Long uid) { return threeSaleMapper.countSuperiorQuery(state, uid); - } - - @Override - public long countFirstTeam(Long uid, Integer state) { - return threeSaleMapper.countFirstTeam(uid, state); - } - - @Override - public long countSecondTeam(Long uid, Integer state) { - return threeSaleMapper.countSecondTeam(uid, state); } @Override @@ -350,27 +256,22 @@ } @Override - public JSONObject getMyFirstTeam(long start, int count, Long uid, Integer state) { - - List<ThreeSale> list = threeSaleMapper.listFirstTeam(start, count, uid, state); + public JSONObject getMyFirstTeam(long start, int count, Long uid) { + List<ThreeSale> list = threeSaleMapper.listFirstTeam(start, count, uid, null); if (list == null) { list = new ArrayList<ThreeSale>(); } - - long countTotal = threeSaleMapper.countFirstTeam(uid, state); - + long countTotal = threeSaleMapper.countFirstTeam(uid, null); return organizeTeam(countTotal, list); } @Override - public JSONObject getMySecondTeam(long start, int count, Long uid, Integer state) { - List<ThreeSale> list = threeSaleMapper.listSecondTeam(start, count, uid, state); + public JSONObject getMySecondTeam(long start, int count, Long uid) { + List<ThreeSale> list = threeSaleMapper.listSecondTeam(start, count, uid, null); if (list == null) { list = new ArrayList<ThreeSale>(); } - - long countTotal = threeSaleMapper.countSecondTeam(uid, state); - + long countTotal = threeSaleMapper.countSecondTeam(uid, null); return organizeTeam(countTotal, list); } @@ -500,131 +401,65 @@ } @Override - @Transactional - public void bindRelationshipByInviteCode(UserInfo invitee, UserInfo inviter) throws ThreeSaleException { - - if (invitee == null || inviter == null) + @Transactional(rollbackFor = Exception.class) + public void bindInviteRelationship(Long workerId, Long bossId) throws ThreeSaleException { + if (workerId == null || bossId == null) throw new ThreeSaleException(1, "鐢ㄦ埛淇℃伅涓虹┖"); - // 鑾峰彇鏈夋晥鐨勯個璇峰叧绯� - ThreeSale threeSale = threeSaleMapper.getRelationshipByBossIdAndWorkerId(inviter.getId(), invitee.getId()); + // 鏂板缓绔嬬‘瀹氬叧绯� + ThreeSale threeSale = new ThreeSale(); + threeSale.setBoss(new UserInfo(bossId)); + threeSale.setWorker(new UserInfo(workerId)); + 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()); - } - - 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)) - 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, "鍏崇郴缁戝畾澶辫触"); - } - - UserInfo boss = userInfoService.selectByPKey(threeSale.getBoss().getId()); - threeSale.setBoss(boss); - threeSale.setWorker(invitee); - - inviteSuccess(boss.getId(), invitee.getId(), threeSale); - + // 閭�璇锋垚鍔燂細娑堟伅銆佺浉鍏冲鐞� + inviteSuccess(workerId, bossId); } /** * 閭�璇锋垚鍔� */ @Transactional - private void inviteSuccess(Long bossId, Long workerId, ThreeSale threeSale) { - // 閭�璇锋秷鎭� - UserActiveLog activeLog = userActiveLogService.getUserLatestActiveInfo(bossId); - if (activeLog != null) { - if (VersionUtil.greaterThan_2_1("appstore".equalsIgnoreCase(activeLog.getChannel()) ? "ios" : "android", - activeLog.getVersionCode())) { // 2.0.2鐗堟湰浠ヤ笂 - userInviteMsgNotificationService.inviteSuccess2_0_2(bossId, threeSale); - } else { // 鏈�鍒濇秷鎭� - userInviteMsgNotificationService.inviteSuccess(threeSale.getBoss().getId(), threeSale); - } - } else { // 鏈�鍒濇秷鎭� - userInviteMsgNotificationService.inviteSuccess(threeSale.getBoss().getId(), threeSale); + private void inviteSuccess(Long workerId, Long bossId) { + if (!Constant.IS_TEST) { + UserInviteMQMsg msg = new UserInviteMQMsg(bossId, workerId, null, new Date(), + UserInviteMQMsg.STATE_SUCCESS); + Message message = MQMsgBodyFactory.create(MQTopicName.TOPIC_USER, UserTopicTagEnum.inviteSuccess, msg); + producer.send(message); } - + executor.execute(new Runnable() { @Override public void run() { - // 閭�璇烽噾甯� - integralGetService.addInviteLevelOne(bossId, workerId); + try { // 閭�璇烽噾甯� + integralGetService.addInviteLevelOne(bossId, workerId); + } catch (Exception e) { + e.printStackTrace(); + } + + try { + // 鐩存帴绮変笣閭�璇锋垚鍔� + UserInfo invitee = userInfoService.selectByPKey(workerId); + userInviteMsgNotificationService.directInviteSuccess(bossId, invitee.getNickName(), + invitee.getPortrait(), new Date()); + + // 闂存帴绮変笣閭�璇锋垚鍔� + ThreeSale myBoss = threeSaleMapper.getMyBoss(bossId); + if (myBoss != null) { + UserInfo boss = userInfoService.selectByPKey(bossId); + userInviteMsgNotificationService.indirectInviteSuccess(myBoss.getBoss().getId(), + boss.getNickName(), invitee.getNickName(), invitee.getPortrait(), new Date()); + } + } catch (Exception e) { + e.printStackTrace(); + } } }); - UserInviteMQMsg msg = new UserInviteMQMsg(bossId, workerId, null, new Date(), UserInviteMQMsg.STATE_SUCCESS); - Message message = new Message(MQTopicName.TOPIC_USER.name(), UserTopicTagEnum.inviteSuccess.name(), - new Gson().toJson(msg).getBytes()); - producer.send(message); } /** @@ -639,13 +474,13 @@ } @Override - public long countSuccessFirstTeam(Long uid) { - return threeSaleMapper.countFirstTeam(uid, 1); + public ThreeSale selectByWorkerId(Long workerId) { + return threeSaleMapper.selectSuccessByWorkerId(workerId); } @Override - public ThreeSale selectByWorkerId(Long workerId) { - return threeSaleMapper.selectSuccessByWorkerId(workerId); + public ThreeSale getNearRelationByBossIdAndWorkerId(Long bossId, Long workerId) { + return threeSaleMapper.getNearRelationByBossIdAndWorkerId(bossId, workerId); } @Override @@ -654,13 +489,53 @@ } @Override - public List<ThreeSale> listFirstTeam(long start, int count, Long uid, Integer state) { - return threeSaleMapper.listFirstTeam(start, count, uid, state); + public List<ThreeSale> listFirstTeam(long start, int count, Long uid) { + return threeSaleMapper.listFirstTeam(start, count, uid, null); } @Override - public List<ThreeSale> listSecondTeam(long start, int count, Long uid, Integer state) { - return threeSaleMapper.listSecondTeam(start, count, uid, state); + public List<ThreeSale> listSecondTeam(long start, int count, Long uid) { + return threeSaleMapper.listSecondTeam(start, count, uid, null); + } + + @Override + public List<ThreeSale> listFirstTeam(long start, int count, Long uid, List<Long> listId) { + return threeSaleMapper.listFirstTeam(start, count, uid, listId); + } + + @Override + public List<ThreeSale> listSecondTeam(long start, int count, Long uid, List<Long> listId) { + return threeSaleMapper.listSecondTeam(start, count, uid, listId); + } + + @Override + public long countFirstTeam(Long uid) { + return threeSaleMapper.countFirstTeam(uid, null); + } + + @Override + public long countSecondTeam(Long uid) { + return threeSaleMapper.countSecondTeam(uid, null); + } + + @Override + public long countFirstTeam(Long uid, List<Long> listId) { + return threeSaleMapper.countFirstTeam(uid, listId); + } + + @Override + public long countSecondTeam(Long uid, List<Long> listId) { + return threeSaleMapper.countSecondTeam(uid, listId); + } + + @Override + public long countFirstTeamByDate(Long uid, int dayType) { + return threeSaleMapper.countFirstTeamByDate(uid, dayType); + } + + @Override + public long countSecondTeamByDate(Long uid, int dayType) { + return threeSaleMapper.countSecondTeamByDate(uid, dayType); } @Override @@ -672,4 +547,69 @@ 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); + } + + @Override + public List<ThreeSale> getValidWorkerIdsByTime(Long bossId, long limitTime) { + return threeSaleMapper.getValidWorkerIdsByTime(bossId, limitTime); + } + + @Override + public List<ThreeSale> getMyBossDeepList(Long uid, int deep) { + + List<ThreeSale> deepList = new ArrayList<>(); + ThreeSale boss = getMyBoss(uid); + while (deep > 0 && boss != null) { + deep--; + deepList.add(boss); + boss = getMyBoss(boss.getBoss().getId()); + } + + return deepList; + } + + @Override + public List<ThreeSale> getMyBossDeepList(Long uid) { + // TODO 闇�瑕佹洿鍔犵畝渚跨殑鏂瑰紡澶勭悊 + return getMyBossDeepList(uid, 100); + } + + @Override + public Long getTopBoss(Long uid) { + Long bossUid = null; + UserInfo boss = getBoss(uid); + while (boss != null) { + bossUid = boss.getId(); + boss = getBoss(boss.getId()); + } + return bossUid; + } + + @Override + public List<ThreeSale> listAll(Date minTime, Date maxTime, int page, int pageSize) { + return threeSaleMapper.listAll(minTime == null ? null : minTime.getTime(), + maxTime == null ? null : maxTime.getTime(), (page - 1) * pageSize, pageSize); + } + + @Override + public long countAll(Date minTime, Date maxTime) { + return threeSaleMapper.countAll(minTime == null ? null : minTime.getTime(), + maxTime == null ? null : maxTime.getTime()); + } + + + @Override + public List<Long> getAllBossId(){ + return threeSaleMapper.getAllBossId(); + } + } -- Gitblit v1.8.0