浏览代码

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

wangxiaoming 7 年之前
父节点
当前提交
e2f6eaa058
共有 26 个文件被更改,包括 1095 次插入102 次删除
  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. 11 0
      iamberry-common-core/src/main/java/com/iamberry/wechat/core/entity/product/ProductType.java
  5. 1 1
      iamberry-common-tool/src/main/resources/iamberry-app-service-config.properties
  6. 1 0
      iamberry-common-web/src/main/java/com/iamberry/common/web/SimpleCORSFilter.java
  7. 14 0
      iamberry-wechat-interface/src/main/java/com/iamberry/wechat/face/cart/CartService.java
  8. 20 0
      iamberry-wechat-service/src/main/java/com/iamberry/wechat/service/cart/CartServiceImpl.java
  9. 14 0
      iamberry-wechat-service/src/main/java/com/iamberry/wechat/service/cart/dao/CartDao.java
  10. 10 0
      iamberry-wechat-service/src/main/java/com/iamberry/wechat/service/cart/dao/impl/CartDaoImpl.java
  11. 14 0
      iamberry-wechat-service/src/main/java/com/iamberry/wechat/service/mapper/CartMapper.java
  12. 49 8
      iamberry-wechat-service/src/main/java/com/iamberry/wechat/service/mapper/cartMapper.xml
  13. 2 2
      iamberry-wechat-service/src/main/java/com/iamberry/wechat/service/mapper/orderMapper.xml
  14. 53 35
      iamberry-wechat-service/src/main/java/com/iamberry/wechat/service/mapper/productInfoMapper.xml
  15. 1 1
      iamberry-wechat-service/src/main/java/com/iamberry/wechat/service/warranty/WarrantyServiceImpl.java
  16. 222 24
      iamberry-wechat-web/src/main/java/com/iamberry/wechat/handles/cart/CartHandlers.java
  17. 5 0
      iamberry-wechat-web/src/main/java/com/iamberry/wechat/handles/home/HomeHandler.java
  18. 62 0
      iamberry-wechat-web/src/main/java/com/iamberry/wechat/handles/logistics/LogisticsHandler.java
  19. 1 0
      iamberry-wechat-web/src/main/java/com/iamberry/wechat/handles/order/OrderHandler.java
  20. 2 2
      iamberry-wechat-web/src/main/java/com/iamberry/wechat/handles/warranty/WarrantyCardHandler.java
  21. 205 0
      iamberry-wechat-web/src/main/java/com/iamberry/wechat/utils/KuaiDi100.java
  22. 0 4
      iamberry-wechat-web/src/main/resources/iamberry-wechat-web-ioc.xml
  23. 19 19
      iamberry-wechat-web/src/main/webapp/common/shop/js/page/shopping_cart.js
  24. 288 0
      iamberry-wechat-web/src/main/webapp/view/view_logistics.html
  25. 1 1
      watero-wechat-web/src/main/webapp/WEB-INF/views/wechat/clearing.html
  26. 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;

+ 11 - 0
iamberry-common-core/src/main/java/com/iamberry/wechat/core/entity/product/ProductType.java

@@ -2,6 +2,7 @@ package com.iamberry.wechat.core.entity.product;
 
 import java.io.Serializable;
 import java.util.Date;
+import java.util.List;
 
 /**
  * @company	深圳爱贝源科技有限公司
@@ -27,6 +28,8 @@ public class ProductType implements Serializable {
 	
 	private Integer typeState;							// 状态 默认 1:使用中 2:停用 3:删除
 
+	private List<ProductChildType> childTypeList;		//子类型集合
+
 	public Integer getTypeId() {
 		return typeId;
 	}
@@ -74,4 +77,12 @@ public class ProductType implements Serializable {
 	public void setTypeState(Integer typeState) {
 		this.typeState = typeState;
 	}
+
+	public List<ProductChildType> getChildTypeList() {
+		return childTypeList;
+	}
+
+	public void setChildTypeList(List<ProductChildType> childTypeList) {
+		this.childTypeList = childTypeList;
+	}
 }

+ 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);
 }

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

@@ -3,7 +3,9 @@ package com.iamberry.wechat.service.cart;
 import java.util.Date;
 import java.util.List;
 
+import com.iamberry.wechat.core.entity.product.ProductColor;
 import com.iamberry.wechat.core.entity.product.SalesUserGift;
+import com.iamberry.wechat.tools.ResultInfo;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -83,6 +85,14 @@ public class CartServiceImpl implements CartService {
 	@Override
 	public Integer addProductToCart(CartDto cartDto) {
 		// TODO Auto-generated method stub
+		//根据颜色id获取商品id
+		ProductColor productColor = new ProductColor();
+		productColor.setColorId(cartDto.getCartColorId());
+		productColor = productInfoService.getProductColor(productColor);
+		if (productColor == null) {
+			return 0;
+		}
+		cartDto.setCartProductId(productColor.getColorProductId());
 		Integer num = cartDao.addProductToCart(cartDto);
 		if (num > 0) {
 			return cartDto.getCartId();
@@ -276,4 +286,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);
 }

+ 49 - 8
iamberry-wechat-service/src/main/java/com/iamberry/wechat/service/mapper/cartMapper.xml

@@ -62,11 +62,37 @@ PUBLIC
 		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
+		LEFT JOIN tb_iamberry_product_info pi on pi.product_id = ug.user_gift_id
 		WHERE
 		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 
@@ -84,7 +110,7 @@ PUBLIC
 		SET 
 			CART_NUM = #{cartNum}
 		WHERE
-			CART_OPENID = #{cartOpenId} AND CART_PRODUCT_ID = #{cartProductId}
+			CART_OPENID = #{cartOpenId} AND CART_COLOR_ID = #{cartColorId}
 	</update>
 	
 	<!-- 根据商品id和openid查询购物车数量 -->
@@ -94,7 +120,7 @@ PUBLIC
 		FROM 
 			TB_IAMBERRY_SHOP_CART 
 		WHERE 
-			CART_OPENID = #{cartOpenId} AND CART_PRODUCT_ID = #{cartProductId}
+			CART_OPENID = #{cartOpenId} AND CART_COLOR_ID = #{cartColorId}
 	</select>
 	
 	<!-- 获取购物车信息看是否有记录该商品信息 -->
@@ -105,20 +131,20 @@ PUBLIC
 		FROM 
 			TB_IAMBERRY_SHOP_CART 
 		WHERE 
-			CART_OPENID = #{cartOpenId} AND CART_PRODUCT_ID = #{cartProductId}
+			CART_OPENID = #{cartOpenId} AND CART_COLOR_ID = #{cartColorId}
 	</select>
 	
 	<!-- 新增购物车数据 -->
 	<insert id="addProductToCart" parameterType="CartDto" useGeneratedKeys="true" keyProperty="cartId">
 		INSERT INTO 
-			TB_IAMBERRY_SHOP_CART(CART_OPENID, CART_PRODUCT_ID, CART_NUM,CART_CREATE_DATE) 
+			TB_IAMBERRY_SHOP_CART(CART_OPENID, CART_PRODUCT_ID,CART_COLOR_ID, CART_NUM,CART_CREATE_DATE)
 		VALUES 
-			(#{cartOpenId}, #{cartProductId}, #{cartNum},NOW()) 
+			(#{cartOpenId}, #{cartProductId},#{cartColorId}, #{cartNum},NOW())
 	</insert>
 	
 	<!-- 删除购物车物品信息 -->
 	<delete id="deleteCartByCartId" parameterType="CartDto">
-		DELETE FROM TB_IAMBERRY_SHOP_CART WHERE CART_PRODUCT_ID = #{cartProductId} AND CART_OPENID = #{cartOpenId}
+		DELETE FROM TB_IAMBERRY_SHOP_CART WHERE cart_color_id = #{cartColorId} AND CART_OPENID = #{cartOpenId}
 	</delete>
 	
 	<!-- 根据openid查看销售订单表数据 -->
@@ -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>

+ 53 - 35
iamberry-wechat-service/src/main/java/com/iamberry/wechat/service/mapper/productInfoMapper.xml

@@ -54,7 +54,9 @@
 		PRODUCT_CREATE_DATE,
 		PRODUCT_SORT_NUM,
 		PRODUCT_COLOR_DES,
-		PRODUCT_REMARK
+		PRODUCT_REMARK,
+		PRODUCT_CHOICENESS,
+		product_choiceness_im
 		FROM 
 			TB_IAMBERRY_PRODUCT_INFO
 		LEFT JOIN TB_IAMBERRY_PRODUCT_COLOR on TB_IAMBERRY_PRODUCT_INFO.product_id = TB_IAMBERRY_PRODUCT_COLOR.color_product_id
@@ -135,23 +137,24 @@
 	</select>
 	
 	<!-- 根据productId查询商品信息 -->
-	<select id="getProductByProductId" parameterType="java.lang.Integer" resultType="Product">
+	<select id="getProductByProductId" parameterType="java.lang.Integer" resultMap="productMap">
 		SELECT 
-			PRODUCT_ID productId,
-			PRODUCT_NAME productName,
-			PRODUCT_ABBREVIATION productAbbreviation,
-			color_discount productDiscount,
-			color_price productPrice,
-			PRODUCT_SALESNUM productSalesnum,
-			PRODUCT_ACCESSNUM productAccessnum,
-			PRODUCT_STATUS productStatus,
-			color_product_pic productIntroduceImg,
-			PRODUCT_PARAMETER_IMG productParameterImg,
-			PRODUCT_CREATE_DATE productCreateDate,
-			PRODUCT_SORT_NUM productSortNum,
-			PRODUCT_COLOR_DES productColorDes,
-			PRODUCT_REMARK productRemark,
-			color_name productColor
+			PRODUCT_ID,
+			PRODUCT_NAME,
+			PRODUCT_ABBREVIATION,
+			PRODUCT_DISCOUNT,
+			PRODUCT_PRICE,
+			PRODUCT_SALESNUM,
+			PRODUCT_ACCESSNUM,
+			PRODUCT_STATUS,
+			PRODUCT_INTRODUCE_IMG,
+			PRODUCT_PARAMETER_IMG,
+			PRODUCT_CREATE_DATE,
+			PRODUCT_SORT_NUM,
+			PRODUCT_COLOR_DES,
+			PRODUCT_REMARK,
+			PRODUCT_CHOICENESS,
+			product_choiceness_im
 		FROM 
 			TB_IAMBERRY_PRODUCT_INFO
 		LEFT JOIN TB_IAMBERRY_PRODUCT_COLOR
@@ -161,23 +164,24 @@
 	</select>
 	
 	<!-- 根据商品名称查询商品信息 -->
-	<select id="getProductByProductName" parameterType="java.lang.String" resultType="Product">
+	<select id="getProductByProductName" parameterType="java.lang.String" resultMap="productMap">
 		SELECT
-			PRODUCT_ID productId,
-			PRODUCT_NAME productName,
-			PRODUCT_ABBREVIATION productAbbreviation,
-			color_discount productDiscount,
-			color_price productPrice,
-			PRODUCT_SALESNUM productSalesnum,
-			PRODUCT_ACCESSNUM productAccessnum,
-			PRODUCT_STATUS productStatus,
-			color_product_pic productIntroduceImg,
-			PRODUCT_PARAMETER_IMG productParameterImg,
-			PRODUCT_CREATE_DATE productCreateDate,
-			PRODUCT_SORT_NUM productSortNum,
-			PRODUCT_COLOR_DES productColorDes,
-			PRODUCT_REMARK productRemark,
-			color_name productColor
+			PRODUCT_ID,
+			PRODUCT_NAME,
+			PRODUCT_ABBREVIATION,
+			PRODUCT_DISCOUNT,
+			PRODUCT_PRICE,
+			PRODUCT_SALESNUM,
+			PRODUCT_ACCESSNUM,
+			PRODUCT_STATUS,
+			PRODUCT_INTRODUCE_IMG,
+			PRODUCT_PARAMETER_IMG,
+			PRODUCT_CREATE_DATE,
+			PRODUCT_SORT_NUM,
+			PRODUCT_COLOR_DES,
+			PRODUCT_REMARK,
+			PRODUCT_CHOICENESS,
+			product_choiceness_im
 		FROM 
 			TB_IAMBERRY_PRODUCT_INFO
 			LEFT JOIN TB_IAMBERRY_PRODUCT_COLOR
@@ -216,13 +220,27 @@
 			<if test="color69Code != null and color69Code != ''">
 				color_69code = #{color69Code}
 			</if>
+			<if test="colorId != null and colorId != ''">
+				color_id = #{colorId}
+			</if>
 		</where>
 	</select>
 	<!-- 查询所有产品类型-->
-	<select id="selectProductType" resultType="ProductType">
+	<select id="selectProductType" resultMap="productTypeMap">
 		select * from tb_iamberry_product_type where type_state = 1
 	</select>
-
+	<resultMap id="productTypeMap" type="ProductType">
+		<id column="type_id" property="typeId"/>
+		<result column="type_name" property="typeName"/>
+		<result column="type_detilas" property="typeDetilas"/>
+		<result column="type_create_date" property="typeCreateDate"/>
+		<result column="type_update_date" property="typeUpdateDate"/>
+		<result column="type_state" property="typeState"/>
+		<collection property="childTypeList" column="type_id" ofType="ProductChildType" select="listChildType"/>
+	</resultMap>
+	<select id="listChildType" parameterType="Integer" resultType="ProductChildType">
+		select * from tb_iamberry_product_child_type where type_id = #{typeId} and child_type_state = 1
+	</select>
 	<!--查询精选产品-->
 	<select id="selectIndexChoicenessProduct" resultMap="productMap" parameterType="Integer">
 			SELECT

+ 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]);

+ 222 - 24
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;
@@ -162,26 +160,27 @@ public class CartHandlers {
 	 */
 	@ResponseBody
 	@RequestMapping("/addProductToCart")
-	public ResultMsg addProductToCart(@RequestParam("productId") String productId, 
-			@RequestParam(value = "cartNum", required = false, defaultValue = "1") Integer cartNum,
+	public ResultMsg addProductToCart(@RequestParam("productId") String productId,
+									  @RequestParam("productColorId") String productColorId,
+									  @RequestParam(value = "cartNum", required = false, defaultValue = "1") Integer cartNum,
 			HttpServletRequest request) throws Exception {
 		String openId  = wechatUtils.getUserBySession(request).getUserOpenid();
 		CartDto cartDto = new CartDto();
 		ResultMsg remsg=new ResultMsg();
 		
-		Integer pid = 0;
-		if (productId != null && !"".equals(productId) && !"null".equals(productId) && StaticInfo.pattern.matcher(productId).find()) {
-			pid = Integer.parseInt(productId);
+		Integer cid = 0;
+		if (productColorId != null && !"".equals(productColorId) && !"null".equals(productColorId) && StaticInfo.pattern.matcher(productColorId).find()) {
+			cid = Integer.parseInt(productColorId);
 		} else {
-			if (productId == null || "".equals(productId)) {
+			if (productColorId == null || "".equals(productColorId)) {
 				remsg.setMessage(ResultInfo.ERRORINFO);
 				remsg.setResultCode(ResultInfo.ERRORCODE);
 				remsg.setStatus(false);	
 				return remsg;
 			}
 			try {
-				String productIdString = StaticInfo.md5.decrypt(productId);
-				pid = Integer.parseInt(productIdString);
+				String productIdString = StaticInfo.md5.decrypt(productColorId);
+				cid = Integer.parseInt(productIdString);
 			} catch (Exception e) {
 				remsg.setMessage(ResultInfo.ERRORINFO);
 				remsg.setResultCode(ResultInfo.ERRORCODE);
@@ -192,8 +191,8 @@ public class CartHandlers {
 		}
 		
 		cartDto.setCartOpenId(openId);
-		cartDto.setCartProductId(pid);
-		//根据用户id和商品id查询购物车中是否存在
+		cartDto.setCartColorId(cid);
+		//根据颜色id和商品id查询购物车中是否存在
 		CartDto cart = cartService.getCartByCartProductId(cartDto);
 		if (null != cart) {
 			cartDto.setCartNum(cartNum + cart.getCartNum());
@@ -238,12 +237,22 @@ public class CartHandlers {
 	@ResponseBody
 	@RequestMapping(value = "/addCart",method = RequestMethod.GET)
 	public ResultMsg  addCart(HttpServletRequest request,@RequestParam("productId") Integer productId,
+							  @RequestParam("productColorId") String productColorId,
 			@RequestParam(value = "cartNum", required = false, defaultValue = "1") Integer cartNum) throws Exception {
 		String openId  = wechatUtils.getUserBySession(request).getUserOpenid();
 		ResultMsg remsg=new ResultMsg();
+		Integer cid = 0;
+		if (productColorId != null && !"".equals(productColorId) && !"null".equals(productColorId) && StaticInfo.pattern.matcher(productColorId).find()) {
+			cid = Integer.parseInt(productColorId);
+		}else{
+			remsg.setMessage(ResultInfo.ERRORINFO);
+			remsg.setResultCode(ResultInfo.ERRORCODE);
+			remsg.setStatus(false);
+			return remsg;
+		}
 		CartDto cartDto = new CartDto();
 		cartDto.setCartOpenId(openId);
-		cartDto.setCartProductId(productId);
+		cartDto.setCartColorId(cid);
 		Integer productNum = cartService.getCartNumByOpenId(cartDto);
 		cartDto.setCartNum(productNum + cartNum);
 		Integer num = cartService.updateCartByOpenId(cartDto);
@@ -262,27 +271,27 @@ public class CartHandlers {
 	/**
 	 * 	点击减号按钮删除商品
 	 * @param request
-	 * @param productId
+	 * @param productColorId
 	 * @param cartNum
 	 * @return	ResultMsg
 	 * @throws Exception
 	 */
 	@ResponseBody
 	@RequestMapping(value = "/deleteCart",method = RequestMethod.GET)
-	public ResultMsg  deleteCart(HttpServletRequest request,@RequestParam("productId") Integer productId,
+	public ResultMsg  deleteCart(HttpServletRequest request,@RequestParam("productColorId") Integer productColorId,
 			@RequestParam(value = "cartNum", required = false, defaultValue = "1") Integer cartNum) throws Exception {
 		String openId  = wechatUtils.getUserBySession(request).getUserOpenid();
 		ResultMsg remsg=new ResultMsg();
 		CartDto cartDto = new CartDto();
 		cartDto.setCartOpenId(openId);
-		cartDto.setCartProductId(productId);
+		cartDto.setCartColorId(productColorId);
 		Integer productNum = cartService.getCartNumByOpenId(cartDto);
 		Integer num = 0;
 		if (productNum > 1) {
 			cartDto.setCartNum(productNum - cartNum);
 			num = cartService.updateCartByOpenId(cartDto);
 		} else {
-			this.deleteCartByProductId(request,productId);
+			this.deleteCartByProductId(request,productColorId);
 		}
 		if (num > 0) {
 			remsg.setMessage(ResultInfo.SUCCESSINFO);
@@ -299,17 +308,16 @@ public class CartHandlers {
 	/**
 	 * 点击垃圾桶按钮删除购物车物品信息
 	 * @param request
-	 * @param cartId
 	 * @return ResultMsg
 	 */
 	@ResponseBody
 	@RequestMapping(value = "/deleteCartByProductId",method = RequestMethod.GET)
-	public ResultMsg deleteCartByProductId(HttpServletRequest request,@RequestParam("productId") Integer productId) throws Exception{
+	public ResultMsg deleteCartByProductId(HttpServletRequest request,@RequestParam("productColorId") Integer productColorId) throws Exception{
 		String openId  = wechatUtils.getUserBySession(request).getUserOpenid();
 		CartDto cartDto = new CartDto();
 		ResultMsg remsg=new ResultMsg();
 		cartDto.setCartOpenId(openId);
-		cartDto.setCartProductId(productId);
+		cartDto.setCartColorId(productColorId);
 		if (cartService.deleteCartByCartId(cartDto) >= 1) {
 			remsg.setMessage(ResultInfo.SUCCESSINFO);
 			remsg.setResultCode(ResultInfo.SUCCESSCODE);
@@ -360,7 +368,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 +446,6 @@ public class CartHandlers {
 	/**
 	 * 查询订单详情
 	 * @param request
-	 * @param orderId
 	 * @return
 	 * @throws Exception
 	 */
@@ -434,7 +479,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 +828,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;
+	}
 }

+ 5 - 0
iamberry-wechat-web/src/main/java/com/iamberry/wechat/handles/home/HomeHandler.java

@@ -10,6 +10,7 @@ import javax.servlet.http.HttpServletResponse;
 
 import com.iamberry.wechat.core.entity.admin.ShopSystemRule;
 import com.iamberry.wechat.core.entity.product.ProductChildType;
+import com.iamberry.wechat.core.entity.product.ProductType;
 import com.iamberry.wechat.tools.WeixinUtil;
 import org.apache.commons.lang.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -112,6 +113,10 @@ public class HomeHandler {
 				}
 			}
 		}
+
+		//查询所有产品类型
+		List<ProductType> productTypeList = productInfoService.selectProductType();
+		returnMap.put("productTypeList", productTypeList);					//所有产品类型及子类型集合
 		returnMap.put("advs", advs);
 		returnMap.put("banners", banners);
 		returnMap.put("selectProductTopper", selectProductTopper);

+ 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/>-->
 

+ 19 - 19
iamberry-wechat-web/src/main/webapp/common/shop/js/page/shopping_cart.js

@@ -29,25 +29,25 @@ mui.ready(function(){
 	// 结算
 	mui('body').on('tap', '#go-clearing',function() {
 		var str = $("#go-clearing").html();
-		mui.alert("有商品暂时缺货,不能购买");
-		return false;
-//		if ("去结算(0)" != str) {
-//
-//			// 获取数据
-//			var input = $(".mui-input-numbox");
-//			var carts = "";
-//			for (var i = 0; i < input.length; i++) {
-//				var id = $(input[i]).attr("id");
-//				id = id + "btn";
-//				if ($("#"+id)[0].checked == true) {
-//					carts += $(input[i]).attr("id").replace("cartIdInput", "-");
-//				}
-//			}
-//			carts = carts.substring(1, carts.length);
-//			window.location.href='/iamberry/pay/settlement?cartId=' + carts + '&tiemstamp=' + new Date().getTime();
-//		} else {
-//			alert("请选择您要结算的产品~");
-//		}
+		//mui.alert("有商品暂时缺货,不能购买");
+		//return false;
+		if ("去结算(0)" != str) {
+
+			// 获取数据
+			var input = $(".mui-input-numbox");
+			var carts = "";
+			for (var i = 0; i < input.length; i++) {
+				var id = $(input[i]).attr("id");
+				id = id + "btn";
+				if ($("#"+id)[0].checked == true) {
+					carts += $(input[i]).attr("id").replace("cartIdInput", "-");
+				}
+			}
+			carts = carts.substring(1, carts.length);
+			window.location.href='/iamberry/pay/settlement?cartId=' + carts + '&tiemstamp=' + new Date().getTime();
+		} else {
+			alert("请选择您要结算的产品~");
+		}
 	});
 	// 其他按钮
 	mui('body').on('click', '.mt-mr-che', function() {

+ 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;