Переглянути джерело

添加了查询客诉订单列表信息

liuzhiwei 7 роки тому
батько
коміт
89b70df1cc

+ 14 - 0
iamberry-common-core/pom.xml

@@ -20,4 +20,18 @@
 			<version>1.0.0</version>
 		</dependency>
 	</dependencies>
+	<build>
+		<finalName>iamberry-common-core</finalName>
+		<plugins>
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-compiler-plugin</artifactId>
+				<version>3.3</version>
+				<configuration>
+					<source>1.7</source>
+					<target>1.7</target>
+				</configuration>
+			</plugin>
+		</plugins>
+	</build>
 </project>

+ 14 - 0
iamberry-common-interface/pom.xml

@@ -30,4 +30,18 @@
 			<version>1.0.0</version>
 		</dependency>
 	</dependencies>
+	<build>
+		<finalName>iamberry-common-interface</finalName>
+		<plugins>
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-compiler-plugin</artifactId>
+				<version>3.3</version>
+				<configuration>
+					<source>1.7</source>
+					<target>1.7</target>
+				</configuration>
+			</plugin>
+		</plugins>
+	</build>
 </project>

+ 14 - 0
iamberry-common-tool/pom.xml

@@ -53,4 +53,18 @@
 		    <version>2.2.1</version>
 		</dependency>
 	</dependencies>
+	<build>
+		<finalName>iamberry-common-tool</finalName>
+		<plugins>
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-compiler-plugin</artifactId>
+				<version>3.3</version>
+				<configuration>
+					<source>1.7</source>
+					<target>1.7</target>
+				</configuration>
+			</plugin>
+		</plugins>
+	</build>
 </project>

+ 14 - 0
iamberry-common-web/pom.xml

@@ -13,4 +13,18 @@
 	<groupId>com.iamberry</groupId>
 	<artifactId>iamberry-common-web</artifactId>
 	<version>1.0.0</version>
+	<build>
+		<finalName>iamberry-wechat-web</finalName>
+		<plugins>
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-compiler-plugin</artifactId>
+				<version>3.3</version>
+				<configuration>
+					<source>1.7</source>
+					<target>1.7</target>
+				</configuration>
+			</plugin>
+		</plugins>
+	</build>
 </project>

+ 14 - 0
iamberry-wechat-interface/pom.xml

@@ -25,4 +25,18 @@
   		<version>1.0.0</version>
   	</dependency>
   </dependencies>
+    <build>
+        <finalName>iamberry-wechat-interface</finalName>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <version>3.3</version>
+                <configuration>
+                    <source>1.7</source>
+                    <target>1.7</target>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
 </project>

+ 95 - 0
iamberry-wechat-interface/src/main/java/com/iamberry/wechat/face/reback/LoadRewardTaskService.java

@@ -0,0 +1,95 @@
+package com.iamberry.wechat.face.reback;
+
+import com.iamberry.wechat.core.entity.order.Order;
+import com.iamberry.wechat.core.entity.reback.RebackInfo;
+import org.apache.log4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Lazy;
+import org.springframework.scheduling.annotation.Async;
+import org.springframework.stereotype.Service;
+
+import java.util.concurrent.ConcurrentLinkedQueue;
+
+
+@Lazy(false)
+@Service("loadRewardTaskService")
+public class LoadRewardTaskService {
+
+	@Autowired
+	private RebackServices RebackServices;
+	
+	Logger logger = Logger.getLogger("infoLog");  
+	
+	private static  ConcurrentLinkedQueue<Order> linkq=new ConcurrentLinkedQueue<Order>();
+	private static  ConcurrentLinkedQueue<RebackInfo> Updateq=new ConcurrentLinkedQueue<RebackInfo>();
+	
+	//增加处理的订单
+	public static void addOrder(Order order){
+		linkq.add(order);
+	}
+	
+	//增加处理的订单的id
+	public static void addOrder(String orderId){
+		Order order=new Order();
+		order.setSalesOrderid(orderId);
+		linkq.add(order);	
+	}
+	
+	//修改返现的状态
+	public static void updateStatus(RebackInfo rebackInfo){
+		Updateq.add(rebackInfo);
+	}
+	
+
+	//插入返现记录
+	@Async
+	public  void getinsertRewardRecord(){
+		while(true){
+			Order order=linkq.poll();
+			if(order==null){
+				try {
+					Thread.sleep(5000);
+					//System.out.println("sleep 5s");
+				} catch (InterruptedException e) {
+					e.printStackTrace();
+				}
+				continue;
+			}
+			int i=0;
+			try{
+				i=RebackServices.loadSingleOrderReward(order);
+			}catch(Exception ex){
+				i=-2;
+			}
+			String str="订单:"+order.getSalesOrderid();
+			logger.debug(i>0?str+"插入返现记录成功":str+"插入返现记录失败");
+		}
+	}
+	
+	//插入返现记录
+	@Async
+	public  void getupdateStateRewardRecord(){
+		while(true){
+			RebackInfo rebackInfo=Updateq.poll();
+			if(rebackInfo==null){
+				try {
+					Thread.sleep(15000);
+				} catch (InterruptedException e) {
+					e.printStackTrace();
+				}
+				continue;
+			}
+			int i=0;
+			try{
+				i=RebackServices.updateStatus(rebackInfo);
+			}catch(Exception ex){
+				i=-2;
+			}
+			String str="订单状态更新:"+rebackInfo.getOrderId();
+			logger.debug(i>0?str+"插入返现记录成功":str+"插入返现记录失败");
+		}
+	}
+	
+	
+	
+}

+ 10 - 1
iamberry-wechat-service/pom.xml

@@ -47,6 +47,7 @@
 	</dependencies>
 
 	<build>
+		<finalName>iamberry-wechat-service</finalName>
 		<plugins>
 			<plugin>
 				<groupId>org.springframework.boot</groupId>
@@ -65,7 +66,15 @@
 					<addResources>true</addResources>
 				</configuration>
 			</plugin>
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-compiler-plugin</artifactId>
+				<version>3.3</version>
+				<configuration>
+					<source>1.7</source>
+					<target>1.7</target>
+				</configuration>
+			</plugin>
 		</plugins>
-
 	</build>
 </project>

+ 14 - 0
iamberry-wechat-web/pom.xml

@@ -46,4 +46,18 @@
 			<artifactId>jstl</artifactId>
 		</dependency>
 	</dependencies>
+	<build>
+		<finalName>iamberry-wechat-web</finalName>
+		<plugins>
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-compiler-plugin</artifactId>
+				<version>3.3</version>
+				<configuration>
+					<source>1.7</source>
+					<target>1.7</target>
+				</configuration>
+			</plugin>
+		</plugins>
+	</build>
 </project>

+ 1 - 1
iamberry-wechat-web/src/main/resources/iamberry-wechat-web-ioc.xml

@@ -60,7 +60,7 @@
 	<import resource="classpath:iamberry-wechat-service-orderTesk.xml"></import>  -->
     
 	<!-- 开启注解启动定时器 -->
-    <task:annotation-driven/>
+    <!--<task:annotation-driven/>-->
     
     <!-- 加载zk config -->
     <!-- <context:property-placeholder location="classpath:zk.properties"/> -->

+ 8 - 0
watero-rst-interface/src/main/java/com/iamberry/rst/faces/cm/SalesOrderService.java

@@ -81,6 +81,14 @@ public interface SalesOrderService {
     void addSalesOrderList(JSONObject obj) throws Exception;
 
     /**
+     * 同步efast订单
+     * @param obj
+     * @return
+     * @throws Exception
+     */
+    boolean syncEfastOrder(JSONObject orderInfo) throws Exception;
+
+    /**
      * 批量修改订单信息
      * @param list
      * @return

+ 128 - 3
watero-rst-service/src/main/java/com/iamberry/rst/service/cm/SalesOrderServiceImpl.java

@@ -214,6 +214,9 @@ public class SalesOrderServiceImpl implements SalesOrderService {
             if (orderInfo == null) {
                 return;
             }
+            if (!orderInfo.has("orders")) {
+                return;
+            }
             //获取订单项集合
             JSONArray itemArray = orderInfo.getJSONArray("orders");
             if (itemArray == null || itemArray.size() == 0) {
@@ -231,9 +234,6 @@ public class SalesOrderServiceImpl implements SalesOrderService {
             salesOrder.setSalesIsLocked(order.getInt("is_locked"));//是否锁定
             salesOrder.setSalesIsSeparate(order.getInt("is_separate"));//是否缺货
             salesOrder.setSalesStatus(order.getInt("order_status"));//订单状态 0:未确认,1:已确认,2:挂起,3:作废
-			/*if (orderStatus == 2 || orderStatus == 3) {
-				continue;
-			}*/
             salesOrder.setSalesPostFirm(order.getString("shipping_name"));//快递方式代码
             salesOrder.setSalesPostNum(order.getString("invoice_no"));//快递单号
             salesOrder.setSalesOpenId(order.getString("mobile"));//唯一标识
@@ -326,6 +326,131 @@ public class SalesOrderServiceImpl implements SalesOrderService {
     }
 
     @Override
+    public boolean syncEfastOrder(JSONObject orderInfo) throws Exception {
+        if (orderInfo == null) {
+            return false;
+        }
+        if (!orderInfo.has("orders")) {
+            return false;
+        }
+        //获取订单项集合
+        JSONArray itemArray = orderInfo.getJSONArray("orders");
+        if (itemArray == null || itemArray.size() == 0) {
+            return false;
+        }
+
+        SalesOrder salesOrder = new SalesOrder();
+        salesOrder.setSalesOrderId(orderInfo.getString("order_sn"));//订单编号
+        salesOrder.setSalesDealCode(orderInfo.getString("deal_code"));//交易号
+        salesOrder.setSalesOrderStatus(1);//订单状态
+        salesOrder.setSalesShippingStatus(orderInfo.getInt("shipping_status"));//发货状态 0:未发货,1:已发货,3:备货中
+        salesOrder.setSalesPayStatus(orderInfo.getInt("pay_status"));//是否付款 0:未付款,2:已付款
+        salesOrder.setSalesProcessStatus(orderInfo.getInt("process_status"));//单据状态
+        salesOrder.setSalesIsSend(orderInfo.getInt("is_send"));//是否通知配货
+        salesOrder.setSalesIsLocked(orderInfo.getInt("is_locked"));//是否锁定
+        salesOrder.setSalesIsSeparate(orderInfo.getInt("is_separate"));//是否缺货
+        salesOrder.setSalesStatus(orderInfo.getInt("order_status"));//订单状态 0:未确认,1:已确认,2:挂起,3:作废
+        salesOrder.setSalesPostFirm(orderInfo.getString("shipping_name"));//快递方式代码
+        salesOrder.setSalesPostNum(orderInfo.getString("invoice_no"));//快递单号
+        salesOrder.setSalesOpenId(orderInfo.getString("mobile"));//唯一标识
+        salesOrder.setSalesPayType(efastOrderService.getPayType(orderInfo.getString("pay_name")));//支付方式
+        salesOrder.setSalesPayTime(new Date(orderInfo.getLong("pay_time")*1000));//支付时间
+        salesOrder.setSalesUserRemark(orderInfo.getString("postscript"));//买家留言
+        salesOrder.setSalesAdminRemark(orderInfo.getString("to_buyer"));//商家留言
+        salesOrder.setSalesAmount((int)(orderInfo.getDouble("order_amount")*100));//应付款
+        salesOrder.setSalesPayMoney((int)(orderInfo.getDouble("money_paid")*100));//已付款
+        salesOrder.setSalesAddressName(orderInfo.getString("consignee"));//收货人
+        salesOrder.setSalesAddressTel(orderInfo.getString("mobile"));//收货人电话
+        salesOrder.setSalesAddressInfo(orderInfo.getString("address").replaceAll(" ","-"));//收货地址
+        salesOrder.setSalesShippingFee((int)(orderInfo.getDouble("shipping_fee")*100));//邮费
+        salesOrder.setSalesCreateTime(new Date(orderInfo.getLong("pay_time")*1000));//创建时间
+        if (orderInfo.getInt("shipping_status") == 1) {
+            salesOrder.setSalesSendTime(DateTimeUtil.parse(orderInfo.getString("delivery_time"),"yyyy-MM-dd HH:mm:ss"));//发货时间
+        }
+        salesOrder.setSalesDiscountMoney(salesOrder.getSalesAmount() - salesOrder.getSalesPayMoney());//优惠金额
+        salesOrder.setSalesPledgeMoney(0);//押金金额
+        salesOrder.setSalesRemainDeposit(0);//待提取金额
+        salesOrder.setSalesSendType(2);//发货方式,默认为物流发货
+        salesOrder.setSalesSalesTime(salesOrder.getSalesCreateTime());//订购时间
+        salesOrder.setSalesWaitMoney(0);//待付金额
+        salesOrder.setSalesLastMoney(salesOrder.getSalesPayMoney());//本次支付金额
+        salesOrder.setSalesPayNumber("0000");//支付尾号
+        salesOrder.setSalesType(1);//订单类型
+        //查询店铺信息
+        StoreInfo storeInfo = new StoreInfo();
+        if (orderInfo.has("sd_id")) {
+            storeInfo.setStoreEfast(orderInfo.getString("sd_id"));
+        } else {
+            storeInfo.setStoreEfast("1");
+        }
+
+        List<StoreInfo> storeList = storeInfoService.listStore(storeInfo);
+        int storeId = 0;
+        int companyId = 0;
+        if (storeList != null && storeList.size() > 0) {
+            storeInfo = storeList.get(0);
+            storeId = storeInfo.getStoreId();
+            companyId = storeInfo.getCompanyId();
+        }
+        salesOrder.setSalesStoreId(storeId);//店铺id
+        salesOrder.setSalesCompanyId(companyId);//销售公司id
+
+        List<SalesOrderItem> itemList = new ArrayList<SalesOrderItem>();
+        for (int j = 0;j < itemArray.size();j++) {
+            ProductColor color = new ProductColor();
+            JSONObject itemJson = itemArray.getJSONObject(j);
+            SalesOrderItem item = new SalesOrderItem();
+            color.setColorBar(itemJson.getString("goods_sn"));
+            List<ProductColor> colorList = productService.listproductAndColor(color);
+            if (colorList != null && colorList.size() > 0) {
+                color = colorList.get(0);
+                item.setItemColorBar(itemJson.getString("goods_sn"));//商品69码
+                item.setItemNum(itemJson.getInt("sn"));//商品数量
+                item.setItemCreateTime(salesOrder.getSalesCreateTime());
+                item.setItemColorId(color.getColorId());
+                item.setItemProductColor(color.getColorName());
+                item.setItemProductDiscount(color.getColorDiscount());
+                item.setItemProductId(color.getColorProductId());
+                item.setItemProductName(color.getProductName());
+                item.setItemProductPic(color.getColorPicture());
+                item.setItemProductType(color.getProductType());
+                item.setItemProductPrice(color.getColorPrice());
+                item.setItemIsSource(1);
+                itemList.add(item);
+            } else {
+                //获取配件信息
+                FittingsInfo fittingsInfo = new FittingsInfo();
+                fittingsInfo.setFittingsBar(itemJson.getString("goods_sn"));
+                List<FittingsInfo> Fittings = fittingsInfoMapper.listFittings(fittingsInfo);
+                if (Fittings == null || Fittings.size() == 0) {
+                    continue;
+                }
+                fittingsInfo = Fittings.get(0);
+                item.setItemColorBar(itemJson.getString("goods_sn"));//商品69码
+                item.setItemNum(itemJson.getInt("sn"));//商品数量
+                item.setItemCreateTime(salesOrder.getSalesCreateTime());
+                item.setItemColorId(fittingsInfo.getFittingsId());
+                item.setItemProductColor(fittingsInfo.getFittingsName());
+                item.setItemProductDiscount(fittingsInfo.getFittingsDiscount());
+                item.setItemProductId(fittingsInfo.getProductId());
+                item.setItemProductName(fittingsInfo.getFittingsName());
+                item.setItemProductPic("");
+                item.setItemProductType(0);
+                item.setItemProductPrice(fittingsInfo.getFittingsPrice());
+                item.setItemIsSource(2);
+                itemList.add(item);
+            }
+        }
+        //添加订单和订单项
+        boolean flag = salesOrderService.addOrderAndItem(salesOrder,itemList);
+        if (flag) {
+            return true;
+        } else {
+            return false;
+        }
+    }
+
+    @Override
     public Integer getOrderInfoCount(SalesOrder salesOrder) {
         return salesOrderMapper.getOrderInfoCount(salesOrder);
     }

+ 0 - 49
watero-rst-web/src/main/java/com/iamberry/rst/controllers/cm/AdminCustomerController.java

@@ -7,7 +7,6 @@ import com.iamberry.rst.core.order.ProductType;
 import com.iamberry.rst.core.page.PagedResult;
 import com.iamberry.rst.core.sys.Admin;
 import com.iamberry.rst.faces.cm.*;
-import com.iamberry.rst.faces.order.EfastOrderService;
 import com.iamberry.rst.faces.product.ProductService;
 import com.iamberry.rst.faces.sms.SmsService;
 import com.iamberry.rst.faces.sys.SysService;
@@ -18,7 +17,6 @@ import com.iamberry.rst.utils.StitchAttrUtil;
 import com.iamberry.wechat.tools.NameUtils;
 import com.iamberry.wechat.tools.ResponseJson;
 import net.sf.json.JSONArray;
-import net.sf.json.JSONObject;
 import org.apache.commons.lang.StringUtils;
 import org.apache.shiro.authz.annotation.RequiresPermissions;
 import org.slf4j.Logger;
@@ -75,8 +73,6 @@ public class AdminCustomerController {
     @Autowired
     private ReissueService reissueService;
     @Autowired
-    private EfastOrderService efastOrderService;
-    @Autowired
     private NoreasonBackService noreasonBackService;
     @Autowired
     private ComplaintQuestionInfoService complaintQuestionInfoService;
@@ -84,9 +80,6 @@ public class AdminCustomerController {
     private SmsService smsService;
 
 
-    private Object lock = new Object();
-
-
     /**
      * 获取客诉列表
      *
@@ -1318,47 +1311,5 @@ public class AdminCustomerController {
             return new ResponseJson(500, "修改失败!", 500);
         }
     }
-
-    /**
-     * 同步百胜订单
-     *
-     * @return
-     * @throws Exception
-     */
-    @ResponseBody
-    @RequiresPermissions("customer:sync:order")
-    @RequestMapping("/sync_efast_order")
-    public ResponseJson syncEfastOrder() throws Exception {
-        int pageNo = 1;
-        int pageSize = 20;
-        boolean flag = false;    //控制是否还需要获取百胜订单信息
-        String date = "";
-        synchronized (lock) {
-            //根据时间排序查询订单信息
-            List<SalesOrder> orderList = salesOrderService.listSalesOrder(new SalesOrder());
-            if (orderList != null && orderList.size() > 0) {
-                SalesOrder salesOrder = orderList.get(0);
-                date = salesOrder.getSalesCreateTime().toString();
-            } else {
-                date = "2016-04-01";
-            }
-            do {
-                //批量获取百胜订单信息
-                JSONObject obj = efastOrderService.listOrderInfoFormEfast(pageNo, pageSize, date);
-                if (obj == null) {
-                    return new ResponseJson(200, "没有可同步订单!", 200);
-                }
-                int pageSize1 = obj.getInt("page_size");    //百胜返回数据条目数
-                if (pageSize <= pageSize1) {
-                    flag = true;
-                    pageNo++;
-                } else {
-                    flag = false;
-                }
-                salesOrderService.addSalesOrderList(obj);
-            } while (flag);    //百胜返回条目数如果等于设置的分页条目数,则继续查询下一页
-            return new ResponseJson(200, "同步成功!", 200);
-        }
-    }
 }
 

+ 44 - 1
watero-rst-web/src/main/java/com/iamberry/rst/controllers/cm/AdminSalesOrderController.java

@@ -1,11 +1,13 @@
 package com.iamberry.rst.controllers.cm;
 
-import com.iamberry.rst.core.cm.CustomerInfo;
 import com.iamberry.rst.core.cm.SalesOrder;
 import com.iamberry.rst.core.cm.SalesOrderItem;
 import com.iamberry.rst.core.page.PagedResult;
 import com.iamberry.rst.faces.cm.SalesOrderService;
+import com.iamberry.rst.faces.order.EfastOrderService;
 import com.iamberry.rst.utils.StitchAttrUtil;
+import com.iamberry.wechat.tools.ResponseJson;
+import net.sf.json.JSONObject;
 import org.apache.commons.lang.StringUtils;
 import org.apache.poi.hssf.usermodel.*;
 import org.apache.shiro.authz.annotation.RequiresPermissions;
@@ -13,6 +15,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
 import org.springframework.web.servlet.ModelAndView;
 
 import javax.servlet.ServletOutputStream;
@@ -33,6 +36,10 @@ public class AdminSalesOrderController {
 
     @Autowired
     private SalesOrderService salesOrderService;
+    @Autowired
+    private EfastOrderService efastOrderService;
+
+    private Object lock = new Object();
 
     /**
      * 分页查询订单列表信息
@@ -274,4 +281,40 @@ public class AdminSalesOrderController {
         }
         return postFirm;
     }
+
+    /**
+     * 同步百胜订单
+     *
+     * @return
+     * @throws Exception
+     */
+    @ResponseBody
+    @RequiresPermissions("salesOrder:sync:order")
+    @RequestMapping("/sync_efast_order")
+    public ResponseJson syncEfastOrder(HttpServletRequest request) throws Exception {
+        int pageNo = 1;
+        int pageSize = 20;
+        String salesDealCode = request.getParameter("salesDealCode");
+        if (!StringUtils.isNotEmpty(salesDealCode)) {
+            return new ResponseJson(500, "订单编号不能为空,请重新输入!", 500);
+        }
+        //根据时间排序查询订单信息
+        SalesOrder salesOrder = new SalesOrder();
+        salesOrder.setSalesOrderId(salesDealCode);
+        int num = salesOrderService.getOrderInfoCount(salesOrder);
+        if (num > 0) {
+            return new ResponseJson(500, "该订单已存在,无需同步!", 500);
+        }
+        synchronized (lock) {
+            //获取订单详情
+            JSONObject orderInfo = efastOrderService.getOrderFormEfast(salesDealCode);
+            //添加订单和订单项
+            boolean flag = salesOrderService.syncEfastOrder(orderInfo);
+            if (flag) {
+                return new ResponseJson(200, "同步成功!", 200);
+            } else {
+                return new ResponseJson(500, "没有查到该订单信息!", 500);
+            }
+        }
+    }
 }

+ 94 - 31
watero-rst-web/src/main/webapp/WEB-INF/views/cm/salesOrder/sales_order_list.ftl

@@ -28,6 +28,32 @@
     <span class="c-gray en">&gt;</span> 客诉列表
     <a class="btn radius r" style="line-height:1.6em;margin-top:3px;background: #32a3d8;color: #fff;border:1px solid #32a3d8;" href="javascript:location.replace(location.href);" title="刷新" ><i class="Hui-iconfont">&#xe68f;</i></a>
 </nav>
+
+<!-- 同步订单状态 -->
+<div class="layui-layer layui-anim layui-layer-iframe" id="layui-SynOrder" times="4" showtime="0" contype="string" style="display:none;z-index: 19891018; width: 400px; height: 260px; position: absolute; top: 100px; left: 379px;">
+    <form action="" method="post" class="form form-horizontal" id="form-admin-SynOrder">
+        <div class="layui-layer-title" style="cursor: move;" move="ok">同步订单</div>
+        <br>
+        <div class="row cl">
+            <label class="form-label col-3" style="float: left;"><span class="c-red">*</span>&nbsp;交易号:</label>
+            <div style="float: left;box-sizing: border-box;min-height: 1px;">
+                <input type="text" id="efastOrderId" style="width: 200px;" class="input-text" value="" placeholder="请输入百胜交易号" nullmsg="订单编号不能为空">
+            </div>
+            <div class="col-4"> </div>
+        </div>
+        <div class="row cl">
+            <div class="formControls col-8">&nbsp;&nbsp;&nbsp;<span class="c-red" id="msge"></span></div>
+        </div>
+        <br>
+        <div class="col-9 col-offset-3">
+            <input class="btn btn-primary radius" onclick="submitSynOrder()" type="button" value="&nbsp;&nbsp;同步&nbsp;&nbsp;">
+        </div>
+    </form>
+    <span class="layui-layer-setwin">
+				<a class="layui-layer-ico layui-layer-close layui-layer-close1" onclick="exitWindowsDiv(this);" href="javascript:;"></a>
+		</span>
+</div>
+
 <div class="page-container">
     <div class="text-c">
         <form action="${path}/admin/salesOrder/list_order_page" method="post">
@@ -36,8 +62,9 @@
             <input type="text" class="my-input"  style="width:90px;margin-right: 0px;" value="${salesOrder.salesAddressTel!}" placeholder="收货人电话" name="salesAddressTel" id="salesAddressTel">
             <input type="text" style="width:150px;height:36px;margin-right: 0px;" name="startDate" id="startDate" class="input-text" placeholder="开始时间" onClick="WdatePicker({ dateFmt:'yyyy-MM-dd HH:mm:ss',skin:'whyGreen' })" value="${(salesOrder.startDate?string("yyyy-MM-dd HH:mm:ss"))!''}" readonly="readonly"/>-
             <input type="text" style="width:150px;height:36px;margin-right: 0px;" name="endDate" id="endDate" class="input-text" placeholder="结束时间" onClick="WdatePicker({ dateFmt:'yyyy-MM-dd HH:mm:ss',skin:'whyGreen' })" value="${(salesOrder.endDate?string("yyyy-MM-dd HH:mm:ss"))!''}" readonly="readonly"/>
-            <button type="submit" class="btn" style="background: #32a3d8;color: #fff;-webkit-transform:translateY(-5%);height: 35px;" id="" name=""><i class="Hui-iconfont">&#xe665;</i> 搜索</button>
+            <button type="submit" class="btn" style="background: #32a3d8;color: #fff;-webkit-transform:translateY(-5%);height: 35px;" id=""><i class="Hui-iconfont">&#xe665;</i> 搜索</button>
             <button type="button" class="btn" style="background: #32a3d8;color: #fff;-webkit-transform:translateY(-5%);height: 35px;" id="order_excel"><i class="Hui-iconfont">&#xe644;</i> 导出</button>
+            <button type="button" class="btn" style="background: #32a3d8;color: #fff;-webkit-transform:translateY(-5%);height: 35px;" id="synOrder"><i class="Hui-iconfont">&#xe632;</i> 同步订单</button>
         </form>
     </div>
 
@@ -75,36 +102,38 @@
                     </#if>
                     <td>${order.salesAddressInfo!''}</td>
                     <td>
-                        <#if order.salesPostFirm == 'sto'>
-                            申通快递
-                        <#elseif order.salesPostFirm == 'yto'>
-                            圆通快递
-                        <#elseif order.salesPostFirm == 'sf'>
-                            顺丰快递
-                        <#elseif order.salesPostFirm == 'ems'>
-                            邮政EMS
-                        <#elseif order.salesPostFirm == 'zto'>
-                            中通快递
-                        <#elseif order.salesPostFirm == 'zjs'>
-                            宅急送
-                        <#elseif order.salesPostFirm == 'yunda'>
-                            韵达快递
-                        <#elseif order.salesPostFirm == 'cces'>
-                            cces快递
-                        <#elseif order.salesPostFirm == 'pick'>
-                            上门提货
-                        <#elseif order.salesPostFirm == 'htky'>
-                            汇通快递
-                        <#elseif order.salesPostFirm == 'ttkdex'>
-                            天天快递
-                        <#elseif order.salesPostFirm == 'stars'>
-                            星晨急便
-                        <#elseif order.salesPostFirm == 'jd'>
-                            京东快递
-                        <#elseif order.salesPostFirm == '01'>
-                            其他
-                        <#elseif order.salesPostFirm == '02'>
-                            上门送货
+                        <#if order.salesPostFirm??>
+                            <#if order.salesPostFirm == 'sto'>
+                                申通快递
+                            <#elseif order.salesPostFirm == 'yto'>
+                                圆通快递
+                            <#elseif order.salesPostFirm == 'sf'>
+                                顺丰快递
+                            <#elseif order.salesPostFirm == 'ems'>
+                                邮政EMS
+                            <#elseif order.salesPostFirm == 'zto'>
+                                中通快递
+                            <#elseif order.salesPostFirm == 'zjs'>
+                                宅急送
+                            <#elseif order.salesPostFirm == 'yunda'>
+                                韵达快递
+                            <#elseif order.salesPostFirm == 'cces'>
+                                cces快递
+                            <#elseif order.salesPostFirm == 'pick'>
+                                上门提货
+                            <#elseif order.salesPostFirm == 'htky'>
+                                汇通快递
+                            <#elseif order.salesPostFirm == 'ttkdex'>
+                                天天快递
+                            <#elseif order.salesPostFirm == 'stars'>
+                                星晨急便
+                            <#elseif order.salesPostFirm == 'jd'>
+                                京东快递
+                            <#elseif order.salesPostFirm == '01'>
+                                其他
+                            <#elseif order.salesPostFirm == '02'>
+                                上门送货
+                            </#if>
                         </#if>
                     </td>
                     <td>${order.salesPostNum!''}</td>
@@ -151,6 +180,40 @@
         window.location.href= "${path}/admin/salesOrder/select_sales_order?salesId="+salesId;
     }
 
+    $('#synOrder').click(function (e) {
+        $("#layui-SynOrder").show();
+    });
+
+    // 关闭窗口
+    function exitWindowsDiv(_this) {
+        $(_this).parent().parent().hide();
+    }
+
+    function submitSynOrder() {
+        var efastOrderId = $('#efastOrderId').val();
+        if(efastOrderId == null || efastOrderId == ""){
+            $("#msge").html("请输入百胜交易号!");
+            return false;
+        }
+        $.ajax({
+            type:'POST',
+            url: '${path}/admin/salesOrder/sync_efast_order',
+            data:{
+                "salesDealCode" : efastOrderId
+            },
+            dataType: 'json',
+            success:function(res) {
+                if(res.resultCode == 200){
+                    $("#msge").html(res.resultMsg);
+                    location.reload();
+                }else{
+                    $("#msge").html(res.resultMsg);
+                }
+                return false;
+            }
+        });
+    }
+
     /*导出Excel*/
     $('#order_excel').click(function (e) {
         var salesOrderId = convertUndefinedToEmpty($('#salesOrderId').val());

+ 107 - 21
watero-wechat-service/src/main/java/com/iamberry/wechat/service/wechat/WeChatServiceImpl.java

@@ -3,13 +3,16 @@ package com.iamberry.wechat.service.wechat;
 import java.io.UnsupportedEncodingException;
 import java.net.URLEncoder;
 import java.text.ParseException;
+import java.text.SimpleDateFormat;
 import java.util.Date;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
+import com.iamberry.wechat.tools.*;
 import net.sf.json.JSONObject;
 
+import org.apache.commons.lang3.StringEscapeUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -40,11 +43,6 @@ import com.iamberry.wechat.service.MessageUtil;
 import com.iamberry.wechat.service.ShopUtil;
 import com.iamberry.wechat.service.mapper.PlaceInfoMapper;
 import com.iamberry.wechat.service.relationship.Dao.WdRelationDao;
-import com.iamberry.wechat.tools.DateTimeUtil;
-import com.iamberry.wechat.tools.NameUtils;
-import com.iamberry.wechat.tools.QQFace;
-import com.iamberry.wechat.tools.ResultInfo;
-import com.iamberry.wechat.tools.WeixinUtil;
 
 /**
  * description : wechat handler的核心服务类
@@ -166,33 +164,51 @@ public class WeChatServiceImpl implements WeChatService {
 			} else if (msgType.equals(MessageUtil.REQ_MESSAGE_TYPE_EVENT)) {// 事件推送
 				
 				String eventType = requestMap.get("Event");// 事件类型
-				
+				String eventKey = requestMap.get("EventKey");
 				if(eventType.equals("SCAN")){
-					// 已关注用户扫描二维码事件
-					int flag = subUserScannQrcodeEvent(requestMap, fromUserName);
-					if (flag == 1 ) {
+					//扫描机器二维码返回跳转到完善信息页面
+					if (eventKey.indexOf(ResultInfo.barCodePrefix) != -1) {
+						Status status = scannQrcodeGiveGift(requestMap, fromUserName);
+						if (status.isFlag()) {
+							return status.getCountext();
+						}
+						respContent = status.getCountext();
+					} else {
+						// 已关注用户扫描二维码事件
+						int flag = subUserScannQrcodeEvent(requestMap, fromUserName);
+						if (flag == 1) {
 						/*Status status = getCouponImgText(requestMap);
 						if (status.isFlag()) {
 							return status.getCountext();
 						}
 						respContent = status.getCountext();*/
-						respContent = ResultInfo.subDefaultResponseText;
-					} else if ( flag == 0){
-						respContent = ResultInfo.subDefaultResponseText;
-					} else if (flag == 4) {
-						respContent = "欢迎您关注美国watero!您已享受购买水机终身优惠价3280元(普通会员销售价3680元),并且购买即赠三年滤芯套装,快来购买吧!<a href=\"http://w.iamberry.com/watero/wechat/wxCart/goProductList\">点击购买</a>";
-					} else {
-						respContent = "欢迎您关注美国watero,恭喜您成为金牌会员。自己购买或者推荐朋友购买水机均将享受3280元优惠价,并免费赠送3年滤芯哦!点击菜单“分销中心-代理分销”可进入您的专属分销管理中心。";
+							respContent = ResultInfo.subDefaultResponseText;
+						} else if (flag == 0) {
+							respContent = ResultInfo.subDefaultResponseText;
+						} else if (flag == 4) {
+							respContent = "欢迎您关注美国watero!您已享受购买水机终身优惠价3280元(普通会员销售价3680元),并且购买即赠三年滤芯套装,快来购买吧!<a href=\"http://w.iamberry.com/watero/wechat/wxCart/goProductList\">点击购买</a>";
+						} else {
+							respContent = "欢迎您关注美国watero,恭喜您成为金牌会员。自己购买或者推荐朋友购买水机均将享受3280元优惠价,并免费赠送3年滤芯哦!点击菜单“分销中心-代理分销”可进入您的专属分销管理中心。";
+						}
 					}
 				} else if (eventType.equals(MessageUtil.EVENT_TYPE_SUBSCRIBE)) {
 					// 订阅
 					if(requestMap.get("Ticket") != null){
-						//未关注用户扫描二维码关注事件处理
-						Status status = scannQRcodeSub(requestMap, fromUserName);
-						if (status.isFlag()) {
-							return status.getCountext();
+						//扫描机器二维码返回跳转到完善信息页面
+						if (eventKey.indexOf(ResultInfo.barCodePrefix) != -1) {
+							Status status = scannQrcodeSubGiveGift(requestMap, fromUserName);
+							if (status.isFlag()) {
+								return status.getCountext();
+							}
+							respContent = status.getCountext();
+						} else {
+							//未关注用户扫描二维码关注事件处理
+							Status status = scannQRcodeSub(requestMap, fromUserName);
+							if (status.isFlag()) {
+								return status.getCountext();
+							}
+							respContent = status.getCountext();
 						}
-						respContent = status.getCountext();
 					} else {
 						// 搜索公众号关注
 						Status status = queryWechatSub(fromUserName, requestMap);
@@ -230,6 +246,76 @@ public class WeChatServiceImpl implements WeChatService {
 		}
 		return respMessage;
 	}
+
+	/**
+	 * 扫码进入赠送礼品信息页面(已关注)
+	 * @param requestMap
+	 */
+	public Status scannQrcodeGiveGift(Map<String, String> requestMap, String fromUserName) {
+		Status status = new Status();
+		String senceid = requestMap.get("EventKey");//场景值
+		senceid = senceid.replaceAll(ResultInfo.barCodePrefix,"");//替换标识前的字符串
+		String str = bindingMachine(senceid, fromUserName);
+		status.setCountext(str);
+		status.setFlag(false);
+		return status;
+	}
+
+	/**
+	 * 扫码进入赠送礼品信息页面(未关注)
+	 * @param requestMap
+	 * @param fromUserName
+	 */
+	public Status scannQrcodeSubGiveGift(Map<String, String> requestMap, String fromUserName) {
+		//赋值&更新数据
+		Status status = new Status();
+		Member member = refreshUserInfo(fromUserName);
+		String senceid = requestMap.get("EventKey");//场景值
+		senceid = senceid.replaceAll(ResultInfo.barCodePrefix,"");//替换标识前的字符串
+		String str = bindingMachine(senceid.trim(), fromUserName);
+		status.setCountext(str);
+		status.setFlag(false);
+		return status;
+	}
+
+	/**
+	 * 上海wateroPF扫码绑定机器关系
+	 * @param senceid	//机器条形码
+	 * @param fromUserName
+	 * @return
+	 */
+	public String bindingMachine(String senceid, String fromUserName) {
+		StringBuilder str = new StringBuilder();
+		String url = NameUtils.getConfig("rst_base_url") + senceid;
+		Map<String,String> params = new HashMap<String,String>();
+		SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
+		try {
+			//查询百胜订单信息
+			String resultJson = HttpClient431Util.doGet(params,url,null,null,null);
+			resultJson = StringEscapeUtils.unescapeJava(resultJson); // unicode
+			inLongLogger.info("==========================获取机器信息成功,返回值为:" + resultJson + "=========================");
+			JSONObject jsonObject = JSONObject.fromObject(resultJson);
+			if (jsonObject.getInt("resultCode") != 200) {
+				str.append("没有查到该机器信息,请确认二维码是否正确!");
+				return str.toString();
+			}
+			JSONObject jsonMessage = jsonObject.getJSONObject("message");
+			if (jsonMessage.getInt("isBeing") == 2) {
+				str.append("没有查到该机器信息,请确认二维码是否正确!");
+				return str.toString();
+			}
+			str.append("您的<");
+			str.append(jsonMessage.getString("productType"));
+			str.append(">为正品,生产日期为:");
+			str.append(format.format(new Date(jsonMessage.getLong("producedTime")*1000)));
+			str.append("。请放心使用。");
+			return str.toString();
+		} catch (Exception e) {
+			inLongLogger.info("==========================获取机器信息失败,机器条形码为:" + senceid + "=========================");
+			str.append("没有查到该机器信息,请确认二维码是否正确!");
+			return str.toString();
+		}
+	}
 	
 	/**
 	 * 绑定代理商信息(激活 微信openid绑定商户)

+ 2 - 0
watero-wechat-web/src/main/resources/platform.properties

@@ -114,6 +114,8 @@ app_secret=8888
 sd_id=001
 # sd_idt	\u592A\u539F\u5E97\u94FA	test:001		watero:9
 sd_idt=001
+#rst_base_url
+rst_base_url=http://test.iamberry.com/rst/mcahine/getMachineInfo?barCode=
 # efast_base_url
 efast_base_url=http://121.199.165.244/efast_test/efast_api/webservice/web/index.php
 # order_field

+ 39 - 9
wateroPF-wechat-service/src/main/java/com/iamberry/wechat/service/wechat/WeChatServiceImpl.java

@@ -3,6 +3,7 @@ package com.iamberry.wechat.service.wechat;
 import java.io.UnsupportedEncodingException;
 import java.net.URLEncoder;
 import java.text.ParseException;
+import java.text.SimpleDateFormat;
 import java.util.Date;
 import java.util.HashMap;
 import java.util.List;
@@ -10,8 +11,10 @@ import java.util.Map;
 
 import com.iamberry.wechat.core.entity.machineNumber.MachineNumber;
 import com.iamberry.wechat.face.machineNumber.MachineNumberService;
+import com.iamberry.wechat.tools.*;
 import net.sf.json.JSONObject;
 
+import org.apache.commons.lang3.StringEscapeUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -42,11 +45,6 @@ import com.iamberry.wechat.service.MessageUtil;
 import com.iamberry.wechat.service.ShopUtil;
 import com.iamberry.wechat.service.mapper.PlaceInfoMapper;
 import com.iamberry.wechat.service.relationship.Dao.WdRelationDao;
-import com.iamberry.wechat.tools.DateTimeUtil;
-import com.iamberry.wechat.tools.NameUtils;
-import com.iamberry.wechat.tools.QQFace;
-import com.iamberry.wechat.tools.ResultInfo;
-import com.iamberry.wechat.tools.WeixinUtil;
 
 /**
  * description : wechat handler的核心服务类
@@ -263,7 +261,7 @@ public class WeChatServiceImpl implements WeChatService {
 		Status status = new Status();
 		String senceid = requestMap.get("EventKey");//场景值
 		senceid = senceid.replaceAll(ResultInfo.barCodePrefix,"");//替换标识前的字符串
-        String str = "【美国WaterO】经检测,您的机器为美国WaterO正品,请放心使用。";//bindingMachine(senceid, fromUserName);
+        String str = bindingMachine(senceid, fromUserName);
         status.setCountext(str);
 		status.setFlag(false);
 		return status;
@@ -280,7 +278,7 @@ public class WeChatServiceImpl implements WeChatService {
 		Member member = refreshUserInfo(fromUserName);
 		String senceid = requestMap.get("EventKey");//场景值
 		senceid = senceid.replaceAll(ResultInfo.barCodePrefix,"");//替换标识前的字符串
-		String str = "【美国WaterO】经检测,您的机器为美国WaterO正品,请放心使用。";//bindingMachine(senceid.trim(), fromUserName);
+		String str = bindingMachine(senceid.trim(), fromUserName);
 		status.setCountext(str);
 		status.setFlag(false);
 		return status;
@@ -288,12 +286,44 @@ public class WeChatServiceImpl implements WeChatService {
 
 	/**
 	 * 上海wateroPF扫码绑定机器关系
-	 * @param senceid
+	 * @param senceid	//机器条形码
 	 * @param fromUserName
 	 * @return
 	 */
 	public String bindingMachine(String senceid, String fromUserName) {
 		StringBuilder str = new StringBuilder();
+		String url = NameUtils.getConfig("rst_base_url") + senceid;
+		Map<String,String> params = new HashMap<String,String>();
+		SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
+		try {
+			//查询百胜订单信息
+			String resultJson = HttpClient431Util.doGet(params,url,null,null,null);
+			resultJson = StringEscapeUtils.unescapeJava(resultJson); // unicode
+			inLongLogger.info("==========================获取机器信息成功,返回值为:" + resultJson + "=========================");
+			JSONObject jsonObject = JSONObject.fromObject(resultJson);
+			if (jsonObject.getInt("resultCode") != 200) {
+				str.append("没有查到该机器信息,请确认二维码是否正确!");
+				return str.toString();
+			}
+			JSONObject jsonMessage = jsonObject.getJSONObject("message");
+			if (jsonMessage.getInt("isBeing") == 2) {
+				str.append("没有查到该机器信息,请确认二维码是否正确!");
+				return str.toString();
+			}
+			str.append("您的<");
+			str.append(jsonMessage.getString("productType"));
+			str.append(">为正品,生产日期为:");
+			str.append(format.format(new Date(jsonMessage.getLong("producedTime")*1000)));
+			str.append("。请放心使用。");
+			return str.toString();
+		} catch (Exception e) {
+			inLongLogger.info("==========================获取机器信息失败,机器条形码为:" + senceid + "=========================");
+			str.append("没有查到该机器信息,请确认二维码是否正确!");
+			return str.toString();
+		}
+
+
+		/*StringBuilder str = new StringBuilder();
 		MachineNumber machineNumber = new MachineNumber();
 		machineNumber.setNumberBarcode(senceid);
 		//分页查询机器编号集合
@@ -319,7 +349,7 @@ public class WeChatServiceImpl implements WeChatService {
 				str.append("绑定机器失败,请重新操作!");
 				return str.toString();
 			}
-		}
+		}*/
 	}
 	
 	/**

+ 2 - 0
wateroPF-wechat-web/src/main/resources/platform.properties

@@ -121,6 +121,8 @@ app_secret=8888
 sd_id=001
 # sd_idt	\u592A\u539F\u5E97\u94FA	test:001		watero:9
 sd_idt=001
+#rst_base_url
+rst_base_url=http://test.iamberry.com/rst/mcahine/getMachineInfo?barCode=
 # efast_base_url
 efast_base_url=http://121.199.165.244/efast_test/efast_api/webservice/web/index.php