wangxiaoming 7 rokov pred
rodič
commit
2c99558141

+ 6 - 0
tooth-wechat-interface/src/main/java/com/iamberry/wechat/face/porduct/ProductService.java

@@ -23,6 +23,12 @@ public interface ProductService {
 	 * @return
 	 */
 	public List<Product> selectAllProductInfo(Product product);
+
+
+	/**
+	 * 获取所有商品数量
+	 */
+	public Integer selectAllProductNum(Product product);
 	
 	/**
 	 * 根据productId 查询单个产品

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

@@ -20,6 +20,11 @@ public interface ProductMapper {
 	 * @return
 	 */
 	public List<Product> selectAllProductInfo(Product product);
+
+	/**
+	 * 获取所有商品数量
+	 */
+	public Integer selectAllProductNum(Product product);
 	
 	/**
 	 * 查所有产品的id和name 用来创建产品的下拉框

+ 25 - 0
tooth-wechat-service/src/main/java/com/iamberry/wechat/service/mapper/productMapper.xml

@@ -32,6 +32,29 @@
 		TYPE_STATE typeState
 	</sql>
 
+	<!-- 查询商品数量 -->
+	<select id="selectAllProductNum" resultType="Integer" parameterType="product">
+		SELECT
+			COUNT(PRODUCT_ID)
+		FROM TB_IAMBERRY_PRODUCT_INFO
+		JOIN TB_IAMBERRY_PRODUCT_TYPE ON PRODUCT_TYPE = TYPE_ID
+		<where>
+			<if test="productName != null and productName != ''">
+				PRODUCT_NAME LIKE CONCAT('%',#{productName},'%')
+			</if>
+			<if test="productType != null and productType.typeId !=null and productType.typeId !=''">
+				and PRODUCT_TYPE=#{productType.typeId}
+			</if>
+			<if test="beginDate != null and beginDate != ''">
+				<![CDATA[AND DATE_FORMAT(PRODUCT_CREATE_DATE, '%Y-%m-%d') >= DATE_FORMAT(#{beginDate},'%Y-%m-%d')]]>
+			</if>
+			<if test="endDate != null and endDate != ''">
+				<![CDATA[AND DATE_FORMAT(PRODUCT_CREATE_DATE, '%Y-%m-%d') <= DATE_FORMAT(#{endDate},'%Y-%m-%d')]]>
+			</if>
+		</where>
+		ORDER BY product_sort_num
+	</select>
+
 	<!-- 查询所有的产品并分页 -->
 	<select id="selectAllProductInfo" resultMap="productColorMap" parameterType="product">
 		SELECT
@@ -47,6 +70,7 @@
 			PRODUCT_SORT_NUM,
 			PRODUCT_COLOR_DES,
 			PRODUCT_REMARK,
+			PRODUCT_DISCOUNT,
 			PRODUCT_RENT_TYPE,
 			TYPE_ID,
 			TYPE_NAME 
@@ -89,6 +113,7 @@
 		<result column="PRODUCT_INTRODUCE_IMG" property="productIntroduceImg"/>
 		<result column="PRODUCT_PARAMETER_IMG" property="productParameterImg"/>
 		<result column="PRODUCT_REMARK" property="productRemark"/>
+		<result column="PRODUCT_DISCOUNT" property="productDiscount"/>
 		<result column="PRODUCT_TYPE" property="productType.typeId"/>
 		<result column="PRODUCT_RENT_TYPE" property="productRentType"/>
 		<collection property="colorList" column="PRODUCT_ID" ofType="ProductColor" select="selectAllColorInfo"/>

+ 7 - 0
tooth-wechat-service/src/main/java/com/iamberry/wechat/service/product/ProductServiceImpl.java

@@ -54,6 +54,13 @@ public class ProductServiceImpl implements ProductService{
 		product.getPage().initRecordBegin();
 		return productDao.selectAllProductInfo(product);
 	}
+
+	/**
+	 * 获取所有商品数量
+	 */
+	public Integer selectAllProductNum(Product product){
+		return productDao.selectAllProductNum(product);
+	}
 	
 	/**
 	 * 根据productId 查询单个产品

+ 6 - 0
tooth-wechat-service/src/main/java/com/iamberry/wechat/service/product/dao/ProductDao.java

@@ -19,6 +19,12 @@ public interface ProductDao {
 	 * @return
 	 */
 	public List<Product> selectAllProductInfo(Product product);
+
+
+	/**
+	 * 获取所有商品数量
+	 */
+	public Integer selectAllProductNum(Product product);
 	
 	/**
 	 * 根据productId 查询单个产品

+ 7 - 0
tooth-wechat-service/src/main/java/com/iamberry/wechat/service/product/dao/impl/ProductDAOImpl.java

@@ -31,6 +31,13 @@ public class ProductDAOImpl implements ProductDao{
 	public List<Product> selectAllProductInfo(Product product){
 		return productMapper.selectAllProductInfo(product);
 	}
+
+	/**
+	 * 获取所有商品数量
+	 */
+	public Integer selectAllProductNum(Product product){
+		return productMapper.selectAllProductNum(product);
+	}
 	
 	/**
 	 * 根据productId 查询单个产品

+ 97 - 29
tooth-wechat-web/src/main/java/com/iamberry/wechat/handles/polyapi/ExternalDockPolyApiHandler.java

@@ -6,9 +6,11 @@ import com.iamberry.app.tool.des.MD5;
 import com.iamberry.wechat.core.entity.order.Order;
 import com.iamberry.wechat.core.entity.order.OrderItem;
 import com.iamberry.wechat.core.entity.product.Product;
+import com.iamberry.wechat.core.entity.product.ProductColor;
 import com.iamberry.wechat.face.order.AdminOrderService;
 import com.iamberry.wechat.face.porduct.ProductService;
 import com.iamberry.wechat.tools.NameUtils;
+import com.iamberry.wechat.tools.ResultInfo;
 import com.iamberry.wechat.tools.SendMessageUtil;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -18,6 +20,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.ResponseBody;
 
 import javax.servlet.http.HttpServletRequest;
+import java.awt.*;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.util.ArrayList;
@@ -39,6 +42,10 @@ public class ExternalDockPolyApiHandler {
     @Autowired
     private ProductService productService;
 
+    @Autowired
+    private SendMessageUtil sendMessageUtil;
+
+
     /**
      * DES对称加密
      */
@@ -93,7 +100,7 @@ public class ExternalDockPolyApiHandler {
                 map = updateOrderRemark(requstMap);
                 break;
             case "Differ.JH.Business.DownloadProduct" :  //商品下载
-               // map = downProduct(requstMap);
+                map = downProduct(requstMap);
                 break;
             case "Differ.JH.Business.SyncStock" :  //商品库存同步
                 break;
@@ -154,9 +161,10 @@ public class ExternalDockPolyApiHandler {
             order.setBeginDate(sdf.parse(startTime));
             order.setEndDate(sdf.parse(endTime));
         }catch (ParseException e){
+            logger.info("=========日期转换失败=========");
             map.put("code","40000");
-            map.put("message","时间格式不对");
-            map.put("submessage","时间格式不对");
+            map.put("message","日期转换失败");
+            map.put("submessage","日期转换失败");
             map.put("numtotalorder",0);
             return map;
         }
@@ -189,14 +197,10 @@ public class ExternalDockPolyApiHandler {
         Map<String,Object> map = new HashMap<String,Object>();
         String orderId = (String) requstMap.get("OrderID"); //平台订单号
 
-        Order order = new Order();
-        List<Order> orderList;
+        Order order;
         if(orderId != null && !"".equals(orderId)){
-            order.setSalesOrderid(orderId);
-            orderList = adminOrderService.selectShopOrderByPola(order);
-            if(orderList != null && orderList.size() > 0){
-                order = orderList.get(0);
-            }else{
+            order = adminOrderService.selectShopOrderByPolaById(orderId);
+            if(order == null){
                 map.put("code","40000");
                 map.put("message","未查询到该订单");
                 map.put("submessage","未查询到该订单");
@@ -208,13 +212,12 @@ public class ExternalDockPolyApiHandler {
             map.put("submessage","订单号不能为空");
             return map;
         }
-        map.put("refundStatus ",this.getOrderRefundStatus(order.getSalesStatus()));     //退款状态   必填
-
+        map.put("refundStatus",this.getOrderRefundStatus(order.getSalesStatus()));     //退款状态   必填
         String refundStatusdescription = "";
         if(order.getSalesReturnDes() != null){
             refundStatusdescription = order.getSalesReturnDes();
         }
-        map.put("refundStatusdescription ",refundStatusdescription);  //选填 退款说明
+        map.put("refundStatusdescription",refundStatusdescription);  //选填 退款说明
         List<Map<String,Object>> childrenrefundStatus = new ArrayList<>();
         List<OrderItem> orderItemList = adminOrderService.getShopOrderItemByOrderIdToPola(order.getSalesOrderid());
         for(OrderItem orderItem : orderItemList){
@@ -225,10 +228,10 @@ public class ExternalDockPolyApiHandler {
             childrenrefund.put("refundStatusdescription",refundStatusdescription);      //选填 退款说明
             childrenrefundStatus.add(childrenrefund);
         }
-        map.put("childrenrefundStatus ",childrenrefundStatus);  //子订单退款说明
+        map.put("childrenrefundStatus",childrenrefundStatus);  //子订单退款说明
         map.put("code","10000");
-        map.put("message","返回订单退款状态");
-        map.put("submessage","返回订单退款状态,订单状态为:"+ this.getDescription(order.getSalesStatus()));
+        map.put("message","返回订单退款状态成功,订单id:"+  order.getSalesOrderid() +"订单状态为:"+ this.getDescription(order.getSalesStatus()));
+        map.put("submessage","返回订单退款状态成功");
         return map;
     }
 
@@ -279,6 +282,24 @@ public class ExternalDockPolyApiHandler {
             or.setSalesPostNum(LogisticNo);       //设置快递单号
             or.setSalesStatus(5);        //发货
             flag = adminOrderService.deliverOrderByOrderId(or);
+            //给用户发送消息-已发货的通知
+            String  firm = this.selectFirm(LogisticType);  //快递公司
+            String  num = LogisticNo;       //快递单号
+            try {
+                sendMessageUtil.orderSendSuccess(
+                        "尊敬的朵粉,您的订单已发货,物流信息:",
+                        order.getSalesOrderid(),
+                        SendMessageUtil.hashmap.get(firm),
+                        num,
+                        order.getSalesAddressInfo(),
+                        "如有问题请致电400-678-1860或直接在微信留言,soodo上朵将第一时间为您服务!(点击查看订单详情)",
+                        order.getSalesOpenid(),
+                        ResultInfo.ORDER_DETAIL+order.getSalesOrderid()
+                );
+            } catch (Exception e) {
+                logger.info("订单号:"+ order.getSalesOrderid() +"的订单已发货,发送微信消息失败!");
+            }
+
         }
         if(flag){
             map.put("code","10000");
@@ -353,13 +374,12 @@ public class ExternalDockPolyApiHandler {
         String pageSize = (String) requstMap.get("PageSize");     //每页条数(默认值:10)
 
 //        map.put("code","10000");
-//        map.put("message","修改订单备注成功");
-//        map.put("submessage","修改订单备注成功");
+//        map.put("message","退货退款单下载");
+//        map.put("submessage","退货退款单下载");
 
         return map;
     }
 
-
     /**
      * 获取商品
      * @param requstMap
@@ -368,26 +388,74 @@ public class ExternalDockPolyApiHandler {
     private Map<String,Object> downProduct(Map<String,Object> requstMap){
         Map<String,Object> map = new HashMap<String,Object>();
 
-        Integer productId = Integer.valueOf(requstMap.get("ProductId").toString());     //可选,商品外部商家编码(注,网店管家目前尚未支持此参数的查询)
+        Integer productId = null;
+        String ProductId = requstMap.get("ProductId").toString();
+        if(ProductId != null && !"".equals(ProductId) ){
+            productId = Integer.valueOf(ProductId);     //可选,商品外部商家编码(注,网店管家目前尚未支持此参数的查询)
+        }
         String productName = (String) requstMap.get("ProductName");     //商品名称
         String status = (String) requstMap.get("Status");     //商品状态(已上架商品=JH_01,已下架商品=JH_02,所有商品=JH_99)
         Integer pageIndex = Integer.valueOf(requstMap.get("PageIndex").toString()) ;     //开始时间
         Integer pageSize = Integer.valueOf(requstMap.get("PageSize").toString());     //开始时间
 
         Product product = new Product();
-        if(productId != null && !"".equals(productId)){
-            product.setProductId(productId);
+
+        if(status == null || "".equals(status) || "JH_99".equals(status)){
+            product.setProductStatus(1);
+        }else  if("JH_02".equals(status)){
+            List<Map<String,Object>>  goodslist = new ArrayList<>();
+            map.put("code","40000");
+            map.put("totalcount",0);
+            map.put("goodslist",goodslist);
+            map.put("message","获取商品集合成功");
+            map.put("submessage","获取商品集合成功");
+            return map;
         }
+        product.setProductId(productId);
         product.getPage().setPageSize(pageSize);
         product.getPage().setPageNumber(pageIndex);
         List<Product> productList = productService.selectAllProductInfo(product);
 
-        // TODO: 2018/2/8 商品下载 
-
-//        map.put("code","10000");
-//        map.put("message","修改订单备注成功");
-//        map.put("submessage","修改订单备注成功");
-
+        Integer num = productService.selectAllProductNum(product);
+        if(num < 1){
+            num = 1;
+        }
+        map.put("totalcount",num);         //商品总数量(默认值:1)
+        List<Map<String,Object>>  goodslist = new ArrayList<>();
+        for (Product pt : productList){
+            Map<String,Object> goods = new HashMap<String,Object>();
+            goods.put("PlatProductID",String.valueOf(pt.getProductId()));      //平台商品ID 必填
+            goods.put("name",pt.getProductName());               //商品名称 必填
+            //外部商家编码(注:若与管家对接,这里需要返回与管家商品相匹配的编号,方便管家商品与平台商品的匹配)
+            goods.put("OuterID",String.valueOf(pt.getProductId()));      //
+            double discount = pt.getProductDiscount().intValue() / 100;
+            goods.put("price",discount);      //商品价格
+            // TODO: 2018/2/8 商品库存待确定
+            goods.put("num",10000);      //商品数量
+            goods.put("pictureurl","");      //图片URL  可选
+            goods.put("whsecode","");      //商品所在仓库编号  可选
+            List<ProductColor> colors = pt.getColorList(); //获取颜色集合
+            List<Map<String,Object>>  colorList = new ArrayList<>();
+            for(ProductColor productColor : colors){
+                Map<String,Object> colorMap = new HashMap<String,Object>();
+                colorMap.put("SkuID",String.valueOf(productColor.getColorId()));      //平台规格ID
+                //规格外部商家编码(注:若与管家对接,这里需要返回与管家商品相匹配的编号,方便管家商品与平台商品的匹配)
+                colorMap.put("skuOuterID",String.valueOf(productColor.getColorId()));
+                double colorDiscount = productColor.getColorDiscount().intValue() / 100;
+                colorMap.put("skuprice",colorDiscount);      //规格价格
+                colorMap.put("skuQuantity",10000);      //规格数量
+                colorMap.put("skuname",productColor.getColorName());      //规格名称
+                colorMap.put("colors","");      //规格属性  可选
+                colorMap.put("skupictureurl","");      //规格图片URL  可选
+                colorList.add(colorMap);
+            }
+            goods.put("skus",colorList);      //规格集合
+            goodslist.add(goods);
+        }
+        map.put("goodslist",goodslist);
+        map.put("code","10000");
+        map.put("message","获取商品集合成功");
+        map.put("submessage","获取商品集合成功");
         return map;
     }
 
@@ -832,7 +900,7 @@ public class ExternalDockPolyApiHandler {
                logger.info("-----------签名验证失败---------------,sign:"+sign);
                throw new Exception("签名验证失败");
            }
-           logger.info("-----------验证签名通过---------------");
+           logger.info("-----------菠萝派调用接口,签名验证通过。接口调用方法名:"+method);
         }
         Map requstMap = (Map) JSON.parse(bizcontent);
         return requstMap;