Parcourir la source

添加了查询物流和收货的方法

liuzhiwei il y a 7 ans
Parent
commit
7fa79885af
22 fichiers modifiés avec 962 ajouts et 23 suppressions
  1. 60 2
      iamberry-common-core/src/main/java/com/iamberry/wechat/core/entity/cart/ShopOrderItemDto.java
  2. 12 3
      iamberry-common-core/src/main/java/com/iamberry/wechat/core/entity/order/Order.java
  3. 22 0
      iamberry-common-core/src/main/java/com/iamberry/wechat/core/entity/order/OrderItem.java
  4. 1 1
      iamberry-common-tool/src/main/resources/iamberry-app-service-config.properties
  5. 1 0
      iamberry-common-web/src/main/java/com/iamberry/common/web/SimpleCORSFilter.java
  6. 14 0
      iamberry-wechat-interface/src/main/java/com/iamberry/wechat/face/cart/CartService.java
  7. 10 0
      iamberry-wechat-service/src/main/java/com/iamberry/wechat/service/cart/CartServiceImpl.java
  8. 14 0
      iamberry-wechat-service/src/main/java/com/iamberry/wechat/service/cart/dao/CartDao.java
  9. 10 0
      iamberry-wechat-service/src/main/java/com/iamberry/wechat/service/cart/dao/impl/CartDaoImpl.java
  10. 14 0
      iamberry-wechat-service/src/main/java/com/iamberry/wechat/service/mapper/CartMapper.java
  11. 42 1
      iamberry-wechat-service/src/main/java/com/iamberry/wechat/service/mapper/cartMapper.xml
  12. 2 2
      iamberry-wechat-service/src/main/java/com/iamberry/wechat/service/mapper/orderMapper.xml
  13. 1 1
      iamberry-wechat-service/src/main/java/com/iamberry/wechat/service/warranty/WarrantyServiceImpl.java
  14. 194 6
      iamberry-wechat-web/src/main/java/com/iamberry/wechat/handles/cart/CartHandlers.java
  15. 62 0
      iamberry-wechat-web/src/main/java/com/iamberry/wechat/handles/logistics/LogisticsHandler.java
  16. 1 0
      iamberry-wechat-web/src/main/java/com/iamberry/wechat/handles/order/OrderHandler.java
  17. 2 2
      iamberry-wechat-web/src/main/java/com/iamberry/wechat/handles/warranty/WarrantyCardHandler.java
  18. 205 0
      iamberry-wechat-web/src/main/java/com/iamberry/wechat/utils/KuaiDi100.java
  19. 0 4
      iamberry-wechat-web/src/main/resources/iamberry-wechat-web-ioc.xml
  20. 288 0
      iamberry-wechat-web/src/main/webapp/view/view_logistics.html
  21. 1 1
      watero-wechat-web/src/main/webapp/WEB-INF/views/wechat/clearing.html
  22. 6 0
      watero-wechat-web/src/main/webapp/common/shop/js/page/main.js

+ 60 - 2
iamberry-common-core/src/main/java/com/iamberry/wechat/core/entity/cart/ShopOrderItemDto.java

@@ -1,6 +1,9 @@
 package com.iamberry.wechat.core.entity.cart;
 
+import com.iamberry.wechat.core.entity.product.SalesUserGift;
+
 import java.io.Serializable;
+import java.util.List;
 
 /**
  * 
@@ -36,8 +39,63 @@ public class ShopOrderItemDto implements Serializable{
 	
 	private Integer productColor;			//产品颜色		1:红色	2:橙色	3:黄色	4:绿色
 	//			5:青色	6:蓝色	7:紫色	8:白色
-	
-	
+
+
+	private Integer itemColorId;			//产品颜色id
+	private String itemProductColor;		//产品颜色
+	private Integer itemProductChildType;	//产品子类型
+	private Integer itemIsSource;			//产品来源
+	private Integer itemGiftSource;			//产品id,赠品才有,标识是哪个产品的赠品
+
+	private List<SalesUserGift> salesUserGiftList; //赠品集合
+
+	public Integer getItemColorId() {
+		return itemColorId;
+	}
+
+	public void setItemColorId(Integer itemColorId) {
+		this.itemColorId = itemColorId;
+	}
+
+	public String getItemProductColor() {
+		return itemProductColor;
+	}
+
+	public void setItemProductColor(String itemProductColor) {
+		this.itemProductColor = itemProductColor;
+	}
+
+	public Integer getItemProductChildType() {
+		return itemProductChildType;
+	}
+
+	public void setItemProductChildType(Integer itemProductChildType) {
+		this.itemProductChildType = itemProductChildType;
+	}
+
+	public Integer getItemIsSource() {
+		return itemIsSource;
+	}
+
+	public void setItemIsSource(Integer itemIsSource) {
+		this.itemIsSource = itemIsSource;
+	}
+
+	public Integer getItemGiftSource() {
+		return itemGiftSource;
+	}
+
+	public void setItemGiftSource(Integer itemGiftSource) {
+		this.itemGiftSource = itemGiftSource;
+	}
+
+	public List<SalesUserGift> getSalesUserGiftList() {
+		return salesUserGiftList;
+	}
+
+	public void setSalesUserGiftList(List<SalesUserGift> salesUserGiftList) {
+		this.salesUserGiftList = salesUserGiftList;
+	}
 
 	public String getProductStatus() {
 		return productStatus;

+ 12 - 3
iamberry-common-core/src/main/java/com/iamberry/wechat/core/entity/order/Order.java

@@ -70,9 +70,18 @@ public class Order implements java.io.Serializable{
 	private Integer itemSum;			//商品总数,定时任务按订单商品数量总数量奖励积分和金额
 	
 	private Integer oldStatus;		//订单未改之前的状态
-	
-	
-	
+
+	private Integer salesSendWarn;	//发货提醒次数
+
+
+	public Integer getSalesSendWarn() {
+		return salesSendWarn;
+	}
+
+	public void setSalesSendWarn(Integer salesSendWarn) {
+		this.salesSendWarn = salesSendWarn;
+	}
+
 	public Integer getOldStatus() {
 		return oldStatus;
 	}

+ 22 - 0
iamberry-common-core/src/main/java/com/iamberry/wechat/core/entity/order/OrderItem.java

@@ -1,6 +1,9 @@
 package com.iamberry.wechat.core.entity.order;
 
+import com.iamberry.wechat.core.entity.product.SalesUserGift;
+
 import java.io.Serializable;
+import java.util.List;
 
 /**
  * @author 何秀刚
@@ -46,6 +49,25 @@ public class OrderItem implements Serializable {
 	private String itemProductColor;		//产品颜色
 	private Integer itemProductChildType;	//产品子类型
 	private Integer itemIsSource;			//产品来源
+	private Integer itemGiftSource;			//产品id,赠品才有,标识是哪个产品的赠品
+
+	private List<SalesUserGift> salesUserGiftList; //赠品集合
+
+	public Integer getItemGiftSource() {
+		return itemGiftSource;
+	}
+
+	public void setItemGiftSource(Integer itemGiftSource) {
+		this.itemGiftSource = itemGiftSource;
+	}
+
+	public List<SalesUserGift> getSalesUserGiftList() {
+		return salesUserGiftList;
+	}
+
+	public void setSalesUserGiftList(List<SalesUserGift> salesUserGiftList) {
+		this.salesUserGiftList = salesUserGiftList;
+	}
 
 	public Integer getItemColorId() {
 		return itemColorId;

+ 1 - 1
iamberry-common-tool/src/main/resources/iamberry-app-service-config.properties

@@ -12,5 +12,5 @@ appkey=cef2f16aa36424f2a6d4ca60
 cdnUrl=http://cms.iamberry.com/cdn
 base_url=http://app.iamberry.com/imberry
 INTER_SMS_URL=https://sms.yunpian.com/v2/sms/single_send.json
-INTER_SMS_TEXT=\u3010\u6BD4\u6BD4\u840C\u3011\u60A8\u7684\u9A8C\u8BC1\u7801\u662F\uFF1A{0}\uFF0C3\u5206\u949F\u5185\u6709\u6548\u3002\u5982\u975E\u672C\u4EBA\u64CD\u4F5C\uFF0C\u8BF7\u5FFD\u7565\u672C\u77ED\u4FE1\u3002
+INTER_SMS_TEXT=\u60A8\u7684\u9A8C\u8BC1\u7801\u662F{0}\uFF0C3\u5206\u949F\u5185\u6709\u6548\u3002\u5982\u975E\u672C\u4EBA\u64CD\u4F5C\uFF0C\u8BF7\u5FFD\u7565\u672C\u77ED\u4FE1
 INTER_SMS_KEY=2d3cc4afa42ec747b43a09ab89151133

+ 1 - 0
iamberry-common-web/src/main/java/com/iamberry/common/web/SimpleCORSFilter.java

@@ -46,6 +46,7 @@ public class SimpleCORSFilter implements Filter {
 			response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");
 			response.setHeader("Access-Control-Max-Age", "3600");
 			response.setHeader("Access-Control-Allow-Headers", "x-requested-with");
+			response.setHeader("Access-Control-Allow-Credentials", "true");
         }
         filterChain.doFilter(servletRequest, servletResponse);
     }

+ 14 - 0
iamberry-wechat-interface/src/main/java/com/iamberry/wechat/face/cart/CartService.java

@@ -159,4 +159,18 @@ public interface CartService {
 	 * @return
 	 */
 	List<SalesUserGift> listGift(Integer cartColorId);
+
+	/**
+	 * 查询赠品集合
+	 * @param gift
+	 * @return
+	 */
+	List<SalesUserGift> listSelectGift(SalesUserGift gift);
+
+	/**
+	 * 修改发货提醒次数
+	 * @param order
+	 * @return
+	 */
+	Integer updateSendWarnNum(Order order);
 }

+ 10 - 0
iamberry-wechat-service/src/main/java/com/iamberry/wechat/service/cart/CartServiceImpl.java

@@ -276,4 +276,14 @@ public class CartServiceImpl implements CartService {
 	public List<SalesUserGift> listGift(Integer cartColorId) {
 		return cartDao.listGift(cartColorId);
 	}
+
+	@Override
+	public List<SalesUserGift> listSelectGift(SalesUserGift gift) {
+		return cartDao.listSelectGift(gift);
+	}
+
+	@Override
+	public Integer updateSendWarnNum(Order order) {
+		return cartDao.updateSendWarnNum(order);
+	}
 }

+ 14 - 0
iamberry-wechat-service/src/main/java/com/iamberry/wechat/service/cart/dao/CartDao.java

@@ -160,4 +160,18 @@ public interface CartDao {
 	 * @return
 	 */
 	List<SalesUserGift> listGift(Integer cartColorId);
+
+	/**
+	 * 查询赠品集合
+	 * @param gift
+	 * @return
+	 */
+	List<SalesUserGift> listSelectGift(SalesUserGift gift);
+
+	/**
+	 * 修改发货提醒次数
+	 * @param order
+	 * @return
+	 */
+	Integer updateSendWarnNum(Order order);
 }

+ 10 - 0
iamberry-wechat-service/src/main/java/com/iamberry/wechat/service/cart/dao/impl/CartDaoImpl.java

@@ -213,4 +213,14 @@ public class CartDaoImpl implements CartDao{
 	public List<SalesUserGift> listGift(Integer cartColorId) {
 		return cartMapper.listGift(cartColorId);
 	}
+
+	@Override
+	public List<SalesUserGift> listSelectGift(SalesUserGift gift) {
+		return cartMapper.listSelectGift(gift);
+	}
+
+	@Override
+	public Integer updateSendWarnNum(Order order) {
+		return cartMapper.updateSendWarnNum(order);
+	}
 }

+ 14 - 0
iamberry-wechat-service/src/main/java/com/iamberry/wechat/service/mapper/CartMapper.java

@@ -107,4 +107,18 @@ public interface CartMapper {
 	 * @return
 	 */
 	List<SalesUserGift> listGift(Integer cartColorId);
+
+	/**
+	 * 查询赠品集合
+	 * @param gift
+	 * @return
+	 */
+	List<SalesUserGift> listSelectGift(SalesUserGift gift);
+
+	/**
+	 * 修改发货提醒次数
+	 * @param order
+	 * @return
+	 */
+	Integer updateSendWarnNum(Order order);
 }

+ 42 - 1
iamberry-wechat-service/src/main/java/com/iamberry/wechat/service/mapper/cartMapper.xml

@@ -67,6 +67,32 @@ PUBLIC
 		ug.user_color_id = #{cartColorId}
 	</select>
 
+	<!-- 批量查询赠送礼品信息 -->
+	<select id="listSelectGift" parameterType="SalesUserGift" resultType="SalesUserGift">
+		SELECT
+			ug.user_id userId,
+			ug.user_product_id userProductId,
+			ug.user_color_id userColorId,
+			ug.user_gift_id userGiftId,
+			ug.user_gift_color userGiftColor,
+			ug.user_gift_count userGiftCount,
+			ug.user_status userStatus,
+			ug.user_create_time userCreateTime,
+			pi.product_name giftName,
+			pc.color_name giftColorName,
+			pi.product_child_type giftChildType,
+			pc.color_product_pic giftProductPic
+		FROM
+			tb_iamberry_sales_user_gift ug
+		LEFT JOIN tb_iamberry_product_color pc on pc.color_id = ug.user_gift_color
+		LEFT JOIN tb_iamberry_product_info pi on pi.product_id = pc.user_gift_id
+		<where>
+		  	<if test="userStatus != null and userStatus != ''">
+				ug.user_status = #{userStatus}
+			</if>
+		</where>
+	</select>
+
 
 	<select id="getCartNumByCartOpenId" parameterType="String" resultType="Integer">
 		SELECT 
@@ -234,7 +260,8 @@ PUBLIC
 		SELECT I.ITEM_ID itemId, I.ITEM_SALES_ORDERID itemSalesOrderid, I.ITEM_PRODUCT_NAME itemProductName, 
 			I.ITEM_PRODUCT_DISCOUNT itemProductDiscount, I.ITEM_PRODUCT_PRICE itemProductPrice,
 			I.ITEM_PRODUCT_PIC itemProductPic, I.ITEM_NUM itemNum, I.ITEM_TOTAL itemTotal,P.PRODUCT_STATUS productStatus,
-			I.ITEM_PRODUCT_ID itemProductId, P.PRODUCT_COLOR productColor 
+			I.ITEM_PRODUCT_ID itemProductId, P.PRODUCT_COLOR productColor,I.ITEM_IS_SOURCE itemIsSource,
+			I.ITEM_GIFT_SOURCE itemGiftSource,I.item_product_color itemProductColor,I.item_color_id itemColorId
 		FROM 
 			TB_IAMBERRY_SHOP_ORDER_ITEM I LEFT JOIN TB_IAMBERRY_PRODUCT_INFO P 
 			ON I.ITEM_PRODUCT_ID = P.PRODUCT_ID 
@@ -369,4 +396,18 @@ PUBLIC
 			SALES_STATUS = #{oldStatus} 
 		</if>
 	</update>
+
+	<!-- 修改发货提醒次数 -->
+	<update id="updateSendWarnNum" parameterType="Order">
+		UPDATE
+			TB_IAMBERRY_SHOP_SALES_ORDER
+		SET
+			SALES_SEND_WARN = (SALES_SEND_WARN+1)
+		WHERE
+		SALES_ORDERID = #{salesOrderid}
+		<if test="oldStatus!=null" >
+			AND
+			SALES_STATUS = #{oldStatus}
+		</if>
+	</update>
 </mapper>

+ 2 - 2
iamberry-wechat-service/src/main/java/com/iamberry/wechat/service/mapper/orderMapper.xml

@@ -50,7 +50,7 @@ PUBLIC
 			 		ITEM_SALES_ORDERID, ITEM_PRODUCT_ID, ITEM_NUM, ITEM_TOTAL, ITEM_CREATE_DATE,
 			 		ITEM_PRODUCT_NAME, ITEM_PRODUCT_DISCOUNT, ITEM_PRODUCT_PRICE, ITEM_PRODUCT_PIC,
 			 		ITEM_PRODUCT_TYPE, ITEM_COLOR_ID, ITEM_PRODUCT_COLOR, ITEM_PRODUCT_CHILD_TYPE,
-					ITEM_IS_SOURCE
+					ITEM_IS_SOURCE, ITEM_GIFT_SOURCE
 				)
 		 VALUES 
 		  	<foreach collection="list" item="item" separator=",">
@@ -59,7 +59,7 @@ PUBLIC
 					#{item.itemTotal}, NOW(), #{item.itemProductName}, #{item.itemProductDiscount},
 					#{item.itemProductPrice}, #{item.itemProductPic}, #{item.itemProductType},
 					#{item.itemColorId}, #{item.itemProductColor}, #{item.itemProductChildType},
-					#{item.itemIsSource}
+					#{item.itemIsSource}, #{item.itemGiftSource}
 				)
 	        </foreach>
 	</insert>

+ 1 - 1
iamberry-wechat-service/src/main/java/com/iamberry/wechat/service/warranty/WarrantyServiceImpl.java

@@ -47,7 +47,7 @@ public class WarrantyServiceImpl implements WarrantyService {
         if (txtOrderId != null && !"".equals(txtOrderId)) {
             txtOrderId = txtOrderId.substring(0,txtOrderId.lastIndexOf(","));
             //获取交易号
-            String[] orderIds = txtOrderId.split(",");
+            String[] orderIds = txtOrderId.split(":");
             for (int i = 0;i < orderIds.length;i++) {
                 //获取百胜订单详情
                 net.sf.json.JSONObject orderInfo = efastOrderService.getOrderFormEfast(orderIds[i]);

+ 194 - 6
iamberry-wechat-web/src/main/java/com/iamberry/wechat/handles/cart/CartHandlers.java

@@ -1,14 +1,12 @@
 package com.iamberry.wechat.handles.cart;
 
 import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 import javax.servlet.http.HttpServletRequest;
 
+import com.iamberry.wechat.core.entity.order.OrderItem;
+import com.iamberry.wechat.core.entity.product.SalesUserGift;
 import com.iamberry.wechat.tools.*;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
@@ -360,7 +358,45 @@ public class CartHandlers {
 		
 		//查询订单列表时同步百胜信息
 		if (null != shopOrderList && shopOrderList.size() > 0) {
+
 			for (ShopOrderAndItemDto orderDto : shopOrderList) {
+				List<SalesUserGift> giftList = new ArrayList<SalesUserGift>();
+				//将赠品和订单项区分开
+				List<OrderItem> orderItemList = orderDto.getOrderItemList();
+				if (orderItemList == null || orderItemList.size() == 0) {
+					remsg.setResultCode(ResultInfo.ERRORCODE);
+					remsg.setStatus(false);
+					return remsg;
+				}
+
+				Iterator it = orderItemList.iterator();
+				//将所有赠品筛选出来
+				while (it.hasNext()) {
+					OrderItem item = (OrderItem)it.next();
+					if (item.getProductDiscount() == 0) {
+						SalesUserGift gift = new SalesUserGift();
+						gift.setGiftName(item.getItemProductName());
+						gift.setGiftColorName(item.getItemProductColor());
+						gift.setUserGiftCount(item.getItemNum());
+						gift.setUserColorId(item.getItemGiftSource());
+						gift.setUserGiftColor(item.getItemColorId());
+						giftList.add(gift);
+						it.remove();
+					}
+				}
+
+				//将赠品添加到对应的机器上
+				for (OrderItem item : orderItemList) {
+					List<SalesUserGift> gifts = new ArrayList<SalesUserGift>();
+					for (int i = 0;i < giftList.size();i++) {
+						SalesUserGift gift = giftList.get(i);
+						if (item.getItemColorId() == gift.getUserColorId()) {
+							gifts.add(gift);
+						}
+					}
+					item.setSalesUserGiftList(gifts);
+				}
+
 				MQMessage message = new MQMessage();
 				if ("2".equals(orderDto.getSalesStatus())) {
 					message.setServiceToMessage(orderDto.getSalesOrderid());
@@ -400,7 +436,6 @@ public class CartHandlers {
 	/**
 	 * 查询订单详情
 	 * @param request
-	 * @param orderId
 	 * @return
 	 * @throws Exception
 	 */
@@ -434,7 +469,44 @@ public class CartHandlers {
 				}
 				shopSalesOrderDto.setCouponReduce(money);
 			}
+
+			List<SalesUserGift> giftList = new ArrayList<SalesUserGift>();
+			//将赠品和订单项区分开
 			orderItemList = cartService.selectShopOrderItem(orderId);
+			if (orderItemList == null || orderItemList.size() == 0) {
+				remsg.setResultCode(ResultInfo.ERRORCODE);
+				remsg.setStatus(false);
+				return remsg;
+			}
+
+			Iterator it = orderItemList.iterator();
+			//将所有赠品筛选出来
+			while (it.hasNext()) {
+				ShopOrderItemDto item = (ShopOrderItemDto)it.next();
+				if (item.getItemProductDiscount() == 0) {
+					SalesUserGift gift = new SalesUserGift();
+					gift.setGiftName(item.getItemProductName());
+					gift.setGiftColorName(item.getItemProductColor());
+					gift.setUserGiftCount(item.getItemNum());
+					gift.setUserColorId(item.getItemGiftSource());
+					gift.setUserGiftColor(item.getItemColorId());
+					giftList.add(gift);
+					it.remove();
+				}
+			}
+
+			//将赠品添加到对应的机器上
+			for (ShopOrderItemDto item : orderItemList) {
+				List<SalesUserGift> gifts = new ArrayList<SalesUserGift>();
+				for (int i = 0;i < giftList.size();i++) {
+					SalesUserGift gift = giftList.get(i);
+					if (item.getItemColorId() == gift.getUserColorId()) {
+						gifts.add(gift);
+					}
+				}
+				item.setSalesUserGiftList(gifts);
+			}
+
 			shopSalesOrderDto.setOrderItemList(orderItemList);
 		}
 		if (shopSalesOrderDto == null) {
@@ -746,4 +818,120 @@ public class CartHandlers {
 		}
 		return remsg;
 	}
+
+	/**
+	 * 确认收货
+	 * @param request
+	 * @param orderId
+	 * @param status
+	 * @return
+	 * @throws Exception
+	 */
+	@ResponseBody
+	@RequestMapping("/confirm_receipt")
+	public ResultMsg confirmReceipt(HttpServletRequest request,
+				 @RequestParam(value = "orderId",defaultValue = "")String orderId,
+				 @RequestParam(value = "status",defaultValue = "-1") Integer status) throws Exception {
+		String openId  = wechatUtils.getUserBySession(request).getUserOpenid();
+		ResultMsg remsg=new ResultMsg();
+		if (null != orderId && !"".equals(orderId)) {
+			ShopSalesOrderDto orderDto = this.cartService.getOpenIdAndStatus(orderId);
+			if (orderDto != null) {
+				if (!openId.equals(orderDto.getSalesOpenid())) {
+					remsg.setMessage("您没有权限,无法操作该订单!");
+					remsg.setResultCode(ResultInfo.ERRORCODE);
+					remsg.setStatus(false);
+					return remsg;
+				}
+				if (Integer.parseInt(orderDto.getSalesStatus()) != 5) {
+					remsg.setMessage("该订单不支持确认收货!");
+					remsg.setResultCode(ResultInfo.ERRORCODE);
+					remsg.setStatus(false);
+					return remsg;
+				}
+			} else {
+				remsg.setMessage("该订单无效,请重新确认!");
+				remsg.setResultCode(ResultInfo.ERRORCODE);
+				remsg.setStatus(false);
+				return remsg;
+			}
+			Order order = new Order();
+			order.setSalesStatus(12);
+			order.setSalesOrderid(orderId);
+			order.setOldStatus(status);
+			//修改订单状态
+			boolean flag = adminOrderService.updateOrderStatusByOrderId(order);
+			if (flag) {
+				remsg.setMessage("确认成功!");
+				remsg.setResultCode(ResultInfo.SUCCESSCODE);
+				remsg.setStatus(true);
+			} else {
+				remsg.setMessage("确认失败,请重新操作!");
+				remsg.setResultCode(ResultInfo.ERRORCODE);
+				remsg.setStatus(false);
+			}
+			return remsg;
+		} else {
+			remsg.setMessage("订单号为空,请重新输入!");
+			remsg.setResultCode(ResultInfo.ERRORCODE);
+			remsg.setStatus(false);
+			return remsg;
+		}
+	}
+
+	/**
+	 * 提醒发货
+	 * @param request
+	 * @param orderId
+	 * @param status
+	 * @return
+	 * @throws Exception
+	 */
+	@ResponseBody
+	@RequestMapping("/warn_send")
+	public ResultMsg warnSend(HttpServletRequest request,
+							  @RequestParam(value = "orderId",defaultValue = "")String orderId,
+							  @RequestParam(value = "status",defaultValue = "-1") Integer status) throws Exception {
+		String openId  = wechatUtils.getUserBySession(request).getUserOpenid();
+		ResultMsg remsg = new ResultMsg();
+		if (orderId == null || "".equals(orderId)) {
+			remsg.setResultCode(ResultInfo.ERRORCODE);
+			remsg.setStatus(false);
+			return remsg;
+		}
+		ShopSalesOrderDto orderDto = this.cartService.getOpenIdAndStatus(orderId);
+		if (orderDto != null) {
+			if (!openId.equals(orderDto.getSalesOpenid())) {
+				remsg.setMessage(ResultInfo.ERRORINFO);
+				remsg.setResultCode(ResultInfo.ERRORCODE);
+				remsg.setStatus(false);
+				return remsg;
+			}
+			if (Integer.parseInt(orderDto.getSalesStatus()) != 5) {
+				remsg.setMessage(ResultInfo.ERRORINFO);
+				remsg.setResultCode(ResultInfo.ERRORCODE);
+				remsg.setStatus(false);
+				return remsg;
+			}
+		} else {
+			remsg.setMessage(ResultInfo.ERRORINFO);
+			remsg.setResultCode(ResultInfo.ERRORCODE);
+			remsg.setStatus(false);
+			return remsg;
+		}
+		Order order = new Order();
+		order.setSalesOrderid(orderId);
+		order.setOldStatus(status);
+		int num = cartService.updateSendWarnNum(order);
+		if (num > 0) {
+			remsg.setMessage("提醒发货成功!");
+			remsg.setResultCode(ResultInfo.SUCCESSCODE);
+			remsg.setStatus(true);
+		} else {
+			remsg.setMessage("提醒发货失败!");
+			remsg.setResultCode(ResultInfo.ERRORCODE);
+			remsg.setStatus(false);
+		}
+		return remsg;
+	}
 }

+ 62 - 0
iamberry-wechat-web/src/main/java/com/iamberry/wechat/handles/logistics/LogisticsHandler.java

@@ -0,0 +1,62 @@
+package com.iamberry.wechat.handles.logistics;
+
+import com.iamberry.wechat.core.entity.ResultMsg;
+import com.iamberry.wechat.tools.NameUtils;
+import com.iamberry.wechat.tools.ResultInfo;
+import com.iamberry.wechat.utils.KuaiDi100;
+import net.sf.json.JSONObject;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ * Created by Administrator on 2017/12/26.
+ */
+@RequestMapping("/logistics")
+public class LogisticsHandler {
+
+    @Autowired
+    private KuaiDi100 kuaidi100;
+
+    /**
+     * 查询快递信息
+     * @param com 快递公司代码
+     * @param nu 快递单号
+     * @return
+     */
+    @RequestMapping("/getExpressInfo")
+    @ResponseBody
+    public ResultMsg getExpressInfo(@RequestParam("com") String com, @RequestParam("nu") String nu, HttpServletResponse response){
+        ResultMsg msg = new ResultMsg();
+        JSONObject rst = null;
+        if (com == null || com.equals("") || nu == null || nu.equals("")){
+            msg.setResultCode(ResultInfo.ERRORCODE);
+            msg.setMessage(NameUtils.getConfig("ERROR"));
+            msg.setData(rst);
+            msg.setStatus(false);
+            return msg;
+        }
+        rst = kuaidi100.getExpressInfo(com,nu);
+        msg.setResultCode(ResultInfo.SUCCESSCODE);
+        msg.setMessage(NameUtils.getConfig("SUCCESSINFO"));
+        msg.setData(rst);
+        msg.setStatus(true);
+        return msg;
+    }
+
+    /**
+     * 手动向特定手机发送短信
+     * @param response
+     * @param iphone
+     * @return
+     */
+    /*@RequestMapping("/informShipping")
+    @ResponseBody
+    public String informShipping(HttpServletResponse response,@RequestParam("iphone") String iphone){
+        String msg = codeService.informShipping(iphone,INFORM_SHIPPING);
+        return msg;
+    }*/
+}

+ 1 - 0
iamberry-wechat-web/src/main/java/com/iamberry/wechat/handles/order/OrderHandler.java

@@ -338,6 +338,7 @@ public class OrderHandler {
 					item.setItemProductColor(gift.getGiftColorName());
 					item.setItemProductChildType(gift.getGiftChildType());
 					item.setItemIsSource(1);
+					item.setItemGiftSource(cartDto.getCartColorId());
 					list.add(item);
 				}
 			}

+ 2 - 2
iamberry-wechat-web/src/main/java/com/iamberry/wechat/handles/warranty/WarrantyCardHandler.java

@@ -62,7 +62,7 @@ public class WarrantyCardHandler {
     @RequestMapping("/select_efast_by_tel")
     public ResultMsg selectEfastByTel(HttpServletRequest request, Member member) throws Exception {
         ResultMsg msg = new ResultMsg();
-        String phone = "13590159563";
+        String phone = member.getUserTel();//"13590159563";
         Map<String,Object> map = new HashMap<String,Object>();
         StringBuilder txtOrderId = new StringBuilder();
         int num = 0;
@@ -101,7 +101,7 @@ public class WarrantyCardHandler {
                     spanText = span.html().toString().substring(0,spanText.indexOf("&lt;"));
                     num++;
                     txtOrderId.append(spanText);
-                    txtOrderId.append(",");
+                    txtOrderId.append(":");
                 }
             }
         }

+ 205 - 0
iamberry-wechat-web/src/main/java/com/iamberry/wechat/utils/KuaiDi100.java

@@ -0,0 +1,205 @@
+package com.iamberry.wechat.utils;
+
+import net.sf.json.JSONObject;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.net.URLConnection;
+
+/**
+ * Created by Administrator on 2017/12/26.
+ */
+public class KuaiDi100 {
+
+    private static String key = "29833628d495d7a5";//授权密匙key    百度的
+  /*private static String key = "06d6c2ea1bdb4ee9";//授权密匙key  自己的*/
+                    /*<option value="sto">申通快递</option>
+					<option value="yto">圆通快递</option>
+					<option value="sf">顺丰快递</option>
+					<option value="ems">邮政EMS</option>
+					<option value="zto">中通快递</option>
+					<option value="zjs">宅急送</option>
+					<option value="yunda">韵达快递</option>
+					<option value="cces">cces快递</option>
+					<option value="pick">上门提货</option>
+					<option value="htky">汇通快递</option>
+					<option value="ttkdex">天天快递</option>
+					<option value="stars">星晨急便</option>
+					<option value="jd">京东快递</option>
+					<option value="01">其他</option>
+					<option value="02">上门送货</option>*/
+
+    public String logisticsConversions(String code){
+        if(code == null || code.equals("")){
+            return null;
+        }
+        switch (code){
+            case "sto":
+                code = "shentong";
+                break;
+            case "yto":
+                code = "yuantong";
+                break;
+            case "sf":
+                code = "shunfeng";
+                break;
+            case "ems":
+                code = "ems";
+                break;
+            case "eyb":
+                code = "ems";
+                break;
+            case "zto":
+                code = "zhongtong";
+                break;
+            case "zjs":
+                code = "zhaijisong";
+                break;
+            case "yunda":
+                code = "yunda";
+                break;
+            case "cces":
+                code = "cces";
+                break;
+            case "pick":
+                code = "pick";
+                break;
+            case "htky":
+                code = "huitongkuaidi";
+                break;
+            case "ttkdex":
+                code = "tiantian";
+                break;
+            case "stars":
+                code = "xingchenjibian";
+                break;
+            case "jd":
+                code = "jd";
+                break;
+            case "01":
+                code = "01";
+                break;
+            case "02":
+                code = "01";
+                break;
+        }
+        return code;
+    }
+    /**
+     *  快递对应代码
+     *  EMS 		ems/eyb
+     * 	申通快递  	shentong
+     * 	顺丰速运 	shunfeng
+     * 	圆通速递 	yuantong
+     * 	韵达快运		yunda
+     *	中通快递		zhongtong
+     *	百世快递		huitongkuaidi
+     *	天天快递		tiantian
+     *	宅急送		zhaijisong
+     *	邮政国内包裹	youzhengguonei
+     *	邮政国际包裹	youzhengguoji
+     *	EMS国际快递	emsguoji
+     */
+    public static void main(String[] agrs){
+        KuaiDi100 kuaidi = new KuaiDi100();
+        System.out.println(kuaidi.getExpressInfo("ems","9754210807242"));
+    }
+    /**
+     * 查询快递信息
+     * @param com 快递公司代码
+     * @param nu 快递单号
+     * @return
+     */
+    public JSONObject getExpressInfo(String com , String nu){
+        JSONObject ret = null;
+        try
+        {
+            com = logisticsConversions(com);
+            StringBuilder sb = new StringBuilder();
+            sb.append("http://api.kuaidi100.com/api?id=");
+            sb.append(KuaiDi100.key);
+            sb.append("&com=").append(com);
+            sb.append("&nu=").append(nu);
+            sb.append("&show=0&muti=1&order=desc");
+            URL url= new URL(sb.toString());
+            URLConnection con=url.openConnection();
+            con.setAllowUserInteraction(false);
+            InputStream urlStream = url.openStream();
+            String type = con.guessContentTypeFromStream(urlStream);
+            String charSet=null;
+            if (type == null)
+                type = con.getContentType();
+
+            if (type == null || type.trim().length() == 0)
+                return null;
+
+            if(type.indexOf("charset=") > 0)
+                charSet = type.substring(type.indexOf("charset=") + 8);
+
+            byte b[] = new byte[10000];
+            int numRead = urlStream.read(b);
+            String content = new String(b, 0, numRead, "UTF-8");
+            while (numRead != -1) {
+                numRead = urlStream.read(b);
+                if (numRead != -1) {
+                    //String newContent = new String(b, 0, numRead);
+                    String newContent = new String(b, 0, numRead, "UTF-8");
+                    content += newContent;
+                }
+            }
+            ret = JSONObject.fromObject(content);
+            System.out.println(ret);
+            urlStream.close();
+        } catch (MalformedURLException e)
+        {
+            e.printStackTrace();
+        } catch (IOException e)
+        {
+            e.printStackTrace();
+        }
+        return ret;
+    }
+    /**
+     * 该接口使用与收费的快递公司接口查询
+     * @param com 快递公司代码
+     * @param nu 快递单号
+     * @return
+     */
+    public static String searchkuaiDiInfo(String com, String nu)
+    {
+        String content = "";
+        try
+        {
+            StringBuilder sb = new StringBuilder();
+            sb.append("http://www.kuaidi100.com/applyurl?key=").append(KuaiDi100.key);
+            sb.append("&com=").append(com);
+            sb.append("&nu=").append(nu);
+            URL url = new URL(sb.toString());
+            URLConnection con = url.openConnection();
+            con.setAllowUserInteraction(false);
+            InputStream urlStream = url.openStream();
+            byte b[] = new byte[10000];
+            int numRead = urlStream.read(b);
+            content = new String(b, 0, numRead);
+            while (numRead != -1)
+            {
+                numRead = urlStream.read(b);
+                if (numRead != -1)
+                {
+                    // String newContent = new String(b, 0, numRead);
+                    String newContent = new String(b, 0, numRead, "UTF-8");
+                    content += newContent;
+                }
+            }
+            urlStream.close();
+        }
+        catch (Exception e)
+        {
+            e.printStackTrace();
+            System.out.println("快递查询错误");
+        }
+        return content;
+    }
+}

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

@@ -53,10 +53,6 @@
 	<!-- 加载静态资源 -->
 	<bean id="loadResultInfo" class="com.iamberry.wechat.tools.loadResultUtil" lazy-init="false"></bean>
     
-    
-    <!-- 将30天后奖励积分的定时任务的xml引入
-	<import resource="classpath:iamberry-wechat-service-orderTesk.xml"></import>  -->
-    
 	<!-- 开启注解启动定时器 -->
     <!--<task:annotation-driven/>-->
 

+ 288 - 0
iamberry-wechat-web/src/main/webapp/view/view_logistics.html

@@ -0,0 +1,288 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="UTF-8">
+    <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">
+    <link rel="stylesheet" type="text/css" href="//css.iamberry.com/wateroPF/css/mui.min.css">
+    <link rel="stylesheet" type="text/css" href="//css.iamberry.com/wateroPF/css/iconfont.css" />
+    <link rel="stylesheet" type="text/css" href="//css.iamberry.com/wateroPF/css/style.css" />
+    <style>
+        body{ text-align:center}
+        article, section, time, aside {
+            display: block;
+        }
+        .point-time {
+            content: "";
+            position: absolute;
+            width: 13px;
+            height: 13px;
+            top: 12px;
+            left: 30%;
+            background: #1c87bf;
+            margin-left: -4px;
+            border-radius: 50%;
+            box-shadow: 0 0 0 2px #fff;
+        }
+
+        .text-red {
+            color: #ff5b5b;
+        }
+
+        .text-blue {
+            color: #1c87bf;
+        }
+
+        .text-green {
+            color: #95c91e;
+        }
+
+        .text-yellow {
+            color: #ffb902;
+        }
+
+        .text-purple {
+            color: #d32d93;
+        }
+
+        .point-red {
+            background-color: #ff5b5b;
+        }
+
+        .point-blue {
+            background-color: #38d1f7;
+        }
+
+        .point-green {
+            background-color: #95c91e;
+        }
+
+        .point-yellow {
+            background-color: #ffb902;
+        }
+
+        .point-purple {
+            background-color: #d32d93;
+        }
+
+        .content {
+            width: 100%;
+            margin: 0 auto;
+        }
+        .content article {
+            position: relative;
+        }
+        .content article > h3 {
+            width: 100%;
+            height: 20px;
+            line-height: 20px;
+            text-align: left;
+            text-indent: 3%;
+            font-size: 1.4em;
+            color: #fff;
+            padding: 10px 0 20px;
+            background-color: #dd6d01;
+        }
+        .content article section {
+            padding: 0 10px 10px;
+            position: relative;
+        }
+        .content article section:before {
+            content: "";
+            width: 2px;
+            top: 17px;
+            bottom: -17px;
+            left: 30.54%;
+            background: #73dff9;
+            position: absolute;
+            -webkit-transform: scaleX(.5);
+        }
+        .content article section:last-child:before {
+            display: none;
+        }
+        .content article section time {
+            width: 25%;
+            display: block;
+            position: absolute;
+            padding: 8px 0;
+        }
+        .content article section time > span {
+            display: block;
+            text-align: center;
+        }
+        .content article section aside {
+            color: #3a3a38;
+            margin-left: 42%;
+            padding-bottom: 15px;
+            text-align: left;
+        }
+        .content article section .brief {
+            color: #9f9f9f;
+        }
+
+        .my-box-w{position: absolute;left: 50%;top: 50%;background: rgba(255,255,255,.1);width: 100px;height: 100px;border-radius: 50%;margin-left: -50px;margin-top: -60px;padding: 8px;}
+        .my-box-n{background: rgba(255,255,255,.2);position: relative;height: 100%;width: 100%;border-radius: 50%;}
+        .my-box-machine{position: absolute;left: 50%;top: 50%;width: auto;color: #fff;-webkit-transform:translateX(-50%) translateY(-20%);}
+        .machine-num{position: absolute;left: 50%;top: 50%;margin-top:40px;-webkit-transform: translateX(-50%);color: #fff;}
+    </style>
+    <script>
+        // 屏蔽分享
+        window.hiddenAllWechatMenu = true;
+    </script>
+</head>
+<body style="background: #fff;">
+<!-- <div class="loading-bg">
+        <div class="mui-loading">
+            <div class="mui-spinner">
+            </div>
+            &nbsp;&nbsp;加载中...
+        </div>
+</div> -->
+<div class="mui-content" style="background: #fff;">
+    <div style="position: relative;height: 100px;padding:20px 15px;background: #6bc5e3;">
+        <img style="float: left;" width="60px" src="//s.iamberry.com/wateroPF/new/images/logistics.png">
+        <ul style="display: inline-block;float: left;text-align: left;color: #fff;line-height: 30px;padding: 0 0 0 10px;">
+            <li id="billName"></li>
+            <li>单号:<span id="billCode"></span></li>
+        </ul>
+    </div>
+
+    <div id="pullrefresh" class="content">
+        <article class="my-tab-view-pull">
+        </article>
+    </div>
+    <div id="orderlist" class="content" style="display:none;padding: 10px 0;">
+        暂无物流信息
+    </div>
+</div>
+<script src="//s.iamberry.com/wateroPF/js/mui.min.js"></script>
+<script src="//s.iamberry.com/wateroPF/js/jquery-2.1.1.min.js"></script>
+<script src="//s.iamberry.com/wateroPF/js/shop/main.js"></script>
+<!-- <script src="//s.iamberry.com/wateroPF/js/shop/wechat-utils-1.0.js"></script> -->
+<script type="text/javascript">
+    function pullupRefresh() {
+        var billCode = getParam("billCode"),billName = getParam("billName");
+        mui.ajax(domanUrl + '/iamberry/logistics/getExpressInfo?dates=' + new Date().getTime(), {
+            data: {
+                "com": billName,
+                "nu": billCode
+            },
+            dataType: 'json',
+            type: 'post',
+            timeout: 15000,
+            success: function(dt) {
+                console.log(dt);
+                if(dt.status) {
+                    var name='';
+                    switch (billName){
+                        case "sto":
+                            name= "申通快递";
+                            break;
+                        case "yto":
+                            name= "圆通快递";
+                            break;
+                        case "zto":
+                            name= "中通速递";
+                            break;
+                        case "sf":
+                            name= "顺丰快递";
+                            break;
+                        case "ems":
+                            name= "邮政EMS";
+                            break;
+                        case "eyb":
+                            name= "E邮宝";
+                            break;
+                        case "zjs":
+                            name= "宅急送";
+                            break;
+                        case "yunda":
+                            name= "韵达快递";
+                            break;
+                        case "cces":
+                            name= "cces快递";
+                            break;
+                        case "pick":
+                            name= "上门提货";
+                            break;
+                        case "htky":
+                            name= "汇通快递";
+                            break;
+                        case "ttkdex":
+                            name= "天天快递";
+                            break;
+                        case "stars":
+                            name= "星晨急便";
+                            break;
+                        case "jd":
+                            name= "京东快递";
+                            break;
+                        case "01":
+                            name= "其他";
+                            break;
+                        case "02":
+                            name= "上门送货";
+                            break;
+                        case "longbanwuliu":
+                            name= "龙邦快递";
+                            break;
+                        default:
+                            break;
+                    }
+                    $("#billName").text(name);
+                    $("#billCode").text(billCode);
+                    if(dt.data.status=="1"){
+
+
+                        var renewal_data = [];
+                        renewal_data = dt.data.data;
+                        var table = document.body.querySelector('.my-tab-view-pull');
+                        mui(renewal_data).each(function(index) {
+                            var li = document.createElement('section');
+                            var color='point-blue',text='';
+                            if(index==0){
+                                color='point-red';
+                                //text="text-red";
+                            }
+                            li.innerHTML = ' <span class="point-time '+color+'"></span><time class="'+text+'">'+this.time+'</time><aside><p class="things">'+this.location+'</p><p class="brief" style="padding-top: 4%;">'+this.context+'</p></aside>';
+                            table.appendChild(li);
+
+                        })
+                    }else{
+                        $("#orderlist").show();
+                    }
+                }else{
+                    $("#pullrefresh").hide();
+                    $("#orderlist").show();
+                }
+            },
+            error: function(xhr, type, errorThrown) {
+                console.log(xhr)
+            }
+        });
+    }
+    mui.ready(function(){
+        //页面首次加载时拉取一次数据
+        pullupRefresh();
+    });
+    function   format(now)   {
+        now = new Date(now);
+        var   year=now.getFullYear();
+        var   month=now.getMonth()+1;
+        var   date=now.getDate();
+        var   hour=now.getHours();
+        var   minute=now.getMinutes();
+        var   second=now.getSeconds();
+        if(month <10 && month > 0){
+            month = "0"+month;
+        }
+        if(date <10 && date > 0){
+            date = "0"+date;
+        }
+        return   year+"-"+month+"-"+date;
+    }
+</script>
+</body>
+</html>

+ 1 - 1
watero-wechat-web/src/main/webapp/WEB-INF/views/wechat/clearing.html

@@ -89,7 +89,7 @@
 </div>
 <script src="//s.iamberry.com/watero/js/mui.min.js?v=2016111701"></script>
 <script src="//s.iamberry.com/watero/js/jquery-2.1.1.min.js"></script>
-<script src="//s.iamberry.com/watero/js/shop/main.js?v=20170622"></script>
+<script src="/watero/common/shop/js/page/main.js?v=20170622"></script>
 <script src="//s.iamberry.com/watero/js/shop/wechat-utils-1.0.js?v=201706001"></script>
 <script src="//s.iamberry.com/watero/js/shop/layer.js"></script>
 <script src="//s.iamberry.com/watero/js/shop/clearing.js?v=201706001"></script>

+ 6 - 0
watero-wechat-web/src/main/webapp/common/shop/js/page/main.js

@@ -454,6 +454,9 @@ function switchcolor(color) {
         case 37:
             pro_color = "磨砂";
             break;
+        case 39:
+            pro_color = "无色透明";
+            break;
         default:
             pro_color = "品蓝";
             break
@@ -476,6 +479,9 @@ function switchColorImg(colorId){
         case 4:
             img='//s.iamberry.com/watero/images/shop/cp-red.png'
             break;
+        case 39:
+            img='//w.iamberry.com/watero/common/images/uploadimages/image/20171212/971ECE348D1F7D9F8628_20171212154024_8556.jpg'
+            break;
         default:
             img='//s.iamberry.com/watero/images/shop/cp-blue.png'
             break;