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,11 +22,13 @@
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;
import com.yeshi.fanli.entity.system.BusinessSystem;
import com.yeshi.fanli.entity.system.ConfigKeyEnum;
import com.yeshi.fanli.entity.system.SystemClientParams;
@@ -39,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;
@@ -56,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;
@@ -91,9 +94,6 @@
   @Resource
   private UserVIPInfoService userVIPInfoService;
   @Resource
   private UserInviteSeparateService userInviteSeparateService;
   @Resource
   private SpreadImgService spreadImgService;
@@ -110,7 +110,14 @@
   @Resource
   private UserInviteValidRecordService userInviteValidRecordService;
   
   @Resource
   private UserInviteValidNumService userInviteValidNumService;
   
   @Resource
   private UserExtraTaoBaoInfoService userExtraTaoBaoInfoService;
   @Resource
   private CommonOrderCountService commonOrderCountService;
   
   /**
    * 邀请码验证
@@ -201,7 +208,7 @@
   }
   /**
    * 用户队员列表查询 1.5.3查询有效队员
    * 用户队员列表查询
    * 
    * @param acceptData
    * @param id
@@ -214,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);
@@ -244,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));
   }
   /**
@@ -259,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");
@@ -294,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();
@@ -359,7 +346,7 @@
               } else {
                  if (!threeSaleExtraInfoSerivce.isRemindWorker(uid, workerId)) {
                     object.put("weiXinState", 1);
                     object.put("weiXinTip", "点击提醒TA,系统会发送一封站内信,提醒其添加微信号。");
                     object.put("weiXinTip", "点击提醒,系统会发送一封站内信,提醒其添加微信号。");
                  } else {
                     object.put("weiXinState", 2);
                     object.put("weiXinTip", "系统已发送提醒,邀请人添加微信后你可复制,如对方迟迟不添加,你可联系人工客服寻求帮助");
@@ -371,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));
   }
   
   /**
    *  加工数据
@@ -421,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;
@@ -442,23 +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,11 +407,11 @@
         
         // 有效粉丝
         boolean validFans = false; 
         if (state && listVid != null && listVid.size() > 0 && listVid.contains(workerId)) {
         if (listVid != null && listVid.size() > 0 && listVid.contains(workerId)) {
            validFans = true;
         }
         
         // 最近登录时间
         // 最近粉丝登录时间
         Date lastLoginTime = new Date(threeSale.getCreateTime());
         UserInfoExtra userInfoExtra = userInfoExtraService.getUserInfoExtra(workerId);
         if (userInfoExtra != null && userInfoExtra.getActiveTime() != null) {
@@ -488,27 +428,16 @@
         JSONArray array = new JSONArray();
         array.add(loginJson);
         // 等级
         UserInviteLevelEnum level = null;
         UserVIPLevel vipLevel = userInviteService.getVIPLevelByUid(uid);
         if (vipLevel != null) {
            if (vipLevel.getLevel() == UserVIPLevel.LEVEL_3) {
               level = UserInviteLevelEnum.actived;
            } else if (vipLevel.getLevel() == UserVIPLevel.LEVEL_7) {
               level = UserInviteLevelEnum.actived;
            } else if (vipLevel.getLevel() == UserVIPLevel.LEVEL_10) {
               level = UserInviteLevelEnum.actived;
            }
         // 查询粉丝等级
         UserLevelEnum level = null;
         UserVIPLevel vipLevel = userInviteService.getVIPLevelByUid(workerId);
         if (vipLevel != null && vipLevel.getLevel() != null) {
            level = UserLevelUtil.getByLevel(vipLevel.getLevel());
         }
         if(level == null) {
            if (userInfoExtra == null || StringUtil.isNullOrEmpty(userInfoExtra.getInviteCode())) {
               level = UserInviteLevelEnum.noActive;
            } else {
               level = UserInviteLevelEnum.actived;
            }
            level = UserLevelEnum.daRen;
         }
         level = UserLevelUtil.getShowLevel(level);
         
         JSONObject object = new JSONObject();
         object.put("workerId", workerId);
@@ -516,53 +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", level.name());
         object.put("validFans", validFans);
         
         // 判断是否存在脱离关系队员
         if (vipLevel != null) {
            UserInviteSeparate separate = userInviteSeparateService.selectByWorkerIdAndBossId(workerId, uid);
            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;
@@ -582,14 +469,13 @@
            } else {
               if (!threeSaleExtraInfoSerivce.isRemindWorker(uid, workerId)) {
                  object.put("weiXinState", 1);
                  object.put("weiXinTip", "点击提醒TA,系统会发送一封站内信,提醒其添加微信号。");
                  object.put("weiXinTip", "点击提醒,系统会发送一封站内信,提醒其添加微信号。");
               } else {
                  object.put("weiXinState", 2);
                  object.put("weiXinTip", "系统已发送提醒,邀请人添加微信后你可复制,如对方迟迟不添加,你可联系人工客服寻求帮助");
               }
            }
         }
         resultArray.add(object);
      }
      return resultArray;
@@ -611,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));
   }
   
@@ -633,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) {
@@ -727,7 +614,7 @@
         } else {
            if (!threeSaleExtraInfoSerivce.isRemindBoss(boss.getId(), uid)) {
               bossData.put("weiXinState", 1);
               bossData.put("weiXinTip", "点击提醒TA,系统会发送一封站内信,提醒其添加微信号。");
               bossData.put("weiXinTip", "点击提醒,系统会发送一封站内信,提醒其添加微信号。");
            } else {
               bossData.put("weiXinState", 2);
               bossData.put("weiXinTip", "系统已发送提醒,邀请人添加微信后你可复制,如对方迟迟不添加,你可联系人工客服寻求帮助");
@@ -901,12 +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));
   }
   
   
   /**
    * 获取粉丝信息
    * @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;
      }
      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("保存成功"));
   }
}