Kaynağa Gözat

Merge branch 'master' of http://git.iamberry.com/wangxiaoming/iamberry-watero

# Conflicts:
#	watero-wechat-web/src/main/java/com/iamberry/wechat/handles/pay/ResponseWechatPayHandler.java
wangxiaoming 5 yıl önce
ebeveyn
işleme
6287cbc2c9
34 değiştirilmiş dosya ile 1052 ekleme ve 110 silme
  1. 11 4
      watero-common-core/src/main/java/com/iamberry/wechat/core/entity/OrderUtil.java
  2. 23 0
      watero-common-core/src/main/java/com/iamberry/wechat/core/entity/cart/CartDto.java
  3. 18 3
      watero-common-core/src/main/java/com/iamberry/wechat/core/entity/cart/ShopOrderAndItemDto.java
  4. 19 3
      watero-common-core/src/main/java/com/iamberry/wechat/core/entity/cart/ShopSalesOrderDto.java
  5. 20 0
      watero-common-core/src/main/java/com/iamberry/wechat/core/entity/cart/TempOrderDto.java
  6. 24 1
      watero-common-core/src/main/java/com/iamberry/wechat/core/entity/order/Order.java
  7. 44 0
      watero-common-core/src/main/java/com/iamberry/wechat/core/entity/order/ShopSpellInfo.java
  8. 24 0
      watero-common-core/src/main/java/com/iamberry/wechat/core/entity/product/Product.java
  9. 9 0
      watero-common-core/src/main/java/com/iamberry/wechat/core/entity/product/ProductColor.java
  10. 21 0
      watero-common-core/src/main/java/com/iamberry/wechat/sendMsg/SendMessageUtil.java
  11. 21 0
      watero-common-tool/src/main/java/com/iamberry/wechat/tools/ResultInfo.java
  12. 4 0
      watero-common-tool/src/main/java/com/iamberry/wechat/tools/loadResultUtil.java
  13. 10 0
      watero-wechat-interface/src/main/java/com/iamberry/wechat/face/cart/CartService.java
  14. 12 2
      watero-wechat-service/src/main/java/com/iamberry/wechat/service/cart/CartServiceImpl.java
  15. 11 0
      watero-wechat-service/src/main/java/com/iamberry/wechat/service/cart/dao/CartDao.java
  16. 10 0
      watero-wechat-service/src/main/java/com/iamberry/wechat/service/cart/dao/impl/CartDaoImpl.java
  17. 12 0
      watero-wechat-service/src/main/java/com/iamberry/wechat/service/mapper/OrderMapper.java
  18. 6 3
      watero-wechat-service/src/main/java/com/iamberry/wechat/service/mapper/adminOrderMapper.xml
  19. 10 7
      watero-wechat-service/src/main/java/com/iamberry/wechat/service/mapper/cartMapper.xml
  20. 50 7
      watero-wechat-service/src/main/java/com/iamberry/wechat/service/mapper/orderMapper.xml
  21. 2 1
      watero-wechat-service/src/main/java/com/iamberry/wechat/service/mapper/productColorMapper.xml
  22. 24 10
      watero-wechat-service/src/main/java/com/iamberry/wechat/service/mapper/productInfoMapper.xml
  23. 0 1
      watero-wechat-service/src/main/java/com/iamberry/wechat/service/order/AdminOrderServiceImpl.java
  24. 35 1
      watero-wechat-service/src/main/java/com/iamberry/wechat/service/wechat/WeChatServiceImpl.java
  25. 1 1
      watero-wechat-web/src/main/java/com/iamberry/wechat/filters/AdminLoginFilter.java
  26. 2 1
      watero-wechat-web/src/main/java/com/iamberry/wechat/filters/CSRFTokenFilter.java
  27. 111 1
      watero-wechat-web/src/main/java/com/iamberry/wechat/handles/admin/AdminOrderHandlers.java
  28. 7 2
      watero-wechat-web/src/main/java/com/iamberry/wechat/handles/agent/AgentHandler.java
  29. 219 29
      watero-wechat-web/src/main/java/com/iamberry/wechat/handles/order/OrderHandler.java
  30. 232 24
      watero-wechat-web/src/main/java/com/iamberry/wechat/handles/pay/ResponseWechatPayHandler.java
  31. 5 1
      watero-wechat-web/src/main/resources/ResultInfo.properties
  32. 3 0
      watero-wechat-web/src/main/resources/iamberry-wechat-service-mybatis.xml
  33. 1 1
      watero-wechat-web/src/main/resources/platform.properties
  34. 51 7
      watero-wechat-web/src/main/webapp/WEB-INF/views/admin/order/orderList.jsp

+ 11 - 4
watero-common-core/src/main/java/com/iamberry/wechat/core/entity/OrderUtil.java

@@ -18,7 +18,7 @@ public class OrderUtil {
 			{
 				"quitOrder", "etcOrder", "paySuccess", "returnOrder",
 				"returnOrderSuccess", "sendOrder", "returnOrderEtc", "returnOrderEtcAdmin", "returnOrderThe",
-				"theOrderSuccess", "theOrderSuccessAdmin", "inOrder", "inFinish"
+				"theOrderSuccess", "theOrderSuccessAdmin", "inOrder", "inFinish","paidInFull","fullDeposit","spelling"
 			};
 		
 		public String[] getOrderStatusStrList() {
@@ -30,7 +30,7 @@ public class OrderUtil {
 			{
 				"取消订单", "待支付", "已支付、待发货", "退款申请中",
 				"已退款", "已发货", "申请退货中", "退货中", "订单退货,订单关闭" ,
-				"换货中", "换货完成", "申请换货中", "已完成"
+				"换货中", "换货完成", "申请换货中", "已完成","已支付,全额付款","待支付定金全款","正在拼单"
 			};
 		
 		// 订单操作状态
@@ -48,7 +48,8 @@ public class OrderUtil {
 				"insertPostInfoAndSend", 	// 录入物流信息并发货
 				"rejectedReturn",			//拒绝退货
 				"rejectedInOrder",			//拒绝换货
-				"select_efast_order"		//同步订单状态
+				"select_efast_order",		//同步订单状态
+				"spell"		//系统拼单
 			};
 		
 		public String[] getOrderActin() {
@@ -227,7 +228,13 @@ public class OrderUtil {
 				return operations;
 				
 			case 12://已完成
-				
+
+			case 15://已完成
+				/*OrderOperation spell = new OrderOperation("", "系统拼单",
+						"/admin/order/" + orderActin[13] + "/" + orderId);*/
+				OrderOperation spell = new OrderOperation("", "系统拼单",
+						"#");
+				operations.add(spell);// 系统拼单
 				return operations;
 			default:
 				break;

+ 23 - 0
watero-common-core/src/main/java/com/iamberry/wechat/core/entity/cart/CartDto.java

@@ -49,6 +49,13 @@ public class CartDto implements Serializable{
 
 	private String colorImg;			//产品颜色图片
 
+	/**
+	 * 2019-07-29新增
+	 * @return
+	 */
+	private Integer productIsSpell;//是否可拼团 1:不可拼团 2:可拼团
+	private Integer colorSpellAmount;//拼团价 单位为分
+
 
 	
 	public String getProductColor() {
@@ -188,4 +195,20 @@ public class CartDto implements Serializable{
 	public void setColorImg(String colorImg) {
 		this.colorImg = colorImg;
 	}
+
+	public Integer getProductIsSpell() {
+		return productIsSpell;
+	}
+
+	public void setProductIsSpell(Integer productIsSpell) {
+		this.productIsSpell = productIsSpell;
+	}
+
+	public Integer getColorSpellAmount() {
+		return colorSpellAmount;
+	}
+
+	public void setColorSpellAmount(Integer colorSpellAmount) {
+		this.colorSpellAmount = colorSpellAmount;
+	}
 }

+ 18 - 3
watero-common-core/src/main/java/com/iamberry/wechat/core/entity/cart/ShopOrderAndItemDto.java

@@ -69,7 +69,8 @@ private String salesOrderid;								//订单id
 	private boolean efficacious;							//是否存在下架商品
 	
 	private List<OrderItem> orderItemList = new ArrayList<OrderItem>();	//订单项实体类
-
+	private Integer salesIsSpellOrder;		//是否拼团订单
+	private Integer salesSpellOrderId;		//拼团订单id
 
 
 	public boolean isEfficacious() {
@@ -271,6 +272,20 @@ private String salesOrderid;								//订单id
 	public void setSalesColorType(Integer salesColorType) {
 		this.salesColorType = salesColorType;
 	}
-	
-	
+
+	public Integer getSalesIsSpellOrder() {
+		return salesIsSpellOrder;
+	}
+
+	public void setSalesIsSpellOrder(Integer salesIsSpellOrder) {
+		this.salesIsSpellOrder = salesIsSpellOrder;
+	}
+
+	public Integer getSalesSpellOrderId() {
+		return salesSpellOrderId;
+	}
+
+	public void setSalesSpellOrderId(Integer salesSpellOrderId) {
+		this.salesSpellOrderId = salesSpellOrderId;
+	}
 }

+ 19 - 3
watero-common-core/src/main/java/com/iamberry/wechat/core/entity/cart/ShopSalesOrderDto.java

@@ -83,7 +83,9 @@ public class ShopSalesOrderDto implements Serializable{
 	private PageBean page = new PageBean();		//分页
 	
 	private boolean efficacious;							//是否存在下架商品
-	
+	private Integer salesIsSpellOrder;		//是否拼团订单
+	private Integer salesSpellOrderId;		//拼团订单id
+
 	
 
 	public boolean isEfficacious() {
@@ -325,6 +327,20 @@ public class ShopSalesOrderDto implements Serializable{
 	public void setOrderItemList(List<ShopOrderItemDto> orderItemList) {
 		this.orderItemList = orderItemList;
 	}
-	
-	
+
+	public Integer getSalesIsSpellOrder() {
+		return salesIsSpellOrder;
+	}
+
+	public void setSalesIsSpellOrder(Integer salesIsSpellOrder) {
+		this.salesIsSpellOrder = salesIsSpellOrder;
+	}
+
+	public Integer getSalesSpellOrderId() {
+		return salesSpellOrderId;
+	}
+
+	public void setSalesSpellOrderId(Integer salesSpellOrderId) {
+		this.salesSpellOrderId = salesSpellOrderId;
+	}
 }

+ 20 - 0
watero-common-core/src/main/java/com/iamberry/wechat/core/entity/cart/TempOrderDto.java

@@ -40,6 +40,10 @@ public class TempOrderDto implements java.io.Serializable{
 
 	private String exchangeColorId ; //需要兑换的颜色id
 
+	private Integer isSpell ; //是否拼单 1是 2否
+
+	private String spellOrderId ; //拼单好友orderid
+
 	public String getOrderAddressInfo() {
 		return orderAddressInfo;
 	}
@@ -120,6 +124,22 @@ public class TempOrderDto implements java.io.Serializable{
 		this.exchangeColorId = exchangeColorId;
 	}
 
+	public Integer getIsSpell() {
+		return isSpell;
+	}
+
+	public void setIsSpell(Integer isSpell) {
+		this.isSpell = isSpell;
+	}
+
+	public String getSpellOrderId() {
+		return spellOrderId;
+	}
+
+	public void setSpellOrderId(String spellOrderId) {
+		this.spellOrderId = spellOrderId;
+	}
+
 	@Override
 	public String toString() {
 		return "TempOrderDto [orderAddressInfo=" + orderAddressInfo

+ 24 - 1
watero-common-core/src/main/java/com/iamberry/wechat/core/entity/order/Order.java

@@ -71,7 +71,14 @@ public class Order implements java.io.Serializable{
 	
 	private String salesPorderid;		//试用订单id
 	private Integer salesOrderType;		//订单类型		1:正常订单(默认)	2:试用订单
-	
+
+	/**
+	 * 2019-07-29新增
+	 * @return
+	 */
+	private Integer salesIsSpellOrder;		//是否拼团订单		1:是	2:否
+	private String salesSpellOrderId;		//拼团订单id
+
 	// -------------------------------------------- 新增
 	private String storesName;			// 用户第二级上线
 	
@@ -385,4 +392,20 @@ public class Order implements java.io.Serializable{
 	public void setSalesExchangeDes(String salesExchangeDes) {
 		this.salesExchangeDes = salesExchangeDes;
 	}
+
+	public Integer getSalesIsSpellOrder() {
+		return salesIsSpellOrder;
+	}
+
+	public void setSalesIsSpellOrder(Integer salesIsSpellOrder) {
+		this.salesIsSpellOrder = salesIsSpellOrder;
+	}
+
+	public String getSalesSpellOrderId() {
+		return salesSpellOrderId;
+	}
+
+	public void setSalesSpellOrderId(String salesSpellOrderId) {
+		this.salesSpellOrderId = salesSpellOrderId;
+	}
 }

+ 44 - 0
watero-common-core/src/main/java/com/iamberry/wechat/core/entity/order/ShopSpellInfo.java

@@ -0,0 +1,44 @@
+package com.iamberry.wechat.core.entity.order;
+
+import java.io.Serializable;
+import java.util.Date;
+
+public class ShopSpellInfo implements Serializable{
+    private static final long serialVersionUID = 4801794331888807351L;
+    private Integer spellId;
+    private Integer spellOrderid;
+    private String spellOpenid;
+    private Date spellCreateTime;
+
+    public Integer getSpellId() {
+        return spellId;
+    }
+
+    public void setSpellId(Integer spellId) {
+        this.spellId = spellId;
+    }
+
+    public Integer getSpellOrderid() {
+        return spellOrderid;
+    }
+
+    public void setSpellOrderid(Integer spellOrderid) {
+        this.spellOrderid = spellOrderid;
+    }
+
+    public String getSpellOpenid() {
+        return spellOpenid;
+    }
+
+    public void setSpellOpenid(String spellOpenid) {
+        this.spellOpenid = spellOpenid;
+    }
+
+    public Date getSpellCreateTime() {
+        return spellCreateTime;
+    }
+
+    public void setSpellCreateTime(Date spellCreateTime) {
+        this.spellCreateTime = spellCreateTime;
+    }
+}

+ 24 - 0
watero-common-core/src/main/java/com/iamberry/wechat/core/entity/product/Product.java

@@ -55,6 +55,14 @@ public class Product implements java.io.Serializable{
 	private String colorPresent;	//颜色介绍
 	private Integer colorDiscount;	//优惠价
 	private Integer colorPrice;	//原价
+	//20190801 新增
+	private Integer colorSpellAmount;	//拼团价 分
+
+	/**
+	 * 2019-07-29新增
+	 * @return
+	 */
+	private Integer productIsSpell;//是否可拼团 1:不可拼团 2:可拼团
 
 	public Integer getColorId() {
 		return colorId;
@@ -312,6 +320,22 @@ public class Product implements java.io.Serializable{
 		this.colorPrice = colorPrice;
 	}
 
+	public Integer getProductIsSpell() {
+		return productIsSpell;
+	}
+
+	public void setProductIsSpell(Integer productIsSpell) {
+		this.productIsSpell = productIsSpell;
+	}
+
+	public Integer getColorSpellAmount() {
+		return colorSpellAmount;
+	}
+
+	public void setColorSpellAmount(Integer colorSpellAmount) {
+		this.colorSpellAmount = colorSpellAmount;
+	}
+
 	@Override
 	public String toString() {
 		return "Product [productId=" + productId + ", productName="

+ 9 - 0
watero-common-core/src/main/java/com/iamberry/wechat/core/entity/product/ProductColor.java

@@ -33,6 +33,7 @@ public class ProductColor implements java.io.Serializable{
 
 	//1:使用中 2:未使用'
 	private Integer colorStatus;
+	private Integer colorSpellAmount;//拼团价(分)
 
 	private PageBean page = new PageBean();		//分页
 	
@@ -148,6 +149,14 @@ public class ProductColor implements java.io.Serializable{
 		this.colorStatus = colorStatus;
 	}
 
+	public Integer getColorSpellAmount() {
+		return colorSpellAmount;
+	}
+
+	public void setColorSpellAmount(Integer colorSpellAmount) {
+		this.colorSpellAmount = colorSpellAmount;
+	}
+
 	@Override
 	public String toString() {
 		return "ProductColor [colorId=" + colorId + ", colorProductId="

+ 21 - 0
watero-common-core/src/main/java/com/iamberry/wechat/sendMsg/SendMessageUtil.java

@@ -65,6 +65,9 @@ public class SendMessageUtil {
 			case 11:  //11、母亲节活动,推送模板
 				WeixinUtil.sendTemplateMessage(NameUtils.getConfig("appId"), NameUtils.getConfig("appSecret"), openId, ResultInfo.service_push, date, url);
 				break;
+			case 12:  //12、拼单活动
+				WeixinUtil.sendTemplateMessage(NameUtils.getConfig("appId"), NameUtils.getConfig("appSecret"), openId, ResultInfo.probation_spell_success, date, url);
+				break;
 			default: 
 				break;
 			}
@@ -223,4 +226,22 @@ public class SendMessageUtil {
 				.replaceFirst("remarkValue",remark);
 			sendTemplateMessageToOpenid(temp, openId, url,11);
 	 }
+
+	/**
+	 * 拼单成功推送
+	 * @param first
+	 * @param keyword1
+	 * @param keyword2
+	 * @param remark
+	 * @param openId
+	 * @param url
+	 */
+	 public void spellPush(String first,String keyword1,String keyword2,String remark,String openId,String url){
+		String temp = ResultInfo.PROBATIONSPELLSUCCESS;
+		 temp = temp.replaceFirst("firstValueIamberry", first)
+				 .replaceFirst("keyword1Value",keyword1)
+				 .replaceFirst("keyword2Value",keyword2)
+				 .replaceFirst("remarkValue",remark);
+			sendTemplateMessageToOpenid(temp, openId, url,12);
+	 }
 }

+ 21 - 0
watero-common-tool/src/main/java/com/iamberry/wechat/tools/ResultInfo.java

@@ -170,6 +170,10 @@ public class ResultInfo {
 	 */
 	public static String INDEX_URL = "https://s.iamberry.com/watero/wechat/20190618.html";
 	/**
+	 * 团购活动首页
+	 */
+	public static String INDEX_BULK_URL = "https://s.iamberry.com/watero/wechat/20190807.html";
+	/**
 	 * <礼品卡>推荐人推送消息 跳转页面
 	 */
 	public static String AGENT_REFERRER_MACHINE_PAGE = "";
@@ -221,6 +225,16 @@ public class ResultInfo {
 	 * 	2019 38 妇女节回复语
 	 */
 	public static String female_lady_reply="";
+	/**
+	 * 	2019 0729 团购模板id
+	 */
+	public static String probation_spell_success="";
+	/**
+	 * 	2019 0729 七夕活动 公众号回复抽奖链接
+	 */
+	public static String chineseLottery="";
+	public static String chineseLotteryFailure="";
+
 
 
 
@@ -258,6 +272,8 @@ public class ResultInfo {
 
 	/** 	服务推送 	*/
 	public static String SERVICEPUSH = "{'first':{'color':'#173177','value':'firstValueIamberry'}, 'Good':{'color':'#173177','value':'GoodValue'}, 'contentType':{'color':'#173177', 'value':'contentTypeValue'},'remark':{'color':'#FF0000','value':'remarkValue'}}";
+	/** 	拼单成功推送 	*/
+	public static String PROBATIONSPELLSUCCESS = "{'first':{'color':'#173177','value':'firstValueIamberry'}, 'keyword1':{'color':'#173177','value':'keyword1Value'}, 'keyword2':{'color':'#173177', 'value':'keyword2Value'},'remark':{'color':'#173177','value':'remarkValue'}}";
 
 
 
@@ -353,4 +369,9 @@ public class ResultInfo {
 	public static String PROBATION_START_FIRST = "感谢您申请试用美国Watero净饮水一体机";
 	public static String PROBATION_END_FIRST = "您的订单正在安排配送员派送中,请继续留意关注申请详情,谢谢。";
 
+	/**
+	 * 拼单失败提示
+	 */
+	public static String spellErrorMsg = "";
+
 }

+ 4 - 0
watero-common-tool/src/main/java/com/iamberry/wechat/tools/loadResultUtil.java

@@ -83,6 +83,10 @@ public class loadResultUtil {
 			ResultInfo.prize_receive_push = prop.getProperty("prize_receive_push");			//付费代理商支付后推送推荐人通知  	模版id
 			ResultInfo.female_lady_reply = prop.getProperty("female_lady_reply");			//2019 38 妇女节活动回复语
 			ResultInfo.service_push = prop.getProperty("service_push");			//服务推送模板
+			ResultInfo.probation_spell_success = prop.getProperty("probation_spell_success");			//拼单成功推送模板
+			ResultInfo.spellErrorMsg = prop.getProperty("spellErrorMsg");			//拼单成功推送模板
+			ResultInfo.chineseLottery = prop.getProperty("chineseLottery");			//七夕回复url
+			ResultInfo.chineseLotteryFailure = prop.getProperty("chineseLotteryFailure");			//七夕回复失败
 
 
 

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

@@ -139,4 +139,14 @@ public interface CartService {
 	 * @return
 	 */
 	public Integer selectOrderCount(ShopSalesOrderDto shopSalesOrderDto);
+	/**
+	 * 修改拼团订单id
+	 * @return
+	 */
+	public Integer updateOrderSpellOrderId(Order order);
+	/**
+	 * 根据openid查询客户是否在8.6-8.12下单 (20190807团购活动)
+	 * @return
+	 */
+	public Integer selectIsOrder(String oprnId);
 }

+ 12 - 2
watero-wechat-service/src/main/java/com/iamberry/wechat/service/cart/CartServiceImpl.java

@@ -261,6 +261,16 @@ public class CartServiceImpl implements CartService {
 		// TODO Auto-generated method stub
 		return cartDao.selectOrderCount(shopSalesOrderDto);
 	}
-	
-	
+
+	@Override
+	public Integer updateOrderSpellOrderId(Order order) {
+		return cartDao.updateOrderSpellOrderId(order);
+	}
+
+	@Override
+	public Integer selectIsOrder(String oprnId) {
+		return cartDao.selectIsOrder(oprnId);
+	}
+
+
 }

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

@@ -139,4 +139,15 @@ public interface CartDao {
 	 * @return
 	 */
 	public Integer selectOrderCount(ShopSalesOrderDto shopSalesOrderDto);
+	/**
+	 * 修改拼团订单id
+	 * @return
+	 */
+	public Integer updateOrderSpellOrderId(Order order);
+
+	/**
+	 * 根据openid查询客户是否在8.6-8.12下单 (20190807团购活动)
+	 * @return
+	 */
+	public Integer selectIsOrder(String oprnId);
 }

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

@@ -203,4 +203,14 @@ public class CartDaoImpl implements CartDao{
 		// TODO Auto-generated method stub
 		return cartMapper.selectOrderCount(shopSalesOrderDto);
 	}
+
+	@Override
+	public Integer updateOrderSpellOrderId(Order order) {
+		return orderMapper.updateOrderSpellOrderId(order);
+	}
+
+	@Override
+	public Integer selectIsOrder(String oprnId) {
+		return orderMapper.selectIsOrder(oprnId);
+	}
 }

+ 12 - 0
watero-wechat-service/src/main/java/com/iamberry/wechat/service/mapper/OrderMapper.java

@@ -64,5 +64,17 @@ public interface OrderMapper {
 	 * @return
 	 */
 	public Order getOrderAddressInfo(String openid);
+
+	/**
+	 * 修改拼团订单id
+	 * @return
+	 */
+	public Integer updateOrderSpellOrderId(Order order);
+
+	/**
+	 * 根据openid查询客户是否在8.6-8.12下单 (20190807团购活动)
+	 * @return
+	 */
+	public Integer selectIsOrder(String oprnId);
 	
 }

+ 6 - 3
watero-wechat-service/src/main/java/com/iamberry/wechat/service/mapper/adminOrderMapper.xml

@@ -48,8 +48,10 @@ PUBLIC
 			PP.PLACE_ROLE_ID vipRole,
 			PP.PLACE_OPENID placeOpenID,
 			U.USER_RES_TYPE userResource,
-			(SELECT IFNULL(SUM(reback_money),0) FROM tb_iamberry_reback WHERE reback_orderid = O.SALES_ORDERID and Reback_status  = 2) placeId
-		FROM 
+			(SELECT IFNULL(SUM(reback_money),0) FROM tb_iamberry_reback WHERE reback_orderid = O.SALES_ORDERID and Reback_status  = 2) placeId,
+            O.sales_is_spell_order salesIsSpellOrder,
+            O.sales_spell_order_id salesSpellOrderId
+		FROM
 			TB_IAMBERRY_SHOP_SALES_ORDER O 
 		LEFT JOIN 
 			TB_IAMBERRY_USER_USERINFO U 
@@ -175,7 +177,8 @@ PUBLIC
 			O.SALES_USER_REMARK salesUserRemark, O.SALES_COLOR_TYPE salesColorType, O.SALES_ADMIN_REMARK salesAdminRemark, 
 			O.SALES_RETURN_DES salesReturnDes, O.SALES_ADDRESS_INFO salesAddressInfo, O.SALES_RETURN_DATE salesReturnDate,
 			O.SALES_AMOUNT salesAmount, O.SALES_TRANSACTION_DATE salesTransactionDate, O.SALES_OPENID salesOpenid, 
-			O.SALES_COUPON_RECEIVE_ID couponId, O.SALES_BALANCE_AMOUNT balancePayAmount 
+			O.SALES_COUPON_RECEIVE_ID couponId, O.SALES_BALANCE_AMOUNT balancePayAmount,O.sales_is_spell_order salesIsSpellOrder,
+			O.sales_spell_order_id salesSpellOrderId
 		FROM 
 			TB_IAMBERRY_SHOP_SALES_ORDER O LEFT JOIN TB_IAMBERRY_USER_USERINFO U 
 			ON O.SALES_OPENID = U.USER_OPENID 

+ 10 - 7
watero-wechat-service/src/main/java/com/iamberry/wechat/service/mapper/cartMapper.xml

@@ -125,7 +125,8 @@ PUBLIC
 			O.SALES_ADDRESS_INFO, O.SALES_ADDRESS_NAME, 
 			O.SALES_USER_REMARK, O.SALES_POST_NUM, O.SALES_POST_FIRM, 
 			O.SALES_SEND_DATE, O.SALES_ADDRESS_POSTNUM, 
-			O.SALES_ADDRESS_TEL ,  45*60-TIMESTAMPDIFF(SECOND,O.SALES_CREATE_DATE,NOW())   SALES_ADMIN_REMARK
+			O.SALES_ADDRESS_TEL ,  45*60-TIMESTAMPDIFF(SECOND,O.SALES_CREATE_DATE,NOW())   SALES_ADMIN_REMARK,
+			O.sales_is_spell_order salesIsSpellOrder,O.sales_spell_order_id salesSpellOrderId
 		FROM 
 			 TB_IAMBERRY_SHOP_SALES_ORDER O LEFT JOIN TB_IAMBERRY_SHOP_ORDER_ITEM I 
 			 ON O.SALES_ORDERID = I.ITEM_SALES_ORDERID 
@@ -162,6 +163,8 @@ PUBLIC
 		<result column="SALES_ADMIN_REMARK" property="salesAdminRemark"/>
 		<result column="SALES_ADDRESS_POSTNUM" property="salesAddressPostnum"/>
 		<result column="SALES_ADDRESS_TEL" property="salesAddressTel"/>
+		<result column="sales_is_spell_order" property="salesIsSpellOrder"/>
+		<result column="sales_spell_order_id" property="salesSpellOrderId"/>
 		<collection property="orderItemList" column="SALES_ORDERID" ofType="OrderItem" select="getOrderItemByOrderId"/>
 	</resultMap>
 	
@@ -179,7 +182,7 @@ PUBLIC
 		LEFT JOIN TB_IAMBERRY_PRODUCT_COLOR c ON i.ITEM_COLOR_ID = c.COLOR_ID 
 		WHERE 
 			I.ITEM_SALES_ORDERID = #{itemSalesOrderid} 
-		ORDER BY I.ITEM_ID DESC
+		ORDER BY I.ITEM_ID
 	</select>
 	
 	<!-- 根据openid查询订单数量 -->
@@ -210,9 +213,9 @@ PUBLIC
 			O.SALES_USER_REMARK salesUserRemark, O.SALES_POST_NUM salesPostNum, O.SALES_POST_FIRM salesPostFirm, 
 			O.SALES_SEND_DATE salesSendDate, O.SALES_ADDRESS_POSTNUM salesAddressPostnum,O.SALES_ADDRESS_TEL salesAddressTel, 
 			O.SALES_LOCK_TYPE salesLockType,O.SALES_COUPON_RECEIVE_ID salesCouponReceiveId, 
-			O.SALES_BALANCE_AMOUNT balancePayAmount 
+			O.SALES_BALANCE_AMOUNT balancePayAmount,O.sales_is_spell_order salesIsSpellOrder,O.sales_spell_order_id salesSpellOrderId
 		FROM 
-			TB_IAMBERRY_SHOP_SALES_ORDER O 
+			TB_IAMBERRY_SHOP_SALES_ORDER O
 		WHERE 
 			O.SALES_ORDERID = #{0} 
 		AND 
@@ -256,7 +259,7 @@ PUBLIC
 			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 ,G.product_color_des,PC.color_img AS colorImg
+			pc.COLOR_NAME productColor, G.PRODUCT_TYPE productType ,G.product_color_des,PC.color_img AS colorImg,G.product_is_spell AS productIsSpell,PC.color_spell_amount AS colorSpellAmount
 		FROM 
 			TB_IAMBERRY_SHOP_CART C 
 		LEFT JOIN TB_IAMBERRY_PRODUCT_INFO G ON C.CART_PRODUCT_ID = G.PRODUCT_ID 
@@ -291,12 +294,12 @@ PUBLIC
 		        </foreach>
 			)
 	</delete>
-	
+
 	<!-- 根据orderId修改订单状态 -->
 	<update id="updateOrderByOrderId" parameterType="Order">
 		UPDATE 
 			TB_IAMBERRY_SHOP_SALES_ORDER 
-		SET 
+		SET
 			SALES_STATUS = #{salesStatus},
 			SALES_RETURN_DATE = NOW()
 			<if test="couponId!=null and couponId!=''" >

+ 50 - 7
watero-wechat-service/src/main/java/com/iamberry/wechat/service/mapper/orderMapper.xml

@@ -17,7 +17,7 @@ PUBLIC
 			 		SALES_INTEGRAL_NUM, SALES_RATE_AMOUNT, SALES_CREATE_DATE,
 			 		SALES_REWARD_INTEGRAL_NUM, SALES_ADDRESS_INFO, SALES_ADDRESS_POSTNUM,
 			 		SALES_ADDRESS_TEL, SALES_ADDRESS_NAME, SALES_USER_REMARK, SALES_STATUS, 
-			 		SALES_PROXY_REWARD, SALES_REWARD_NUM,SALES_COUPON_RECEIVE_ID, Sales_balance_amount
+			 		SALES_PROXY_REWARD, SALES_REWARD_NUM,SALES_COUPON_RECEIVE_ID, Sales_balance_amount,sales_is_spell_order,sales_spell_order_id
 				)
 		 VALUES 
 		  	( 
@@ -38,7 +38,9 @@ PUBLIC
 			  1,
 			  #{salesRewardNum},
 			  #{couponId},
-			  #{balancePayAmount}
+			  #{balancePayAmount},
+			  #{salesIsSpellOrder},
+			  #{salesSpellOrderId}
 		  	)
 	</insert>
 	
@@ -93,8 +95,10 @@ PUBLIC
 			SALES_INTEGRAL_NUM salesIntegralNum, SALES_AMOUNT salesAmount, SALES_YET_AMOUNT salesYetAmount, 
 			SALES_BALANCE_AMOUNT balancePayAmount,
 			SALES_OPENID  salesOpenid,
-			SALES_COUPON_RECEIVE_ID couponId
-		FROM 
+			SALES_COUPON_RECEIVE_ID couponId,
+			sales_is_spell_order salesIsSpellOrder,
+			sales_spell_order_id salesSpellOrderId
+		FROM
 			TB_IAMBERRY_SHOP_SALES_ORDER 
 		WHERE 
 			SALES_ORDERID = #{salesOrderid} 
@@ -134,7 +138,46 @@ PUBLIC
     order by sales_create_date desc
     limit 0,1
 	</select>
-	
-	
-	
+
+	<!-- 修改订单拼团id  -->
+	<update id="updateOrderSpellOrderId" parameterType="Order">
+		UPDATE
+		TB_IAMBERRY_SHOP_SALES_ORDER
+		SET
+		sales_spell_order_id = #{salesSpellOrderId},
+		SALES_STATUS = #{salesStatus}
+		WHERE
+		SALES_ORDERID = #{salesOrderid}
+	</update>
+
+	<!--<insert id="addSpell" parameterType="ShopSpellInfo">
+		INSERT INTO tb_iamberry_shop_spell
+		(
+		spell_orderid,
+		spell_openid
+		)
+		 VALUES
+		 (
+		#{spellOrderid},
+		#{spellOpenid}
+		)
+	</insert>
+	<select id="getSpell" parameterType="Integer" resultType="ShopSpellInfo">
+		SELECT * from tb_iamberry_shop_spell WHERE spell_orderid = #{spellOrderid}
+	</select>
+	<select id="listSpell" parameterType="Integer" resultType="ShopSpellInfo">
+		SELECT * from tb_iamberry_shop_spell WHERE spell_id = #{spellId}
+	</select>-->
+
+	<select id="selectIsOrder" parameterType="String" resultType="Integer">
+		SELECT
+		count(*)
+		FROM
+		tb_iamberry_shop_sales_order
+		WHERE
+		sales_openid = #{openId}
+		AND sales_status IN (2, 5, 9, 10, 11, 12, 13, 14, 15)
+		AND sales_transaction_date &gt; '2019-08-06 00:00:00'
+		AND sales_transaction_date &lt; '2019-08-12 23:59:59'
+	</select>
 </mapper>

+ 2 - 1
watero-wechat-service/src/main/java/com/iamberry/wechat/service/mapper/productColorMapper.xml

@@ -11,7 +11,8 @@
 		COLOR_IMG colorImg,
 		COLOR_69CODE color69Code,
 		COLOR_CRETAE_TIME colorCretaeTime,
-		COLOR_UPDATE_TIME colorUpdateTime
+		COLOR_UPDATE_TIME colorUpdateTime,
+		color_spell_amount colorSpellAmount
 	</sql>
 	
 	<!-- 添加一个产品颜色 -->

+ 24 - 10
watero-wechat-service/src/main/java/com/iamberry/wechat/service/mapper/productInfoMapper.xml

@@ -7,7 +7,7 @@
 		 PRODUCT_SALESNUM productSalesnum, PRODUCT_ACCESSNUM productAccessnum, PRODUCT_STATUS productStatus, 
 		PRODUCT_INTRODUCE_IMG productIntroduceImg, PRODUCT_PARAMETER_IMG productParameterImg, PRODUCT_CREATE_DATE productCreateDate, 
 		PRODUCT_SORT_NUM productSortNum, PRODUCT_COLOR_DES productColorDes, PRODUCT_REMARK productRemark,
-		PRODUCT_TYPE "productType.typeId", PRODUCT_RENT_TYPE productRentType 
+		PRODUCT_TYPE "productType.typeId", PRODUCT_RENT_TYPE productRentType,product_is_spell productIsSpell
 	</sql>
 	
 	<sql id="userGift">
@@ -29,7 +29,8 @@
 		COLOR_NAME colorName,
 		COLOR_DISCOUNT colorDiscount,
 		COLOR_PRICE colorPrice,
-		COLOR_69CODE color69Code 
+		COLOR_69CODE color69Code,
+		color_spell_amount colorSpellAmount
 	</sql>
 	
 	<!-- 分页查询商品信息 -->
@@ -40,8 +41,9 @@
 			COLOR_PRICE productPrice, 
 			COLOR_NAME productColor, 
 			COLOR_ID colorId,
-			color_img colorImg
-		FROM 
+			color_img colorImg,
+			color_spell_amount colorSpellAmount
+		FROM
 			TB_IAMBERRY_PRODUCT_INFO 
 		LEFT JOIN TB_IAMBERRY_PRODUCT_COLOR ON PRODUCT_ID = COLOR_PRODUCT_ID 
 		WHERE 
@@ -59,6 +61,9 @@
 			<if test="productRentType != null and productRentType != ''">
 				AND PRODUCT_RENT_TYPE = #{productRentType} 
 			</if>
+			<if test="productIsSpell != null and productIsSpell != ''">
+				AND product_is_spell = #{productIsSpell}
+			</if>
 			ORDER BY color_sort
 			<if test="page!=null and page.recordBegin>0 and page.pageSize>0 ">
 		     	LIMIT ${page.recordBegin},${page.pageSize}
@@ -72,7 +77,8 @@
 			COLOR_DISCOUNT productDiscount,
 			COLOR_PRICE productPrice, 
 			COLOR_NAME productColor, 
-			COLOR_ID colorId  
+			COLOR_ID colorId,
+			color_spell_amount colorSpellAmount
 		FROM 
 			TB_IAMBERRY_PRODUCT_INFO 
 		LEFT JOIN TB_IAMBERRY_PRODUCT_COLOR ON PRODUCT_ID = COLOR_PRODUCT_ID 
@@ -83,6 +89,9 @@
 			<if test="productRentType != null and productRentType != ''">
 				AND PRODUCT_RENT_TYPE = #{productRentType} 
 			</if>
+			<if test="productIsSpell != null and productIsSpell != ''">
+				AND product_is_spell = #{productIsSpell}
+			</if>
 		</where>
 	</select>
 	
@@ -128,8 +137,10 @@
 			COLOR_DISCOUNT productDiscount,
 			COLOR_PRICE productPrice, 
 			COLOR_NAME productColor, 
-			COLOR_ID colorId  
-		FROM 
+			COLOR_ID colorId,
+			product_is_spell productIsSpell,
+			color_spell_amount colorSpellAmount
+		FROM
 			TB_IAMBERRY_PRODUCT_INFO 
 		LEFT JOIN TB_IAMBERRY_PRODUCT_COLOR ON PRODUCT_ID = COLOR_PRODUCT_ID 
 		WHERE 
@@ -155,8 +166,10 @@
 			COLOR_DISCOUNT productDiscount,
 			COLOR_PRICE productPrice, 
 			COLOR_NAME productColor, 
-			COLOR_ID colorId  
-		FROM 
+			COLOR_ID colorId,
+			product_is_spell productIsSpell,
+			color_spell_amount colorSpellAmount
+		FROM
 			TB_IAMBERRY_PRODUCT_INFO 
 		LEFT JOIN TB_IAMBERRY_PRODUCT_COLOR ON PRODUCT_ID = COLOR_PRODUCT_ID 
 		WHERE 
@@ -242,7 +255,8 @@
 		PC.color_img,
 		PC.color_discount,
 		PC.color_price,
-		PC.color_69code
+		PC.color_69code,
+		PC.color_spell_amount colorSpellAmount
 		FROM tb_iamberry_product_info PI
 		LEFT JOIN tb_iamberry_product_color PC ON PC.color_product_id=PI.PRODUCT_ID
 		WHERE PC.color_id=#{colorId}

+ 0 - 1
watero-wechat-service/src/main/java/com/iamberry/wechat/service/order/AdminOrderServiceImpl.java

@@ -618,5 +618,4 @@ public class AdminOrderServiceImpl implements AdminOrderService {
 		return cashLogDao.addCashLog(cashLog);
 	}
 	
-	
 }

+ 35 - 1
watero-wechat-service/src/main/java/com/iamberry/wechat/service/wechat/WeChatServiceImpl.java

@@ -12,6 +12,7 @@ import com.iamberry.wechat.core.entity.coupon.CouponItem;
 import com.iamberry.wechat.core.entity.coupon.CouponItemDto;
 import com.iamberry.wechat.core.entity.coupon.CouponType;
 import com.iamberry.wechat.core.entity.thanksgiving.ThanksGiving;
+import com.iamberry.wechat.face.cart.CartService;
 import com.iamberry.wechat.face.coupon.CouponItemService;
 import com.iamberry.wechat.face.coupon.CouponTypeService;
 import com.iamberry.wechat.face.mothMovable.MothMovableService;
@@ -97,6 +98,8 @@ public class WeChatServiceImpl implements WeChatService {
 	private CouponItemService couponItemService;
 	@Autowired
 	private SendMessageUtil sendMessageUtil;
+	@Autowired
+	private CartService cartService;
 	/**
 	 * 处理微信发来的请求
 	 * @return
@@ -150,6 +153,18 @@ public class WeChatServiceImpl implements WeChatService {
 					respContent = ResultInfo.messageIsNullResponseText;
 				}
 
+				/**
+				 * 团购活动日期判断 8-13 0点 到 8月13 24点
+				 */
+				Date date = new Date();
+				Calendar stateCalendar = Calendar.getInstance();
+				stateCalendar.set(2019,7,13,00,00,00);
+				Date stateDate = stateCalendar.getTime();
+				stateCalendar.set(2019,7,13,23,59,59);
+				Date endDate = stateCalendar.getTime();
+
+
+
 				if(QQFace.isQqFace(content)){// QQ表情的处理
 					String xml = "<xml>"+
 							"<ToUserName><![CDATA[" + fromUserName + "]]></ToUserName>" +
@@ -163,6 +178,8 @@ public class WeChatServiceImpl implements WeChatService {
 						respContent = bulidPlace(content, fromUserName);
 				}else if ("618".equals(content)) {// 618
 					respContent = add618Reduction(fromUserName);
+				}else if (stateDate.before(date) && endDate.after(date) && "七夕抽奖".equals(content)) {// 20190807七夕抽奖
+					respContent = isOrder(fromUserName);
 				}else {
 					// 文本类型的消息处理
 					Status status = messageHandler(content, requestMap, fromUserName, toUserName, createTime+"");
@@ -991,5 +1008,22 @@ public class WeChatServiceImpl implements WeChatService {
 		}
 		return status;
 	}
-	
+
+	/**
+	 * 20190807七夕团购活动
+	 * @param fromUserName openid
+	 * @return
+	 */
+	public String isOrder(String fromUserName) {
+		logger.info("七夕公众号回复Openid:"+fromUserName);
+		if (fromUserName == null) {
+			return "网络故障,请稍后再试!";
+		}
+		Integer num = cartService.selectIsOrder(fromUserName);
+		if(num > 0){
+			return ResultInfo.chineseLottery;
+		}else{
+			return ResultInfo.chineseLotteryFailure;
+		}
+	}
 }

+ 1 - 1
watero-wechat-web/src/main/java/com/iamberry/wechat/filters/AdminLoginFilter.java

@@ -29,7 +29,7 @@ import com.iamberry.wechat.tools.NameUtils;
  * @explain	管理员登陆过滤器,未登陆时不能访问/main/*、/admin/*中资源; <br>
  * 			注意:绝对不允许添加/admin/*或者admin/**此类的权限路径,"admin/**"是绝对不允许的
  */
-//@WebFilter(value = { "/main/*", "/admin/*" })
+@WebFilter(value = { "/main/*", "/admin/*" })
 public class AdminLoginFilter implements Filter {
 	
 	private static final String ERROR_PAGE = "/WEB-INF/views/admin/msg/error.jsp";

+ 2 - 1
watero-wechat-web/src/main/java/com/iamberry/wechat/filters/CSRFTokenFilter.java

@@ -10,6 +10,7 @@ import javax.servlet.FilterConfig;
 import javax.servlet.ServletException;
 import javax.servlet.ServletRequest;
 import javax.servlet.ServletResponse;
+import javax.servlet.annotation.WebFilter;
 import javax.servlet.http.Cookie;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
@@ -29,7 +30,7 @@ import com.iamberry.wechat.tools.IpAddressUtil;
  * 			使用注意:如果多次重复启动,可能导致系统拒绝服务,这只是因为tomcat默认最多接受200个cookie的缘故,关闭浏览器重新打开即可。
  * 			另外系统本身已经做了优化处理,保证99%情况下不会出现问题。
  */
-//@WebFilter(value = {"/admin/*", "/loginUI"})
+@WebFilter(value = {"/admin/*", "/loginUI"})
 public class CSRFTokenFilter implements Filter {
 	
 	/**

+ 111 - 1
watero-wechat-web/src/main/java/com/iamberry/wechat/handles/admin/AdminOrderHandlers.java

@@ -1,6 +1,7 @@
 package com.iamberry.wechat.handles.admin;
 
 import java.io.IOException;
+import java.io.UnsupportedEncodingException;
 import java.net.URLDecoder;
 import java.text.SimpleDateFormat;
 import java.util.Date;
@@ -9,6 +10,8 @@ import java.util.List;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
+import com.iamberry.wechat.core.entity.cart.ShopOrderItemDto;
+import com.iamberry.wechat.face.cart.CartService;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
@@ -89,6 +92,9 @@ public class AdminOrderHandlers {
 	
 	@Autowired
 	private RebackServices rebackServices;
+
+	@Autowired
+	private CartService cartService;
 	
 	/**
 	 * 后台进入订单列表功能
@@ -231,6 +237,7 @@ public class AdminOrderHandlers {
 	 * @return ModelAndView
 	 * @throws Exception
 	 */
+	@ResponseBody
 	@RequestMapping("/getShopOrderByOrderId/{orderId}")
 	public ModelAndView getShopOrderByOrderId(HttpServletRequest request,
 			@PathVariable("orderId") String orderId) throws Exception{
@@ -799,7 +806,7 @@ public class AdminOrderHandlers {
 	/**
 	 * 订单备注
 	 * @param actionDTO
-	 * @throws IOException 
+	 * @throws IOException
 	 */
 	@RequestMapping(value="/remark/{id}",produces = {"application/json;charset=UTF-8"})
 	@ResponseBody
@@ -830,4 +837,107 @@ public class AdminOrderHandlers {
 			return "{\"status\":\"false\",\"info\":\"备注失败,请稍后重试!\"}";
 		}
 	}
+
+
+	//默认分配拼单的信息
+	private static String hxgOrderid = "1225094505P11863I";
+	private static String hxgOpenid = "o3G6nw_3cxE7CINzCT1or2f6dxL4";
+
+	/**
+	 * 系统拼单
+	 * @param
+	 * @throws IOException
+	 */
+	@RequestMapping(value="/spell",produces = {"application/json;charset=UTF-8"})
+	@ResponseBody
+	public String spell(HttpServletResponse response,HttpServletRequest request) throws IOException {
+		String orderId = request.getParameter("orderId");
+		//查询该订单的状态
+		Order order = adminOrderService.selectOrderStatusByOrderId(orderId);
+		if (null == order) {
+			return "{\"status\":true,\"info\":\"该订单不存在!\"}";
+		}
+		if (!"15".equals(order.getSalesStatus().toString())) {
+			return "{\"status\":true,\"info\":\"该订单已完成拼单!\"}";
+		}
+		/**
+		 * 修改拼单信息并推送
+		 */
+		if(order.getSalesStatus() != null && order.getSalesStatus() == 15){
+			//邀请人订单修改
+			Order or1 = new Order();
+			or1.setSalesOrderid(orderId);
+			or1.setSalesStatus(2);
+			or1.setSalesSpellOrderId(hxgOrderid);//默认何秀刚的已完成订单
+			cartService.updateOrderSpellOrderId(or1);//修改状态为已支付,待发货,关联拼单订单id
+			//邀请人信息state
+			List<ShopOrderItemDto> orderItems1 = cartService.selectShopOrderItem(orderId);
+			//邀请人信息end
+			if(order.getSalesOpenid() != null){
+				Member	memberOne = memberService.getMemberByUserOpenId(order.getSalesOpenid());
+				String name = "我";
+				if(memberOne != null && !memberOne.getUserNickname().equals("")){
+					try {
+						name = URLDecoder.decode(memberOne.getUserNickname(),"UTF-8");
+					} catch (UnsupportedEncodingException e) {
+						e.printStackTrace();
+					}
+				}
+				String names  = name +","+"微信好友";
+				//推送微信模板消息
+                logger.info("微信账户支付推送拼单成功消息-------------------------------------------------5");
+				try {
+					sendMessageUtil.spellPush(
+							"恭喜您与微信好友拼单成功,点击逛逛更多好货吧。",
+							orderItems1.get(0).getItemProductName(),
+							names,
+							"点击查看拼单详情>>",
+							order.getSalesOpenid(),
+                            ResultInfo.ORDER_GUOQI+"?salesStatus=2");
+				}catch (Exception e){
+					logger.info("推送拼单成功消息失败,失败openId:"+order.getSalesOpenid());
+					e.printStackTrace();
+				}
+				// 给rst推送订单
+				try {
+					MQMessage message = new MQMessage();
+					message.setServiceToMessage(orderId);
+					message.setServiceOtherMessage("efast.trade.new.add");
+					message.setServiceIsSend(2);			// 没有推送的信息
+					message.setServiceStatus(1); 			// 推送成功
+					message.setServiceType(1); 				// 添加订单信息
+					message.setServiceHandlerObjectName("efastOrderServiceImpl");
+					message.setServiceHandlerMethodName("addOrderInfoToEfast");
+					mQservice.insertMQMessage(message);
+				} catch (Exception e) {
+					e.printStackTrace();
+					return "{\"status\":false,\"info\":\"拼单失败,请稍后重试!\"}";
+				}
+			}
+		}else{
+			return "{\"status\":false,\"info\":\"拼单失败,请检查订单状态!\"}";
+		}
+		return "{\"status\":true,\"info\":\"拼单成功!\"}";
+
+	}
+
+
+	/**
+	 * 查询订单是否拼团成功
+	 * @param request
+	 * @param orderId
+	 * @return ModelAndView
+	 * @throws Exception
+	 */
+/*	@ResponseBody
+	@RequestMapping("/getOrderByOrderId/{orderId}")
+	public String getOrderByOrderId(HttpServletRequest request,
+											  @PathVariable("orderId") String orderId) throws Exception{
+		Order order = new Order();
+		if (null != orderId && !"".equals(orderId)) {
+			order = this.adminOrderService.getShopOrderByOrderId(orderId);
+
+		}
+		return order.getSalesSpellOrderId();
+	}*/
 }

+ 7 - 2
watero-wechat-web/src/main/java/com/iamberry/wechat/handles/agent/AgentHandler.java

@@ -94,9 +94,14 @@ public class AgentHandler {
 	@ResponseBody
 	public ResultMsg getMemberInfo(HttpServletRequest req){
 		ResultMsg rm = new ResultMsg();
-		Member member = WechatUtils.getUserBySession(req);
+		Member member = new Member();
+		String openId = req.getParameter("openId");
+		if(openId != null && !openId.equals("")){
+			member = memberService.getMemberByUserOpenId(openId);
+		}else{
+			member = WechatUtils.getUserBySession(req);
+		}
 		member = memberService.getMemberByUserOpenId(member.getUserOpenid());
-		
 		AgentMemberDto agentMember = agentMemberService.getMemberInfo(member);
 		agentMember.setUserIsVip(member.getUserIsVip());
 		agentMember.setUser38Interests(2);

+ 219 - 29
watero-wechat-web/src/main/java/com/iamberry/wechat/handles/order/OrderHandler.java

@@ -1,5 +1,6 @@
 package com.iamberry.wechat.handles.order;
 
+import com.iamberry.app.tool.log.RatFWLogger;
 import com.iamberry.wechat.core.entity.PageBean;
 import com.iamberry.wechat.core.entity.ResultMsg;
 import com.iamberry.wechat.core.entity.WechatUtils;
@@ -23,11 +24,13 @@ import com.iamberry.wechat.face.coupon.ExchangeService;
 import com.iamberry.wechat.face.home.HomeService;
 import com.iamberry.wechat.face.member.CashLogService;
 import com.iamberry.wechat.face.member.MemberService;
+import com.iamberry.wechat.face.order.AdminOrderService;
 import com.iamberry.wechat.face.pay.PayService;
 import com.iamberry.wechat.face.porduct.ProductColorService;
 import com.iamberry.wechat.face.qrcode.TemporaryQrcodeService;
 import com.iamberry.wechat.face.reback.RebackServices;
 import com.iamberry.wechat.handles.mq.MQServiceProxy;
+import com.iamberry.wechat.sendMsg.SendMessageUtil;
 import com.iamberry.wechat.service.ActivityUtil;
 import com.iamberry.wechat.tools.NameUtils;
 import com.iamberry.wechat.tools.OrderNOUtil;
@@ -36,15 +39,14 @@ import com.iamberry.wechat.tools.ValidatorUtil;
 import org.springframework.beans.BeanUtils;
 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.RequestParam;
-import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.ServletException;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.net.URLDecoder;
 import java.util.*;
 
 /**
@@ -56,7 +58,8 @@ import java.util.*;
 @Controller
 @RequestMapping("/wechat/order")
 public class OrderHandler {
-	
+	@Autowired
+	private RatFWLogger logger;
 	@Autowired
 	private CartService cartService;
 	
@@ -96,6 +99,9 @@ public class OrderHandler {
 	private ActivityUtil activityUtil;
 	@Autowired
 	private SettlementGiftService settlementGiftService;
+	@Autowired
+	private SendMessageUtil sendMessageUtil;
+
 	/**
 	 * 支付前,调用方法
 	 * @param request
@@ -108,7 +114,17 @@ public class OrderHandler {
 		
 		ResultMsg msg = new ResultMsg();
 		msg.setResultCode(ResultInfo.ERRORCODE);
-		
+
+		String orderId = request.getParameter("orderId");
+		if(orderId != null && !orderId.equals("")){
+			Order order = new Order();
+			order.setSalesOrderid(orderId);
+			order = cartService.selectOrderInfoById(order);
+			if(order!= null && order.getSalesSpellOrderId() != null){
+				msg.setMessage(ResultInfo.spellErrorMsg);
+				return msg;
+			}
+		}
 		OrderPayDto dto = new OrderPayDto();
 		// 用户信息
 		Member member = WechatUtils.getUserBySession(request);
@@ -182,12 +198,25 @@ public class OrderHandler {
 		int sum = 0; // 产品数量
 		int productNum = 0;	//计算商品为滤芯的数量
 		boolean disable = true;	//标识,是否可用优惠券,当购买商品只有滤芯时禁止使用优惠券
-
+		//获取是否是拼团订单字段 1是 2否
+		String isSpell = request.getParameter("isSpell");
 		for (CartDto cartDto : cartDtos) {
+			int subTotal = cartDto.getProductPrice();
 			if (cartDto.getProductStatus() != null && cartDto.getProductStatus().intValue() == 1) {
-				total += cartDto.getCartNum() * cartDto.getProductPrice();
-				sum++;
+				if (isSpell != null && isSpell.equals("1")) {
+						//是否可拼团
+
+						if(cartDto.getProductIsSpell() != null && cartDto.getProductIsSpell().intValue() == 2){
+							subTotal = cartDto.getColorSpellAmount(); // 小计 拼团价
+						}else{
+							subTotal = cartDto.getProductPrice(); // 小计 正常价
+						}
+
+				}
 			}
+			total += cartDto.getCartNum() * subTotal;
+			sum++;
+
 			//计算商品为滤芯的数量
 			if (cartDto.getProductType().intValue() == 2) {
 				productNum++;
@@ -397,6 +426,8 @@ public class OrderHandler {
 		List<OrderItem> list = new ArrayList<OrderItem>();
 		List<Integer> cartIds = new ArrayList<Integer>();
 
+
+
 		//添加赠品
 		ActivityDate activityDate = activityUtil.isActivity();
 		if(activityDate.isStatus()){
@@ -421,10 +452,20 @@ public class OrderHandler {
 			if(7 == cartDto.getCartColorId() || 8 == cartDto.getCartColorId()){
 				isCludeT1ORT2 = true;
 			}
-			
 			if (cartDto.getProductStatus() != null && cartDto.getProductStatus().intValue() == 1) {
 				cartIds.add(cartDto.getCartId());
-				Integer subTotal = cartDto.getCartNum() * cartDto.getProductPrice(); // 小计
+				Integer subTotal = 0;
+				//是否是团购订单
+				if(temp.getIsSpell() != null && temp.getIsSpell() == 1){
+					//是否可拼团
+					if(cartDto.getProductIsSpell().intValue() == 2){
+						subTotal = cartDto.getCartNum() * cartDto.getColorSpellAmount(); // 小计 拼团价
+					}else{
+						subTotal = cartDto.getCartNum() * cartDto.getProductPrice(); // 小计 正常价
+					}
+				}else{
+					subTotal = cartDto.getCartNum() * cartDto.getProductPrice(); // 小计 正常价
+				}
 				total += subTotal;
 				OrderItem item = new OrderItem();
 				item.setItemNum(cartDto.getCartNum());
@@ -441,6 +482,16 @@ public class OrderHandler {
 			}
 		}
 
+		//是否是团购订单
+		if(temp.getIsSpell() != null && temp.getIsSpell() == 1){
+			order.setSalesIsSpellOrder(1);//团购订单
+		}else{
+			order.setSalesIsSpellOrder(2);
+		}
+		//是否是被邀请人支付(完成拼单)
+		if(temp.getSpellOrderId() != null && !temp.getSpellOrderId().equals("")){
+			order.setSalesSpellOrderId(temp.getSpellOrderId());
+		}
 		// 准备订单对象
 		order.setSalesOpenid(member.getUserOpenid()); // openid 
 		order.setSalesAmount(total); // 订单金额
@@ -601,7 +652,12 @@ public class OrderHandler {
 	
 		if(updateFlase){
 			//设置订单状态,还有优惠券id
-			order.setSalesStatus(2);
+
+			if(temp.getIsSpell() == 1){//如果是团购订单则状态改为正在团购
+				order.setSalesStatus(15);
+			}else{
+				order.setSalesStatus(2);
+			}
 			cartService.updateOrderStatus(order);
 			//修改优惠券状态
 			if(hasCoupon){
@@ -609,21 +665,25 @@ public class OrderHandler {
 //				int i=couponItemService.updateCouponItemById(couponItem);
 			}
 
-			// 给rst推送订单
-			try {
-				MQMessage message = new MQMessage();
-				message.setServiceToMessage(order.getSalesOrderid());
-				message.setServiceOtherMessage("efast.trade.new.add");
-				message.setServiceIsSend(2);			// 没有推送的信息
-				message.setServiceStatus(1); 			// 推送成功
-				message.setServiceType(1); 				// 添加订单信息
-				message.setServiceHandlerObjectName("efastOrderServiceImpl");
-				message.setServiceHandlerMethodName("addOrderInfoToEfast");
-				mQservice.insertMQMessage(message);
-			} catch (Exception e) {
-				e.printStackTrace();
+			if(temp.getIsSpell() == null || temp.getIsSpell() == 2){//如果是团购订单则暂时不推送订单,在完成拼单后再推送
+				/*if(o.getSalesIsSpellOrder() != null && o.getSalesIsSpellOrder() == 1 && o.getSalesSpellOrderId() != null){*/
+				// 给rst推送订单
+				try {
+					MQMessage message = new MQMessage();
+					message.setServiceToMessage(order.getSalesOrderid());
+					message.setServiceOtherMessage("efast.trade.new.add");
+					message.setServiceIsSend(2);			// 没有推送的信息
+					message.setServiceStatus(1); 			// 推送成功
+					message.setServiceType(1); 				// 添加订单信息
+					message.setServiceHandlerObjectName("efastOrderServiceImpl");
+					message.setServiceHandlerMethodName("addOrderInfoToEfast");
+					mQservice.insertMQMessage(message);
+				} catch (Exception e) {
+					e.printStackTrace();
+				}
 			}
-				
+
+
 			//更新账户余额
 //			if(balancePayAmount>0){
 //				member.setUserIncome(-balancePayAmount);
@@ -656,6 +716,134 @@ public class OrderHandler {
 //			}
 //			rebackServices.loadSingleOrderReward(order);
 			productInfoService.updateProductNumList(order.getSalesOrderid());
+
+			/**
+			 * 修改拼单信息并推送
+			 */
+			if(temp.getSpellOrderId() != null && !temp.getSpellOrderId().equals("")){
+				//邀请人订单修改
+				Order or1 = new Order();
+				or1.setSalesOrderid(temp.getSpellOrderId());
+				or1.setSalesStatus(2);
+				or1.setSalesSpellOrderId(order.getSalesOrderid());
+				cartService.updateOrderSpellOrderId(or1);//修改状态为已支付,待发货,关联拼单订单id
+				//邀请人信息state
+				Order orderOne = new Order();
+				orderOne.setSalesOrderid(temp.getSpellOrderId());
+				orderOne = cartService.selectOrderInfoById(orderOne);
+				List<ShopOrderItemDto> orderItems1 = cartService.selectShopOrderItem(temp.getSpellOrderId());
+				//邀请人信息end
+				//被邀请人信息state
+				Order orderTwo = new Order();
+				orderTwo.setSalesOrderid(order.getSalesOrderid());
+				orderTwo = cartService.selectOrderInfoById(orderTwo);
+				List<ShopOrderItemDto> orderItems2 = cartService.selectShopOrderItem(order.getSalesOrderid());
+				//被邀请人信息end
+				if(orderOne.getSalesOpenid() != null){
+				Member	memberOne = memberService.getMemberByUserOpenId(orderTwo.getSalesOpenid());
+				String name = "我";
+				if(memberOne != null && !memberOne.getUserNickname().equals("")){
+					try {
+						name = URLDecoder.decode(memberOne.getUserNickname(),"UTF-8");
+					} catch (UnsupportedEncodingException e) {
+						e.printStackTrace();
+					}
+				}
+					String names = name +",微信好友";
+
+					try {
+						names  = name +","+(member.getUserNickname() == null? "微信好友": URLDecoder.decode(member.getUserNickname(),"UTF-8"));
+					} catch (UnsupportedEncodingException e) {
+						e.printStackTrace();
+					}
+				//推送微信模板消息
+					logger.info("微信账户支付推送拼单成功消息-------------------------------------------------1");
+					try {
+						sendMessageUtil.spellPush(
+								"恭喜您与"+name+"拼单成功,点击逛逛更多好货吧。",
+								orderItems1.get(0).getItemProductName(),
+								names,
+								"点击查看拼单详情>>",
+								orderOne.getSalesOpenid(),
+								ResultInfo.ORDER_GUOQI+"?salesStatus=2");
+					}catch (Exception e){
+						logger.info("推送拼单成功消息失败,失败openId:"+orderOne.getSalesOpenid());
+						e.printStackTrace();
+					}
+				}
+				//推送邀请人订单到rst
+				try {
+					MQMessage message = new MQMessage();
+					message.setServiceToMessage(temp.getSpellOrderId());
+					message.setServiceOtherMessage("efast.trade.new.add");
+					message.setServiceIsSend(2);			// 没有推送的信息
+					message.setServiceStatus(1); 			// 推送成功
+					message.setServiceType(1); 				// 添加订单信息
+					message.setServiceHandlerObjectName("efastOrderServiceImpl");
+					message.setServiceHandlerMethodName("addOrderInfoToEfast");
+					mQservice.insertMQMessage(message);
+				} catch (Exception e) {
+					e.printStackTrace();
+				}
+
+
+
+
+
+				//被邀请人(当前)订单修改
+				Order or2 = new Order();
+				or2.setSalesOrderid(order.getSalesOrderid());
+				or2.setSalesStatus(2);
+				or2.setSalesSpellOrderId(temp.getSpellOrderId());
+				cartService.updateOrderSpellOrderId(or2);
+
+				if(orderTwo.getSalesOpenid() != null){
+					Member	memberOne = memberService.getMemberByUserOpenId(orderOne.getSalesOpenid());
+					String name = "微信好友";
+					if(memberOne != null && !memberOne.getUserNickname().equals("")){
+						try {
+							name = URLDecoder.decode(memberOne.getUserNickname(),"UTF-8");
+						} catch (UnsupportedEncodingException e) {
+							e.printStackTrace();
+						}
+					}
+					String names  = member.getUserNickname() == null? "我": member.getUserNickname() +","+name;
+					try {
+						names  = member.getUserNickname() == null? "我": URLDecoder.decode(member.getUserNickname(),"UTF-8") +","+name;
+					} catch (UnsupportedEncodingException e) {
+						e.printStackTrace();
+					}
+					//推送微信模板消息
+					logger.info("微信账户支付推送拼单成功消息-------------------------------------------------2");
+					try {
+						sendMessageUtil.spellPush(
+								"恭喜您与"+name+"拼单成功,点击逛逛更多好货吧。",
+								orderItems2.get(0).getItemProductName(),
+								names,
+								"点击查看拼单详情>>",
+								orderTwo.getSalesOpenid(),
+								ResultInfo.ORDER_GUOQI+"?salesStatus=2");
+					}catch (Exception e){
+						logger.info("推送拼单成功消息失败,失败openId:"+orderTwo.getSalesOpenid());
+						e.printStackTrace();
+					}
+				}
+				//推送被邀请人订单到rst
+				try {
+					MQMessage message = new MQMessage();
+					message.setServiceToMessage(order.getSalesOrderid());
+					message.setServiceOtherMessage("efast.trade.new.add");
+					message.setServiceIsSend(2);			// 没有推送的信息
+					message.setServiceStatus(1); 			// 推送成功
+					message.setServiceType(1); 				// 添加订单信息
+					message.setServiceHandlerObjectName("efastOrderServiceImpl");
+					message.setServiceHandlerMethodName("addOrderInfoToEfast");
+					mQservice.insertMQMessage(message);
+				} catch (Exception e) {
+					e.printStackTrace();
+				}
+
+			}
 		}
 
 		msg.setResultCode(ResultInfo.SUCCESSCODE);
@@ -679,7 +867,7 @@ public class OrderHandler {
 		ResultMsg msg = new ResultMsg();
 		msg.setResultCode(ResultInfo.ERRORCODE);
 		Integer orderStatus = cartService.selectOrderStatusByOrderId(orderId);
-		if (orderStatus != null && orderStatus.intValue() == 2) {
+		if (orderStatus != null && (orderStatus.intValue() == 2 || orderStatus.intValue() == 15) ) {
 			msg.setResultCode(ResultInfo.SUCCESSCODE);
 			msg.setMessage(NameUtils.getConfig("SUCCESSINFO"));
 			msg.setStatus(true);
@@ -704,6 +892,7 @@ public class OrderHandler {
 			@RequestParam(value = "orderId") String orderId) throws Exception {
 		ResultMsg msg = new ResultMsg();
 		msg.setResultCode(ResultInfo.ERRORCODE);
+
 		Member member = WechatUtils.getUserBySession(request); // 当前用户
 		Order order = new Order();
 		order.setSalesOrderid(orderId);
@@ -776,6 +965,8 @@ public class OrderHandler {
 					cartDto.setProductDiscount(sg.getSettGiftPrice());
 					cartDto.setProductPrice(sg.getSettGiftPrice());
 					cartDto.setTotal(sg.getSettGiftPrice()*num);
+					cartDto.setProductIsSpell(cd.getProductIsSpell());
+					cartDto.setColorSpellAmount(sg.getSettGiftPrice());
 					giftList.add(cartDto);
 				}
 			}
@@ -816,5 +1007,4 @@ public class OrderHandler {
 		}
 	}
 
-
-}
+}

+ 232 - 24
watero-wechat-web/src/main/java/com/iamberry/wechat/handles/pay/ResponseWechatPayHandler.java

@@ -3,20 +3,18 @@ package com.iamberry.wechat.handles.pay;
 import java.io.BufferedOutputStream;
 import java.io.IOException;
 import java.io.StringReader;
+import java.io.UnsupportedEncodingException;
 import java.net.URLDecoder;
 import java.text.SimpleDateFormat;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Random;
-import java.util.UUID;
+import java.util.*;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
-
+import com.iamberry.wechat.core.entity.WechatUtils;
+import com.iamberry.wechat.core.entity.cart.ShopOrderItemDto;
 import com.iamberry.wechat.core.entity.ResultMsg;
 import com.iamberry.wechat.core.entity.rent.ReserveOrder;
+import com.iamberry.wechat.face.order.AdminOrderService;
 import com.iamberry.wechat.face.reserve.ReserveService;
 import org.apache.commons.lang3.StringUtils;
 import org.jdom.Document;
@@ -24,10 +22,13 @@ import org.jdom.Element;
 import org.jdom.input.SAXBuilder;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.RequestMapping;
+import org.xml.sax.InputSource;
+import org.springframework.web.bind.annotation.ResponseBody;
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.ResponseBody;
-import org.xml.sax.InputSource;
+
 
 import com.iamberry.app.tool.log.RatFWLogger;
 import com.iamberry.wechat.core.entity.AdminUtils;
@@ -128,6 +129,8 @@ public class ResponseWechatPayHandler {
 	private SystemService systemService;
 	@Autowired
 	private EfastOrderService efastOrderService;
+    @Autowired
+    private AdminOrderService adminOrderService;
 	/**
 	 * 销售订单支付回调方法
 	 */
@@ -152,14 +155,25 @@ public class ResponseWechatPayHandler {
 				//resXml:返回给微信服务器的数据
 				resXml = "<xml><return_code><![CDATA[SUCCESS]]></return_code><return_msg><![CDATA[OK]]></return_msg></xml>";
 				String orderIdMD5 = StaticInfo.orderIdMD5.decrypt(wpr.getAttach());
+
+				//2019-07-29 新增团购功能,查询订单信息,判断是否是团购订单
+				Order o = new Order();
+				o.setSalesOrderid(orderIdMD5);
+				o = cartService.selectOrderInfoById(o);
+
 //System.out.println("===========pay 117==============");
-				
+
 				if (orderIdMD5.equals(wpr.getOutTradeNo())) {
 					Date nowDate = new Date();
 					// 组装数据
 					Order order = new Order();
 					order.setSalesOrderid(orderIdMD5);
-					order.setSalesStatus(2); // 已支付
+					if(o.getSalesIsSpellOrder() != null && o.getSalesIsSpellOrder() == 1){
+						order.setSalesStatus(15); // 正在拼单
+					}else{
+						order.setSalesStatus(2); // 已支付
+					}
+
 					order.setSalesTransactionId(wpr.getTransactionId()); // 微信支付ID
 					order.setSalesTransactionDate(new Date()); // 微信支付时间
 					order.setSalesOpenid(wpr.getOpenid());
@@ -218,22 +232,155 @@ public class ResponseWechatPayHandler {
 					} catch (Exception e) {
 						// TODO: handle exception
 					}
+					System.out.println("被邀请人订单状态:"+o.getSalesIsSpellOrder()+"------------------------");
+					//拼单订单暂时不推送,拼单成功后推送
+					if(o.getSalesIsSpellOrder() == null || o.getSalesIsSpellOrder() == 2){
+						// 给rst推送订单
+						try {
+							MQMessage message = new MQMessage();
+							message.setServiceToMessage(orderIdMD5);
+							message.setServiceOtherMessage("efast.trade.new.add");
+							message.setServiceIsSend(2);			// 没有推送的信息
+							message.setServiceStatus(1); 			// 推送成功
+							message.setServiceType(1); 				// 添加订单信息
+							message.setServiceHandlerObjectName("efastOrderServiceImpl");
+							message.setServiceHandlerMethodName("addOrderInfoToEfast");
+							mQservice.insertMQMessage(message);
+						} catch (Exception e) {
+							e.printStackTrace();
+						}
+					}
+					/*Member members = WechatUtils.getUserBySession(request); */// 当前用户
+					/**
+					 * 修改拼单信息并推送
+					 */
+					System.out.println("被邀请人订单编号:"+o.getSalesSpellOrderId()+"------------------------");
+					if(o.getSalesSpellOrderId() != null && !o.getSalesSpellOrderId().equals("")){
+						//邀请人订单修改
+						Order or1 = new Order();
+						or1.setSalesOrderid(o.getSalesSpellOrderId());
+						or1.setSalesStatus(2);
+						or1.setSalesSpellOrderId(o.getSalesOrderid());
+						cartService.updateOrderSpellOrderId(or1);//修改状态为已支付,待发货,关联拼单订单id
+						//邀请人信息state
+						Order orderOne = new Order();
+						orderOne.setSalesOrderid(o.getSalesSpellOrderId());
+						orderOne = cartService.selectOrderInfoById(orderOne);
+						List<ShopOrderItemDto> orderItems1 = cartService.selectShopOrderItem(o.getSalesSpellOrderId());
+						//邀请人信息end
+						//被邀请人信息state
+						Order orderTwo = new Order();
+						orderTwo.setSalesOrderid(order.getSalesOrderid());
+						orderTwo = cartService.selectOrderInfoById(orderTwo);
+						List<ShopOrderItemDto> orderItems2 = cartService.selectShopOrderItem(o.getSalesOrderid());
 
-					// 给rst推送订单
-					try {
-						MQMessage message = new MQMessage();
-						message.setServiceToMessage(orderIdMD5);
-						message.setServiceOtherMessage("efast.trade.new.add");
-						message.setServiceIsSend(2);			// 没有推送的信息
-						message.setServiceStatus(1); 			// 推送成功
-						message.setServiceType(1); 				// 添加订单信息
-						message.setServiceHandlerObjectName("efastOrderServiceImpl");
-						message.setServiceHandlerMethodName("addOrderInfoToEfast");
-						mQservice.insertMQMessage(message);
-					} catch (Exception e) {
-						e.printStackTrace();
+						Member	memberTwo = memberService.getMemberByUserOpenId(orderTwo.getSalesOpenid());
+						//被邀请人信息end
+						if(orderOne.getSalesOpenid() != null){
+							Member	memberOne = memberService.getMemberByUserOpenId(orderOne.getSalesOpenid());
+							String name = "我";
+							if(memberOne != null && !memberOne.getUserNickname().equals("")){
+
+								try {
+									name = URLDecoder.decode(memberOne.getUserNickname(),"UTF-8");
+								} catch (UnsupportedEncodingException e) {
+									e.printStackTrace();
+								}
+							}
+							String names  = name +","+(memberTwo.getUserNickname() == null? "微信好友": memberTwo.getUserNickname());
+							try {
+								names  = name +","+(memberTwo.getUserNickname() == null? "微信好友": URLDecoder.decode(memberTwo.getUserNickname(),"UTF-8"));
+							} catch (UnsupportedEncodingException e) {
+								e.printStackTrace();
+							}
+							//推送微信模板消息
+							try {
+								sendMessageUtil.spellPush(
+										"恭喜您与"+name+"拼单成功,点击逛逛更多好货吧。",
+										orderItems1.get(0).getItemProductName(),
+										names,
+										"点击查看拼单详情>>",
+										orderOne.getSalesOpenid(),
+										ResultInfo.ORDER_GUOQI+"?salesStatus=2");
+							}catch (Exception e){
+								logger.info("推送拼单成功消息失败,失败openId:"+orderOne.getSalesOpenid());
+								e.printStackTrace();
+							}
+						}
+						// 给邀请人推送订单
+                        logger.info("微信账户支付推送拼单成功消息-------------------------------------------------3");
+						try {
+							MQMessage message = new MQMessage();
+							message.setServiceToMessage(o.getSalesSpellOrderId());
+							message.setServiceOtherMessage("efast.trade.new.add");
+							message.setServiceIsSend(2);			// 没有推送的信息
+							message.setServiceStatus(1); 			// 推送成功
+							message.setServiceType(1); 				// 添加订单信息
+							message.setServiceHandlerObjectName("efastOrderServiceImpl");
+							message.setServiceHandlerMethodName("addOrderInfoToEfast");
+							mQservice.insertMQMessage(message);
+						} catch (Exception e) {
+							e.printStackTrace();
+						}
+
+
+						//被邀请人(当前)订单修改
+						Order or2 = new Order();
+						or2.setSalesOrderid(order.getSalesOrderid());
+						or2.setSalesStatus(2);
+						or2.setSalesSpellOrderId(orderOne.getSalesOrderid());
+						cartService.updateOrderSpellOrderId(or2);
+
+						if(o.getSalesOpenid() != null){
+							Member	memberOne = memberService.getMemberByUserOpenId(orderOne.getSalesOpenid());
+							String name = "微信好友";
+							if(memberOne != null && !memberOne.getUserNickname().equals("")){
+								try {
+									name = URLDecoder.decode(memberOne.getUserNickname(),"UTF-8");
+								} catch (UnsupportedEncodingException e) {
+									e.printStackTrace();
+								}
+							}
+							String names  = memberTwo.getUserNickname() == null? "我": memberTwo.getUserNickname() +","+name;
+							try {
+								names  = memberTwo.getUserNickname() == null? "我": URLDecoder.decode(memberTwo.getUserNickname(),"UTF-8") +","+name;
+							} catch (UnsupportedEncodingException e) {
+								e.printStackTrace();
+							}
+							//推送微信模板消息
+                            logger.info("微信账户支付推送拼单成功消息-------------------------------------------------4");
+							try {
+								sendMessageUtil.spellPush(
+										"恭喜您与"+name+"拼单成功,点击逛逛更多好货吧。",
+										orderItems2.get(0).getItemProductName(),
+										names,
+										"点击查看拼单详情>>",
+										o.getSalesOpenid(),
+										ResultInfo.ORDER_GUOQI+"?salesStatus=2");
+							}catch (Exception e){
+								logger.info("推送拼单成功消息失败,失败openId:"+o.getSalesOpenid());
+								e.printStackTrace();
+							}
+						}
+
+						// 给被邀请人推送订单
+						try {
+							MQMessage message = new MQMessage();
+							message.setServiceToMessage(order.getSalesOrderid());
+							message.setServiceOtherMessage("efast.trade.new.add");
+							message.setServiceIsSend(2);			// 没有推送的信息
+							message.setServiceStatus(1); 			// 推送成功
+							message.setServiceType(1); 				// 添加订单信息
+							message.setServiceHandlerObjectName("efastOrderServiceImpl");
+							message.setServiceHandlerMethodName("addOrderInfoToEfast");
+							mQservice.insertMQMessage(message);
+						} catch (Exception e) {
+							e.printStackTrace();
+						}
 					}
 
+
+
 					try {	//修改用户购买记录为已购买
 						memberService.updateIsBaughtByOpenid(wpr.getOpenid(), 2);
 						//更新用户绑定状态
@@ -248,7 +395,11 @@ public class ResponseWechatPayHandler {
 						System.out.println("修改已购买状态和终身绑定失败!");
 						e.printStackTrace();
 					}
-					
+
+
+
+
+
 				} else {
 					resXml = "<xml><return_code><![CDATA[FAIL]]></return_code><return_msg><![CDATA[报文有误]]></return_msg></xml>";
 					logger.error(this, "订单:" + orderIdMD5 + "支付成功,但是没有通过校验!");
@@ -880,6 +1031,63 @@ public class ResponseWechatPayHandler {
 		}
 	}
 
+
+    /**
+     * 查询订单是否拼团成功
+     * @param request
+     * @return ModelAndView
+     * @throws Exception
+     */
+    @ResponseBody
+    @RequestMapping("/getOrderByOrderId")
+    public String getOrderByOrderId(HttpServletRequest request) throws Exception{
+		String orderId = request.getParameter("orderId");
+		String salesSpellOrderId = null;
+        Order order = new Order();
+        if (null != orderId && !"".equals(orderId)) {
+            order = this.adminOrderService.getShopOrderByOrderId(orderId);
+            if(order != null && order.getSalesSpellOrderId()!= null){
+				salesSpellOrderId = order.getSalesSpellOrderId();
+			}else{
+				salesSpellOrderId = null;
+			}
+
+        }
+        if(salesSpellOrderId == null ){
+			return "1";
+		}else{
+			return "2";
+		}
+    }
+
+	/**
+	 * 20190807七夕团购活动
+	 * @param fromUserName openid
+	 * @return
+	 */
+	@ResponseBody
+	@RequestMapping("/isOrder")
+	public String isOrder(String fromUserName) {
+		/*if (fromUserName == null) {
+			return "网络故障,请稍后再试!";
+		}*/
+		Date date = new Date();
+		Calendar stateCalendar = Calendar.getInstance();
+		stateCalendar.set(2019,7,7,00,00,00);
+		Date stateDate = stateCalendar.getTime();
+		stateCalendar.set(2019,7,7,23,59,59);
+		Date endDate = stateCalendar.getTime();
+		if(stateDate.before(date) && endDate.after(date)){
+			return "符合";
+		}
+		Integer num = cartService.selectIsOrder("o3G6nw7DSmcQwSy3LtNhEcPYMqRI");
+		if(num > 0){
+			return ResultInfo.chineseLottery;
+		}else{
+			return ResultInfo.chineseLotteryFailure;
+		}
+	}
+
 	/**
 	 * 测试订单推送
 	 * @param orderId

+ 5 - 1
watero-wechat-web/src/main/resources/ResultInfo.properties

@@ -57,7 +57,10 @@ eventExpiredMsg=\u6d3b\u52a8\u5df2\u8fc7\u671f\u0021
 repeatCollectionMsg=\u60a8\u5df2\u9886\u53d6\u0035\u0030\u5143\u73b0\u91d1\u62b5\u7528\u5238\uff0c\u5feb\u70b9\u51fb\u201c\u0036\u0031\u0038\u5927\u4fc3\u201d\u4f7f\u7528\u5427\u007e
 failedReceiveMsg=\u9886\u53d6\u4f18\u60e0\u5238\u5931\u8d25\uff0c\u8bf7\u7a0d\u540e\u91cd\u8bd5\uff01
 successReceiveMsg=\u60a8\u7684\u0035\u0030\u5143\u5df2\u5230\u8d26\uff0c\u5feb\u53bb\u4f7f\u7528\u5427\u007e\u007e\n<a href='https://s.iamberry.com/watero/wechat/20190618.html'>\u70b9\u51fb\u8fd9\u91cc</a>\uff0c\u9a6c\u4e0a\u67e5\u770b\u964d\u4ef7\u5b9d\u8d1d\u007e\u007e\n
+spellErrorMsg=\u8be5\u8ba2\u5355\u5df2\u5b8c\u6210\u62fc\u5355\uff0c\u5feb\u53bb\u53d1\u8d77\u62fc\u5355\u5427\uff01
 
+chineseLottery=\u6b22\u8fce\u60a8\u53c2\u4e0e\u672c\u6b21\u4e03\u5915\u6d3b\u52a8\u62bd\u5956https://hd.faisco.cn/20101191/1cRno1XYiMbxop-fkWLFCw/load.html?style=75
+chineseLotteryFailure=\u5f88\u62b1\u6b49\uff0c\u60a8\u6ca1\u6709\u5728\u6d3b\u52a8\u671f\u95f4\u4e0b\u5355\uff0c\u65e0\u6cd5\u53c2\u4e0e\u672c\u6b21\u62bd\u5956
 #ce shi  huanjin
 PAGE_SHIPMENT = http://test.iamberry.com/watero/pay/goOrderInfo?orderId=
 TUIHUI_SHIPMENT = http://static.iamberry.com/watero/wechat/daili_rebackOrder_list.html
@@ -77,4 +80,5 @@ probation_apply_success=-2mhs7Y0aUFtas4rnatcGj3xYv0XyFjnfaEqf4PJJvo
 probation_pay_success=BWudEQXeAwon2BTa-RQO3X_sVP6AkmDGngKhi92KDc0
 probation_shut_down=qAn04oDBfK4VSB8bROeR-5BhhYri1oUK51FVlh6KwU4
 prize_receive_push=7d_r3XJsY5MAISYCDxrjdnPXgNm3IU8XLRYWXbCJjbs
-service_push=5hWq6wd6W9HbMZ0ICSRTDyCKh_r_MjpQtWzkQRSKLio
+service_push=5hWq6wd6W9HbMZ0ICSRTDyCKh_r_MjpQtWzkQRSKLio
+probation_spell_success=PmRYkC7WJft9t4HJZD4_w6tNmxXiaPBPlyfwIbhPLMI

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

@@ -240,6 +240,9 @@
 		<!--赠品-->
 		<typeAlias type="com.iamberry.wechat.core.entity.cart.SettlementGift" alias="SettlementGift"/>
 
+		<!--团购-->
+		<!--<typeAlias type="com.iamberry.wechat.core.entity.order.ShopSpellInfo" alias="ShopSpellInfo"/>-->
+
 		<package name="com.iamberry.wechat.core.entity.rent"/>
 	</typeAliases>
 	<mappers>

+ 1 - 1
watero-wechat-web/src/main/resources/platform.properties

@@ -125,7 +125,7 @@ rst_base_url=http://test.iamberry.com/rst/mcahine/getMachineInfo?barCode=
 # efast_base_url
 efast_base_url=http://121.199.165.244/efast_test/efast_api/webservice/web/index.php
 # rst_efast_base_url
-rst_efast_base_url=http://test.iamberry.com/rst/mallorder/order
+rst_efast_base_url=http://test.iamberry.com/rst/mallorder/order/
 # order_field
 order_field=order_sn,deal_code,order_status,shipping_status,pay_status,process_status,is_send,is_locked,is_separate,consignee,address,zipcode,tel,mobile,shipping_name,pay_name,invoice_no,order_amount ,money_paid,user_id ,orders.goods_sn,orders.goods_name,orders.goods_number,orders.goods_price,orders.goods_barcode,orders.payment_ft,pay_time,to_buyer,postscript,order_amount,user_nick,money_paid,shipping_fee
 # binding downlod

+ 51 - 7
watero-wechat-web/src/main/webapp/WEB-INF/views/admin/order/orderList.jsp

@@ -141,6 +141,7 @@
 			  	<span onclick="location.href='${pageContext.request.contextPath }${statusUrl }&orderStatus=quitOrder'" class="quitOrder">取消订单</span>
 			  	<span onclick="location.href='${pageContext.request.contextPath }${statusUrl }&orderStatus=etcOrder'" class="etcOrder">待支付</span>
 			  	<span onclick="location.href='${pageContext.request.contextPath }${statusUrl }&orderStatus=returnOrderSuccess'" class="returnOrderSuccess">已退款</span>
+			  	<span onclick="location.href='${pageContext.request.contextPath }${statusUrl }&orderStatus=spelling'" class="spelling">正在拼单</span>
 
 			  </div>
 			</div>
@@ -264,6 +265,18 @@
 								      		</li>
 								      	</c:forEach>
 								      </c:if>
+
+
+									<%--	<c:choose>
+											<c:when test="${order.salesStatus ==15 }">
+												<li><a href="#" lang="${order.salesOrderid }"
+													   title="${oper.name}" alt="${oper.name}" onclick="return orderAction(this)">
+													<i class="Hui-iconfont">${oper.img}</i><font>${oper.name}</font>
+												</a>
+												</li>
+											</c:when>
+										</c:choose>--%>
+
 								    </ul>
 								  </div>
 								</div>
@@ -290,13 +303,12 @@
 				function orderAction(_this) {
 					var $a = $(_this);
 					var orderStatusStr = $a.children("font").text();
-					if (orderStatusStr == "发货" || orderStatusStr == "录入物流信息并发货") {
+					if (orderStatusStr === "发货" || orderStatusStr === "录入物流信息并发货") {
 						$("#layui-layer4").show();
 						$("#sendOrderDivTitle").html("为'" + $a.attr("lang") + "'发货:");
 						$("#form-admin-add").attr("action", $a.attr("href"));
 						return false;
-					} else if (orderStatusStr == "备注") {
-						orderid = $a.attr("lang");
+					} else if (orderStatusStr === "备注") {
 						$("#layui-remark").show();
 						$("#form-admin-remark").attr("action", $a.attr("href"));
 						// 回显现有的备注
@@ -304,7 +316,7 @@
 						$(".optionclass").attr("selected", "");
 						$("#optionclass" + $("#" + $a.attr("lang") + "AdminRemarkColor").attr("lang")).attr("selected", true);
 						return false;
-					} else if (orderStatusStr == "同步订单状态") {
+					} else if (orderStatusStr === "同步订单状态") {
                         var url = $a.attr("href");
                         $.ajax({
                             type:'POST',
@@ -315,6 +327,23 @@
                             }
                         });
                         return false;
+                    }else if (orderStatusStr === "系统拼单") {
+                        var orderid = $a.attr("lang");
+                        $.ajax({
+                            type: "POST",
+                            url: "/watero/admin/order/spell",
+                            data: {"orderId" : orderid},
+                            dataType: "json",
+                            success: function(data){
+                                var obj = eval('(' + data + ')');
+                                if (obj.status) {
+                                    layer.msg(obj.info,{icon:1,time:2000});
+                                } else {
+                                    layer.msg(obj.info,{icon:5,time:2000});
+                                }
+                            }
+                        });
+                        return false;
                     }
 					return true;
 				}
@@ -398,9 +427,24 @@
 				  		  }
 					    });
 					}) */
-				
-				
-				
+
+
+                // 系统拼单
+                /*function spell() {
+                        $.ajax({
+                            type: "POST",
+                            url: url,
+                            dataType: "json",
+                            success: function(data){
+                                if (data.status) {
+                                    layer.msg(data.info,{icon:1,time:2000});
+                                } else {
+                                    layer.msg(data.info,{icon:5,time:2000});
+                                }
+                            }
+                        });
+
+                }*/
 				</script>
 </body>
 </html>