liuzhiwei 7 лет назад
Родитель
Сommit
6d21b4040a
24 измененных файлов с 661 добавлено и 57 удалено
  1. 10 2
      iamberry-common-core/src/main/java/com/iamberry/wechat/core/entity/cart/CartDto.java
  2. 10 1
      iamberry-common-core/src/main/java/com/iamberry/wechat/core/entity/member/Member.java
  3. 38 4
      iamberry-common-core/src/main/java/com/iamberry/wechat/core/entity/order/OrderItem.java
  4. 9 0
      iamberry-common-core/src/main/java/com/iamberry/wechat/core/entity/warrantyCard/WarrantyCard.java
  5. 8 0
      iamberry-wechat-interface/src/main/java/com/iamberry/wechat/face/cart/ProductInfoService.java
  6. 8 0
      iamberry-wechat-interface/src/main/java/com/iamberry/wechat/face/mq/EfastOrderService.java
  7. 18 0
      iamberry-wechat-interface/src/main/java/com/iamberry/wechat/face/phone/PhoneCodeService.java
  8. 17 0
      iamberry-wechat-interface/src/main/java/com/iamberry/wechat/face/warranty/WarrantyService.java
  9. 5 1
      iamberry-wechat-service/src/main/java/com/iamberry/wechat/service/cart/ProductInfoServiceImpl.java
  10. 8 0
      iamberry-wechat-service/src/main/java/com/iamberry/wechat/service/cart/dao/ProductInfoDao.java
  11. 5 1
      iamberry-wechat-service/src/main/java/com/iamberry/wechat/service/cart/dao/impl/ProductInfoDaoImpl.java
  12. 16 0
      iamberry-wechat-service/src/main/java/com/iamberry/wechat/service/mapper/PhoneCodeMapper.java
  13. 8 0
      iamberry-wechat-service/src/main/java/com/iamberry/wechat/service/mapper/ProductInfoMapper.java
  14. 25 0
      iamberry-wechat-service/src/main/java/com/iamberry/wechat/service/mapper/WarrantyMapper.java
  15. 13 15
      iamberry-wechat-service/src/main/java/com/iamberry/wechat/service/mapper/cartMapper.xml
  16. 17 0
      iamberry-wechat-service/src/main/java/com/iamberry/wechat/service/mapper/phoneCodeMapper.xml
  17. 18 0
      iamberry-wechat-service/src/main/java/com/iamberry/wechat/service/mapper/productInfoMapper.xml
  18. 46 0
      iamberry-wechat-service/src/main/java/com/iamberry/wechat/service/mapper/warrantyMapper.xml
  19. 38 0
      iamberry-wechat-service/src/main/java/com/iamberry/wechat/service/mq/EfastOrderServiceImpl.java
  20. 173 0
      iamberry-wechat-service/src/main/java/com/iamberry/wechat/service/phone/PhoneCodeServiceImpl.java
  21. 129 0
      iamberry-wechat-service/src/main/java/com/iamberry/wechat/service/warranty/WarrantyServiceImpl.java
  22. 5 0
      iamberry-wechat-web/src/main/java/com/iamberry/wechat/handles/order/OrderHandler.java
  23. 26 33
      iamberry-wechat-web/src/main/java/com/iamberry/wechat/handles/warranty/WarrantyCardHandler.java
  24. 11 0
      iamberry-wechat-web/src/main/resources/iamberry-wechat-service-mybatis.xml

+ 10 - 2
iamberry-common-core/src/main/java/com/iamberry/wechat/core/entity/cart/CartDto.java

@@ -42,9 +42,17 @@ public class CartDto implements Serializable{
 	private String productRemark; //商品备注
 	
 	private Integer productColor;			//产品颜色		1:红色	2:橙色	3:黄色	4:绿色 5:青色	6:蓝色	7:紫色	8:白色
-	
 
-	
+	private Integer cartColorId;	//产品颜色id
+
+	public Integer getCartColorId() {
+		return cartColorId;
+	}
+
+	public void setCartColorId(Integer cartColorId) {
+		this.cartColorId = cartColorId;
+	}
+
 	public Integer getProductType() {
 		return productType;
 	}

+ 10 - 1
iamberry-common-core/src/main/java/com/iamberry/wechat/core/entity/member/Member.java

@@ -47,7 +47,16 @@ public class Member implements Serializable{
 	private Integer templateId;				//返利模板id
 	private Integer userDealers;			//代理商层级id
 	private Page page;						//分页
-	
+	private String phoneCode;				//手机验证码
+
+	public String getPhoneCode() {
+		return phoneCode;
+	}
+
+	public void setPhoneCode(String phoneCode) {
+		this.phoneCode = phoneCode;
+	}
+
 	public Page getPage() {
 		return page;
 	}

+ 38 - 4
iamberry-common-core/src/main/java/com/iamberry/wechat/core/entity/order/OrderItem.java

@@ -41,10 +41,44 @@ public class OrderItem implements Serializable {
 	//			5:青色	6:蓝色	7:紫色	8:白色
 	
 	private String produectRemark;		//产品备注,存放百胜商品69码的
-	
-	
-	
-	
+
+	private Integer itemColorId;			//产品颜色id
+	private String itemProductColor;		//产品颜色
+	private Integer itemProductChildType;	//产品子类型
+	private Integer itemIsSource;			//产品来源
+
+	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 getItemProductType() {
 		return itemProductType;
 	}

+ 9 - 0
iamberry-common-core/src/main/java/com/iamberry/wechat/core/entity/warrantyCard/WarrantyCard.java

@@ -12,6 +12,7 @@ public class WarrantyCard implements java.io.Serializable {
 
     private Integer cardId;             //id
     private String userOpenId;          //openId
+    private Integer productType;        //产品类型id
     private Integer productChildType;   //产品子类型id
     private String cardNo;              //编号
     private String cardProductName;     //产品名称
@@ -24,6 +25,14 @@ public class WarrantyCard implements java.io.Serializable {
     private String cardDistrict;        //区
     private Integer cardTypeState;      //状态 1:使用中,2:停用
 
+    public Integer getProductType() {
+        return productType;
+    }
+
+    public void setProductType(Integer productType) {
+        this.productType = productType;
+    }
+
     public Integer getCardId() {
         return cardId;
     }

+ 8 - 0
iamberry-wechat-interface/src/main/java/com/iamberry/wechat/face/cart/ProductInfoService.java

@@ -3,6 +3,7 @@ package com.iamberry.wechat.face.cart;
 import java.util.List;
 
 import com.iamberry.wechat.core.entity.product.Product;
+import com.iamberry.wechat.core.entity.product.ProductColor;
 
 public interface ProductInfoService {
 
@@ -34,4 +35,11 @@ public interface ProductInfoService {
 	 * @return
 	 */
 	public Integer updateProductNumList(String orderId);
+
+	/**
+	 * 获取产品颜色信息
+	 * @param productColor
+	 * @return
+	 */
+	ProductColor getProductColor(ProductColor productColor);
 }

+ 8 - 0
iamberry-wechat-interface/src/main/java/com/iamberry/wechat/face/mq/EfastOrderService.java

@@ -74,4 +74,12 @@ public interface EfastOrderService {
 	 * @throws Exception
 	 */
 	public boolean exchangeOrderInfoToEfast(MQMessage message) throws Exception;
+
+	/**
+	 * 获取百胜订单信息
+	 * @param orderid
+	 * @return
+	 * @throws Exception
+	 */
+	JSONObject getOrderFormEfast(String orderid) throws Exception;
 }

+ 18 - 0
iamberry-wechat-interface/src/main/java/com/iamberry/wechat/face/phone/PhoneCodeService.java

@@ -0,0 +1,18 @@
+package com.iamberry.wechat.face.phone;
+
+import com.iamberry.wechat.tools.ResponseJson;
+
+/**
+ * 手机短信接口
+ * Created by liuzhiwei on 2017/12/20.
+ */
+public interface PhoneCodeService {
+
+    /**
+     * 根据手机号码、短信验证码、校验是否正确
+     * @param phone
+     * @param code
+     * @return
+     */
+    public ResponseJson validCode(String phone, String code);
+}

+ 17 - 0
iamberry-wechat-interface/src/main/java/com/iamberry/wechat/face/warranty/WarrantyService.java

@@ -0,0 +1,17 @@
+package com.iamberry.wechat.face.warranty;
+
+import com.iamberry.wechat.core.entity.member.Member;
+
+/**
+ * Created by liuzhiwei on 2017/12/21.
+ */
+public interface WarrantyService {
+
+    /**
+     * 批量添加质保卡信息
+     * @param txtOrderId
+     * @return
+     */
+    boolean addWarrantyList(String txtOrderId, Member member, String cardWatero,
+                            String cardProvince, String cardCity, String cardDistrict) throws Exception;
+}

+ 5 - 1
iamberry-wechat-service/src/main/java/com/iamberry/wechat/service/cart/ProductInfoServiceImpl.java

@@ -3,6 +3,7 @@ package com.iamberry.wechat.service.cart;
 import java.util.ArrayList;
 import java.util.List;
 
+import com.iamberry.wechat.core.entity.product.ProductColor;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -80,5 +81,8 @@ public class ProductInfoServiceImpl implements ProductInfoService {
 		return productInfoDao.updateProductNumList(orderItemList);
 	}
 
-	
+	@Override
+	public ProductColor getProductColor(ProductColor productColor) {
+		return productInfoDao.getProductColor(productColor);
+	}
 }

+ 8 - 0
iamberry-wechat-service/src/main/java/com/iamberry/wechat/service/cart/dao/ProductInfoDao.java

@@ -5,6 +5,7 @@ import java.util.List;
 import com.iamberry.wechat.core.entity.PaperBean;
 import com.iamberry.wechat.core.entity.cart.ShopOrderItemDto;
 import com.iamberry.wechat.core.entity.product.Product;
+import com.iamberry.wechat.core.entity.product.ProductColor;
 
 public interface ProductInfoDao {
 
@@ -31,4 +32,11 @@ public interface ProductInfoDao {
 	 * @return
 	 */
 	public Integer updateProductNumList(List<ShopOrderItemDto> orderItemList);
+
+	/**
+	 * 获取产品颜色信息
+	 * @param productColor
+	 * @return
+	 */
+	ProductColor getProductColor(ProductColor productColor);
 }

+ 5 - 1
iamberry-wechat-service/src/main/java/com/iamberry/wechat/service/cart/dao/impl/ProductInfoDaoImpl.java

@@ -2,6 +2,7 @@ package com.iamberry.wechat.service.cart.dao.impl;
 
 import java.util.List;
 
+import com.iamberry.wechat.core.entity.product.ProductColor;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Repository;
 
@@ -52,6 +53,9 @@ public class ProductInfoDaoImpl implements ProductInfoDao {
 		// TODO Auto-generated method stub
 		return productInfoMapper.updateProductNumList(orderItemList);
 	}
-	
 
+	@Override
+	public ProductColor getProductColor(ProductColor productColor) {
+		return productInfoMapper.getProductColor(productColor);
+	}
 }

+ 16 - 0
iamberry-wechat-service/src/main/java/com/iamberry/wechat/service/mapper/PhoneCodeMapper.java

@@ -0,0 +1,16 @@
+package com.iamberry.wechat.service.mapper;
+
+import com.iamberry.wechat.core.entity.phone.PhoneCode;
+
+/**
+ * Created by liuzhiwei on 2017/12/20.
+ */
+public interface PhoneCodeMapper {
+
+    /**
+     * 获取单条手机验证码信息
+     * @param phoneCode
+     * @return
+     */
+    public PhoneCode getPhoneCode(PhoneCode phoneCode);
+}

+ 8 - 0
iamberry-wechat-service/src/main/java/com/iamberry/wechat/service/mapper/ProductInfoMapper.java

@@ -4,6 +4,7 @@ import java.util.List;
 import com.iamberry.wechat.core.entity.PaperBean;
 import com.iamberry.wechat.core.entity.cart.ShopOrderItemDto;
 import com.iamberry.wechat.core.entity.product.Product;
+import com.iamberry.wechat.core.entity.product.ProductColor;
 
 public interface ProductInfoMapper {
 	
@@ -30,4 +31,11 @@ public interface ProductInfoMapper {
 	 * @return
 	 */
 	public Integer updateProductNumList(List<ShopOrderItemDto> orderItemList);
+
+	/**
+	 * 获取产品颜色信息
+	 * @param productColor
+	 * @return
+	 */
+	ProductColor getProductColor(ProductColor productColor);
 }

+ 25 - 0
iamberry-wechat-service/src/main/java/com/iamberry/wechat/service/mapper/WarrantyMapper.java

@@ -0,0 +1,25 @@
+package com.iamberry.wechat.service.mapper;
+
+import com.iamberry.wechat.core.entity.warrantyCard.WarrantyCard;
+
+import java.util.List;
+
+/**
+ * Created by liuzhiwei on 2017/12/21.
+ */
+public interface WarrantyMapper {
+
+    /**
+     * 查询质保卡集合
+     * @param warrantyCard
+     * @return
+     */
+    List<WarrantyCard> listWarrantyCard(WarrantyCard warrantyCard);
+
+    /**
+     * 批量添加质保卡信息
+     * @param list
+     * @return
+     */
+    Integer addWarrantyCardList(List<WarrantyCard> list);
+}

+ 13 - 15
iamberry-wechat-service/src/main/java/com/iamberry/wechat/service/mapper/cartMapper.xml

@@ -210,23 +210,21 @@ PUBLIC
 	
 	<!-- 根据购物车ID数组,批量获取购物车集合 -->
 	<select id="selectCartItemByListId" parameterType="java.util.List" resultType="CartDto">
-		SELECT 
-			C.CART_ID cartId, G.PRODUCT_ID cartProductId, G.PRODUCT_STATUS productStatus,
-			C.CART_NUM cartNum, G.PRODUCT_NAME productName, G.PRODUCT_DISCOUNT productPrice,
-			G.PRODUCT_INTRODUCE_IMG productIntroduceImg, G.PRODUCT_DISCOUNT productDiscount, G.PRODUCT_REMARK productRemark, 
-			G.PRODUCT_COLOR productColor, G.PRODUCT_TYPE productType 
-		FROM 
-			TB_IAMBERRY_SHOP_CART C 
-		LEFT JOIN 
-			TB_IAMBERRY_PRODUCT_INFO G 
-		ON 
-			C.CART_PRODUCT_ID = G.PRODUCT_ID
+		SELECT
+			C.CART_ID cartId, G.PRODUCT_ID cartProductId, pc.COLOR_ID cartColorId, G.PRODUCT_STATUS productStatus,
+			C.CART_NUM cartNum, G.PRODUCT_NAME productName, pc.COLOR_DISCOUNT productPrice,
+			G.PRODUCT_INTRODUCE_IMG productIntroduceImg, pc.COLOR_PRICE productDiscount, PC.COLOR_69CODE productRemark,
+			pc.COLOR_NAME productColor, G.PRODUCT_TYPE productType
+		FROM
+			TB_IAMBERRY_SHOP_CART C
+		LEFT JOIN TB_IAMBERRY_PRODUCT_INFO G ON C.CART_PRODUCT_ID = G.PRODUCT_ID
+		LEFT JOIN TB_IAMBERRY_PRODUCT_COLOR PC ON C.CART_COLOR_ID = PC.COLOR_ID
 		WHERE
 			C.CART_ID IN (
-				<foreach collection="array" item="item" separator=",">
-					#{item} 
-		        </foreach>) 
-		 ORDER BY C.CART_ID DESC
+			<foreach collection="array" item="item" separator=",">
+				#{item}
+			</foreach>)
+		ORDER BY C.CART_ID DESC
 	</select>
 	
 	<!-- 根据orderId查询订单状态,openid和发货时间 -->

+ 17 - 0
iamberry-wechat-service/src/main/java/com/iamberry/wechat/service/mapper/phoneCodeMapper.xml

@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<!-- 命名,每一个映射对象不一样
+	namespace:必须与对应的接口全类名一致
+ -->
+<mapper namespace="com.iamberry.wechat.service.mapper.PhoneCodeMapper">
+
+    <!-- 获取单条手机验证码信息 -->
+    <select id="getPhoneCode" parameterType="PhoneCode" resultType="PhoneCode">
+      SELECT
+        *
+      FROM
+        tb_iamberry_phone_code
+      WHERE
+        code_tel = #{codeTel}
+    </select>
+</mapper>

+ 18 - 0
iamberry-wechat-service/src/main/java/com/iamberry/wechat/service/mapper/productInfoMapper.xml

@@ -85,4 +85,22 @@
 			PRODUCT_ID = #{item.itemProductId,jdbcType=INTEGER}
 			</foreach>
 	</update>
+
+	<!-- 获取产品颜色信息 -->
+	<select id="getProductColor" parameterType="ProductColor" resultType="ProductColor">
+		SELECT
+		  c.*,
+		  ct.type_id colorProductType,
+		  ct.child_type_id productChildType,
+		  p.product_name colorProductName
+		FROM
+		  tb_iamberry_product_color c
+		LEFT JOIN tb_iamberry_product_info p ON c.color_product_id = p.product_id
+		LEFT JOIN tb_iamberry_product_child_type ct ON p.product_child_type = ct.child_type_id
+		<where>
+			<if test="color69Code != null and color69Code != ''">
+				color_69code = #{color69Code}
+			</if>
+		</where>
+	</select>
 </mapper>

+ 46 - 0
iamberry-wechat-service/src/main/java/com/iamberry/wechat/service/mapper/warrantyMapper.xml

@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<!-- 命名,每一个映射对象不一样
+	namespace:必须与对应的接口全类名一致
+ -->
+<mapper namespace="com.iamberry.wechat.service.mapper.WarrantyMapper">
+
+    <!-- 查询质保卡集合 -->
+    <select id="listWarrantyCard" parameterType="WarrantyCard" resultType="WarrantyCard">
+        SELECT
+          *
+        FROM
+          tb_iamberry_warranty_card
+        <where>
+            <if test="userOpenId != null and userOpenId != ''">
+                user_open_id = #{userOpenId}
+            </if>
+            <if test="cardSalesTime != null">
+                AND card_sales_time = #{cardSalesTime}
+            </if>
+        </where>
+    </select>
+
+    <!-- 批量添加质保卡信息 -->
+    <insert id="addWarrantyCardList" parameterType="ArrayList">
+        <selectKey resultType="int" keyProperty="cardId" order="AFTER">
+            SELECT
+            LAST_INSERT_ID()
+        </selectKey>
+        INSERT INTO tb_iamberry_warranty_card
+        (
+        user_open_id,product_type,product_child_type,card_no,card_product_name,
+        card_watero,card_sales_time,card_end_time,card_create_date,card_province,
+        card_city,card_district,card_type_state
+        )
+        VALUES
+        <foreach collection="list" item="item" index="index" separator="," >
+            (
+            #{item.userOpenId},#{item.productType},#{item.productChildType},#{item.cardNo},
+            #{item.cardProductName},#{item.cardWatero},#{item.cardSalesTime},#{item.cardEndTime},
+            #{item.cardCreateDate},#{item.cardProvince},#{item.cardCity},#{item.cardDistrict},
+            #{item.cardTypeState}
+            )
+        </foreach>
+    </insert>
+</mapper>

+ 38 - 0
iamberry-wechat-service/src/main/java/com/iamberry/wechat/service/mq/EfastOrderServiceImpl.java

@@ -11,6 +11,7 @@ import java.util.regex.Pattern;
 import net.sf.json.JSONObject;
 
 import org.apache.commons.lang3.StringEscapeUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -614,6 +615,43 @@ public class EfastOrderServiceImpl implements EfastOrderService {
 				}
 				return null;
 	}
+
+	@Override
+	public JSONObject getOrderFormEfast(String orderid) throws Exception {
+		if(StringUtils.isEmpty(orderid)) return null;
+		Map<String, String> requestData = new HashMap<String, String>();
+		requestData.put("app_nick", NameUtils.app_nick);
+		requestData.put("app_key", NameUtils.app_key);
+		requestData.put("app_secret", NameUtils.app_secret);
+		requestData.put("timestamp", DateTimeUtil.format(new Date(),"yyyyMMddHHmmss"));
+		requestData.put("app_act", "efast.trade.detail.get");
+
+		requestData.put("oid", orderid);
+		requestData.put("feilds",NameUtils.order_field);   //1.order_status 订单状态:0(未确认)1(确认)2(挂起)3(作废)     2.shipping_status发货状态: 0(未发货)1(已发货,即已扫描出库)3(备货中)
+
+		try {
+			String result = HttpClient431Util.doGet(requestData, NameUtils.efast_base_url);
+			result = StringEscapeUtils.unescapeJava(result); // unicode 编码
+			Pattern p = Pattern.compile("\\s*|\t|\r|\n");
+			Matcher m = p.matcher(result);
+			if (m.find()) {
+				result = m.replaceAll("");
+			}
+			logger.info("rst-推送百胜订单号-->>" + orderid + ",百胜返回信息-->" + result);
+			// parse JSON String to Object
+			JSONObject jsonObject = JSONObject.fromObject(result);
+			JSONObject respData = JSONObject.fromObject(jsonObject.get("resp_data"));
+			if (respData != null) {
+				return respData;
+			} else {
+				logger.error(this,"rst-获取百胜出错,订单号-->>" + orderid + ",百胜返回信息-->" + result);
+				throw new Exception(respData.getString("msg"));
+			}
+		} catch (Exception e) {
+			logger.error(this,"rst-获取百胜出错,订单号-->>" + orderid + ",catch");
+			throw e;
+		}
+	}
 	
 	//修改物流的快递代码,修改成百盛那边可以接收的快递代码
 	public String getExpressCode(String code) {

+ 173 - 0
iamberry-wechat-service/src/main/java/com/iamberry/wechat/service/phone/PhoneCodeServiceImpl.java

@@ -0,0 +1,173 @@
+package com.iamberry.wechat.service.phone;
+
+import com.iamberry.app.config.ImberryConfig;
+import com.iamberry.app.tool.log.RatFWLogger;
+import com.iamberry.wechat.core.entity.phone.PhoneCode;
+import com.iamberry.wechat.face.phone.PhoneCodeService;
+import com.iamberry.wechat.service.mapper.PhoneCodeMapper;
+import com.iamberry.wechat.tools.ResponseJson;
+import net.sf.json.JSONObject;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.http.HttpEntity;
+import org.apache.http.NameValuePair;
+import org.apache.http.client.entity.UrlEncodedFormEntity;
+import org.apache.http.client.methods.CloseableHttpResponse;
+import org.apache.http.client.methods.HttpPost;
+import org.apache.http.impl.client.CloseableHttpClient;
+import org.apache.http.impl.client.HttpClients;
+import org.apache.http.message.BasicNameValuePair;
+import org.apache.http.util.EntityUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.text.MessageFormat;
+import java.util.*;
+
+/**
+ * 手机短信业务
+ * Created by liuzhiwei on 2017/12/20.
+ */
+@Service
+public class PhoneCodeServiceImpl implements PhoneCodeService {
+
+    @Autowired
+    private RatFWLogger logger;
+    @Autowired
+    private PhoneCodeMapper phoneCodeMapper;
+
+    private static String ENCODING = "UTF-8";
+    private static Random rnd = new Random();
+
+    /**
+     * 发送短信验证码 封装返回前台参数
+     * @param phone		手机号码
+     * @param code		短信验证码
+     * @return
+     */
+    private ResponseJson sendCMS(String phone, String code) {
+        ResponseJson json = new ResponseJson();
+        json.setReturnCode(500);
+        String result = null;
+        try {
+            String text = MessageFormat.format(ImberryConfig.INTER_SMS_TEXT, code);
+            result = sendOtherCMS(phone, text);
+        } catch (Exception e) {
+            logger.info(PhoneCodeServiceImpl.class, e.getMessage());
+            result = "验证码发送失败,请稍后重试";
+        }
+        if (StringUtils.equals(result, "SUCCESS")) {
+            json.setReturnCode(200);
+        }
+        json.addResponseKeyValue(result);
+        return json;
+    }
+
+    /**
+     * 向指定手机发送短信 返回发送结果
+     * @param phone	电话
+     * @param text	短信内容
+     * @return
+     */
+    private String sendOtherCMS(String phone, String text) {
+        String results = sendSms(text,phone);
+        logger.info("向手机:" + phone + ",发送短信:" + text + ",返回结果-->>" + results);
+        JSONObject json =  JSONObject.fromObject(results);
+        String resultcod  = json.get("code").toString();
+        if("0".equals(resultcod)){
+            return "SUCCESS";
+        }else{
+            return "验证码发送失败,请稍后重试";
+        }
+    }
+
+    /**
+     * 配置云片相关信息并发送请求
+     * @param text		发送的内容
+     * @param mobile	手机号
+     * @return
+     */
+    public static String sendSms(String text, String mobile)  {
+        Map<String, String> params = new HashMap<String, String>();
+        params.put("apikey", ImberryConfig.INTER_SMS_KEY);
+        params.put("text", text);
+        params.put("mobile", mobile);
+        return post(ImberryConfig.INTER_SMS_URL, params);
+    }
+
+    /** 基于HttpClient 4.3的通用POST方法
+     * @param url       提交的URL
+     * @param paramsMap 提交<参数,值>Map
+     * @return 提交响应
+     */
+    public static String post(String url, Map<String, String> paramsMap) {
+        CloseableHttpClient client = HttpClients.createDefault();
+        String responseText = "";
+        CloseableHttpResponse response = null;
+        try {
+            HttpPost method = new HttpPost(url);
+            if (paramsMap != null) {
+                List<NameValuePair> paramList = new ArrayList<NameValuePair>();
+                for (Map.Entry<String, String> param : paramsMap.entrySet()) {
+                    NameValuePair pair = new BasicNameValuePair(param.getKey(), param.getValue());
+                    paramList.add(pair);
+                }
+                method.setEntity(new UrlEncodedFormEntity(paramList, ENCODING));
+            }
+            response = client.execute(method);
+            HttpEntity entity = response.getEntity();
+            if (entity != null) {
+                responseText = EntityUtils.toString(entity);
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        } finally {
+            try {
+                response.close();
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+        }
+        return responseText;
+    }
+
+    @Override
+    public ResponseJson validCode(String phone, String code) {
+        ResponseJson json = new ResponseJson();
+        PhoneCode phoneCode = new PhoneCode();
+        phoneCode.setCodeTel(phone);
+        //根据手机号码获取验证码
+        phoneCode = phoneCodeMapper.getPhoneCode(phoneCode);
+        // 校验
+        if (phoneCode == null) {
+            // 操作有误
+            json.setReturnCode(404);
+            json.addResponseKeyValue("验证失败");
+            return json;
+        }
+        Date now = new Date();
+        if (now.getTime() >= (phoneCode.getCodeSendTime().getTime() + 180000)) {
+            // 验证码无效
+            json.setReturnCode(404);
+            json.addResponseKeyValue("验证码无效");
+            return json;
+        }
+        // 必须 验证码正确,并且场景正确
+        if (!code.equals(phoneCode.getCodePhoneCode())) {
+            // 验证码错误
+            json.setReturnCode(404);
+            json.addResponseKeyValue("验证码错误");
+            return json;
+        }
+        // 只要校验,表示本次验证码使用
+        json.setReturnCode(200);
+        json.addResponseKeyValue("SUCCESS");
+        return json;
+    }
+
+    public static String getRandomCode(int len) {
+        StringBuilder sb = new StringBuilder(len);
+        for (int i = 0; i < len; i++)
+            sb.append("0123456789".charAt(rnd.nextInt("0123456789".length())));
+        return sb.toString();
+    }
+}

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

@@ -0,0 +1,129 @@
+package com.iamberry.wechat.service.warranty;
+
+import com.iamberry.wechat.core.entity.admin.ShopSystemRule;
+import com.iamberry.wechat.core.entity.member.Member;
+import com.iamberry.wechat.core.entity.product.ProductColor;
+import com.iamberry.wechat.core.entity.warrantyCard.WarrantyCard;
+import com.iamberry.wechat.face.admin.SystemService;
+import com.iamberry.wechat.face.mq.EfastOrderService;
+import com.iamberry.wechat.face.warranty.WarrantyService;
+import com.iamberry.wechat.service.mapper.ProductInfoMapper;
+import com.iamberry.wechat.service.mapper.WarrantyMapper;
+import com.iamberry.wechat.tools.ResultInfo;
+import net.sf.json.JSONArray;
+import org.hibernate.validator.constraints.URL;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 质保卡servlet
+ * Created by liuzhiwei on 2017/12/21.
+ */
+@Service
+public class WarrantyServiceImpl implements WarrantyService {
+
+    @Autowired
+    private EfastOrderService efastOrderService;
+    @Autowired
+    private ProductInfoMapper productInfoMapper;
+    @Autowired
+    private SystemService systemService;
+    @Autowired
+    private WarrantyMapper warrantyMapper;
+
+    @Override
+    public boolean addWarrantyList(String txtOrderId, Member member, String cardWatero,
+                                   String cardProvince, String cardCity, String cardDistrict) throws Exception {
+
+        List<WarrantyCard> cardList = new ArrayList<WarrantyCard>();
+        boolean flag = false;
+        int sum = 0;
+        //循环添加机器信息
+        if (txtOrderId != null && !"".equals(txtOrderId)) {
+            txtOrderId = txtOrderId.substring(0,txtOrderId.lastIndexOf(","));
+            //获取交易号
+            String[] orderIds = txtOrderId.split(",");
+            for (int i = 0;i < orderIds.length;i++) {
+                //获取百胜订单详情
+                net.sf.json.JSONObject orderInfo = efastOrderService.getOrderFormEfast(orderIds[i]);
+                if (orderInfo == null || !orderInfo.has("orders")) {
+                    return flag;
+                }
+                //获取订单项集合
+                JSONArray itemArray = orderInfo.getJSONArray("orders");
+                if (itemArray == null || itemArray.size() == 0) {
+
+                }
+                for (int j = 0;j < itemArray.size();j++) {
+                    ProductColor color = new ProductColor();
+                    net.sf.json.JSONObject itemJson = itemArray.getJSONObject(j);
+                    color.setColor69Code(itemJson.getString("goods_sn"));
+                    //根据产品69码查询产品颜色信息
+                    color = productInfoMapper.getProductColor(color);
+                    if (color == null) {
+                        continue;
+                    }
+                    //获取换新时间期限
+                    ShopSystemRule endRule =  systemService.selectOneShopRuleById(242);
+                    WarrantyCard card = new WarrantyCard();
+                    card.setCardSalesTime(new Date(orderInfo.getLong("pay_time")*1000));
+                    card.setProductChildType(color.getProductChildType());
+                    card.setProductType(color.getColorProductType());
+                    card.setCardEndTime(updateDate(card.getCardSalesTime(),endRule.getRuleNum().intValue()));
+                    card.setCardCity(cardCity);
+                    card.setCardDistrict(cardDistrict);
+                    card.setCardProvince(cardProvince);
+                    card.setCardWatero(Integer.parseInt(cardWatero));
+                    card.setCardProductName(color.getColorProductName());
+                    card.setCardTypeState(1);
+                    card.setUserOpenId(member.getUserOpenid());
+                    card.setCardCreateDate(new Date());
+
+                    //查询该质保卡信息,如果存在,则不再添加
+                    List<WarrantyCard> list = warrantyMapper.listWarrantyCard(card);
+                    if (list != null || list.size() > 0) {
+                        continue;
+                    }
+
+                    //生成编号
+                    sum++;
+                    String userid = member.getUserId().toString();
+                    int len = 11;//条形码不加sum的定长
+                    StringBuilder berQrcode = new StringBuilder(userid);
+                    String dateTime = String.valueOf(new Date().getTime());
+                    int dateTimeLen = len - userid.length();
+                    dateTime = dateTime.substring(0,dateTimeLen);
+                    berQrcode.append(dateTime);
+                    card.setCardNo(berQrcode.toString() + sum);
+                    cardList.add(card);
+                }
+            }
+        }
+        //批量添加质保卡信息
+        int num = warrantyMapper.addWarrantyCardList(cardList);
+        if (num > 0) {
+            return true;
+        } else {
+            return false;
+        }
+    }
+
+    /**
+     * 修改日期 增加月
+     * @param date
+     * @param month
+     * @return
+     * @throws Exception
+     */
+    public Date updateDate(Date date,int month) throws Exception {
+        Calendar calendar = Calendar.getInstance();
+        calendar.setTime(date);
+        calendar.add(Calendar.MONTH, month);
+        return calendar.getTime();
+    }
+}

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

@@ -296,6 +296,11 @@ public class OrderHandler {
 				item.setItemTotal(subTotal);
 				item.setItemProductType(cartDto.getProductType());
 				item.setItemProductPrice(cartDto.getProductDiscount());
+				item.setItemColorId(cartDto.getCartColorId());
+				/*item.setItemProductColor();
+				item.setItemProductChildType();
+				item.setItemIsSource();*/
+
 				list.add(item);
 			}
 		}

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

@@ -5,12 +5,18 @@ import com.iamberry.wechat.core.entity.ResultMsg;
 import com.iamberry.wechat.core.entity.WechatUtils;
 import com.iamberry.wechat.core.entity.admin.ShopSystemRule;
 import com.iamberry.wechat.core.entity.member.Member;
+import com.iamberry.wechat.core.entity.product.ProductColor;
 import com.iamberry.wechat.core.entity.warrantyCard.WarrantyCard;
 import com.iamberry.wechat.face.admin.SystemService;
+import com.iamberry.wechat.face.cart.ProductInfoService;
+import com.iamberry.wechat.face.mq.EfastOrderService;
+import com.iamberry.wechat.face.phone.PhoneCodeService;
+import com.iamberry.wechat.face.warranty.WarrantyService;
 import com.iamberry.wechat.tools.HttpClient431Util;
 import com.iamberry.wechat.tools.NameUtils;
 import com.iamberry.wechat.tools.ResponseJson;
 import com.iamberry.wechat.tools.ResultInfo;
+import net.sf.json.JSONArray;
 import org.apache.commons.lang.StringUtils;
 import org.apache.http.ParseException;
 import org.json.JSONException;
@@ -47,6 +53,10 @@ public class WarrantyCardHandler {
     private SystemService systemService;
     @Autowired
     private WechatUtils wechatUtils;
+    @Autowired
+    private PhoneCodeService phoneCodeService;
+    @Autowired
+    private WarrantyService warrantyService;
 
     /**
      * 根据电话号码查询百胜订单信息
@@ -120,16 +130,13 @@ public class WarrantyCardHandler {
     public ResultMsg addWarrantyCardList(HttpServletRequest request, Member member) throws Exception {
         ResultMsg msg = new ResultMsg();
         SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-        String numberWatero = request.getParameter("numberWatero");
-        String numberProvince = request.getParameter("numberProvince");
-        String numberCity = request.getParameter("numberCity");
-        String numberDistrict = request.getParameter("numberDistrict");
-
-        List<WarrantyCard> list = new ArrayList<WarrantyCard>();
-        Member memberInfo = wechatUtils.getUserBySession(request);
-        String txtTime = request.getParameter("txtTime");
+        String cardWatero = request.getParameter("cardWatero");
+        String cardProvince = request.getParameter("cardProvince");
+        String cardCity = request.getParameter("cardCity");
+        String cardDistrict = request.getParameter("cardDistrict");
+        String txtOrderId = request.getParameter("txtOrderId");
         //查询用户信息
-        /*memberInfo = memberService.getMemberByUserOpenId(memberInfo.getUserOpenid());
+        Member memberInfo = wechatUtils.getUserBySession(request);
         if (memberInfo == null) {
             msg.setResultCode(ResultInfo.ERRORCODE);
             msg.setStatus(false);
@@ -137,18 +144,19 @@ public class WarrantyCardHandler {
             return msg;
         }
         member.setUserId(memberInfo.getUserId());
+        member.setUserOpenid(memberInfo.getUserOpenid());
 
-        if (!StringUtils.isNotEmpty(numberProvince)) {
+        if (!StringUtils.isNotEmpty(cardProvince)) {
             String ip = getIp(request);
             Map<String,Object> locations = getLocation(ip);
             if (StringUtils.isNotEmpty((String)locations.get("province"))) {
-                numberProvince = (String)locations.get("province");
-                numberCity = (String)locations.get("city");
-                numberDistrict = (String)locations.get("district");
+                cardProvince = (String)locations.get("province");
+                cardCity = (String)locations.get("city");
+                cardDistrict = (String)locations.get("district");
             }
         }
 
-        if (!StringUtils.isNotEmpty(numberWatero)) {
+        if (!StringUtils.isNotEmpty(cardWatero)) {
             msg.setResultCode(ResultInfo.ERRORCODE);
             msg.setStatus(false);
             msg.setMessage("水质范围为空,请重新填写水质范围!");
@@ -156,7 +164,7 @@ public class WarrantyCardHandler {
         }
 
         //验证手机验证码是否正确
-        ResponseJson code = codeService.validCode(member.getUserTel(),member.getPhoneCode());
+        ResponseJson code = phoneCodeService.validCode(member.getUserTel(),member.getPhoneCode());
         if (code.getReturnCode() != 200) {
             msg.setResultCode(ResultInfo.ERRORCODE);
             msg.setStatus(false);
@@ -164,31 +172,16 @@ public class WarrantyCardHandler {
             return msg;
         }
 
-        //循环添加机器信息
-        if (txtTime != null && !"".equals(txtTime)) {
-            txtTime = txtTime.substring(0,txtTime.lastIndexOf(","));
-            String[] times = txtTime.split(",");
-            for (int i = 0;i < times.length;i++) {
-                MachineNumber machineNumber = new MachineNumber();
-                machineNumber.setNumberOpenId(memberInfo.getUserOpenid());
-                machineNumber.setNumberSalesTime(format.parse(times[i]));
-                machineNumber.setNumberWatero(Integer.parseInt(numberWatero));
-                machineNumber.setNumberProvince(numberProvince);
-                machineNumber.setNumberCity(numberCity);
-                machineNumber.setNumberDistrict(numberDistrict);
-                list.add(machineNumber);
-            }
-        }
-
         //添加机器信息
-        boolean flag = machineNumberService.addMachineNumberList(list, memberInfo.getUserOpenid(), member);
+        boolean flag = warrantyService.addWarrantyList(txtOrderId,member,cardWatero,
+                cardProvince,cardCity,cardDistrict);
         if (flag) {
             msg.setResultCode(ResultInfo.SUCCESSCODE);
             msg.setStatus(true);
         } else {
             msg.setResultCode(ResultInfo.ERRORCODE);
             msg.setStatus(false);
-        }*/
+        }
         return msg;
     }
 

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

@@ -133,6 +133,15 @@
 		<typeAlias type="com.iamberry.wechat.core.entity.wx.ZTreeBean" alias="ZTreeBean"/>
 		<typeAlias type="com.iamberry.wechat.core.entity.drp.ApplyPlaceLogs" alias="ApplyPlaceLogs"/>
 		<typeAlias type="com.iamberry.wechat.core.entity.wx.WechatShare" alias="WechatShare"/>
+
+		<typeAlias type="com.iamberry.wechat.core.entity.product.ProductChildType" alias="ProductChildType"/>
+		<typeAlias type="com.iamberry.wechat.core.entity.product.ProductColor" alias="ProductColor"/>
+		<typeAlias type="com.iamberry.wechat.core.entity.product.ProductFittings" alias="ProductFittings"/>
+		<typeAlias type="com.iamberry.wechat.core.entity.product.SalesUserGift" alias="SalesUserGift"/>
+		<typeAlias type="com.iamberry.wechat.core.entity.search.SearchInfo" alias="SearchInfo"/>
+		<typeAlias type="com.iamberry.wechat.core.entity.warrantyCard.WarrantyCard" alias="WarrantyCard"/>
+		<typeAlias type="com.iamberry.wechat.core.entity.phone.PhoneCode" alias="PhoneCode"/>
+
 	
 		<!-- 【门店关注统计报表类】 -->
 		<typeAlias type="com.iamberry.wechat.core.entity.statictics.AttentionInfo" alias="AttentionInfo"/>
@@ -238,6 +247,8 @@
 		<mapper resource="com/iamberry/wechat/service/mapper/wdRelationMapper.xml"/>
 		<mapper resource="com/iamberry/wechat/service/mapper/wechatShareMapper.xml"/>
 		<mapper resource="com/iamberry/wechat/service/mapper/withdrawMapper.xml"/>
+		<mapper resource="com/iamberry/wechat/service/mapper/phoneCodeMapper.xml"/>
+		<mapper resource="com/iamberry/wechat/service/mapper/warrantyMapper.xml"/>
 	</mappers>
 
 </configuration>