Jelajahi Sumber

Merge branch 'master' of http://git.iamberry.com/hexiugang/iamberry-common-parent

liujiankang 6 tahun lalu
induk
melakukan
2118599ca1

+ 12 - 15
iamberry-common-tool/src/main/java/com/iamberry/wechat/tools/GetWxOrderno.java

@@ -23,25 +23,14 @@ public class GetWxOrderno {
    */
   public static Object getPayNo(String url,String xmlParam){
 	try {
-		
-
-System.out.println("getPayNo start....");
-		
 		String jsonStr = HttpClient431Util.doPostContent(xmlParam, "application/json", url);
 		//判断
-	    if(jsonStr.indexOf("FAIL")!=-1){
-	    	WxPrepayIdErrorResult errorResult = (WxPrepayIdErrorResult) MessageUtil.xmlToBean(jsonStr, WxPrepayIdErrorResult.class);
-	    	
-System.out.println("getPayNo errorResult...." + jsonStr);
-	    	
-	    	return errorResult;
+		assert jsonStr != null;
+		if(jsonStr.contains("FAIL")){
+			return (WxPrepayIdErrorResult) MessageUtil.xmlToBean(jsonStr, WxPrepayIdErrorResult.class);
 	    }
 	    Map map = doXMLParse(jsonStr);
-	    String prepay_id  = (String) map.get("prepay_id");
-
-System.out.println("getPayNo end....");
-	    
-	    return prepay_id;
+		return (String) map.get("prepay_id");
 	} catch (Exception e1) {
 		// TODO Auto-generated catch block
 		e1.printStackTrace();
@@ -136,6 +125,14 @@ System.out.println("getPayNo end....");
 		Map m = new HashMap();
 		InputStream in = String2Inputstream(strxml);
 		SAXBuilder builder = new SAXBuilder();
+
+
+		// 防止XXE
+		builder.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true);
+		builder.setFeature("http://xml.org/sax/features/external-general-entities", false);
+		builder.setFeature("http://xml.org/sax/features/external-parameter-entities", false);
+		builder.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false);
+
 		Document doc = builder.build(in);
 		Element root = doc.getRootElement();
 		List list = root.getChildren();

+ 7 - 0
iamberry-wechat-web/src/main/java/com/iamberry/wechat/handles/pay/ResponseWechatPayHandler.java

@@ -287,6 +287,13 @@ public class ResponseWechatPayHandler {
 			InputSource source = new InputSource(read);
 			// 创建一个新的SAXBuilder
 			SAXBuilder sb = new SAXBuilder();
+
+			// 防止XXE
+			sb.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true);
+			sb.setFeature("http://xml.org/sax/features/external-general-entities", false);
+			sb.setFeature("http://xml.org/sax/features/external-parameter-entities", false);
+			sb.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false);
+
 			// 通过输入源构造一个Document
 			Document doc = (Document) sb.build(source);
 			Element root = doc.getRootElement();// 指向根节点

+ 12 - 5
watero-common-tool/src/main/java/com/iamberry/wechat/tools/GetWxOrderno.java

@@ -16,7 +16,7 @@ import org.jdom.input.SAXBuilder;
 
 public class GetWxOrderno {
 
-    private static final Logger log = Logger.getLogger(GetWxOrderno.class);
+	private static final Logger log = Logger.getLogger(GetWxOrderno.class);
 	/**
 	 * description:获取预支付id
 	 */
@@ -41,7 +41,7 @@ public class GetWxOrderno {
 
 	/**
 	 * description:获取扫码支付连接
-	 * 
+	 *
 	 * @param url
 	 * @param xmlParam
 	 * @return
@@ -66,7 +66,7 @@ public class GetWxOrderno {
 
 	/**
 	 * 解析xml,返回第一级元素键值对。
-	 * 
+	 *
 	 * @param strxml
 	 * @return
 	 * @throws JDOMException
@@ -81,6 +81,13 @@ public class GetWxOrderno {
 		Map<String, String> m = new HashMap<String, String>();
 		InputStream in = string2Inputstream(strxml);
 		SAXBuilder builder = new SAXBuilder();
+
+		// 防止XXE
+		builder.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true);
+		builder.setFeature("http://xml.org/sax/features/external-general-entities", false);
+		builder.setFeature("http://xml.org/sax/features/external-parameter-entities", false);
+		builder.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false);
+
 		Document doc = builder.build(in);
 		Element root = doc.getRootElement();
 		List<Element> list = root.getChildren();
@@ -107,7 +114,7 @@ public class GetWxOrderno {
 
 	/**
 	 * 获取子结点的xml
-	 * 
+	 *
 	 * @param children
 	 * @return String
 	 */
@@ -137,4 +144,4 @@ public class GetWxOrderno {
 		return new ByteArrayInputStream(str.getBytes());
 	}
 
-}
+}

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

@@ -22,6 +22,14 @@ public interface StoreShipService {
      * @return  storeShip
      */
     StoreShip  getStoreShipById(Integer  id);
+
+    /**
+     * 查询发货信息
+     * @param id
+     * @return
+     */
+    StoreShip  getStoreShipByStoreId(Integer  id);
+
     /**
      * 增加数据
      * @param  storeShip

+ 6 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/cm/StoreShipServiceImpl.java

@@ -35,6 +35,12 @@ public class StoreShipServiceImpl  implements StoreShipService {
     public  StoreShip  getStoreShipById(Integer  id){
         return  storeShipMapper.getStoreShipById(id);
     }
+
+    @Override
+    public StoreShip getStoreShipByStoreId(Integer id) {
+        return  storeShipMapper.getStoreShipByStoreId(id);
+    }
+
     /**
      * 增加数据
      * @param  storeShip

+ 9 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/StoreShipMapper.java

@@ -22,6 +22,15 @@ public interface StoreShipMapper {
      * @return  storeShip
      */
     StoreShip  getStoreShipById(Integer  id);
+
+    /**
+     * 查询发货信息
+     * @param id
+     * @return
+     */
+    StoreShip  getStoreShipByStoreId(Integer  id);
+
+
     /**
      * 增加数据
      * @param  storeShip

+ 8 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/storeShipMapper.xml

@@ -46,6 +46,14 @@
         from tb_rst_store_ship t
         where t.store_ship_id= #{storeShipId}
     </select>
+
+    <select id="getStoreShipByStoreId" resultMap="BaseResultMap" parameterType="Integer" >
+        select
+        <include refid="Base_List" />
+        from tb_rst_store_ship t
+        where t.store_id= #{storeId}
+    </select>
+
     <insert id="save" parameterType="StoreShip" >
         insert into
         tb_rst_store_ship

+ 50 - 5
watero-rst-web/src/main/java/com/iamberry/rst/controllers/order/AwaitSendController.java

@@ -3,10 +3,12 @@ package com.iamberry.rst.controllers.order;
 import com.alibaba.fastjson.JSONObject;
 import com.iamberry.rst.core.cm.SalesOrder;
 import com.iamberry.rst.core.cm.SalesOrderItem;
+import com.iamberry.rst.core.cm.StoreShip;
 import com.iamberry.rst.core.order.EOrderRequestData;
 import com.iamberry.rst.core.page.PagedResult;
 import com.iamberry.rst.core.tools.LogisticsInfo;
 import com.iamberry.rst.faces.cm.SalesOrderService;
+import com.iamberry.rst.faces.cm.StoreShipService;
 import com.iamberry.rst.faces.order.LogisticsInfoService;
 import com.iamberry.rst.utils.OrderUtils;
 import com.iamberry.rst.utils.StitchAttrUtil;
@@ -44,6 +46,8 @@ public class AwaitSendController {
     @Autowired
     private SalesOrderService salesOrderService;
     @Autowired
+    private StoreShipService storeShipService;
+    @Autowired
     private LogisticsInfoService logisticsInfoService;
 
 
@@ -163,6 +167,15 @@ public class AwaitSendController {
                                    HttpServletRequest request) {
         SalesOrder salesOrderInfo = salesOrderService.getSalesOrderById(salesId);
 
+        StoreShip storeShip = null;
+        if(salesOrderInfo.getSalesStoreId() != null){
+            storeShip = storeShipService.getStoreShipByStoreId(salesOrderInfo.getSalesStoreId());
+        }
+        if(storeShip == null){
+            LOGGER.error("{} 获取电子面单失败,原因:{}", orderId, "该订单没有绑定店铺或店铺没有发货人信息");
+            return ResponseJson.getFAILURE().addResponseKeyValue("error","该订单没有绑定店铺或店铺没有发货人信息");
+        }
+
         /*
          * 组装数据
          */
@@ -218,11 +231,11 @@ public class AwaitSendController {
         eOrderRequestData.setReceiver(Receiver);
         // 发件人信息
         Map<String, Object> Sender = new HashMap<String, Object>();
-        Sender.put("Name", "爱贝源");
-        Sender.put("Tel", "13112639663");
-        Sender.put("ProvinceName", "广东省");
-        Sender.put("CityName", "东莞市");
-        Sender.put("Address", "东莞清溪三中金龙工业区优尼雅电子科技");
+        Sender.put("Name", storeShip.getStoreShipName());
+        Sender.put("Tel", storeShip.getStoreShipTel());
+        Sender.put("ProvinceName", storeShip.getStoreShipProvince());
+        Sender.put("CityName", storeShip.getStoreShipCity());
+        Sender.put("Address", storeShip.getStoreShipAddress());
         eOrderRequestData.setSender(Sender);
         // 产品信息
         List<Map<String, Object>> Commodity = new ArrayList<>();
@@ -355,6 +368,38 @@ public class AwaitSendController {
             rj = ResponseJson.getSUCCESS();
             return rj;
         }
+    }
 
+    /**
+     * 按照条件打单
+     * @param request
+     * @return
+     */
+    @ResponseBody
+    @RequiresPermissions("order:listAwaitSendOrder")
+    @RequestMapping("/getOrder")
+    public ResponseJson getOrder(HttpServletRequest request, SalesOrder salesOrder,
+                                 @RequestParam(value = "pageSize", defaultValue = "10", required = false) Integer pageSize,
+                                 @RequestParam(value = "pageNO", defaultValue = "1", required = false) Integer pageNO,
+                                 @RequestParam(value = "totalNum", defaultValue = "0", required = false) Integer totalNum) {
+        ResponseJson rj = ResponseJson.getFAILURE();
+        salesOrder.setSalesShippingStatus(11);      //salesShippingStatus
+        List<SalesOrder>  salesOrderList = salesOrderService.listSalesOrder(salesOrder);
+        StringBuffer ids = new StringBuffer();
+        for (int i =0 ;i<salesOrderList.size();i++){
+            if(i == 0){
+                ids.append("orderId=" + salesOrderList.get(i).getSalesId());
+            }else{
+                ids.append("&orderId="+salesOrderList.get(i).getSalesId());
+            }
+        }
+        if(ids.length() < 1){
+            return rj;
+        }else{
+            rj = ResponseJson.getSUCCESS();
+            rj.addResponseKeyValue("ids",ids);
+            return rj;
+        }
     }
+
 }

+ 2 - 0
watero-rst-web/src/main/resources/watero-rst-orm.xml

@@ -87,6 +87,7 @@
 		<typeAlias type="com.iamberry.rst.core.cm.PostageAuthority" alias="PostageAuthority"/>
 		<typeAlias type="com.iamberry.rst.core.cm.PostageAuthorityLog" alias="PostageAuthorityLog"/>
 		<typeAlias type="com.iamberry.rst.core.cm.RelationOrder" alias="RelationOrder"/>
+		<typeAlias type="com.iamberry.rst.core.cm.StoreShip" alias="StoreShip"/>
 
 		<typeAlias type="com.iamberry.rst.core.sys.SysConfig" alias="SysConfig"/>
 
@@ -170,6 +171,7 @@
 		<mapper resource="com/iamberry/rst/service/cm/mapper/postageAuthorityMapper.xml"/>
 		<mapper resource="com/iamberry/rst/service/cm/mapper/postageAuthorityLogMapper.xml"/>
 		<mapper resource="com/iamberry/rst/service/cm/mapper/relationOrderMapper.xml"/>
+		<mapper resource="com/iamberry/rst/service/cm/mapper/storeShipMapper.xml"/>
 
 		<mapper resource="com/iamberry/rst/service/address/mapper/addressMapper.xml"/>
 

File diff ditekan karena terlalu besar
+ 22 - 0
watero-rst-web/src/main/webapp/WEB-INF/views/order/salesOrder/list_wait_send_order.ftl


+ 8 - 0
watero-wechat-web/src/main/java/com/iamberry/wechat/handles/pay/ResponseWechatPayHandler.java

@@ -14,6 +14,7 @@ import java.util.UUID;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
+import javax.xml.parsers.DocumentBuilderFactory;
 
 import com.iamberry.wechat.core.entity.rent.ReserveOrder;
 import com.iamberry.wechat.face.reserve.ReserveService;
@@ -282,6 +283,13 @@ public class ResponseWechatPayHandler {
 			InputSource source = new InputSource(read);
 			// 创建一个新的SAXBuilder
 			SAXBuilder sb = new SAXBuilder();
+			// 防止XXE
+			sb.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true);
+			sb.setFeature("http://xml.org/sax/features/external-general-entities", false);
+			sb.setFeature("http://xml.org/sax/features/external-parameter-entities", false);
+			sb.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false);
+
+
 			// 通过输入源构造一个Document
 			Document doc = (Document) sb.build(source);
 			Element root = doc.getRootElement();// 指向根节点