/*
   * 修改浏览次数
   */
  @Override
  public DealerInfo modifyViewContact(String brandId, String dealerId) throws BusinessException {
    DealerInfoModel dealerInfo = dealerInfoService.findById(dealerId);
    if (null == dealerInfo) {
      throw new BusinessException(CommonConst.DATA_NOT_EXISTS);
    }

    UserInfo userInfo = userInfoService.selectByPrimaryKey(dealerId);
    Integer contactIsExistInt = brandViewContactMapper.isExist(brandId, dealerId, null);
    Short viewType = BrandConstant.BrandViewContact.VIEW_TYPE_INITIATIVE;
    if (contactIsExistInt > 0) {
      Integer groomIsExistInt = dealerGroomMapper.isExist(brandId, dealerId);
      if (groomIsExistInt > 0) {
        viewType = BrandConstant.BrandViewContact.VIEW_TYPE__RECOMMEND;
      } else {
        Integer inviteIsExistInt = brandInviteMapper.isExist(brandId, dealerId);
        if (inviteIsExistInt > 0) {
          viewType = BrandConstant.BrandViewContact.VIEW_TYPE_APPLICATION;
        }
      }
    }
    BrandViewContact brandViewContact = new BrandViewContact();
    brandViewContact.setBrandId(brandId);
    brandViewContact.setDealerId(dealerId);
    brandViewContact.setViewType(viewType);
    if (contactIsExistInt == 0) {
      brandViewContact.setRefrenceId(com.zttx.sdk.utils.SerialnoUtils.buildPrimaryKey());
      brandViewContact.setViewTime(CalendarUtils.getCurrentLong());
      brandViewContactMapper.insert(brandViewContact);
    }

    BrandCount brandCount = brandCountService.selectByPrimaryKey(brandId);
    Integer viewCount = brandCountService.getViewDealerTotal(brandId);
    boolean brandCountisExist = true;
    if (null != brandCount) {
      if (viewCount.intValue() <= brandCount.getViewDealerCount().intValue()) {
        throw new BusinessException(BrandConst.VIEW_CONTACT_LACK_POINTS);
      }
    } else {
      brandCountisExist = false;
      brandCount = new BrandCount();
      brandCount.setRefrenceId(com.zttx.sdk.utils.SerialnoUtils.buildPrimaryKey());
    }
    // 查看经销商联系信息数量
    Long count = brandViewContactMapper.getBrandViewContactCount(brandViewContact);
    brandCount.setViewDealerCount(count.intValue());
    if (brandCountisExist) {
      brandCountService.updateByPrimaryKey(brandCount);
    } else {
      brandCountService.insert(brandCount);
    }
    Boolean isExits = false;
    if (contactIsExistInt > 0) {
      isExits = true;
    }
    dealerInfo.setIsViewAdd(isExits);
    dealerInfo.setUserMobile(userInfo.getUserMobile());

    return dealerInfo;
  }
 /**
  * 新增/修改(第三方调用,会同时维护经销商购买的服务表)
  *
  * @param dealerBuySerLog refrenceId 经销商购买的服务表的主键(由第三方调用者提供) dealerBuyServiceId
  *     经销商购买的服务的主键(由第三方调用者提供,若记录不存在:新增、记录已存在:修改) dealerId 经销商编号(必填) dealerName 经销商名称 serviceId
  *     服务编号(必填) servicerCate 服务类别(读字典:字典编码 servicerCate)(必填) buyNum 购买数量(必填) buyMoney 购买的金额(必填)
  *     chargType 购买类型(1:续期、2:增加数量)(必填) beginTime 服务开始时间 endTime 服务结束时间
  * @author 周光暖
  */
 @Override
 public DealerBuyService saveByClient(DealerBuySerLog dealerBuySerLog) throws BusinessException {
   DealerBuyService dealerBuyService = builtDealerBuyService(dealerBuySerLog);
   // 判断服务是否存在
   if (!webServiceItemsService.isExist(
       dealerBuySerLog.getServiceId(),
       dealerBuySerLog.getServicerCate(),
       dealerBuySerLog.getChargType())) {
     throw new BusinessException(ClientConst.PARAMERROR.code, "网站服务不存在");
   }
   DealerBuyService dbDealerBuyService =
       this.findBy(dealerBuySerLog.getDealerId(), dealerBuySerLog.getServiceId());
   if (null == dbDealerBuyService) {
     dealerBuyService.setRefrenceId(SerialnoUtils.buildPrimaryKey());
     dealerBuyService.setCreateTime(CalendarUtils.getCurrentLong());
     this.handChargType(dealerBuyService, null);
     this.insertSelective(dealerBuyService);
   } else {
     dealerBuyService.setRefrenceId(dbDealerBuyService.getRefrenceId());
     this.handChargType(dealerBuyService, dbDealerBuyService);
     dealerBuyService.setBuyMoney(
         dealerBuyService.getBuyMoney().add(dbDealerBuyService.getBuyMoney()));
     this.updateByPrimaryKeySelective(dealerBuyService);
   }
   dealerBuySerLog.setBuyTime(dealerBuyService.getBuyTime());
   dealerBuySerLog.setEndTime(dealerBuyService.getEndTime());
   dealerBuySerLogService.createDealerBuySerLog(dealerBuySerLog);
   return dealerBuyService;
 }
 /**
  * @param dealerId
  * @throws BusinessException
  */
 @Override
 public void addTrialErpDealerBuyService(String dealerId) throws BusinessException {
   Map<String, Object> params = Maps.newHashMap();
   DealerInfo dealerInfo = dealerInfoService.selectByPrimaryKey(dealerId);
   UserInfo dealerUserm = userInfoService.selectByPrimaryKey(dealerId);
   params.put("dealerId", dealerId);
   params.put("dealerName", dealerInfo.getDealerName());
   params.put("dealerMobile", dealerUserm.getUserMobile());
   params.put("dealerUser", dealerInfo.getDealerUser());
   params.put(
       "dealerMail",
       StringUtils.isEmpty(dealerUserm.getUserMail())
           ? "*****@*****.**"
           : dealerUserm.getUserMail());
   params.put(
       "dealerSex",
       dealerInfo.getDealerGender() == null ? 1 : (dealerInfo.getDealerGender() == 2 ? 1 : 0));
   params.put("dealerKey", dealerId);
   params.put(
       "outOfTime",
       com.zttx.web.utils.CalendarUtils.addDay(
           com.zttx.web.utils.CalendarUtils.getCurrentLong(), 60));
   params.put("userName", dealerUserm.getUserMobile());
   JSONObject _resJson = AppParameterUtils.getErpTrailJSONObject(params);
   if (_resJson == null
       || !_resJson.containsKey("code")
       || _resJson.getIntValue("code") != 121000) {
     throw new BusinessException("ERP 接口调用失败");
   }
   DealerBuyService _dealerBuyService =
       this.findBy(dealerId, CommonConstant.WebServiceItems.SERVICE_SYSTEM_STIALERP);
   if (_dealerBuyService != null) {
     throw new BusinessException("ERP试用服务已经开通,请刷页面!");
   }
   _dealerBuyService = new DealerBuyService();
   _dealerBuyService.setBeginTime(CalendarUtils.getCurrentLong());
   _dealerBuyService.setEndTime(
       CalendarUtils.addDay(com.zttx.web.utils.CalendarUtils.getCurrentLong(), 60));
   _dealerBuyService.setBuyTime(CalendarUtils.getCurrentLong());
   _dealerBuyService.setServiceId(CommonConstant.WebServiceItems.SERVICE_SYSTEM_STIALERP);
   _dealerBuyService.setServicerCate(Short.valueOf("1"));
   _dealerBuyService.setChargType(Short.valueOf("1"));
   _dealerBuyService.setBuyMoney(BigDecimal.ZERO);
   _dealerBuyService.setRefrenceId(SerialnoUtils.buildPrimaryKey());
   _dealerBuyService.setDealerId(dealerId);
   this.insertSelective(_dealerBuyService);
   // DealerInfo的服务起起时间
   dealerInfo.setBeginTime(CalendarUtils.getCurrentLong());
   dealerInfo.setEndTime(
       CalendarUtils.addDay(com.zttx.web.utils.CalendarUtils.getCurrentLong(), 60));
   dealerInfoService.updateByPrimaryKeySelective(dealerInfo);
 }
 public Boolean insertWithCheck(
     String brandId, String dealerId, Boolean isAdd, BrandViewContact brandViewContact)
     throws BusinessException {
   Short viewType = BrandConstant.BrandViewContact.VIEW_TYPE_INITIATIVE;
   Boolean isExist = this.isExist(brandId, dealerId, null);
   if (brandViewContact == null) {
     brandViewContact = new BrandViewContact();
   }
   if (!isExist) {
     isExist = dealerGroomMapper.isExist(brandId, dealerId) > 0;
     if (!isExist) {
       isExist = brandInviteMapper.isExist(brandId, dealerId) > 0;
       if (isExist) {
         viewType = BrandConstant.BrandViewContact.VIEW_TYPE_APPLICATION;
       }
     } else {
       viewType = BrandConstant.BrandViewContact.VIEW_TYPE__RECOMMEND;
     }
     if (isExist || isAdd) {
       brandViewContact.setRefrenceId(com.zttx.sdk.utils.SerialnoUtils.buildPrimaryKey());
       brandViewContact.setBrandId(brandId);
       brandViewContact.setDealerId(dealerId);
       brandViewContact.setViewTime(CalendarUtils.getCurrentLong());
       brandViewContact.setViewType(viewType);
       brandViewContactMapper.insert(brandViewContact);
       if (!isExist) {
         BrandCount brandCount = brandCountMapper.selectByPrimaryKey(brandId);
         Integer viewCount = getViewDealerTotal(brandCount);
         if (null != brandCount
             && viewCount.intValue() > brandCount.getViewDealerCount().intValue()) {
           List<Integer> countTypeList = Lists.newArrayList();
           // 已铺货产品数量和未铺货产品数量只需放入一个类型就可以了
           countTypeList.add(BrandConstant.BrandCountConst.BRANDCOUNT_VIEWDEALERCOUNT);
           brandCountService.modifyBrandCount(brandId, countTypeList.toArray(new Integer[] {}));
         }
       }
     }
   }
   return isExist;
 }