Просмотр исходного кода

修改了统计功能和质保卡功能

liuzhiwei 7 лет назад
Родитель
Сommit
344b615d65

+ 36 - 0
wateroPF-common-core/src/main/java/com/iamberry/wechat/core/entity/machineNumber/MachineNumber.java

@@ -25,8 +25,44 @@ public class MachineNumber implements Serializable {
     private Date numberCreateTime;              //创建时间
     private Date numberSubTime;                 //关注时间
     private Integer numberIsPrint;              //是否打印
+    private Integer numberWatero;               //水质范围
+    private String numberProvince;              //省
+    private String numberCity;                  //市
+    private String numberDistrict;              //区
     private PageBean page = new PageBean();		//分页
 
+    public String getNumberProvince() {
+        return numberProvince;
+    }
+
+    public void setNumberProvince(String numberProvince) {
+        this.numberProvince = numberProvince;
+    }
+
+    public String getNumberCity() {
+        return numberCity;
+    }
+
+    public void setNumberCity(String numberCity) {
+        this.numberCity = numberCity;
+    }
+
+    public String getNumberDistrict() {
+        return numberDistrict;
+    }
+
+    public void setNumberDistrict(String numberDistrict) {
+        this.numberDistrict = numberDistrict;
+    }
+
+    public Integer getNumberWatero() {
+        return numberWatero;
+    }
+
+    public void setNumberWatero(Integer numberWatero) {
+        this.numberWatero = numberWatero;
+    }
+
     public PageBean getPage() {
         return page;
     }

+ 4 - 2
wateroPF-wechat-service/src/main/java/com/iamberry/wechat/service/mapper/machineNumberMapper.xml

@@ -250,13 +250,15 @@ PUBLIC
 		INSERT INTO tb_iamberry_user_machine_number
 		(
 			number_open_id,number_qrcode,number_barcode,number_batch,number_sales_time,
-			number_status,number_create_time,number_sub_time
+			number_status,number_create_time,number_sub_time,number_watero,
+			number_province,number_city,number_district
 		)
 		VALUES
 		<foreach collection="list" item="item" index="index" separator="," >
 			(
 			#{item.numberOpenId},#{item.numberQrcode},#{item.numberBarcode},#{item.numberBatch},
-			#{item.numberSalesTime},#{item.numberStatus},NOW(),NOW()
+			#{item.numberSalesTime},#{item.numberStatus},NOW(),NOW(),#{item.numberWatero},
+			#{item.numberProvince},#{item.numberCity},#{item.numberDistrict}
 			)
 		</foreach>
 	</insert>

+ 92 - 1
wateroPF-wechat-web/src/main/java/com/iamberry/wechat/handles/qrcode/MachineQrCodeHandler.java

@@ -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);
             }
         }

+ 17 - 5
wateroPF-wechat-web/src/main/java/com/iamberry/wechat/handles/statistics/OrderStatisticsHandler.java

@@ -41,6 +41,12 @@ public class OrderStatisticsHandler {
         return mv;
     }
 
+    /**
+     * 查询本周,上周,今年的统计数量
+     * @param request
+     * @return
+     * @throws Exception
+     */
     @ResponseBody
     @RequestMapping("/select_order_statistics")
     public ResultMsg selectOrderStatistics(HttpServletRequest request) throws Exception {
@@ -55,7 +61,7 @@ public class OrderStatisticsHandler {
         try {
             Collections.sort(listWeekNum, new StatisticsSalesOrderUtil());
         } catch (Exception e) {
-            e.printStackTrace();
+            System.out.println("-------------集合排序失败------------");
         }
 
         //查询上周统计数据
@@ -66,14 +72,14 @@ public class OrderStatisticsHandler {
         try {
             Collections.sort(listLastWeekNum, new StatisticsSalesOrderUtil());
         } catch (Exception e) {
-            e.printStackTrace();
+            System.out.println("-------------集合排序失败------------");
         }
         //封装一年的销售数据
         List<StatisticsSalesOrder> listYearNum = getYearList();
         try {
             Collections.sort(listYearNum, new StatisticsSalesOrderUtil());
         } catch (Exception e) {
-            e.printStackTrace();
+            System.out.println("-------------集合排序失败------------");
         }
 
         map.put("listWeekNum",listWeekNum);
@@ -85,6 +91,12 @@ public class OrderStatisticsHandler {
         return msg;
     }
 
+    /**
+     * 按月查询统计数量
+     * @param request
+     * @return
+     * @throws Exception
+     */
     @ResponseBody
     @RequestMapping("/select_order_by_month")
     public ResultMsg selectOrderByMonth(HttpServletRequest request) throws Exception {
@@ -99,7 +111,7 @@ public class OrderStatisticsHandler {
         try {
             Collections.sort(listMonthNum, new StatisticsSalesOrderUtil());
         } catch (Exception e) {
-            e.printStackTrace();
+            System.out.println("-------------集合排序失败------------");
         }
         msg.setData(listMonthNum);
         msg.setStatus(true);
@@ -113,6 +125,7 @@ public class OrderStatisticsHandler {
      * @return
      */
     public List<StatisticsSalesOrder> getMonthList(String month) throws Exception {
+        month = month + "-01";
         SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
         StatisticsSalesOrder salesOrder = new StatisticsSalesOrder();
         salesOrder.setSalesDate(format.parse(month));
@@ -172,7 +185,6 @@ public class OrderStatisticsHandler {
                     }
                 }
                 if (flag) {
-                    System.out.println("weekDate="+weekDate[i]);
                     StatisticsSalesOrder salOrder = new StatisticsSalesOrder();
                     salOrder.setSalesBlackNum(0);
                     salOrder.setSalesBlueNum(0);

Разница между файлами не показана из-за своего большого размера
+ 3 - 1
wateroPF-wechat-web/src/main/resources/platform.properties


+ 24 - 27
wateroPF-wechat-web/src/main/webapp/WEB-INF/views/admin/statistics/salesStatistics.jsp

@@ -51,7 +51,7 @@
 	<div class="charts-box1">
 	<div id="container2" style="width:1045px;height:400px;display: inline-block;">
 	</div>
-	<input type="text" value="" placeholder="选择月份" class="select-date" onClick="WdatePicker({skin:'whyGreen',maxDate:'%y-%M-%d',onpicked:updateMonthList})" id="select-month" readonly="readonly"/>
+	<input type="text" value="" placeholder="选择月份" class="select-date" onClick="WdatePicker({skin:'whyGreen',dateFmt:'yyyy-MM',maxDate:'%y-%M',minDate:'%y-01',onpicked:updateMonthList})" id="select-month" readonly="readonly"/>
 	<button type="button" class="my-btn" id="btn-3">查看饼状图</button>
 	</div>
 	
@@ -172,7 +172,7 @@
                 text: '共销售' + week_sum + '台机器'
             },
             tooltip: {
-                pointFormat: '{series.name}: <b>{point.percentage:.1f}%</b>'
+                pointFormat: '{point.y}台: <b>{point.percentage:.1f}%</b>'
             },
             plotOptions: {
                 pie: {
@@ -228,7 +228,7 @@
                     }]
                 },
                 tooltip: {
-                    pointFormat: '{series.name:<b>{point.y:.1f}</b>}'
+                    pointFormat: '{point.y}台'
                 },
                 legend: {
                     layout: 'vertical',
@@ -237,7 +237,7 @@
                     borderWidth: 0
                 },
                 series: [{
-                    name: '本周销量',
+                    name: '本周销量',
                     data: week_num,
                     color:'#fba62e'
                 }, {
@@ -268,7 +268,7 @@
                     text: '共销售' + week_sum + '台机器'
                 },
                 tooltip: {
-                    pointFormat: '{series.name}: <b>{point.percentage:.1f}%</b>'
+                    pointFormat: '{point.y}台: <b>{point.percentage:.1f}%</b>'
                 },
                 plotOptions: {
                     pie: {
@@ -321,7 +321,7 @@
                 }]
             },
             tooltip: {
-                pointFormat: '{series.name:<b>{point.y:.1f}</b>}'
+                pointFormat: '{point.y}台'
             },
             legend: {
                 layout: 'vertical',
@@ -330,7 +330,7 @@
                 borderWidth: 0
             },
             series: [{
-                name: '上周销量',
+                name: '上周销量',
                 data: last_week_num,
                 color:'#fba62e'
             }, {
@@ -367,7 +367,7 @@
                     text: '共销售' + last_week_sum + '台机器'
                 },
                 tooltip: {
-                    pointFormat: '{series.name}: <b>{point.percentage:.1f}%</b>'
+                    pointFormat: '{point.y}台: <b>{point.percentage:.1f}%</b>'
                 },
                 plotOptions: {
                     pie: {
@@ -418,7 +418,7 @@
                     }]
                 },
                 tooltip: {
-                    pointFormat: '{series.name:<b>{point.y:.1f}</b>}'
+                    pointFormat: '{point.y}台'
                 },
                 legend: {
                     layout: 'vertical',
@@ -427,7 +427,7 @@
                     borderWidth: 0
                 },
                 series: [{
-                    name: '本周销量',
+                    name: '本周销量',
                     data: last_week_num,
                     color:'#fba62e'
                 }, {
@@ -475,7 +475,7 @@
                 }]
             },
             tooltip: {
-                pointFormat: '{series.name}'
+                pointFormat: '{point.y}台'
             },
             legend: {
                 layout: 'vertical',
@@ -484,7 +484,7 @@
                 borderWidth: 0
             },
             series: [{
-                name: year + '年销量',
+                name: year + '年销量',
                 data: year_num,
                 color:'#fba62e'
             }, {
@@ -535,7 +535,7 @@
                     }]
                 },
                 tooltip: {
-                    pointFormat: '{series.name}'
+                    pointFormat: '{point.y}台'
                 },
                 legend: {
                     layout: 'vertical',
@@ -544,7 +544,7 @@
                     borderWidth: 0
                 },
                 series: [{
-                    name: year + '年销量',
+                    name: year + '年销量',
                     data: year_num,
                     color:'#fba62e'
                 }, {
@@ -574,7 +574,7 @@
                     text: '共销售' + year_sum + '台机器'
                 },
                 tooltip: {
-                    pointFormat: '{series.name}: <b>{point.percentage:.1f}%</b>'
+                    pointFormat: '{point.y}台: <b>{point.percentage:.1f}%</b>'
                 },
                 plotOptions: {
                     pie: {
@@ -666,7 +666,7 @@
                 }]
             },
             tooltip: {
-                pointFormat: '{series.name}'
+                pointFormat: '{point.y}台'
             },
             legend: {
                 layout: 'vertical',
@@ -675,7 +675,7 @@
                 borderWidth: 0
             },
             series: [{
-                name: text_month + '月销量',
+                name: text_month + '月销量',
                 data: month_num,
                 color:'#fba62e'
             }, {
@@ -726,7 +726,7 @@
                     }]
                 },
                 tooltip: {
-                    pointFormat: '{series.name}'
+                    pointFormat: '{point.y}台'
                 },
                 legend: {
                     layout: 'vertical',
@@ -735,7 +735,7 @@
                     borderWidth: 0
                 },
                 series: [{
-                    name: text_month + '月销量',
+                    name: text_month + '月销量',
                     data: month_num,
                     color:'#fba62e'
                 }, {
@@ -766,7 +766,7 @@
                     text: '共销售' + month_sum + '台机器'
                 },
                 tooltip: {
-                    pointFormat: '{series.name}: <b>{point.percentage:.1f}%</b>'
+                    pointFormat: '{point.y}台: <b>{point.percentage:.1f}%</b>'
                 },
                 plotOptions: {
                     pie: {
@@ -841,7 +841,7 @@
                             text: '共销售' + month_sum + '台机器'
                         },
                         tooltip: {
-                            pointFormat: '{series.name}: <b>{point.percentage:.1f}%</b>'
+                            pointFormat: '{point.y}台: <b>{point.percentage:.1f}%</b>'
                         },
                         plotOptions: {
                             pie: {
@@ -891,7 +891,7 @@
                             }]
                         },
                         tooltip: {
-                            pointFormat: '{series.name}'
+                            pointFormat: '{point.y}台'
                         },
                         legend: {
                             layout: 'vertical',
@@ -900,7 +900,7 @@
                             borderWidth: 0
                         },
                         series: [{
-                            name: text_month + '月销量',
+                            name: text_month + '月销量',
                             data: month_num,
                             color:'#fba62e'
                         }, {
@@ -962,10 +962,7 @@ function valueDate(now) {
         if (month < 10) {
             month = '0' + month;
 		}
-		if (date < 10) {
-            date = '0' + date;
-        }
-        return   year+"-"+month+"-"+date;
+        return   year+"-"+month;
     }
 </script>
 </body>

+ 43 - 24
wateroPF-wechat-web/src/main/webapp/view/add_machine.html

@@ -109,6 +109,9 @@
 	var uname = /^[\u4e00-\u9fa5a-zA-Z]{1,12}$/; //中文英文
     var email=/^\w[-\w.+]*@([A-Za-z0-9][-A-Za-z0-9]+\.)+[A-Za-z]{2,18}$/;
 	var code = /^[0-9]{4}$/; //数字
+    var numberProvince = null;
+    var numberCity = null;
+    var numberDistrict = null;
 	mui.ready(function(){
         //选择示例
         var userPicker = new mui.PopPicker();
@@ -117,10 +120,10 @@
             text: '0-100 TDS'
         }, {
             value: '2',
-            text: '101-300 TDS'
+            text: '101-250 TDS'
         }, {
             value: '3',
-            text: '301-500 TDS'
+            text: '251-500 TDS'
         }, {
             value: '4',
             text: '501 TDS 以上 '
@@ -130,45 +133,58 @@
             userPicker.show(function(items) {
                 document.getElementById('ipt-water').value = items[0].text;
                 $('#ipt-water').attr('txtvalue',items[0].value);
-                //返回 false 可以阻止选择框的关闭
-                //return false;
+                var txt_message = '';
+                switch (items[0].value) {
+                    case '1':
+                        txt_message = '您家水质良好。';
+                        break;
+                    case '2':
+                        txt_message = '您家水质偏差,WaterO可彻底净化,请使用柠檬酸每3个月清洗。';
+                        break;
+                    case '3':
+                        txt_message = '您家水质较差,WaterO可彻底净化,请使用柠檬酸每2个月清洗。';
+                        break;
+                    case '4':
+                        txt_message = '您家水质很差,WaterO可彻底净化,请使用柠檬酸每1个月清洗。';
+                        break;
+                }
+                $('#txt_message').html(txt_message);
             });
         }, false);
 
+        jWeixin.getLocation({
+            type: 'wgs84', // 默认为wgs84的gps坐标,如果要返回直接给openLocation用的火星坐标,可传入'gcj02'
+            success: function (res) {
+                console.log(res);
+                var latitude = res.latitude; // 纬度,浮点数,范围为90 ~ -90
+                var longitude = res.longitude; // 经度,浮点数,范围为180 ~ -180。
+                var speed = res.speed; // 速度,以米/每秒计
+                var accuracy = res.accuracy; // 位置精度
+                //getLocation(latitude,longitude);
+            },
+            cancel: function (res) {
+                mui.alert('用户拒绝授权获取地理位置');
+            }
+        });
 
 		document.querySelector('.loading-bg').style.display='none';
 	});
 window.onload=function(){
-    wx.getLocation({
-        type: 'wgs84', // 默认为wgs84的gps坐标,如果要返回直接给openLocation用的火星坐标,可传入'gcj02'
-        success: function (res) {
-            var latitude = res.latitude; // 纬度,浮点数,范围为90 ~ -90
-            var longitude = res.longitude; // 经度,浮点数,范围为180 ~ -180。
-            var speed = res.speed; // 速度,以米/每秒计
-            var accuracy = res.accuracy; // 位置精度
-            getLocation(latitude,longitude);
-        },
-        cancel: function (res) {
-            mui.alert('用户拒绝授权获取地理位置');
-        }
-    });
+
 };
 function getLocation(latitude,longitude){
     $.ajax({
         type: 'get',
-        url: 'http://apis.map.qq.com/ws/geocoder/v1/',
-        data:{
-            "location" : latitude+","+longitude,
-			"coord_type":1,
-			"key":'NDABZ-4NBR6-EC2SH-MUIX3-CDL6E-IJB7C',
-			"get_poi":0
-        },
+        url: 'http://apis.map.qq.com/ws/geocoder/v1/?location='+latitude+','+longitude+'&key=P2WBZ-LH73F-QZYJ2-JOVWI-J7G5J-ZFFEY&get_poi=0',
         dataType: 'json',
         timeout: 15000,
         success: function(dt) {
             console.log(dt);
             if(dt.status==0){
                 $("#wx-ads").text(dt.result.ad_info.province+"-"+dt.result.ad_info.city+"-"+dt.result.ad_info.district);
+                numberProvince = dt.result.ad_info.province;
+                numberCity = dt.result.ad_info.city;
+                numberDistrict = dt.result.ad_info.district;
 			}
         },
         error: function(xhr, type, errorThrown) {
@@ -214,6 +230,9 @@ function getLocation(latitude,longitude){
                                     "userTel":$('#ipt-phone').val(),
                                     "userEmail":$('#ipt-email').val(),
 									"numberWatero":$('#ipt-water').attr('txtvalue'),
+                                    "numberProvince":numberProvince,
+                                    "numberCity":numberCity,
+                                    "numberDistrict":numberDistrict,
                                     "txtTime":txtTime
                                 };
                                 $.ajax({

+ 2 - 2
wateroPF-wechat-web/src/main/webapp/view/guanzhu.html

@@ -2,7 +2,7 @@
 <html>
 	<head>
 		<meta charset="UTF-8">
-		<title>爱贝源</title>
+		<title>关注公众号</title>
 		<meta name="viewport" content="width=device-width, initial-scale=1,maximum-scale=1, user-scalable=no">
 		<meta name="apple-mobile-web-app-capable" content="yes">
 		<meta name="apple-mobile-web-app-status-bar-style" content="black">
@@ -45,7 +45,7 @@
 				</div>
 				<div class="mui-content-padded mui-text-center">
 					<div id="qrcode-div" style="padding: 20px 0;">
-						<img width="40%" src="http://s.iamberry.com/wateroPF/images/system_qrcode.jpg" />
+						<img width="40%" src="//s.iamberry.com/wateroPF/images/system_qrcode.jpg" />
 						<p>长按识别二维码关注</p>
 					</div>
 					<ul type="1" class="mui-text-left my-ol">