wangxiang 7 år sedan
förälder
incheckning
17da7512a8

+ 12 - 0
iamberry-wechat-interface/src/main/java/com/iamberry/wechat/face/task/WechatTaskService.java

@@ -3,6 +3,7 @@ package com.iamberry.wechat.face.task;
 import java.util.Date;
 import java.util.List;
 
+import com.iamberry.wechat.core.entity.order.Order;
 import com.iamberry.wechat.core.entity.task.WechatTask;
 import com.iamberry.wechat.core.entity.task.WechatTaskLogs;
 
@@ -83,4 +84,15 @@ public interface WechatTaskService {
 	 * @return
 	 */
 	public boolean handlerTask(String openID, int count, Integer taskID, Integer productType) throws Exception;
+
+	/**
+	 * 查詢訂單表
+	 * @return
+	 */
+    public List<Order> selectAiberleShopOrderList();
+
+	/**
+	 * 更新訂單表
+	 */
+	public void updateAiberleShopOrder(Order order);
 }

+ 5 - 0
iamberry-wechat-service/src/main/java/com/iamberry/wechat/service/mapper/MemberMapper.java

@@ -4,6 +4,7 @@ import java.util.List;
 
 import com.iamberry.wechat.core.entity.Page;
 import com.iamberry.wechat.core.entity.member.Member;
+import com.iamberry.wechat.core.entity.order.Order;
 
 /**
  * 会员信息 mapper
@@ -98,4 +99,8 @@ public interface MemberMapper {
 	 * @return
 	 */
 	public List<Integer> selectDownCountByUserId(Integer userId);
+
+    public List<Order> selectAiberleShopOrderList();
+
+	public void updateAiberleShopOrder(Order order);
 }

+ 29 - 0
iamberry-wechat-service/src/main/java/com/iamberry/wechat/service/mapper/memberMapper.xml

@@ -269,4 +269,33 @@
 			) s
 		)
 	</select>
+
+	<!--查詢訂單表-->
+	<resultMap type="com.iamberry.wechat.core.entity.order.Order" id="selectAiberleShopOrderListResult">
+		<result property="salesOrderid" column="sales_orderid" />
+		<result property="salesPostFirm" column="sales_post_firm" />
+		<result property="salesPostNum" column="sales_post_num" />
+	</resultMap>
+	<select id="selectAiberleShopOrderList" resultMap="selectAiberleShopOrderListResult">
+		SELECT
+		o.sales_orderid,
+		o.sales_post_firm,
+		o.sales_post_num
+		FROM
+		tb_iamberry_shop_sales_order o
+		WHERE
+		o.sales_post_num is null
+		AND
+		o.sales_post_firm is null
+	</select>
+
+	<!-- 更新拉取成功的订单 -->
+	<update id="updateAiberleShopOrder" parameterType="com.iamberry.wechat.core.entity.order.Order">
+		update  tb_iamberry_shop_sales_order
+		set
+		sales_post_num= #{salesPostNum},
+		sales_post_firm= #{salesPostFirm}
+		where
+		sales_orderid = #{salesOrderid}
+	</update>
 </mapper> 

+ 13 - 0
iamberry-wechat-service/src/main/java/com/iamberry/wechat/service/member/dao/MemberDao.java

@@ -4,6 +4,8 @@ import java.util.List;
 
 import com.iamberry.wechat.core.entity.Page;
 import com.iamberry.wechat.core.entity.member.Member;
+import com.iamberry.wechat.core.entity.order.Order;
+
 /**
  * 
  * description: 会员信息接口
@@ -100,4 +102,15 @@ public interface MemberDao {
 	 * @return
 	 */
 	public List<Integer> selectDownCountByUserId(Integer userId);
+
+	/**
+	 * 查詢訂單表
+	 * @return
+	 */
+	public List<Order> selectAiberleShopOrderList();
+
+	/**
+	 * 更新訂單表
+	 */
+	public void updateAiberleShopOrder(Order order);
 }

+ 16 - 0
iamberry-wechat-service/src/main/java/com/iamberry/wechat/service/member/dao/imp/MemberDaoImpl.java

@@ -2,6 +2,7 @@ package com.iamberry.wechat.service.member.dao.imp;
 
 import java.util.List;
 
+import com.iamberry.wechat.core.entity.order.Order;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Repository;
 
@@ -116,4 +117,19 @@ public class MemberDaoImpl  implements MemberDao {
 	public List<Integer> selectDownCountByUserId(Integer userId){
 		return memberMapper.selectDownCountByUserId(userId);
 	}
+
+	/**
+	 * 查詢訂單表
+	 * @return
+	 */
+	public List<Order> selectAiberleShopOrderList(){
+		return memberMapper.selectAiberleShopOrderList();
+	}
+
+	/**
+	 * 更新訂單表
+	 */
+	public void updateAiberleShopOrder(Order order){
+		memberMapper.updateAiberleShopOrder(order);
+	}
 }

+ 19 - 13
iamberry-wechat-service/src/main/java/com/iamberry/wechat/service/mq/EfastOrderServiceImpl.java

@@ -171,7 +171,8 @@ public class EfastOrderServiceImpl implements EfastOrderService {
 		List<OrderItem> items = adminOrderService.getShopOrderItemByOrderId(order.getSalesOrderid());
 		
 		// request url
-		String url = NameUtils.getConfig("efast_base_url");
+		//String url = NameUtils.getConfig("efast_base_url");
+		String url = NameUtils.getConfig("rst_efast_base_url");
 		
 		// set Requeset Data
 		Map<String, String> requestData = new HashMap<String, String>();
@@ -198,12 +199,13 @@ public class EfastOrderServiceImpl implements EfastOrderService {
 		/**
 		 * 系统级参数
 		 */
-		requestData.put("app_nick", NameUtils.getConfig("app_nick"));
+		/*requestData.put("app_nick", NameUtils.getConfig("app_nick"));
 		requestData.put("app_key", NameUtils.getConfig("app_key"));
 		requestData.put("app_secret", NameUtils.getConfig("app_secret"));
 		requestData.put("timestamp",DateTimeUtil.format(new Date(),"yyyyMMddHHmmss"));
-		requestData.put("app_act", message.getServiceOtherMessage()); // "efast.trade.new.add"
-		
+		requestData.put("app_act", message.getServiceOtherMessage());*/ // "efast.trade.new.add"
+		requestData.put("app_act", "rst.trade.new.add");
+
 		/**
 		 * 订单基本信息
 		 */
@@ -235,12 +237,12 @@ public class EfastOrderServiceImpl implements EfastOrderService {
 		orderData.put("consignee", order.getSalesAddressName());						// 收货人
 		orderData.put("district_name", addressDesc[2]);									// 区域
 		orderData.put("email", "");														// email
-		orderData.put("goods_amount", (order.getSalesAmount()/100.0));					// 产品总价
+		orderData.put("goods_amount", order.getSalesAmount());					// 产品总价
 		orderData.put("goods_count", items.size());										// 产品数量
 		orderData.put("mobile", order.getSalesAddressTel());							// 手机号码
-		orderData.put("money_paid", (money/100.0));					// 已付款
+		orderData.put("money_paid", money);					// 已付款
 		orderData.put("oid", order.getSalesOrderid());									// 订单号
-		orderData.put("order_amount", (order.getSalesAmount()/100.0));					// 订单金额
+		orderData.put("order_amount", order.getSalesAmount());					// 订单金额
 		
 		/**
 		 * 产品信息
@@ -250,23 +252,27 @@ public class EfastOrderServiceImpl implements EfastOrderService {
 			Map<String, Object> orders1 = new HashMap<String, Object>();
 			orders1.put("goods_name", item.getItemProductName());							// 产品名称
 			orders1.put("goods_number", item.getItemNum());									// 产品数量
-			orders1.put("goods_price", (item.getItemProductPrice()/100.0));					// 产品原价
+			orders1.put("goods_price", item.getItemProductPrice());					// 产品原价
 			orders1.put("outer_sku", item.getProduectRemark());										// 产品SKU
-			orders1.put("payment_ft", (item.getItemProductDiscount()/100.0));												// 产品分摊价
+			orders1.put("payment_ft", item.getItemProductDiscount());												// 产品分摊价
 			maps.add(orders1);
 		}
 		
 		orderData.put("orders", maps);													// 订单产品
 		orderData.put("pay_name", "weixinpay");											// 支付方式
-		orderData.put("pay_time", DateTimeUtil.format(order.getSalesTransactionDate()));// 支付时间
+		if(order.getSalesTransactionDate() != null){
+			orderData.put("pay_time", DateTimeUtil.format(order.getSalesTransactionDate()));// 支付时间
+		}else{
+			orderData.put("pay_time", "");
+		}
 		orderData.put("postscript", order.getSalesUserRemark());						// 买家留言
 		orderData.put("province_name", provinceName);									// 省份
 		orderData.put("sd_id", "001");													// 对应 efast 店铺 id
 		orderData.put("shipping_fee", 0);												// 快递费
 		orderData.put("shipping_name", "yto");											// 快递公司代码
-		orderData.put("tel", "");											// 我司电话
+		orderData.put("tel", order.getSalesAddressTel());											// 我司电话
 		orderData.put("to_buyer", "");													// 商家备注
-		orderData.put("total_amount", (order.getSalesAmount()/100.0));					// 商家备注
+		orderData.put("total_amount", order.getSalesAmount());					// 商家备注
 		orderData.put("user_name", order.getSalesOpenid());							// 买家账户   百胜根据user_name来判断是否有重复,传openId是为了防止重复
 		orderData.put("zipcode", order.getSalesAddressPostnum());						// 邮编
 		
@@ -284,7 +290,7 @@ public class EfastOrderServiceImpl implements EfastOrderService {
 		logger.info("推送订单:" + requestData);
 		
 		try {
-			String result = HttpClient431Util.doGet(requestData, url);
+			String result = HttpClient431Util.doPost(requestData, url);
 			result = StringEscapeUtils.unescapeJava(result); // unicode 编码
 			logger.info("add-推送订单号为:" + order.getSalesOrderid() + "的订单,百胜返回信息:" + result);
 			// parse JSON String to Object

+ 16 - 0
iamberry-wechat-service/src/main/java/com/iamberry/wechat/service/task/WechatTaskServiceImpl.java

@@ -3,6 +3,7 @@ package com.iamberry.wechat.service.task;
 import java.util.Date;
 import java.util.List;
 
+import com.iamberry.wechat.core.entity.order.Order;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -149,4 +150,19 @@ public class WechatTaskServiceImpl implements WechatTaskService {
 		}
 		return true;
 	}
+
+	/**
+	 * 查詢訂單表
+	 * @return
+	 */
+	public List<Order> selectAiberleShopOrderList(){
+		return memberService.selectAiberleShopOrderList();
+	}
+
+	/**
+	 * 更新訂單表
+	 */
+	public void updateAiberleShopOrder(Order order){
+		memberService.updateAiberleShopOrder(order);
+	}
 }

+ 5 - 0
iamberry-wechat-web/src/main/java/com/iamberry/wechat/handles/admin/SystemHandler.java

@@ -7,9 +7,12 @@ import java.util.List;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
 
+import javax.servlet.ServletException;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
+import com.iamberry.wechat.core.entity.mq.MQMessage;
+import com.iamberry.wechat.face.mq.EfastOrderService;
 import com.iamberry.wechat.tools.WeixinUtil;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -38,6 +41,8 @@ import com.iamberry.zk.ZookeeperQueue;
 public class SystemHandler {
 
 
+
+
 	@RequestMapping("/set")
 	public void set(HttpServletResponse response) {
 		try {

+ 64 - 4
iamberry-wechat-web/src/main/java/com/iamberry/wechat/handles/mq/MQTask.java

@@ -3,13 +3,21 @@ package com.iamberry.wechat.handles.mq;
 import java.lang.reflect.Method;
 import java.text.MessageFormat;
 import java.util.Date;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 import java.util.concurrent.locks.Lock;
 import java.util.concurrent.locks.ReentrantLock;
 
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.auth0.jwt.internal.org.apache.commons.lang3.StringEscapeUtils;
 import com.iamberry.app.config.ImberryConfig;
 import com.iamberry.wechat.core.entity.order.NumberBacklogDto;
+import com.iamberry.wechat.core.entity.order.Order;
 import com.iamberry.wechat.face.sendmsg.CodeService;
+import com.iamberry.wechat.tools.HttpClient431Util;
+import com.iamberry.wechat.tools.NameUtils;
+import net.sf.json.JSONObject;
 import org.springframework.beans.factory.InitializingBean;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Lazy;
@@ -124,7 +132,59 @@ public class MQTask implements InitializingBean {
 		}
 		logger.info("------------task invoke success-----------");
 	}
-	
+
+	/**
+	 * 根据订单号拉取物流信息
+	 * @throws Exception
+	 */
+	//@Scheduled(cron = "0 0 */1 * * ?")//每小时执行一次
+	@Scheduled(cron = "0 0/2 * * * ?")//每2分钟执行一次
+	//@Scheduled(cron = "*/10 * * * * ?")
+	public void syncLgisticsInfoByOrderId() throws Exception {
+		System.out.println("---------------- 根据订单号拉取物流信息开始 ---------------");
+		logger.info("---------------- 根据订单号拉取物流信息开始 ---------------");
+		lock.lock();
+		List<Order> orderList = null;
+		String url = NameUtils.getConfig("rst_efast_base_url");
+		String sdId = NameUtils.getConfig("sd_id");
+		Map<String, Object> orderData = new HashMap<String, Object>();
+		Map<String, String> requestData = new HashMap<String, String>();
+		com.fasterxml.jackson.databind.ObjectMapper mapper = new ObjectMapper();
+		try {
+			logger.info("---------------- selectProbationShopOrderList begin ---------------");
+			orderList = wechatTaskService.selectAiberleShopOrderList();
+			if(orderList != null && orderList.size() > 0){
+				for (Order order:orderList) {
+					String salesOrderid = order.getSalesOrderid();
+					orderData.put("orderId", salesOrderid);
+					orderData.put("sd_id", sdId);
+					requestData.put("app_act", "rst.trade.logistics.get");
+					String orderDataStr = mapper.writeValueAsString(orderData);
+					requestData.put("info", orderDataStr);
+					String result = HttpClient431Util.doPost(requestData, url);
+					result = StringEscapeUtils.unescapeJava(result); // unicode 编码
+					logger.info("拉取订单号为:" + order.getSalesOrderid() + "的订单,rst返回信息:" + result);
+					System.out.println("拉取订单号为:" + order.getSalesOrderid() + "的订单,rst返回信息:" + result);
+					JSONObject jsonObject = JSONObject.fromObject(result);
+					String msg = jsonObject.getString("msg");
+					logger.info("---------"+msg+"---------");
+					if ("success".equals(msg)) {
+						String salesPostFirm = jsonObject.getString("salesPostFirm");
+						String salesPostNum = jsonObject.getString("salesPostNum");
+						order.setSalesPostFirm(salesPostFirm);
+						order.setSalesPostNum(salesPostNum);
+						wechatTaskService.updateAiberleShopOrder(order);
+					}
+				}
+			}
+		}catch (Exception e){
+			logger.error("拉取订单异常",e.getMessage());
+		}finally {
+			lock.unlock();
+		}
+		logger.info("---------------- 根据订单号拉取物流信息结束 ---------------");
+	}
+
 	/**
 	 * 订阅消息
 	 */
@@ -168,9 +228,9 @@ public class MQTask implements InitializingBean {
 			for (WechatTask wechatTask : tasks) {
 				List<TaskModel> models = rebackServices.getByDate(wechatTask.getTaskProductType(), oldMonthFirstDay, oldMonthLastDay, wechatTask.getTaskSalesNum());
 				if (models == null || models.size() == 0) {
-					logger.info("暂时没有人完成上一个月的任务" + wechatTask.getTaskId() + "奖励...");
-					continue;
-				}
+                    logger.info("暂时没有人完成上一个月的任务" + wechatTask.getTaskId() + "奖励...");
+                    continue;
+                }
 				// 达到的用户是否已经领取奖励
 				for (TaskModel taskModel : models) {
 					WechatTaskLogs logs = new WechatTaskLogs();

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

@@ -54,7 +54,7 @@
 	<bean id="loadResultInfo" class="com.iamberry.wechat.tools.loadResultUtil" lazy-init="false"></bean>
     
 	<!-- 开启注解启动定时器 -->
-    <!--<task:annotation-driven/>-->
+    <task:annotation-driven/>
 
 	<!-- spring监控 -->
 	<bean id="druid-stat-interceptor" class="com.alibaba.druid.support.spring.stat.DruidStatInterceptor">

Filskillnaden har hållts tillbaka eftersom den är för stor
+ 3 - 0
iamberry-wechat-web/src/main/resources/platform.properties