wangxiaoming 7 gadi atpakaļ
vecāks
revīzija
6a6a1f08e6

+ 7 - 0
tooth-wechat-interface/src/main/java/com/iamberry/wechat/face/agentInfo/AgentPurchaseOrderService.java

@@ -25,6 +25,13 @@ public interface AgentPurchaseOrderService {
      */
     List<AgentOrderItem> listAgentOrderItemByOrderId(String orderId);
 
+    /**
+     *  修改采购订单
+     * @param agentOrder
+     * @return
+     */
+    Integer updateAgentPurchaseOrder(AgentOrder agentOrder);
+
 }
 
 

+ 8 - 1
tooth-wechat-service/src/main/java/com/iamberry/wechat/service/agentInfo/AgentPurchaseOrderServiceImpl.java

@@ -81,6 +81,7 @@ public class AgentPurchaseOrderServiceImpl implements AgentPurchaseOrderService
                 return map;
             }
             itemSummary = agentOrderItem.getItemNum() * discount;   //计算订单项小结
+            agentOrderItem.setItemTotal(itemSummary);//订单项小结
             amount += itemSummary;  //计算订单总金额
         }
         agentOrder.setAgentAmount(amount);  //订单金额
@@ -90,7 +91,6 @@ public class AgentPurchaseOrderServiceImpl implements AgentPurchaseOrderService
             map.put("msg","生成订单失败!");
             return map;
         }
-
         flag = agentPurchaseOrderMapper.addAgentOrderItemList(agentOrderItemList);
 
         map.put("status",200);
@@ -105,4 +105,11 @@ public class AgentPurchaseOrderServiceImpl implements AgentPurchaseOrderService
         agentOrderItem.setAgentOrderid(orderId);
         return agentPurchaseOrderMapper.listAgentOrderItem(agentOrderItem);
     }
+
+    @Override
+    public Integer updateAgentPurchaseOrder(AgentOrder agentOrder) {
+        return agentPurchaseOrderMapper.updateAgentPurchaseOrder(agentOrder);
+    }
+
+
 }

+ 7 - 0
tooth-wechat-service/src/main/java/com/iamberry/wechat/service/mapper/AgentPurchaseOrderMapper.java

@@ -31,4 +31,11 @@ public interface AgentPurchaseOrderMapper {
      */
     List<AgentOrderItem> listAgentOrderItem(AgentOrderItem agentOrderItem);
 
+    /**
+     *  修改采购订单
+     * @param agentOrder
+     * @return
+     */
+    Integer updateAgentPurchaseOrder(AgentOrder agentOrder);
+
 }

+ 44 - 0
tooth-wechat-service/src/main/java/com/iamberry/wechat/service/mapper/agentPurchaseOrderMapper.xml

@@ -48,6 +48,50 @@
             tb_iamberry_agent_order_item
         WHERE
             agent_orderid = #{agentOrderid}
+        ORDER BY item_id DESC
     </select>
 
+    <update id="updateAgentPurchaseOrder" parameterType="AgentOrder" >
+    update
+        tb_iamberry_agent_order
+    <set>
+        <if test="agentPostNum !=null and agentPostNum !=''">
+            agent_post_num = #{agentPostNum},
+        </if>
+        <if test="agentPostFirm !=null and agentPostFirm !=''">
+            agent_post_firm = #{agentPostFirm},
+        </if>
+        <if test="agentStatus !=null and agentStatus !=''">
+            agent_status = #{agentStatus},
+        </if>
+        <if test="agentSendDate !=null and agentSendDate !=''">
+            agent_send_date = #{agentSendDate},
+        </if>
+        <if test="agentAddressInfo !=null and agentAddressInfo !=''">
+            agent_address_info = #{agentAddressInfo},
+        </if>
+        <if test="agentAddressPostnum !=null and agentAddressPostnum !=''">
+            agent_address_postnum = #{agentAddressPostnum},
+        </if>
+        <if test="agentAddressTel !=null and agentAddressTel !=''">
+            agent_address_tel = #{agentAddressTel},
+        </if>
+        <if test="agentAddressName !=null and agentAddressName !=''">
+            agent_address_name = #{agentAddressName},
+        </if>
+        <if test="agentAdminRemark !=null and agentAdminRemark !=''">
+            agent_admin_remark = #{agentAdminRemark},
+        </if>
+        <if test="agentTransactionId !=null and agentTransactionId !=''">
+            agent_transaction_id = #{agentTransactionId},
+        </if>
+        <if test="agentTransactionDate !=null and agentTransactionDate !=''">
+            agent_transaction_date = #{agentTransactionDate},
+        </if>
+    </set>
+    where
+       agent_orderid = #{agentOrderid}
+  </update>
+
+
 </mapper>

+ 12 - 9
tooth-wechat-web/src/main/java/com/iamberry/wechat/handles/agentInfo/AgentOrderHandler.java

@@ -87,7 +87,7 @@ public class AgentOrderHandler {
     }
 
     /**
-     * 支付,调用方法
+     * 支付,调用方法
      *
      * @param request
      * @return
@@ -108,6 +108,7 @@ public class AgentOrderHandler {
 //            return msg;
 //        }
 //        String openId = member.getUserOpenid();
+
         String openId = "o-icasz5a10CfmJ_s-hvW-Ltqwtc";
         Integer codeId = 101;
 
@@ -133,6 +134,7 @@ public class AgentOrderHandler {
             return msg;
         }
         agentOrder.setAgentOrderid(OrderNOUtil.createOrderCode(codeId));
+        agentOrder.setAgentId(agentTooth.getAgentId());
         Map<String, Object> map = agentPurchaseOrderService.addAgentOrder(agentOrder, agentOrderItemList);
         if (map.get("status") == null || map.get("status") == 400) {
             msg.setMessage(map.get("msg").toString());
@@ -141,13 +143,13 @@ public class AgentOrderHandler {
         //---------------生成订单 --- end -----------------------
 
         //支付
-        ResultMsg resultMsg = this.pay((AgentOrder) map.get("agentOrder"),openId);
+        ResultMsg resultMsg = this.pay((AgentOrder) map.get("agentOrder"), openId);
 
-        if (resultMsg.getResultCode() == ResultInfo.SUCCESSCODE){
+        if (resultMsg.getResultCode() == ResultInfo.SUCCESSCODE) {
             msg.setResultCode(ResultInfo.SUCCESSCODE);
             msg.setMessage(NameUtils.getConfig("SUCCESSINFO"));
             msg.setStatus(true);
-        }else{
+        } else {
             msg.setResultCode(ResultInfo.ERRORCODE);
             msg.setMessage(NameUtils.getConfig("ERRORINFO"));
             msg.setStatus(true);
@@ -158,11 +160,12 @@ public class AgentOrderHandler {
 
     /**
      * 代理商订单支付调用
-     * @param agentOrder  订单
+     *
+     * @param agentOrder 订单
      * @param openId
      * @return
      */
-    private ResultMsg  pay(AgentOrder agentOrder,String openId){
+    private ResultMsg pay(AgentOrder agentOrder, String openId) {
         boolean flag = false;
         ResultMsg msg = new ResultMsg();
 
@@ -170,7 +173,7 @@ public class AgentOrderHandler {
         dto.setSuccess(false);
         //查询订单项
         List<AgentOrderItem> agentOrderList = agentPurchaseOrderService.listAgentOrderItemByOrderId(agentOrder.getAgentOrderid());
-        if(agentOrderList == null || agentOrderList.size() < 1){
+        if (agentOrderList == null || agentOrderList.size() < 1) {
             msg.setResultCode(ResultInfo.ERRORCODE);
             msg.setMessage("查询订单报错");
             msg.setStatus(false);
@@ -203,12 +206,12 @@ public class AgentOrderHandler {
             return msg;
         }
 
-        if(flag){
+        if (flag) {
             msg.setResultCode(ResultInfo.SUCCESSCODE);
             msg.setMessage(NameUtils.getConfig("SUCCESSINFO"));
             msg.setData(dto);
             msg.setStatus(true);
-        }else {
+        } else {
             msg.setResultCode(ResultInfo.ERRORCODE);
             msg.setMessage(NameUtils.getConfig("ERRORINFO"));
             msg.setData(dto);

+ 118 - 33
tooth-wechat-web/src/main/java/com/iamberry/wechat/handles/pay/ResponseWechatPayHandler.java

@@ -1,34 +1,10 @@
 package com.iamberry.wechat.handles.pay;
 
-import java.io.BufferedOutputStream;
-import java.io.IOException;
-import java.io.StringReader;
-import java.net.URLDecoder;
-import java.text.MessageFormat;
-import java.text.SimpleDateFormat;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Random;
-import java.util.UUID;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-import com.iamberry.wechat.service.ImberryConfig;
-import org.apache.commons.lang3.StringUtils;
-import org.jdom.Document;
-import org.jdom.Element;
-import org.jdom.input.SAXBuilder;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.xml.sax.InputSource;
-
 import com.iamberry.app.tool.log.RatFWLogger;
 import com.iamberry.wechat.core.entity.AdminUtils;
+import com.iamberry.wechat.core.entity.OrderUtil;
 import com.iamberry.wechat.core.entity.admin.ShopSystemRule;
+import com.iamberry.wechat.core.entity.agentInfo.AgentOrder;
 import com.iamberry.wechat.core.entity.coupon.CouponItem;
 import com.iamberry.wechat.core.entity.giftCard.AgentInfo;
 import com.iamberry.wechat.core.entity.giftCard.AgentMachine;
@@ -46,6 +22,7 @@ import com.iamberry.wechat.core.entity.qrcode.QrcodeResult;
 import com.iamberry.wechat.core.entity.rent.RentApply;
 import com.iamberry.wechat.core.entity.wx.WxPayResult;
 import com.iamberry.wechat.face.admin.SystemService;
+import com.iamberry.wechat.face.agentInfo.AgentPurchaseOrderService;
 import com.iamberry.wechat.face.cart.CartService;
 import com.iamberry.wechat.face.coupon.CouponItemService;
 import com.iamberry.wechat.face.giftCard.AgentMachineService;
@@ -61,12 +38,27 @@ import com.iamberry.wechat.face.order.CodeService;
 import com.iamberry.wechat.face.order.ProbationShopOrderService;
 import com.iamberry.wechat.face.qrcode.TemporaryQrcodeService;
 import com.iamberry.wechat.handles.mq.MQServiceProxy;
-import com.iamberry.wechat.tools.DateTimeUtil;
-import com.iamberry.wechat.tools.NameUtils;
-import com.iamberry.wechat.tools.ResultInfo;
-import com.iamberry.wechat.tools.StaticInfo;
-import com.iamberry.wechat.tools.StrUtils;
+import com.iamberry.wechat.service.ImberryConfig;
+import com.iamberry.wechat.tools.*;
 import com.iamberry.wechat.utils.SendMessageUtil;
+import org.apache.commons.lang3.StringUtils;
+import org.jdom.Document;
+import org.jdom.Element;
+import org.jdom.input.SAXBuilder;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.xml.sax.InputSource;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.BufferedOutputStream;
+import java.io.IOException;
+import java.io.StringReader;
+import java.net.URLDecoder;
+import java.text.MessageFormat;
+import java.text.SimpleDateFormat;
+import java.util.*;
 
 /**
  * @author 何秀刚
@@ -124,6 +116,8 @@ public class ResponseWechatPayHandler {
 	private SystemService systemService;
 	@Autowired
 	private EfastOrderService efastOrderService;
+	@Autowired
+	private AgentPurchaseOrderService agentPurchaseOrderService;
 
 	/**
 	 * 销售订单支付回调方法
@@ -241,7 +235,7 @@ public class ResponseWechatPayHandler {
 						message.setServiceHandlerMethodName("addOrderInfoToEfast");
 						mQservice.insertMQMessage(message);
 					} catch (Exception e) {
-//System.out.println("===========pay 201  插入返利到百胜失败==============");		
+//System.out.println("===========pay 201  插入返利到百胜失败==============");
 					}
 //System.out.println("===========pay 201  插入返利到百胜完成==============");		
 					try {	//修改用户购买记录为已购买
@@ -796,7 +790,98 @@ public class ResponseWechatPayHandler {
 			
 		}
 	}
-	
+
+	/**
+	 * 采购商品订单回调
+	 * @param request
+	 * @param response
+	 */
+	@RequestMapping("/agentPurchaseOrderPayBack")
+	public synchronized void agentPurchaseOrderPayBack(HttpServletRequest request, HttpServletResponse response)throws IOException {
+		String inputLine;
+		String notityXml = "";
+		String resXml = "<xml><return_code><![CDATA[SUCCESS]]></return_code><return_msg><![CDATA[OK]]></return_msg></xml>";
+		try {
+			//获取XML参数
+			while ((inputLine = request.getReader().readLine()) != null) {
+				notityXml += inputLine;
+			}
+			request.getReader().close();
+			//解析XML格式的数据
+			Map<String, String> m = parseXmlToList2(notityXml);
+			WxPayResult wpr = new WxPayResult();
+			wpr=setWxPayResultObj(wpr,m);
+			//判断
+			if("SUCCESS".equalsIgnoreCase(wpr.getResultCode())){
+				//resXml:返回给微信服务器的数据
+				resXml = "<xml><return_code><![CDATA[SUCCESS]]></return_code><return_msg><![CDATA[OK]]></return_msg></xml>";
+				String orderIdMD5 = StaticInfo.orderIdMD5.decrypt(wpr.getAttach());
+//System.out.println("===========pay 117==============");
+
+				if (orderIdMD5.equals(wpr.getOutTradeNo())) {
+					Date nowDate = new Date();
+					// 组装数据
+					AgentOrder agentOrder = new AgentOrder();
+					agentOrder.setAgentStatus(OrderUtil.ORDERSTAUTS_PAID); // 已支付
+					agentOrder.setAgentOrderid(orderIdMD5);				//订单id
+					agentOrder.setAgentTransactionId(wpr.getTransactionId()); // 微信支付ID
+					agentOrder.setAgentTransactionDate(new Date()); // 微信支付时间
+					//order.setSalesOpenid(wpr.getOpenid());
+
+					// 修改订单状态
+					int count = agentPurchaseOrderService.updateAgentPurchaseOrder(agentOrder);
+
+					if (count < 1) {
+						resXml = "<xml><return_code><![CDATA[FAIL]]></return_code><return_msg><![CDATA[报文有误]]></return_msg></xml>";
+					}
+//System.out.println("===========pay 168 快速插入=============="+count);
+					// 给订单的回调修改状态
+					try {
+						MQMessage message = new MQMessage();
+						message.setServiceToMessage(orderIdMD5);
+						message.setServiceOtherMessage(wpr.getTransactionId());
+						message.setServiceIsSend(2);			// 没有推送的信息
+						message.setServiceStatus(1); 			// 推送成功
+						message.setServiceHandlerObjectName("cartServiceImpl");
+						message.setServiceHandlerMethodName("supdateStateByOrderId");
+						message.setServiceType(1);
+						mQservice.insertMQMessage(message);
+					} catch (Exception e) {
+						// TODO: handle exception
+					}
+
+//System.out.println("===========pay 201  插入返利到百胜=============="+count);
+					// 给百胜推送信息
+					try {
+						MQMessage message = new MQMessage();
+						message.setServiceToMessage(orderIdMD5);
+						message.setServiceOtherMessage("efast.trade.new.add");
+						message.setServiceIsSend(2);			// 没有推送的信息
+						message.setServiceStatus(1); 			// 推送成功
+						message.setServiceType(1); 				// 添加订单信息
+						message.setServiceHandlerObjectName("efastOrderServiceImpl");
+						message.setServiceHandlerMethodName("addAgentOrderToEfast");
+						mQservice.insertMQMessage(message);
+					} catch (Exception e) {
+//System.out.println("===========pay 201  插入返利到百胜失败==============");
+					}
+//System.out.println("===========pay 201  插入返利到百胜完成==============");
+				} else {
+					resXml = "<xml><return_code><![CDATA[FAIL]]></return_code><return_msg><![CDATA[报文有误]]></return_msg></xml>";
+					ratFWLogger.error(this, "订单:" + orderIdMD5 + "支付成功,但是没有通过校验!");
+				}
+			}else{
+				resXml = "<xml><return_code><![CDATA[FAIL]]></return_code><return_msg><![CDATA[报文为空]]></return_msg></xml>";
+			}
+			BufferedOutputStream out = new BufferedOutputStream(response.getOutputStream());
+			out.write(resXml.getBytes());
+			out.flush();
+			out.close();
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+	}
+
 	/**
 	 * 随机生成一个密码
 	 * @param len 密码总长度

+ 3 - 0
tooth-wechat-web/src/main/resources/iamberry-wechat-service-mybatis.xml

@@ -223,6 +223,8 @@
 		<!-- 代理商信息 -->
 		<typeAlias type="com.iamberry.wechat.core.entity.agentInfo.AgentConfig" alias="AgentConfig"/>
 		<typeAlias type="com.iamberry.wechat.core.entity.agentInfo.AgentTooth" alias="AgentTooth"/>
+		<typeAlias type="com.iamberry.wechat.core.entity.agentInfo.AgentOrder" alias="AgentOrder"/>
+		<typeAlias type="com.iamberry.wechat.core.entity.agentInfo.AgentOrderItem" alias="AgentOrderItem"/>
 
 		<!-- 销售统计 -->
 		<typeAlias type="com.iamberry.wechat.core.entity.statictics.StatisticsSalesOrder" alias="StatisticsSalesOrder"/>
@@ -303,6 +305,7 @@
 		<mapper resource="com/iamberry/wechat/service/mapper/giftCardPayCodeMapper.xml"/>
 		<!-- 代理商信息 -->
 		<mapper resource="com/iamberry/wechat/service/mapper/agentInfoMapper.xml"/>
+		<mapper resource="com/iamberry/wechat/service/mapper/agentPurchaseOrderMapper.xml"/>
 		<!-- 水机租赁 -->
 		<!--<mapper resource="com/iamberry/rent/service/order/mapper/rentOrderMapper.xml"/>
 		<mapper resource="com/iamberry/rent/service/machine/mapper/machineMapper.xml"/>	

+ 1 - 1
tooth-wechat-web/src/main/resources/platform.properties

@@ -18,7 +18,7 @@ WECHAT_BACK_URL=http://test.iamberry.com/tooth/wechatBack
 # order details url
 WECHAT_ORDER_BACK=http://test.iamberry.com/tooth/callback/orderPayBack
 # order details url
-WECHAT_AGENT_PURCHASE_ORDER_BACK=http://test.iamberry.com/tooth/callback/agentOrderPayBack
+WECHAT_AGENT_PURCHASE_ORDER_BACK=http://test.iamberry.com/tooth/callback/agentPurchaseOrderPayBack
 #rentOrder url
 WECHAT_RENT_ORDER_BACK = http://test.iamberry.com/tooth/callback/rentOrderPayBack
 # \u7EED\u8D39