yujian
2020-05-06 a4637ae9d71aa4a624b217ed3a1483f0e3a3a7ed
fanli/src/main/java/com/yeshi/fanli/controller/client/v2/InviteControllerV2.java
@@ -13,10 +13,8 @@
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.yeshi.utils.DateUtil;
import org.yeshi.utils.JsonUtil;
import com.yeshi.fanli.dto.user.UserInviteLevelEnum;
import com.yeshi.fanli.dto.vip.UserVIPLevel;
import com.yeshi.fanli.dto.wx.WXAccountInfoDTO;
import com.yeshi.fanli.entity.accept.AcceptData;
@@ -24,9 +22,10 @@
import com.yeshi.fanli.entity.bus.msg.UserSystemMsgTypeEnum;
import com.yeshi.fanli.entity.bus.user.ThreeSale;
import com.yeshi.fanli.entity.bus.user.ThreeSaleExtraInfo;
import com.yeshi.fanli.entity.bus.user.UserExtraTaoBaoInfo;
import com.yeshi.fanli.entity.bus.user.UserInfo;
import com.yeshi.fanli.entity.bus.user.UserInfoExtra;
import com.yeshi.fanli.entity.bus.user.UserInviteSeparate;
import com.yeshi.fanli.entity.bus.user.UserInviteValidNum;
import com.yeshi.fanli.entity.bus.user.UserInviteValidRecord;
import com.yeshi.fanli.entity.bus.user.WeiXinUser;
import com.yeshi.fanli.entity.bus.user.vip.UserLevelEnum;
@@ -40,15 +39,17 @@
import com.yeshi.fanli.service.inter.config.SpreadImgService;
import com.yeshi.fanli.service.inter.config.SystemClientParamsService;
import com.yeshi.fanli.service.inter.msg.UserSystemMsgService;
import com.yeshi.fanli.service.inter.order.CommonOrderCountService;
import com.yeshi.fanli.service.inter.push.PushService;
import com.yeshi.fanli.service.inter.user.SpreadUserImgService;
import com.yeshi.fanli.service.inter.user.UserInfoExtraService;
import com.yeshi.fanli.service.inter.user.UserInfoService;
import com.yeshi.fanli.service.inter.user.UserInviteSeparateService;
import com.yeshi.fanli.service.inter.user.invite.ThreeSaleExtraInfoSerivce;
import com.yeshi.fanli.service.inter.user.invite.ThreeSaleSerivce;
import com.yeshi.fanli.service.inter.user.invite.UserInviteService;
import com.yeshi.fanli.service.inter.user.invite.UserInviteValidNumService;
import com.yeshi.fanli.service.inter.user.invite.UserInviteValidRecordService;
import com.yeshi.fanli.service.inter.user.tb.UserExtraTaoBaoInfoService;
import com.yeshi.fanli.service.inter.user.vip.UserVIPInfoService;
import com.yeshi.fanli.util.Constant;
import com.yeshi.fanli.util.RedisKeyEnum;
@@ -57,6 +58,7 @@
import com.yeshi.fanli.util.TimeUtil;
import com.yeshi.fanli.util.VersionUtil;
import com.yeshi.fanli.util.annotation.RequestSerializableByKey;
import com.yeshi.fanli.util.user.UserLevelUtil;
import com.yeshi.fanli.util.wx.WXLoginUtil;
import net.sf.json.JSONArray;
@@ -92,9 +94,6 @@
   @Resource
   private UserVIPInfoService userVIPInfoService;
   @Resource
   private UserInviteSeparateService userInviteSeparateService;
   @Resource
   private SpreadImgService spreadImgService;
@@ -111,7 +110,14 @@
   @Resource
   private UserInviteValidRecordService userInviteValidRecordService;
   
   @Resource
   private UserInviteValidNumService userInviteValidNumService;
   
   @Resource
   private UserExtraTaoBaoInfoService userExtraTaoBaoInfoService;
   @Resource
   private CommonOrderCountService commonOrderCountService;
   
   /**
    * 邀请码验证
@@ -202,7 +208,7 @@
   }
   /**
    * 用户队员列表查询 1.5.3查询有效队员
    * 用户队员列表查询
    * 
    * @param acceptData
    * @param id
@@ -215,29 +221,37 @@
         return;
      }
      
      if (VersionUtil.greaterThan_2_1(acceptData.getPlatform(), acceptData.getVersion())) {
         getMyTeamNew(acceptData, page, uid, type, out);
         return;
      }
      List<Long> listId = new ArrayList<Long>();
      long count = 0;
      List<ThreeSale> listTeam = null;
      if (type == 1) {
         listTeam = threeSaleSerivce.listFirstTeam((page - 1) * Constant.PAGE_SIZE, Constant.PAGE_SIZE, uid, 1);
         count = threeSaleSerivce.countFirstTeam(uid, 1);
         listTeam = threeSaleSerivce.listFirstTeam((page - 1) * Constant.PAGE_SIZE, Constant.PAGE_SIZE, uid, listId);
         count = threeSaleSerivce.countFirstTeam(uid, listId);
      } else if (type == 2) {
         listTeam = threeSaleSerivce.listSecondTeam((page - 1) * Constant.PAGE_SIZE, Constant.PAGE_SIZE, uid, 1);
         count = threeSaleSerivce.countSecondTeam(uid, 1);
         listTeam = threeSaleSerivce.listSecondTeam((page - 1) * Constant.PAGE_SIZE, Constant.PAGE_SIZE, uid, listId);
         count = threeSaleSerivce.countSecondTeam(uid, listId);
      }
      boolean needVIPInfo = false;
      if (VersionUtil.greaterThan_2_0_5(acceptData.getPlatform(), acceptData.getVersion()))
         needVIPInfo = true;
      // 组织数据
      JSONObject resultData = organizeTeam(count, listTeam, uid, type,needVIPInfo);
      // 第一页判断是否激活 是否有队员
      // 数据加工
      JSONArray array = null;
      if (VersionUtil.greaterThan_2_1(acceptData.getPlatform(), acceptData.getVersion())) {
         array = organizeTeamNew(listTeam, uid, type, true);
      } else {
         boolean needVIPInfo = false;
         if (VersionUtil.greaterThan_2_0_5(acceptData.getPlatform(), acceptData.getVersion()))
            needVIPInfo = true;
         array =  organizeTeam(listTeam, uid, type,needVIPInfo);
      }
      JSONObject result = new JSONObject();
      result.put("count", count);
      result.put("list", array);
      if (type == 1 && page == 1) {
         boolean hasCode = false;
         UserInfoExtra userInfoExtra = userInfoExtraService.getUserInfoExtra(uid);
@@ -245,10 +259,10 @@
            if (!StringUtil.isNullOrEmpty(userInfoExtra.getInviteCode()))
               hasCode = true;
         }
         resultData.put("hasCode", hasCode);
         resultData.put("hasTeam", count > 0 ? true : false);
         result.put("hasCode", hasCode);
         result.put("hasTeam", count > 0 ? true : false);
      }
      out.print(JsonUtil.loadTrueResult(resultData));
      out.print(JsonUtil.loadTrueResult(result));
   }
   /**
@@ -260,10 +274,8 @@
    * @param type
    * @return
    */
   private JSONObject organizeTeam(long count, List<ThreeSale> list, Long uid, int type, boolean needVipInfo) {
      JSONObject result = new JSONObject();
   private JSONArray organizeTeam(List<ThreeSale> list, Long uid, int type, boolean needVipInfo) {
      JSONArray resultArray = new JSONArray();
      Date todayTime = new Date();
      SimpleDateFormat sdf = new SimpleDateFormat("MM.dd HH:mm");
      SimpleDateFormat format = new SimpleDateFormat("yyyy.MM.dd HH:mm");
@@ -295,32 +307,6 @@
         // 添加是否为VIP
         if (vipMap != null && vipMap.get(worker.getId()) != null) {
            object.put("vip", vipMap.get(worker.getId()));
            if (vipMap.get(worker.getId())) {
               UserInviteSeparate separate = userInviteSeparateService.selectByWorkerIdAndBossId(worker.getId(), uid);
               if (separate != null && separate.getEndTime() != null) {
                  try {
                     JSONObject contentJson1 = new JSONObject();
                     contentJson1.put("color", "#888888");
                     contentJson1.put("content", "将于");
                     JSONObject contentJson2 = new JSONObject();
                     contentJson2.put("color", "#F14242");
                     contentJson2.put("content", DateUtil.dateDiff4(new Date(), separate.getEndTime()));
                     JSONObject contentJson3 = new JSONObject();
                     contentJson3.put("color", "#888888");
                     contentJson3.put("content", "后脱离邀请关系");
                     JSONArray array = new JSONArray();
                     array.add(contentJson1);
                     array.add(contentJson2);
                     array.add(contentJson3);
                     object.put("vipBreakTime",array);
                  } catch (Exception e) {
                     e.printStackTrace();
                  }
               }
            }
         }
         String fontColor1 = "#888888";
         JSONArray array = new JSONArray();
@@ -372,46 +358,9 @@
         object.put("recentMsg", array);
         resultArray.add(object);
      }
      result.put("count", count);
      result.put("list", resultArray);
      return result;
      return resultArray;
   }
   
   private void getMyTeamNew(AcceptData acceptData, long page, long uid, int type, PrintWriter out) {
      if (type != 1 && type != 2) {
         out.print(JsonUtil.loadFalseResult("粉丝类型不正确"));
         return;
      }
      long count = 0;
      List<ThreeSale> listTeam = null;
      if (type == 1) {
         listTeam = threeSaleSerivce.listFirstTeamByUndeleted((page - 1) * Constant.PAGE_SIZE, Constant.PAGE_SIZE, uid);
         count = threeSaleSerivce.countFirstTeamByUndeleted(uid);
      } else if (type == 2) {
         listTeam = threeSaleSerivce.listSecondTeamByUndeleted((page - 1) * Constant.PAGE_SIZE, Constant.PAGE_SIZE, uid);
         count = threeSaleSerivce.countSecondTeamByUndeleted(uid);
      }
      JSONObject result = new JSONObject();
      result.put("count", count);
      result.put("list", organizeTeamNew(count, listTeam, uid, type, true));
      // 第一页判断是否激活 是否有队员
      if (type == 1 && page == 1) {
         boolean hasCode = false;
         UserInfoExtra userInfoExtra = userInfoExtraService.getUserInfoExtra(uid);
         if (userInfoExtra != null) {
            if (!StringUtil.isNullOrEmpty(userInfoExtra.getInviteCode()))
               hasCode = true;
         }
         result.put("hasCode", hasCode);
         result.put("hasTeam", count > 0 ? true : false);
      }
      out.print(JsonUtil.loadTrueResult(result));
   }
   
   /**
    *  加工数据
@@ -422,7 +371,7 @@
    * @param wxtip 是需要微信提示
    * @return
    */
   private JSONArray organizeTeamNew(long count, List<ThreeSale> list, Long uid, int type, boolean wxtip) {
   private JSONArray organizeTeamNew(List<ThreeSale> list, Long uid, int type, boolean wxtip) {
      JSONArray resultArray = new JSONArray();
      if (list == null || list.size() == 0) {
         return resultArray;
@@ -443,22 +392,13 @@
      if (type == 1) {
         validType = UserInviteValidRecord.TYPE_ONE;
      }
      List<Long> listVid = userInviteValidRecordService.getValidWorkerIdsByUid(uid, listWid, validType);
   
      for (ThreeSale threeSale : list) {
         UserInfo worker = threeSale.getWorker();
         Long workerId = worker.getId();
         // 邀请状态
         Boolean state = threeSale.getState();
         if (type == 2) {
            if (state &&  threeSale.getStateSuper()) {
               state = true;
            } else {
               state = false;
            }
         }
         // 邀请成功时间
         Long succeedTime = threeSale.getSucceedTime(); 
         if (succeedTime == null) {
@@ -467,7 +407,7 @@
         
         // 有效粉丝
         boolean validFans = false; 
         if (state && listVid != null && listVid.size() > 0 && listVid.contains(workerId)) {
         if (listVid != null && listVid.size() > 0 && listVid.contains(workerId)) {
            validFans = true;
         }
         
@@ -490,31 +430,14 @@
         // 查询粉丝等级
         UserLevelEnum level = null;
         UserInviteLevelEnum inviteLevel = null;
         UserVIPLevel vipLevel = userInviteService.getVIPLevelByUid(workerId);
         if (vipLevel != null && vipLevel.getLevelEnum() != null) {
            inviteLevel = vipLevel.getLevelEnum();
            if (UserInviteLevelEnum.vipPre1 == inviteLevel) {
               level = UserLevelEnum.normalVIP;
            } else if (UserInviteLevelEnum.vipPre2 == inviteLevel || UserInviteLevelEnum.vipApply == inviteLevel) {
               level = UserLevelEnum.highVIP;
               inviteLevel = UserInviteLevelEnum.vipPre2;
            } else if (UserInviteLevelEnum.vip == inviteLevel || UserInviteLevelEnum.tearcherApply == inviteLevel) {
               level = UserLevelEnum.superVIP;
               inviteLevel = UserInviteLevelEnum.vip;
            } else if (UserInviteLevelEnum.tearcher == inviteLevel ) {
               level = UserLevelEnum.tearcher;
            }
         if (vipLevel != null && vipLevel.getLevel() != null) {
            level = UserLevelUtil.getByLevel(vipLevel.getLevel());
         }
         if(level == null) {
            level = UserLevelEnum.daRen;
         }
         if (inviteLevel == null) {
            inviteLevel = UserInviteLevelEnum.actived;
         }
         level = UserLevelUtil.getShowLevel(level);
         
         JSONObject object = new JSONObject();
         object.put("workerId", workerId);
@@ -522,54 +445,11 @@
         object.put("portrait", worker.getPortrait());
         object.put("inviteId", threeSale.getId());
         object.put("inviteTime", format.format(new Date(succeedTime)) + " 加入");
         object.put("state", state? 1 : 2);
         object.put("state", 1);
         object.put("recentMsg", array);
         object.put("level", inviteLevel.name());
         object.put("level", level.name());
         object.put("validFans", validFans);
         
         // 判断是否存在脱离关系队员
         if (vipLevel != null && state) {
            Long bossId = threeSale.getBoss().getId();
            UserInviteSeparate separate = userInviteSeparateService.selectByWorkerIdAndBossId(workerId, bossId);
            if (separate != null && separate.getEndTime() != null) {
               try {
                  JSONObject contentJson1 = new JSONObject();
                  contentJson1.put("color", "#888888");
                  contentJson1.put("content", "将于");
                  String dateDiff = DateUtil.dateDiff4(new Date(), separate.getEndTime());
                  JSONObject contentJson2 = new JSONObject();
                  contentJson2.put("color", "#F14242");
                  contentJson2.put("content", dateDiff);
                  JSONObject contentJson3 = new JSONObject();
                  contentJson3.put("color", "#888888");
                  contentJson3.put("content", "后脱离邀请关系");
                  JSONArray vipBreak = new JSONArray();
                  vipBreak.add(contentJson1);
                  vipBreak.add(contentJson2);
                  vipBreak.add(contentJson3);
                  object.put("vipBreakTime",vipBreak);
                  List<String> tips = new ArrayList<String>();
                  tips.add("于"+ TimeUtil.formatDateDot(vipLevel.getSuccessTime()) + "升级为" + level.getName());
                  if (type == 1) {
                     tips.add("你需要在"+ dateDiff +"内升级为会员,否则按照邀请规则TA将与你脱离邀请关系。");
                     tips.add("赶快加油升级为会员吧!");
                  } else {
                     tips.add("你需要辅助TA的邀请人"+ threeSale.getBoss().getNickName()+ "在"+dateDiff+"内升级为会员,否则这位间接粉丝" +worker.getNickName()+"将与你脱离邀请关系。");
                     tips.add("赶快帮助TA升级为会员吧!");
                  }
                  object.put("vipBreakTip",tips);
               } catch (Exception e) {
                  e.printStackTrace();
               }
            }
         }
         if (wxtip && type == 1 && threeSale.getState() != null && threeSale.getState()) {
            // 一级队员 查询昵称备注
            String memoName = null;
@@ -596,7 +476,6 @@
               }
            }
         }
         resultArray.add(object);
      }
      return resultArray;
@@ -618,12 +497,12 @@
         return;
      }
      
      List<ThreeSale> listTeam = threeSaleSerivce.listFirstTeam((page - 1) * Constant.PAGE_SIZE, Constant.PAGE_SIZE, tid, 1);
      long count = threeSaleSerivce.countFirstTeam(tid, 1);
      List<ThreeSale> listTeam = threeSaleSerivce.listFirstTeam((page - 1) * Constant.PAGE_SIZE, Constant.PAGE_SIZE, tid);
      long count = threeSaleSerivce.countFirstTeam(tid);
      JSONObject result = new JSONObject();
      result.put("count", count);
      result.put("list", organizeTeamNew(count, listTeam, tid, 1, false));
      result.put("list", organizeTeamNew(listTeam, tid, 1, false));
      out.print(JsonUtil.loadTrueResult(result));
   }
   
@@ -640,13 +519,14 @@
      JSONObject bossData = getBossInfo(uid, threeSaleSerivce.getMyBoss(uid));
      JSONObject resultData = new JSONObject();
      long firstTeam = threeSaleSerivce.countFirstTeam(uid, 1);
      long firstTeam = threeSaleSerivce.countFirstTeam(uid);
      long countSecond = threeSaleSerivce.countSecondTeam(uid);
      resultData.put("boss", bossData);
      resultData.put("helpLink", configService.get(ConfigKeyEnum.teamHelpUrl.getKey()));
      resultData.put("firstTeam", firstTeam);
      resultData.put("firstTeamTotal", threeSaleSerivce.countFirstTeam(uid, null));
      resultData.put("secondTeam", threeSaleSerivce.countSecondTeam(uid, 1));
      resultData.put("secondTeamTotal", threeSaleSerivce.countSecondTeam(uid, null));
      resultData.put("firstTeamTotal", firstTeam);
      resultData.put("secondTeam", countSecond);
      resultData.put("secondTeamTotal", countSecond);
      resultData.put("helpLink", configService.get(ConfigKeyEnum.teamHelpUrl.getKey()));
      boolean hasTeam = true;
      if (firstTeam <= 0) {
@@ -908,23 +788,135 @@
         return;
      }
      // 有效粉丝
      int doneFirst = 0;
      UserInviteValidNum userInviteValidNum = userInviteValidNumService.selectByPrimaryKey(uid);
      if (userInviteValidNum != null) {
         doneFirst = userInviteValidNum.getNumFirst() == null ? 0 : userInviteValidNum.getNumFirst();
      }
      JSONObject data = new JSONObject();
      data.put("num", threeSaleSerivce.countFirstTeam(uid, 1));
      data.put("num", doneFirst);
      data.put("limit", Constant.INVITE_CODRE_TAILOR_LIMIT);
      JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data));
   }
   
   
   @RequestMapping(value = "remvoeBreak")
   public void remvoeBreak(String callback, AcceptData acceptData,Long inviteId, Long uid, Long tid, PrintWriter out) {
      if (uid == null || inviteId == null || tid == null) {
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("传输参数不完整"));
   /**
    * 获取粉丝信息
    * @param acceptData
    * @param uid
    * @param workerId
    * @param out
    */
   @RequestMapping(value = "getFansInfo")
   public void getFansInfo(AcceptData acceptData,Long uid, Long workerId, PrintWriter out) {
      if (uid == null || workerId == null) {
         out.print(JsonUtil.loadFalseResult("用户id缺失"));
         return;
      }
      threeSaleSerivce.remvoeBreak(inviteId, uid, tid);
      
      JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult("操作成功"));
      ThreeSale threeSale = threeSaleSerivce.getByWorkerId(workerId);
      if (threeSale == null) {
         out.print(JsonUtil.loadFalseResult("邀请关系不存在"));
         return;
      }
      UserInfo user = userInfoService.selectByPKey(workerId);
      if (user == null) {
         out.print(JsonUtil.loadFalseResult("用户不存在"));
         return;
      }
      JSONArray tagArray = new JSONArray();
      String memoName = user.getNickName();
      Long succeedTime = threeSale.getSucceedTime();
      JSONObject data = new JSONObject();
      data.put("nickName", user.getNickName());
      data.put("phone", user.getPhone());
      data.put("joinTime", TimeUtil.formatDate(succeedTime == null? threeSale.getCreateTime() : succeedTime));
      ThreeSaleExtraInfo saleExtraInfo = threeSaleExtraInfoSerivce.getbyBossIdAndWorkerId(uid, workerId);
      if (saleExtraInfo != null) {
         if(!StringUtil.isNullOrEmpty(saleExtraInfo.getNickname())) {
            memoName = saleExtraInfo.getNickname();
         }
         String tags = saleExtraInfo.getTags();
         if (!StringUtil.isNullOrEmpty(tags)) {
            tagArray = JSONArray.fromObject(tags);
         }
      }
      data.put("memoName", memoName);
      data.put("tags", tagArray);
      Date activeTime = null;
      String weixin = null;
      UserInfoExtra userInfoExtra = userInfoExtraService.getUserInfoExtra(workerId);
      if (userInfoExtra != null) {
         weixin = userInfoExtra.getWeiXin();
         activeTime = userInfoExtra.getActiveTime();
      }
      data.put("weixin", StringUtil.isNullOrEmpty(weixin)? "": weixin);
      data.put("loginTime", TimeUtil.formatDate(activeTime == null? userInfoExtra.getCreateTime():activeTime));
      UserExtraTaoBaoInfo userExtraTaoBaoInfo = userExtraTaoBaoInfoService.getByUid(workerId);
      if (userExtraTaoBaoInfo != null && !StringUtil.isNullOrEmpty(userExtraTaoBaoInfo.getRelationId())
            && !StringUtil.isNullOrEmpty(userExtraTaoBaoInfo.getSpecialId())) {
         data.put("taobao", true);
      } else {
         data.put("taobao", false);
      }
      long indirectNum = 0;
      long directNum = threeSaleSerivce.countFirstTeam(workerId);
      if (directNum > 0) {
         indirectNum = threeSaleSerivce.countSecondTeam(workerId);
      }
      data.put("directNum", directNum);
      data.put("indirectNum", indirectNum);
      long countTB = commonOrderCountService.countOrderBySourceAndNearDay(workerId, Constant.SOURCE_TYPE_TAOBAO, 60);
      long countJD = commonOrderCountService.countOrderBySourceAndNearDay(workerId, Constant.SOURCE_TYPE_JD, 60);
      long countPDD = commonOrderCountService.countOrderBySourceAndNearDay(workerId, Constant.SOURCE_TYPE_PDD, 60);
      data.put("orderTB", countTB);
      data.put("orderJD", countJD);
      data.put("orderPDD", countPDD);
      out.print(JsonUtil.loadTrueResult(data));
   }
   
   /**
    * 获取粉丝信息
    * @param acceptData
    * @param uid
    * @param workerId
    * @param out
    */
   @RequestMapping(value = "saveTags")
   public void saveTags(AcceptData acceptData,Long uid, Long workerId, String tags, PrintWriter out) {
      if (uid == null || workerId == null) {
         out.print(JsonUtil.loadFalseResult("用户id缺失"));
         return;
      }
      ThreeSaleExtraInfo saleExtraInfo = threeSaleExtraInfoSerivce.getbyBossIdAndWorkerId(uid, workerId);
      if (saleExtraInfo != null) {
         ThreeSaleExtraInfo upObject = new ThreeSaleExtraInfo();
         upObject.setTags(tags);
         upObject.setId(saleExtraInfo.getId());
         upObject.setUpdateTime(new Date());
         threeSaleExtraInfoSerivce.updateByPrimaryKeySelective(upObject);
      } else {
         saleExtraInfo = new ThreeSaleExtraInfo();
         saleExtraInfo.setBoss(new UserInfo(uid));
         saleExtraInfo.setWorker(new UserInfo(workerId));
         saleExtraInfo.setTags(tags);
         saleExtraInfo.setCreateTime(new Date());
         threeSaleExtraInfoSerivce.insertSelective(saleExtraInfo);
      }
      out.print(JsonUtil.loadTrueResult("保存成功"));
   }
}