예제 #1
0
  @RequestMapping("payment")
  public ModelAndView payment(HttpServletRequest request) {
    ModelAndView mv = createMAV("personal/payment");

    String houseId = this.findStringParameterValue(request, "houseId");

    HouseInfo houseInfo = houseService.findBaseHouseInfoByHouseId(houseId);
    return mv.addObject("house", houseInfo);
  }
예제 #2
0
  /**
   * 保存预约信息
   *
   * @param request
   * @param order
   * @param modelMap
   */
  @RequestMapping("add_preOrder")
  public void addPreOrder(HttpServletRequest request, Order order, ModelMap modelMap) {
    // 预约者电话
    String telephone = this.findStringParameterValue(request, "orderTel");
    // 验证码
    String verifyCode = this.findStringParameterValue(request, "verifyCode");

    if (StringUtils.equals(verifyCode, (String) request.getSession().getAttribute(telephone))) {
      // 房屋ID
      String houseId = this.findStringParameterValue(request, "houseId");
      // 预约者微信ID
      order.setWeixinId(StringUtils.defaultIfEmpty(order.getWeixinId(), "weixinId"));
      // 公寓房源编号
      order.setHouseId(houseId);
      // 预约日期
      String orderDate = this.findStringParameterValue(request, "orderDate");
      order.setOrderDate(orderDate);
      // 联系电话
      order.setTelephone(telephone);

      // 检查该微信用户是否已预约了该房源
      int count =
          orderService.queryOrderCountByHouseIdAndWeixinIdAndOrderDate(
              order.getWeixinId(), houseId, orderDate);
      if (count == 0) {
        // 保存预约信息
        orderService.addPreOrder(order);
        // 清空Session中保存的该手机号的验证码
        request.getSession().removeAttribute(telephone);

        // 取得预约房源的信息
        HouseWrapVo houseInfo = houseService.findHouseInfoByHouseId(houseId);
        // 房屋描述信息
        StringBuilder houseDesc = new StringBuilder();
        // 小区名称+楼号+房间数
        houseDesc.append(houseInfo.getCommunityName()).append("  ");
        if (StringUtils.isNotBlank(houseInfo.getBuildingNo())) {
          houseDesc.append(houseInfo.getBuildingNo()).append("号楼");
        }
        if (StringUtils.isNotBlank(houseInfo.getLayout())) {
          if (ERenovation.BAY.getCode().equals(houseInfo.getLayout())) {
            houseDesc.append("开间");
          } else {
            houseDesc.append(houseInfo.getLayout()).append("室");
          }
        }
        if (StringUtils.isNotBlank(houseInfo.getUseArea())) {
          houseDesc.append("  ");
          houseDesc.append(houseInfo.getUseArea().replaceAll("\\.\\d*$", "")).append("平米");
        }
        if (houseInfo.getLongPrice() != null) {
          houseDesc.append("  ");
          houseDesc
              .append(houseInfo.getLongPrice().toPlainString().replaceAll("\\.\\d*$", ""))
              .append("元/月");
        }

        // 编辑地址
        String houseAddress = houseInfo.getStreet();

        DateFormat dateFormat = new SimpleDateFormat(Constants.DATE_FORMAT_NO_SEPARATOR);
        StringBuilder orderTimeDisplayBul = new StringBuilder();
        try {
          Date date = dateFormat.parse(orderDate);
          Calendar calendar = Calendar.getInstance();
          calendar.setTime(date);
          int weedDay = calendar.get(Calendar.DAY_OF_WEEK);
          orderTimeDisplayBul.append(
              DateUtil.getFmtDate(orderDate, Constants.DATE_FORMAT_NO_SEPARATOR, "yyyy年MM月dd日"));
          orderTimeDisplayBul.append("  ").append(EWeekDayType.getNameByCode(weedDay));
        } catch (ParseException e) {
          logger.error("预约日期格式解析错误", e);
        }

        String orderDateDisplay = orderTimeDisplayBul.toString();
        modelMap.put("success", true);
        modelMap.put("description", houseDesc.toString());
        modelMap.put("houseTel", houseInfo.getTelephone());
        modelMap.put("houseAdd", houseAddress);
        modelMap.put("orderDate", orderDateDisplay);

        // TODO 向用户微信发送预约消息
        //				ServletContext sevletContext = request.getSession()
        //						.getServletContext();
        //				// 获取微信access_token
        //				String accessToken = (String) sevletContext
        //						.getAttribute(Constants.WEIXIN_ACCESS_TOKEN);
        //				// 尝试从application context中取得access_token信息
        //				Integer validSecond = (Integer) sevletContext
        //						.getAttribute(Constants.WEIXIN_ACCESS_TOKEN_VALID_TIME);
        //				Long accessTokenCallTime = (Long) sevletContext
        //						.getAttribute(Constants.ACCESS_TOKEN_CALL_TIME);
        //				// 获取access_token失败标志
        //				boolean getAccessTokenFailFlag = false;
        //				// 判定application context范围内的微信access_token信息是否存在且是否有效
        //				if (StringUtils.isEmpty(accessToken)
        //						|| (System.currentTimeMillis() - accessTokenCallTime) <= validSecond) {
        //					// 不存在或者已失效
        //					String accessTokenInfo = getAccessTokenService.getAccessToken();
        //					if (StringUtils.isEmpty(accessTokenInfo)) {
        //						log.error("微信access_token获取失败!");
        //						getAccessTokenFailFlag = true;
        //					} else {
        //						int underScoreIndex = accessTokenInfo
        //								.indexOf(GetAccessTokenService.ACCESS_TOKEN_INFO_SEPERATOR);
        //						validSecond = Integer.valueOf(accessTokenInfo.substring(0,
        //								underScoreIndex));
        //						accessToken = accessTokenInfo
        //								.substring(underScoreIndex + 1);
        //						accessTokenCallTime = System.currentTimeMillis();
        //
        //						// 将取得的access_token信息保存至application context范围内
        //						sevletContext.setAttribute(Constants.WEIXIN_ACCESS_TOKEN,
        //								accessToken);
        //						sevletContext.setAttribute(
        //								Constants.WEIXIN_ACCESS_TOKEN_VALID_TIME,
        //								validSecond);
        //						sevletContext.setAttribute(
        //								Constants.ACCESS_TOKEN_CALL_TIME,
        //								accessTokenCallTime);
        //					}
        //				}
        //
        //				if (!getAccessTokenFailFlag
        //						&& sendOrderMessageToWeixinUser(accessToken,
        //								order.getWeixinId(), orderDateDisplay,
        //								houseDesc.toString(), houseInfo.getTelephone())) {
        //					log.error("预约微信发送失败![clientTel:" + telephone + ", orderTime:"
        //							+ orderDateDisplay + ", houseAddress:" + houseAddress
        //							+ ", houseTel:" + houseInfo.getTelephone() + "]");
        //				}

        if (!sendOrderMessageToCusetomerService(
            telephone,
            orderDateDisplay,
            houseDesc.toString(),
            houseInfo.getTelephone(),
            houseInfo.getBrandName())) {
          log.error(
              "预约邮件发送失败![clientTel:"
                  + telephone
                  + ", orderTime:"
                  + orderDateDisplay
                  + ", houseAddress:"
                  + houseAddress
                  + ", houseTel:"
                  + houseInfo.getTelephone()
                  + "]");
        }
      } else {
        modelMap.put("success", false);
        modelMap.put("message", "已预约过在您指定的日期看该房源!");
      }

    } else {
      modelMap.put("success", false);
      modelMap.put("message", "输入的验证码有误,请重新输入!");
    }
  }