Ver código fonte

生成订单

wangxiaoming 7 anos atrás
pai
commit
2cce3b89fa
14 arquivos alterados com 319 adições e 7 exclusões
  1. 38 0
      tooth-common-core/src/main/java/com/iamberry/wechat/core/entity/OrderUtil.java
  2. 10 0
      tooth-common-core/src/main/java/com/iamberry/wechat/core/entity/agentInfo/AgentOrder.java
  3. 10 0
      tooth-common-core/src/main/java/com/iamberry/wechat/core/entity/agentInfo/AgentOrderItem.java
  4. 6 1
      tooth-wechat-interface/src/main/java/com/iamberry/wechat/face/agentInfo/AgentOrderService.java
  5. 8 0
      tooth-wechat-interface/src/main/java/com/iamberry/wechat/face/cart/ProductInfoService.java
  6. 37 0
      tooth-wechat-service/src/main/java/com/iamberry/wechat/service/agentInfo/AgentOrderServiceImpl.java
  7. 6 0
      tooth-wechat-service/src/main/java/com/iamberry/wechat/service/cart/ProductInfoServiceImpl.java
  8. 8 0
      tooth-wechat-service/src/main/java/com/iamberry/wechat/service/cart/dao/ProductInfoDao.java
  9. 7 1
      tooth-wechat-service/src/main/java/com/iamberry/wechat/service/cart/dao/impl/ProductInfoDaoImpl.java
  10. 8 0
      tooth-wechat-service/src/main/java/com/iamberry/wechat/service/mapper/AgentPurchaseOrderMapper.java
  11. 9 1
      tooth-wechat-service/src/main/java/com/iamberry/wechat/service/mapper/ProductInfoMapper.java
  12. 13 0
      tooth-wechat-service/src/main/java/com/iamberry/wechat/service/mapper/agentPurchaseOrderMapper.xml
  13. 23 0
      tooth-wechat-service/src/main/java/com/iamberry/wechat/service/mapper/productInfoMapper.xml
  14. 136 4
      tooth-wechat-web/src/main/java/com/iamberry/wechat/handles/agentInfo/AgentOrderHandler.java

+ 38 - 0
tooth-common-core/src/main/java/com/iamberry/wechat/core/entity/OrderUtil.java

@@ -12,6 +12,44 @@ import com.iamberry.wechat.core.entity.order.OrderOperation;
 @Component
 public class OrderUtil {
 
+    //取消订单
+    public static final Integer ORDERSTAUTS_CANCEL = 0;
+
+    //待支付(用户提交数据后,订单状态进入待支付,订单对用户和管理员都存在操作权限:取消订单,如果取消订单,订单状态修改为0)
+    public static final Integer ORDERSTAUTS_TOBEPAID = 1;
+
+    //已支付、待发货(用户对待支付的订单,支付成功后,订单状态修改为待发货,此时的订单对用户操作为:申请退款,对管理员的操作为:确认发货)
+    public static final Integer ORDERSTAUTS_PAID = 2;
+
+    //退款申请中(用户对待发货的订单申请退款时进入此)
+    public static final Integer ORDERSTAUTS_REFUND_APPLICATION = 3;
+
+    //已退款(管理员通过申请退款,此时订单任何人不能操作)
+    public static final Integer ORDERSTAUTS_REFUNDED = 4;
+
+    //已发货(管理员对待发货的订单发货时,订单状态为此,此时用户具有申请退/换货的操作能力,管理员不具有权限)
+    public static final Integer ORDERSTAUTS_SHIPPED = 5;
+
+    //申请退货中(用户对已发货的订单申请退货时,订单状态修改为此,此时的订单,只有管理员能操作)
+    public static final Integer ORDERSTAUTS_APPLY_FO_RRETURN = 6;
+
+    //退货中(管理员通过退款,等待收取用户发的货物时的状态,此时的状态只有管理员具有操作能力,为确认退货)
+    public static final Integer ORDERSTAUTS_RETURN = 7;
+
+    //订单退货,订单关闭(管理员收到货后,确认退货,订单状态修改为此,订单不对外提供操作能力)
+    public static final Integer ORDERSTAUTS_ORDERRETURN = 8;
+
+    //换货中(管理员对申请换货的订单,确认换货时,订单状态为此,此时只有管理员具有操作权限,只能确认换货,录入物流信息,并重新计算订单关闭的时间,待入账积分的时间要修改)
+    public static final Integer ORDERSTAUTS_REPLACEMENT = 9;
+
+    //换货完成,当用户对换货中的订单,点击确认换货时,并录入物流信息,此订单进入已发货状态
+    public static final Integer Replacement_IS_COMPLETE = 10;
+
+    //申请换货中
+    public static final Integer ORDERSTAUTS_APPLY_FOR_REPLACEMENT = 11;
+
+    //订单完成
+    public static final Integer ORDERSTAUTS_COMPLETE = 12;
 
     // 订单状态:下标对应数据库中记录状态, 此用于请求操作时
     public final String[] orderStatusStrList =

+ 10 - 0
tooth-common-core/src/main/java/com/iamberry/wechat/core/entity/agentInfo/AgentOrder.java

@@ -26,6 +26,8 @@ public class AgentOrder implements java.io.Serializable{
     private String agentTransactionId;  //微信订单号
     private Date agentTransactionDate;  //微信支付时间
 
+    private String agentOrderItemJson;  //订单项
+
     public String getAgentOrderid() {
         return agentOrderid;
     }
@@ -153,4 +155,12 @@ public class AgentOrder implements java.io.Serializable{
     public void setAgentTransactionDate(Date agentTransactionDate) {
         this.agentTransactionDate = agentTransactionDate;
     }
+
+    public String getAgentOrderItemJson() {
+        return agentOrderItemJson;
+    }
+
+    public void setAgentOrderItemJson(String agentOrderItemJson) {
+        this.agentOrderItemJson = agentOrderItemJson;
+    }
 }

+ 10 - 0
tooth-common-core/src/main/java/com/iamberry/wechat/core/entity/agentInfo/AgentOrderItem.java

@@ -23,6 +23,8 @@ public class AgentOrderItem implements java.io.Serializable{
     private Integer itemProductPrice;       //商品原价
     private String itemProductPic;          //介绍图
 
+    private Integer productRentType;        //销售类型
+
     public Integer getItemId() {
         return itemId;
     }
@@ -126,4 +128,12 @@ public class AgentOrderItem implements java.io.Serializable{
     public void setAgentOrderid(String agentOrderid) {
         this.agentOrderid = agentOrderid;
     }
+
+    public Integer getProductRentType() {
+        return productRentType;
+    }
+
+    public void setProductRentType(Integer productRentType) {
+        this.productRentType = productRentType;
+    }
 }

+ 6 - 1
tooth-wechat-interface/src/main/java/com/iamberry/wechat/face/agentInfo/AgentOrderService.java

@@ -1,10 +1,15 @@
 package com.iamberry.wechat.face.agentInfo;
 
+import com.iamberry.wechat.core.entity.agentInfo.AgentOrder;
+import com.iamberry.wechat.core.entity.agentInfo.AgentOrderItem;
+
+import java.util.List;
+
 /**
  * 采购&订单
  */
 public interface AgentOrderService {
 
+    AgentOrder addAgentOrder(AgentOrder agentOrder, List<AgentOrderItem> agentOrderItemList);
     
-
 }

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

@@ -4,6 +4,7 @@ import java.util.List;
 
 import com.iamberry.wechat.core.entity.cart.UserGiftDto;
 import com.iamberry.wechat.core.entity.product.Product;
+import com.iamberry.wechat.core.entity.product.ProductColor;
 import com.iamberry.wechat.core.entity.product.QrcodeGift;
 
 public interface ProductInfoService {
@@ -94,4 +95,11 @@ public interface ProductInfoService {
      * @return
      */
     Integer getQrCodeByPlaceOpenId(String openId);
+
+	/**
+	 * 获取单个产品颜色信息
+	 * @param productColor
+	 * @return
+	 */
+	ProductColor getProductColor(ProductColor productColor);
 }

+ 37 - 0
tooth-wechat-service/src/main/java/com/iamberry/wechat/service/agentInfo/AgentOrderServiceImpl.java

@@ -0,0 +1,37 @@
+package com.iamberry.wechat.service.agentInfo;
+
+import com.iamberry.wechat.core.entity.OrderUtil;
+import com.iamberry.wechat.core.entity.agentInfo.AgentConfig;
+import com.iamberry.wechat.core.entity.agentInfo.AgentOrder;
+import com.iamberry.wechat.core.entity.agentInfo.AgentOrderItem;
+import com.iamberry.wechat.core.entity.agentInfo.AgentTooth;
+import com.iamberry.wechat.face.agentInfo.AgentInfoService;
+import com.iamberry.wechat.face.agentInfo.AgentOrderService;
+import com.iamberry.wechat.service.mapper.AgentInfoMapper;
+import com.iamberry.wechat.service.mapper.AgentPurchaseOrderMapper;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * Created by liuzhiwei on 2017/10/11.
+ */
+@Service
+public class AgentOrderServiceImpl implements AgentOrderService {
+
+    @Autowired
+    private AgentPurchaseOrderMapper agentPurchaseOrderMapper;
+
+
+    @Override
+    public AgentOrder addAgentOrder(AgentOrder agentOrder, List<AgentOrderItem> agentOrderItemList) {
+        agentOrder.setAgentStatus(OrderUtil.ORDERSTAUTS_TOBEPAID);      //设置状态为:未支付
+
+        int amount  = 0;    //订单总金额
+
+
+
+        return null;
+    }
+}

+ 6 - 0
tooth-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.List;
 
 import com.iamberry.wechat.core.entity.PageBean;
+import com.iamberry.wechat.core.entity.product.ProductColor;
 import com.iamberry.wechat.core.entity.product.QrcodeGift;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -120,4 +121,9 @@ public class ProductInfoServiceImpl implements ProductInfoService {
     public Integer updateGiftStatus(QrcodeGift qrcodeGift) {
         return productInfoDao.updateGiftStatus(qrcodeGift);
     }
+
+	@Override
+	public ProductColor getProductColor(ProductColor productColor){
+		return productInfoDao.getProductColor(productColor);
+	}
 }

+ 8 - 0
tooth-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.cart.ShopOrderItemDto;
 import com.iamberry.wechat.core.entity.cart.UserGiftDto;
 import com.iamberry.wechat.core.entity.product.Product;
+import com.iamberry.wechat.core.entity.product.ProductColor;
 import com.iamberry.wechat.core.entity.product.QrcodeGift;
 
 public interface ProductInfoDao {
@@ -90,4 +91,11 @@ public interface ProductInfoDao {
      * @return
      */
     Integer getQrCodeByPlaceOpenId(String openId);
+
+	/**
+	 * 获取单个产品颜色信息
+	 * @param productColor
+	 * @return
+	 */
+	ProductColor getProductColor(ProductColor productColor);
 }

+ 7 - 1
tooth-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 com.iamberry.wechat.core.entity.product.QrcodeGift;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Repository;
@@ -97,7 +98,12 @@ public class ProductInfoDaoImpl implements ProductInfoDao {
         return productInfoMapper.getQrCodeByPlaceOpenId(openId);
     }
 
-    @Override
+	@Override
+	public ProductColor getProductColor(ProductColor productColor) {
+		return productInfoMapper.getProductColor(productColor);
+	}
+
+	@Override
     public Integer updateGiftStatus(QrcodeGift qrcodeGift) {
         return productInfoMapper.updateGiftStatus(qrcodeGift);
     }

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

@@ -0,0 +1,8 @@
+package com.iamberry.wechat.service.mapper;
+
+/**
+ *  采购订单
+ */
+public interface AgentPurchaseOrderMapper {
+
+}

+ 9 - 1
tooth-wechat-service/src/main/java/com/iamberry/wechat/service/mapper/ProductInfoMapper.java

@@ -5,6 +5,7 @@ import com.iamberry.wechat.core.entity.PaperBean;
 import com.iamberry.wechat.core.entity.cart.ShopOrderItemDto;
 import com.iamberry.wechat.core.entity.cart.UserGiftDto;
 import com.iamberry.wechat.core.entity.product.Product;
+import com.iamberry.wechat.core.entity.product.ProductColor;
 import com.iamberry.wechat.core.entity.product.QrcodeGift;
 
 public interface ProductInfoMapper {
@@ -18,7 +19,7 @@ public interface ProductInfoMapper {
 	 * @return
 	 */
 	public List<Product> listSelectProduct(Product product);
-	
+
 	//根据productID查询商品信息
 	public Product getProductByProductId(Integer productId, Integer colorId);
 	
@@ -92,4 +93,11 @@ public interface ProductInfoMapper {
      * @return
      */
     Integer getQrCodeByPlaceOpenId(String openId);
+
+	/**
+	 * 获取单个产品颜色信息
+	 * @param productColor
+	 * @return
+	 */
+	ProductColor getProductColor(ProductColor productColor);
 }

+ 13 - 0
tooth-wechat-service/src/main/java/com/iamberry/wechat/service/mapper/agentPurchaseOrderMapper.xml

@@ -0,0 +1,13 @@
+<?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.AgentPurchaseOrderMapper">
+
+
+	
+</mapper>

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

@@ -329,4 +329,27 @@
             where
               place_openid = #{openId})
     </select>
+
+	<select id="getProductColor" parameterType="ProductColor" resultType="ProductColor">
+		SELECT
+			color_id AS colorId,
+			color_product_id AS colorProductId,
+			color_name AS colorName,
+			color_discount AS  colorDiscount,
+			color_price AS  colorPrice,
+			color_cretae_time AS  colorCretaeTime,
+			color_update_time AS colorUpdateTime,
+			color_69code AS  color69code
+		FROM
+			tb_iamberry_product_color
+		<where>
+			<if test="colorId != null and colorId != ''">
+				color_id = #{colorId}
+			</if>
+			<if test="colorProductId != null and colorProductId != ''">
+				AND color_product_id = #{colorProductId}
+			</if>
+		</where>
+	</select>
+
 </mapper>

+ 136 - 4
tooth-wechat-web/src/main/java/com/iamberry/wechat/handles/agentInfo/AgentOrderHandler.java

@@ -1,17 +1,31 @@
 package com.iamberry.wechat.handles.agentInfo;
 
+import com.iamberry.wechat.core.entity.OrderUtil;
 import com.iamberry.wechat.core.entity.ResultMsg;
+import com.iamberry.wechat.core.entity.WechatUtils;
 import com.iamberry.wechat.core.entity.agentInfo.AgentConfig;
+import com.iamberry.wechat.core.entity.agentInfo.AgentOrder;
+import com.iamberry.wechat.core.entity.agentInfo.AgentOrderItem;
 import com.iamberry.wechat.core.entity.agentInfo.AgentTooth;
+import com.iamberry.wechat.core.entity.cart.OrderPayDto;
+import com.iamberry.wechat.core.entity.member.Member;
+import com.iamberry.wechat.core.entity.order.Order;
 import com.iamberry.wechat.core.entity.product.Product;
+import com.iamberry.wechat.core.entity.product.ProductColor;
 import com.iamberry.wechat.face.agentInfo.AgentInfoService;
+import com.iamberry.wechat.face.agentInfo.AgentOrderService;
 import com.iamberry.wechat.face.cart.ProductInfoService;
+import com.iamberry.wechat.tools.NameUtils;
+import com.iamberry.wechat.tools.ResultInfo;
+import net.sf.json.JSONArray;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.ResponseBody;
 
 import javax.servlet.http.HttpServletRequest;
+import java.util.HashMap;
 import java.util.List;
 
 /**
@@ -24,14 +38,17 @@ public class AgentOrderHandler {
     private AgentInfoService agentInfoService;
     @Autowired
     private ProductInfoService productInfoService;
+    @Autowired
+    private AgentOrderService agentOrderService;
 
     /**
      * 获取采购信息
+     *
      * @return
      */
     @ResponseBody
     @RequestMapping("/getProduce")
-    public ResultMsg getProduce(HttpServletRequest request){
+    public ResultMsg getProduce(HttpServletRequest request) {
         ResultMsg rm = new ResultMsg();
         //Member member =  WechatUtils.getUserBySession(request);
         //String agentOpenid = member.getUserOpenid();
@@ -41,23 +58,138 @@ public class AgentOrderHandler {
         AgentTooth agentTooth = new AgentTooth();
         agentTooth.setAgentOpenid(agentOpenid);
         agentTooth = agentInfoService.getAgentTooth(agentTooth);
+        if (agentTooth == null) {
+            rm.setStatus(false);
+            rm.setMessage("未找到该用户!");
+            rm.setResultCode("404");
+            return rm;
+        }
 
         Product product = new Product();
         List<Product> productList = productInfoService.listSelectProduct(product);
 
-        for (Product pd : productList){
+        for (Product pd : productList) {
             AgentConfig agentConfig = new AgentConfig();
             agentConfig.setColorId(pd.getColorId());
             agentConfig.setAgentId(agentTooth.getAgentId());
             agentConfig = agentInfoService.getAgentConfig(agentConfig);
-            if(agentConfig != null && agentConfig.getConfigAmount() != null && agentConfig.getConfigAmount()!=0){
+            if (agentConfig != null && agentConfig.getConfigAmount() != null && agentConfig.getConfigAmount() != 0) {
                 pd.setConfigAmount(agentConfig.getConfigAmount());
-            }else{
+            } else {
                 pd.setConfigAmount(pd.getProductDiscount());
             }
         }
+        rm.setStatus(true);
+        rm.setMessage("查询成功!");
+        rm.setResultCode("200");
         rm.setData(productList);
         return rm;
     }
 
+    /**
+     * 支付前,调用方法
+     * @param request
+     * @return
+     * @throws Exception
+     */
+    @ResponseBody
+    @RequestMapping(value = "/payBefore", method = RequestMethod.POST)
+    public ResultMsg payBefore(HttpServletRequest request,AgentOrder agentOrder) throws Exception {
+        ResultMsg msg = new ResultMsg();
+        msg.setStatus(false);
+        msg.setResultCode("400");
+
+        //获取代理商信息
+        Member member =  WechatUtils.getUserBySession(request);
+        String agentOpenid = member.getUserOpenid();
+        AgentTooth agentTooth = new AgentTooth();
+        agentTooth.setAgentOpenid(agentOpenid);
+        agentTooth = agentInfoService.getAgentTooth(agentTooth);
+        if (agentTooth == null) {
+            msg.setMessage("未找到该用户!");
+            return msg;
+        }
+
+        //验证前台传过来的数据是否规范
+        if(!isValiAgentOrder(agentOrder)){
+            msg.setMessage("订单格式内容出错!");
+            return msg;
+        }
+
+        //---------------生成订单 --- start -----------------------
+        JSONArray jsonArray = JSONArray.fromObject(agentOrder.getAgentOrderItemJson());
+        List<AgentOrderItem>  agentOrderItemList = (List) JSONArray.toCollection(jsonArray,AgentOrderItem.class);
+        if(agentOrderItemList == null || agentOrderItemList.size() < 1){
+            msg.setMessage("未选择产品!");
+            return msg;
+        }
+        for(AgentOrderItem agentOrderItem : agentOrderItemList){
+            ProductColor productColor = new ProductColor();
+            productColor.setColorId(agentOrderItem.getColorId());
+            productColor.setColorProductId(agentOrderItem.getProductId());
+            productColor = productInfoService.getProductColor(productColor);
+
+            Product product = productInfoService.getProductByProductId(agentOrderItem.getProductId(),agentOrderItem.getColorId());
+            if(productColor == null || product == null){
+                msg.setMessage("查询产品出错!");
+                return msg;
+            }
+            agentOrderItem.setProductId(product.getProductId());    //产品id
+            agentOrderItem.setColorId(productColor.getColorId());   //颜色id
+            agentOrderItem.setProductType(product.getProductType().getTypeId());    //产品类型id
+            agentOrderItem.setProductRentType(product.getProductRentType());
+        }
+        agentOrderService.addAgentOrder(agentOrder,agentOrderItemList);
+        //---------------生成订单 --- end -----------------------
+
+
+
+
+//        OrderPayDto dto = new OrderPayDto();
+        //回显用户支付过的地址信息
+//        Order order = cartService.getOrderRecentAddress(member.getUserOpenid());
+//        if(order!=null){
+//            HashMap<String,String> map = new HashMap<String,String>();
+//            //map.put("orderId", order.getSalesOrderid());
+//            map.put("salesAddressName", order.getSalesAddressName());
+//            map.put("salesAddressInfo", order.getSalesAddressInfo());
+//            map.put("salesAddressTel", order.getSalesAddressTel());
+//            map.put("salesAddressPostnum", order.getSalesAddressPostnum());
+//            dto.setAddressInfo(map);
+//        }
+//
+//        msg.setResultCode(ResultInfo.SUCCESSCODE);
+//        msg.setMessage(NameUtils.getConfig("SUCCESSINFO"));
+//        msg.setData(dto);
+//        msg.setStatus(true);
+
+        return msg;
+    }
+
+
+    /**
+     * 支付前的验证
+     * @param agentOrder
+     * @return
+     */
+    public boolean isValiAgentOrder(AgentOrder agentOrder){
+        if(agentOrder.getAgentAddressInfo() == null || agentOrder.getAgentAddressInfo() == ""){
+            return false;
+        }
+        if (agentOrder.getAgentAddressName() == null || agentOrder.getAgentAddressName() == ""){
+            return false;
+        }
+        if (agentOrder.getAgentAddressPostnum() == null || agentOrder.getAgentAddressPostnum() == ""){
+            return false;
+        }
+        if (agentOrder.getAgentAddressTel() == null){
+            return false;
+        }
+        if(agentOrder.getAgentOrderItemJson() == null || agentOrder.getAgentOrderItemJson() == ""){
+            return false;
+        }
+        return true;
+    }
+
+
 }