|
@@ -1,17 +1,20 @@
|
|
|
package com.iamberry.wechat.handles.qrcode;
|
|
|
|
|
|
+import com.iamberry.app.tool.util.HttpUtility;
|
|
|
import com.iamberry.wechat.core.entity.ResultMsg;
|
|
|
import com.iamberry.wechat.core.entity.WechatUtils;
|
|
|
import com.iamberry.wechat.core.entity.admin.ShopSystemRule;
|
|
|
import com.iamberry.wechat.core.entity.machineNumber.MachineNumber;
|
|
|
import com.iamberry.wechat.core.entity.machineNumber.WarrantyCard;
|
|
|
import com.iamberry.wechat.core.entity.member.Member;
|
|
|
-import com.iamberry.wechat.core.entity.wx.QRCJson;
|
|
|
import com.iamberry.wechat.face.admin.SystemService;
|
|
|
import com.iamberry.wechat.face.machineNumber.MachineNumberService;
|
|
|
import com.iamberry.wechat.face.member.MemberService;
|
|
|
import com.iamberry.wechat.face.order.CodeService;
|
|
|
import com.iamberry.wechat.tools.*;
|
|
|
+import org.apache.commons.lang.StringUtils;
|
|
|
+import org.json.JSONException;
|
|
|
+import org.json.JSONObject;
|
|
|
import org.jsoup.Jsoup;
|
|
|
import org.jsoup.nodes.Document;
|
|
|
import org.jsoup.nodes.Element;
|
|
@@ -22,7 +25,12 @@ import org.springframework.web.bind.annotation.RequestMapping;
|
|
|
import org.springframework.web.bind.annotation.RequestParam;
|
|
|
import org.springframework.web.bind.annotation.ResponseBody;
|
|
|
|
|
|
+import javax.servlet.ServletException;
|
|
|
import javax.servlet.http.HttpServletRequest;
|
|
|
+import javax.servlet.http.HttpServletResponse;
|
|
|
+import java.io.IOException;
|
|
|
+import java.text.MessageFormat;
|
|
|
+import org.apache.http.ParseException;
|
|
|
import java.text.SimpleDateFormat;
|
|
|
import java.util.*;
|
|
|
import java.util.regex.Matcher;
|
|
@@ -268,6 +276,63 @@ public class MachineQrCodeHandler {
|
|
|
return msg;
|
|
|
}
|
|
|
|
|
|
+ @RequestMapping("/_add_warranty")
|
|
|
+ public void addWarrantyUI(HttpServletRequest request,HttpServletResponse res) throws ServletException, IOException {
|
|
|
+ Member memberInfo = WechatUtils.getUserBySession(request);
|
|
|
+ //查询用户信息
|
|
|
+ memberInfo = memberService.getMemberByUserOpenId(memberInfo.getUserOpenid());
|
|
|
+ if (memberInfo != null && memberInfo.getUserStatus() == 2) {
|
|
|
+ request.getRequestDispatcher("/view/add_machine.html").forward(request,res);
|
|
|
+ } else {
|
|
|
+ request.getRequestDispatcher("/view/guanzhu.html").forward(request,res);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取ip地址
|
|
|
+ * @param request
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public static String getIp(HttpServletRequest request) {
|
|
|
+ String ip = request.getHeader("x-forwarded-for");
|
|
|
+ if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
|
|
|
+ ip = request.getHeader("Proxy-Client-IP");
|
|
|
+ }
|
|
|
+ if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
|
|
|
+ ip = request.getHeader("WL-Proxy-Client-IP");
|
|
|
+ }
|
|
|
+ if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
|
|
|
+ ip = request.getRemoteAddr();
|
|
|
+ }
|
|
|
+ // 获取ip地址, 若多级代理,第一个IP为客户端真实IP,多个IP按照','分割
|
|
|
+ if (ip != null && ip.indexOf(",") != -1) {
|
|
|
+ ip = ip.split(",")[0];
|
|
|
+ }
|
|
|
+ return ip;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取地址信息
|
|
|
+ * @param ip
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public static Map<String,Object> getLocation(String ip) {
|
|
|
+ Map<String,Object> map = new HashMap<String,Object>();
|
|
|
+ try {
|
|
|
+ JSONObject json = new JSONObject(
|
|
|
+ HttpUtility.httpsGet(MessageFormat.format(NameUtils.getConfig("SINA_IP_URL"),ip)));
|
|
|
+ String province = json.getString("province");
|
|
|
+ String city = json.getString("city");
|
|
|
+ String district = json.getString("district");
|
|
|
+ map.put("province",province);
|
|
|
+ map.put("city",city);
|
|
|
+ map.put("district",district);
|
|
|
+ } catch (ParseException | IOException | JSONException e) {
|
|
|
+ System.out.println("------------获取地址出错------------");
|
|
|
+ }
|
|
|
+ return map;
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 发送手机验证码
|
|
|
* @param request
|
|
@@ -359,6 +424,11 @@ public class MachineQrCodeHandler {
|
|
|
public ResultMsg addWarrantyCard(HttpServletRequest request, Member member) throws Exception {
|
|
|
ResultMsg msg = new ResultMsg();
|
|
|
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
|
|
+ String numberWatero = request.getParameter("numberWatero");
|
|
|
+ String numberProvince = request.getParameter("numberProvince");
|
|
|
+ String numberCity = request.getParameter("numberCity");
|
|
|
+ String numberDistrict = request.getParameter("numberDistrict");
|
|
|
+
|
|
|
List<MachineNumber> list = new ArrayList<MachineNumber>();
|
|
|
Member memberInfo = WechatUtils.getUserBySession(request);
|
|
|
String txtTime = request.getParameter("txtTime");
|
|
@@ -372,6 +442,23 @@ public class MachineQrCodeHandler {
|
|
|
}
|
|
|
member.setUserId(memberInfo.getUserId());
|
|
|
|
|
|
+ if (!StringUtils.isNotEmpty(numberProvince)) {
|
|
|
+ String ip = getIp(request);
|
|
|
+ Map<String,Object> locations = getLocation(ip);
|
|
|
+ if (StringUtils.isNotEmpty((String)locations.get("province"))) {
|
|
|
+ numberProvince = (String)locations.get("province");
|
|
|
+ numberCity = (String)locations.get("city");
|
|
|
+ numberDistrict = (String)locations.get("district");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (!StringUtils.isNotEmpty(numberWatero)) {
|
|
|
+ msg.setResultCode(ResultInfo.ERRORCODE);
|
|
|
+ msg.setStatus(false);
|
|
|
+ msg.setMessage("水质范围为空,请重新填写水质范围!");
|
|
|
+ return msg;
|
|
|
+ }
|
|
|
+
|
|
|
//验证手机验证码是否正确
|
|
|
ResponseJson code = codeService.validCode(member.getUserTel(),member.getPhoneCode());
|
|
|
if (code.getReturnCode() != 200) {
|
|
@@ -389,6 +476,10 @@ public class MachineQrCodeHandler {
|
|
|
MachineNumber machineNumber = new MachineNumber();
|
|
|
machineNumber.setNumberOpenId(memberInfo.getUserOpenid());
|
|
|
machineNumber.setNumberSalesTime(format.parse(times[i]));
|
|
|
+ machineNumber.setNumberWatero(Integer.parseInt(numberWatero));
|
|
|
+ machineNumber.setNumberProvince(numberProvince);
|
|
|
+ machineNumber.setNumberCity(numberCity);
|
|
|
+ machineNumber.setNumberDistrict(numberDistrict);
|
|
|
list.add(machineNumber);
|
|
|
}
|
|
|
}
|