Browse Source

Merge branch 'master' of http://git.iamberry.com/liuzhiwei/iamberry-common-tooth

liuzhiwei 7 years ago
parent
commit
ef268a1984
31 changed files with 806 additions and 727 deletions
  1. 5 5
      tooth-common-core/src/main/java/com/iamberry/wechat/core/entity/apparatus/Apparatus.java
  2. 11 1
      tooth-common-core/src/main/java/com/iamberry/wechat/core/entity/coupon/CouponItem.java
  3. 30 3
      tooth-common-core/src/main/java/com/iamberry/wechat/core/entity/coupon/CouponItemDto.java
  4. 28 0
      tooth-common-core/src/main/java/com/iamberry/wechat/core/entity/coupon/CouponType.java
  5. 99 0
      tooth-common-core/src/main/java/com/iamberry/wechat/core/entity/integral/StayIntegral.java
  6. 53 76
      tooth-common-core/src/main/java/com/iamberry/wechat/core/entity/integral/UseIntegral.java
  7. 19 1
      tooth-common-core/src/main/java/com/iamberry/wechat/core/entity/member/Member.java
  8. 6 0
      tooth-common-tool/src/main/java/com/iamberry/wechat/tools/ResultInfo.java
  9. 20 0
      tooth-wechat-interface/src/main/java/com/iamberry/wechat/face/apparatus/ApparatusService.java
  10. 3 3
      tooth-wechat-interface/src/main/java/com/iamberry/wechat/face/integral/UseIntegralService.java
  11. 8 0
      tooth-wechat-interface/src/main/java/com/iamberry/wechat/face/member/MemberService.java
  12. 138 40
      tooth-wechat-service/src/main/java/com/iamberry/wechat/service/apparatus/ApparatusServiceImpl.java
  13. 3 3
      tooth-wechat-service/src/main/java/com/iamberry/wechat/service/integral/UseIntegralServiceImpl.java
  14. 10 0
      tooth-wechat-service/src/main/java/com/iamberry/wechat/service/mapper/ApparatusMapper.java
  15. 16 0
      tooth-wechat-service/src/main/java/com/iamberry/wechat/service/mapper/MemberMapper.java
  16. 3 3
      tooth-wechat-service/src/main/java/com/iamberry/wechat/service/mapper/UseIntegralMapper.java
  17. 12 4
      tooth-wechat-service/src/main/java/com/iamberry/wechat/service/mapper/apparatusMapper.xml
  18. 9 4
      tooth-wechat-service/src/main/java/com/iamberry/wechat/service/mapper/cartMapper.xml
  19. 27 5
      tooth-wechat-service/src/main/java/com/iamberry/wechat/service/mapper/couponItemMapper.xml
  20. 33 5
      tooth-wechat-service/src/main/java/com/iamberry/wechat/service/mapper/memberMapper.xml
  21. 28 23
      tooth-wechat-service/src/main/java/com/iamberry/wechat/service/mapper/useIntegralMapper.xml
  22. 5 2
      tooth-wechat-service/src/main/java/com/iamberry/wechat/service/member/MemberServiceImpl.java
  23. 8 0
      tooth-wechat-service/src/main/java/com/iamberry/wechat/service/member/dao/MemberDao.java
  24. 5 2
      tooth-wechat-service/src/main/java/com/iamberry/wechat/service/member/dao/imp/MemberDaoImpl.java
  25. 32 7
      tooth-wechat-web/src/main/java/com/iamberry/wechat/handles/apparatus/ApparatusHandler.java
  26. 19 113
      tooth-wechat-web/src/main/java/com/iamberry/wechat/handles/cart/CartHandlers.java
  27. 35 17
      tooth-wechat-web/src/main/java/com/iamberry/wechat/handles/integral/UseIntegralHandler.java
  28. 2 1
      tooth-wechat-web/src/main/java/com/iamberry/wechat/handles/kuaidi/LogisticsHandler.java
  29. 47 398
      tooth-wechat-web/src/main/java/com/iamberry/wechat/handles/order/OrderHandler.java
  30. 51 11
      tooth-wechat-web/src/main/java/com/iamberry/wechat/handles/pay/ResponseWechatPayHandler.java
  31. 41 0
      tooth-wechat-web/src/main/java/com/iamberry/wechat/handles/wx/QrCodeHandler.java

+ 5 - 5
tooth-common-core/src/main/java/com/iamberry/wechat/core/entity/apparatus/Apparatus.java

@@ -15,7 +15,7 @@ public class Apparatus implements java.io.Serializable{
     private Integer apparatusId;        //id
     private String apparatusBarcode;    //机器条码
     private String userOpenid;          //用户openid
-    private Integer storeId;            //渠道id
+    private Integer apparatusStore;            //渠道id
     private Integer apparatusStatus;    //状态
     private Date apparatusBuyDate;      //购买时间
     private Date apparatusWarrantyDate; //保修截止日期
@@ -25,12 +25,12 @@ public class Apparatus implements java.io.Serializable{
 
     private PageBean page;			//分页
 
-    public Integer getStoreId() {
-        return storeId;
+    public Integer getApparatusStore() {
+        return apparatusStore;
     }
 
-    public void setStoreId(Integer storeId) {
-        this.storeId = storeId;
+    public void setApparatusStore(Integer apparatusStore) {
+        this.apparatusStore = apparatusStore;
     }
 
     public Date getApparatusBuyDate() {

+ 11 - 1
tooth-common-core/src/main/java/com/iamberry/wechat/core/entity/coupon/CouponItem.java

@@ -37,6 +37,9 @@ public class CouponItem implements Serializable{
 	private Date couponUseDate;					//使用时间
 	private String couponItemRemark;			//优惠券详情备注
 	private PageBean page;						//分页
+
+	private Integer couponIsNewPeople;  //是否为新人券   1:是   2:否
+
 	public String getCouponItemId() {
 		return couponItemId;
 	}
@@ -100,5 +103,12 @@ public class CouponItem implements Serializable{
 	public void setOldCouponUseStatus(Integer oldCouponUseStatus) {
 		this.oldCouponUseStatus = oldCouponUseStatus;
 	}
-	
+
+	public Integer getCouponIsNewPeople() {
+		return couponIsNewPeople;
+	}
+
+	public void setCouponIsNewPeople(Integer couponIsNewPeople) {
+		this.couponIsNewPeople = couponIsNewPeople;
+	}
 }

+ 30 - 3
tooth-common-core/src/main/java/com/iamberry/wechat/core/entity/coupon/CouponItemDto.java

@@ -37,6 +37,20 @@ public class CouponItemDto implements java.io.Serializable{
 	private String couponItemRemark;			//优惠券详情备注
 	private PageBean page;						//分页
 
+	private Integer couponIsNewPeople;			//是否为新人优惠券
+
+	private Integer couponIsUse;			//判断是否可用
+	private String couponNoUseReason;			//不可用说明
+
+
+	public Integer getCouponIsNewPeople() {
+		return couponIsNewPeople;
+	}
+
+	public void setCouponIsNewPeople(Integer couponIsNewPeople) {
+		this.couponIsNewPeople = couponIsNewPeople;
+	}
+
 	public String getCouponItemCurrentUserOpenid() {
 		return couponItemCurrentUserOpenid;
 	}
@@ -135,7 +149,20 @@ public class CouponItemDto implements java.io.Serializable{
 	public void setCouponType(Integer couponType) {
 		this.couponType = couponType;
 	}
-	
-	
-	
+
+	public Integer getCouponIsUse() {
+		return couponIsUse;
+	}
+
+	public void setCouponIsUse(Integer couponIsUse) {
+		this.couponIsUse = couponIsUse;
+	}
+
+	public String getCouponNoUseReason() {
+		return couponNoUseReason;
+	}
+
+	public void setCouponNoUseReason(String couponNoUseReason) {
+		this.couponNoUseReason = couponNoUseReason;
+	}
 }

+ 28 - 0
tooth-common-core/src/main/java/com/iamberry/wechat/core/entity/coupon/CouponType.java

@@ -52,6 +52,10 @@ public class CouponType implements Serializable{
 	private Integer couponIsSource;			//是否限制来源
 	private String couponSourceName;		//限制来源
 
+	private Integer couponIsExchange;  //是否可用积分兑换  1:允许; 2:不允许;
+	private String couponExchangeNum;	//所需积分数
+	private Integer couponIsNewPeople;  //是否为新人优惠券  1:是  2:否
+
 	public Integer getCouponIsSource() {
 		return couponIsSource;
 	}
@@ -188,6 +192,30 @@ public class CouponType implements Serializable{
 	public void setPage(PageBean page) {
 		this.page = page;
 	}
+	public Integer getCouponIsExchange() {
+		return couponIsExchange;
+	}
+
+	public void setCouponIsExchange(Integer couponIsExchange) {
+		this.couponIsExchange = couponIsExchange;
+	}
+
+	public String getCouponExchangeNum() {
+		return couponExchangeNum;
+	}
+
+	public void setCouponExchangeNum(String couponExchangeNum) {
+		this.couponExchangeNum = couponExchangeNum;
+	}
+
+	public Integer getCouponIsNewPeople() {
+		return couponIsNewPeople;
+	}
+
+	public void setCouponIsNewPeople(Integer couponIsNewPeople) {
+		this.couponIsNewPeople = couponIsNewPeople;
+	}
+
 	@Override
 	public String toString() {
 		return "CouponType [couponId=" + couponId + ", couponName="

+ 99 - 0
tooth-common-core/src/main/java/com/iamberry/wechat/core/entity/integral/StayIntegral.java

@@ -0,0 +1,99 @@
+package com.iamberry.wechat.core.entity.integral;
+
+import java.io.Serializable;
+import java.util.Date;
+
+public class StayIntegral implements Serializable{
+    private static final long serialVersionUID = 8227292419418899771L;
+
+    private Integer stayId;             //记录ID
+    private String userOpenId;          //用户openid
+    private Integer configId;           //来源
+    private Integer orderId;//订单id
+    private Integer stayNumber;         //积分数量
+    private Date stayRecordedTime;      //积分入账时间
+    private Integer stayStatus;         //状态
+    private String stayRemark;          //取消的备注
+    private Date stayCreateTime;        //创建时间
+    private Date stayUpdateTime;        //更新时间
+
+    public Integer getStayId() {
+        return stayId;
+    }
+
+    public void setStayId(Integer stayId) {
+        this.stayId = stayId;
+    }
+
+    public String getUserOpenId() {
+        return userOpenId;
+    }
+
+    public void setUserOpenId(String userOpenId) {
+        this.userOpenId = userOpenId;
+    }
+
+    public Integer getConfigId() {
+        return configId;
+    }
+
+    public void setConfigId(Integer configId) {
+        this.configId = configId;
+    }
+
+    public Integer getOrderId() {
+        return orderId;
+    }
+
+    public void setOrderId(Integer orderId) {
+        this.orderId = orderId;
+    }
+
+    public Integer getStayNumber() {
+        return stayNumber;
+    }
+
+    public void setStayNumber(Integer stayNumber) {
+        this.stayNumber = stayNumber;
+    }
+
+    public Date getStayRecordedTime() {
+        return stayRecordedTime;
+    }
+
+    public void setStayRecordedTime(Date stayRecordedTime) {
+        this.stayRecordedTime = stayRecordedTime;
+    }
+
+    public Integer getStayStatus() {
+        return stayStatus;
+    }
+
+    public void setStayStatus(Integer stayStatus) {
+        this.stayStatus = stayStatus;
+    }
+
+    public String getStayRemark() {
+        return stayRemark;
+    }
+
+    public void setStayRemark(String stayRemark) {
+        this.stayRemark = stayRemark;
+    }
+
+    public Date getStayCreateTime() {
+        return stayCreateTime;
+    }
+
+    public void setStayCreateTime(Date stayCreateTime) {
+        this.stayCreateTime = stayCreateTime;
+    }
+
+    public Date getStayUpdateTime() {
+        return stayUpdateTime;
+    }
+
+    public void setStayUpdateTime(Date stayUpdateTime) {
+        this.stayUpdateTime = stayUpdateTime;
+    }
+}

+ 53 - 76
tooth-common-core/src/main/java/com/iamberry/wechat/core/entity/integral/UseIntegral.java

@@ -4,8 +4,8 @@ import com.fasterxml.jackson.annotation.JsonFormat;
 import com.iamberry.wechat.core.entity.PageBean;
 import org.springframework.format.annotation.DateTimeFormat;
 
-import javax.xml.crypto.Data;
 import java.io.Serializable;
+import java.util.Date;
 
 /**
  * 积分使用实体类
@@ -13,129 +13,106 @@ import java.io.Serializable;
 public class UseIntegral implements Serializable {
 
     private static final long serialVersionUID = 8060941187906868547L;
-    private Integer useIntegralId;          //ID
+    private Integer integralId;          //ID
     private String userOpenId;              //用户openid
-    private Integer useType;                //积分类型
-    private Integer useIntegralType;        //使用积分类型
-    private Integer useIntegralNumber;      //使用积分数量
-    private Integer useConfigId;            //积分来源类型
-    private String useIntegralRemarks;      //备注
-    private Integer integralBeforeNumber;   //变动前可用积分总额
-    private Integer integralEndNumber;      //变动后可用积分总额
+    private Integer integralType;                //积分类型
+    private Integer integralNumber;      //使用积分数量
+    private Integer configId;            //积分来源类型
+    private Integer integralBeforeNumber;//变动前可用积分总额
+    private Integer integralEndNumber;//变动后可用积分总额
+    private String integralRemark;      //备注
     @DateTimeFormat(pattern="yyyy-MM-dd")
     @JsonFormat(pattern="yyyy-MM-dd",timezone = "GMT+8")
-    private Data useIntegralCreateTime;     //创建时间
+    private Date integralCreateTime;     //创建时间
 
     private String integralConfigName;      //来源名称
     private PageBean page=new PageBean();   //分页
 
-    public Integer getIntegralBeforeNumber() {
-        return integralBeforeNumber;
-    }
-
-    public void setIntegralBeforeNumber(Integer integralBeforeNumber) {
-        this.integralBeforeNumber = integralBeforeNumber;
+    public Integer getIntegralId() {
+        return integralId;
     }
 
-    public Integer getIntegralEndNumber() {
-        return integralEndNumber;
-    }
-
-    public void setIntegralEndNumber(Integer integralEndNumber) {
-        this.integralEndNumber = integralEndNumber;
+    public void setIntegralId(Integer integralId) {
+        this.integralId = integralId;
     }
 
-    public PageBean getPage() {
-        return page;
-    }
-
-    public void setPage(PageBean page) {
-        this.page = page;
+    public String getUserOpenId() {
+        return userOpenId;
     }
 
-    public String getIntegralConfigName() {
-        return integralConfigName;
+    public void setUserOpenId(String userOpenId) {
+        this.userOpenId = userOpenId;
     }
 
-    public void setIntegralConfigName(String integralConfigName) {
-        this.integralConfigName = integralConfigName;
+    public Integer getIntegralType() {
+        return integralType;
     }
 
-    public Integer getUseIntegralId() {
-        return useIntegralId;
+    public void setIntegralType(Integer integralType) {
+        this.integralType = integralType;
     }
 
-    public void setUseIntegralId(Integer useIntegralId) {
-        this.useIntegralId = useIntegralId;
+    public Integer getIntegralNumber() {
+        return integralNumber;
     }
 
-    public String getUserOpenId() {
-        return userOpenId;
+    public void setIntegralNumber(Integer integralNumber) {
+        this.integralNumber = integralNumber;
     }
 
-    public void setUserOpenId(String userOpenId) {
-        this.userOpenId = userOpenId;
+    public Integer getConfigId() {
+        return configId;
     }
 
-    public Integer getUseType() {
-        return useType;
+    public void setConfigId(Integer configId) {
+        this.configId = configId;
     }
 
-    public void setUseType(Integer useType) {
-        this.useType = useType;
+    public Integer getIntegralBeforeNumber() {
+        return integralBeforeNumber;
     }
 
-    public Integer getUseIntegralType() {
-        return useIntegralType;
+    public void setIntegralBeforeNumber(Integer integralBeforeNumber) {
+        this.integralBeforeNumber = integralBeforeNumber;
     }
 
-    public void setUseIntegralType(Integer useIntegralType) {
-        this.useIntegralType = useIntegralType;
+    public Integer getIntegralEndNumber() {
+        return integralEndNumber;
     }
 
-    public Integer getUseIntegralNumber() {
-        return useIntegralNumber;
+    public void setIntegralEndNumber(Integer integralEndNumber) {
+        this.integralEndNumber = integralEndNumber;
     }
 
-    public void setUseIntegralNumber(Integer useIntegralNumber) {
-        this.useIntegralNumber = useIntegralNumber;
+    public String getIntegralRemark() {
+        return integralRemark;
     }
 
-    public Integer getUseConfigId() {
-        return useConfigId;
+    public void setIntegralRemark(String integralRemark) {
+        this.integralRemark = integralRemark;
     }
 
-    public void setUseConfigId(Integer useConfigId) {
-        this.useConfigId = useConfigId;
+    public Date getIntegralCreateTime() {
+        return integralCreateTime;
     }
 
-    public String getUseIntegralRemarks() {
-        return useIntegralRemarks;
+    public void setIntegralCreateTime(Date integralCreateTime) {
+        this.integralCreateTime = integralCreateTime;
     }
 
-    public void setUseIntegralRemarks(String useIntegralRemarks) {
-        this.useIntegralRemarks = useIntegralRemarks;
+    public String getIntegralConfigName() {
+        return integralConfigName;
     }
 
-    public Data getUseIntegralCreateTime() {
-        return useIntegralCreateTime;
+    public void setIntegralConfigName(String integralConfigName) {
+        this.integralConfigName = integralConfigName;
     }
 
-    public void setUseIntegralCreateTime(Data useIntegralCreateTime) {
-        this.useIntegralCreateTime = useIntegralCreateTime;
+    public PageBean getPage() {
+        return page;
     }
 
-    @Override
-    public String toString() {
-        return "UseIntegral{" +
-                "useIntegralId=" + useIntegralId +
-                ", userOpenId='" + userOpenId + '\'' +
-                ", useType=" + useType +
-                ", useIntegralType=" + useIntegralType +
-                ", useIntegralNumber=" + useIntegralNumber +
-                ", useConfigid=" + useConfigId +
-                ", useIntegralRemarks='" + useIntegralRemarks + '\'' +
-                ", useIntegralCreateTime=" + useIntegralCreateTime +
-                '}';
+    public void setPage(PageBean page) {
+        this.page = page;
     }
 }

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

@@ -32,7 +32,7 @@ public class Member implements Serializable{
 	private Date userBirthDate;				//生日
 	private Date userCreateDate;			//创建时间
 	
-	private Integer userIdentity;			//会员身份			1:会员   2:微代理
+	private Integer userIdentity;			//会员身份			1:会员   2:微信用户    用于判断是否为上朵会员
 	private Integer userIsFlag;				//关系是否绑定		1:没有2:绑定
 	private String userName;				//姓名
 	private String userPwd;					//用户密码
@@ -59,6 +59,8 @@ public class Member implements Serializable{
 
 	private  Integer quantityPurchased;		//购买数量
 	private  Integer totalConsume; 			//消费金额
+	private  Integer userAgeStage; 			//年龄阶段 1:80后 2:85后 3:90后 4:95后 5:00后 6:其他
+	private Integer userStayIntegral;		//待入账积分
 
 
 	private  String[] ids;						//
@@ -309,6 +311,22 @@ public class Member implements Serializable{
 		this.ids = ids;
 	}
 
+	public Integer getUserAgeStage() {
+		return userAgeStage;
+	}
+
+	public void setUserAgeStage(Integer userAgeStage) {
+		this.userAgeStage = userAgeStage;
+	}
+
+	public Integer getUserStayIntegral() {
+		return userStayIntegral;
+	}
+
+	public void setUserStayIntegral(Integer userStayIntegral) {
+		this.userStayIntegral = userStayIntegral;
+	}
+
 	@Override
 	public String toString() {
 		return "Member [userId=" + userId + ", userOpenid=" + userOpenid

+ 6 - 0
tooth-common-tool/src/main/java/com/iamberry/wechat/tools/ResultInfo.java

@@ -247,6 +247,7 @@ public class ResultInfo {
 	public static String COUPON_OUTOFDATE="优惠券过期";
 	public static String COUPON_INVALID="优惠券无效";
 	public static String COUPON_CONSUME_NO_ENOUGH="消费额度不足,优惠券无法使用";
+	public static String COUPON_NO_MEMBER="非会员需要购买电动牙刷才能使用该优惠券";
 
 	public static String COUPONITEMSTATUS_NORMAL = "normal";
 	public static String COUPONITEMSTATUS_PASSED = "passed";
@@ -267,4 +268,9 @@ public class ResultInfo {
 	public static String PROBATION_START_FIRST = "感谢您申请试用美国Watero净饮水一体机";
 	public static String PROBATION_END_FIRST = "您的订单正在安排配送员派送中,请继续留意关注申请详情,谢谢。";
 
+	/**
+	 * 获取RST系统产品信息接口地址
+	 */
+	public static String GET_MACHINE_INFO = "https://rst.iamberry.com/mcahine/getMachineInfo?barCode=";
+
 }

+ 20 - 0
tooth-wechat-interface/src/main/java/com/iamberry/wechat/face/apparatus/ApparatusService.java

@@ -30,4 +30,24 @@ public interface ApparatusService {
      * @return
      */
     boolean registerMember(Apparatus apparatus, Member member);
+
+    /**
+     * 根据openid和条形码查询单个机器信息
+     * **/
+    Apparatus getApparatus(Apparatus apparatus);
+
+    /**
+     * 根据RST产品id和查询颜色id
+     * **/
+    Integer getColorIdByProductId(String productId);
+
+    /**
+     * 添加待入账积分统一调用该接口
+     * @param openId
+     * @param IntegralType 1.新注册会员送一百积分  2.新增牙刷赠送400积分 3.购买牙刷,赠送订单金额乘以2的积分
+     * @param orderAmount  订单金额  IntegralType为3时有值
+     * @param orderId  订单id  IntegralType为3时有值
+     * @return
+     */
+    boolean addStayIntegral(String openId,Integer IntegralType,Double orderAmount,Integer orderId);
 }

+ 3 - 3
tooth-wechat-interface/src/main/java/com/iamberry/wechat/face/integral/UseIntegralService.java

@@ -22,21 +22,21 @@ public interface UseIntegralService {
      * @param userOpenId
      * @return
      */
-    int getGainIntegralCount(String userOpenId);
+    Integer getGainIntegralCount(String userOpenId);
 
     /**
      * 使用的总积分数
      * @param openid
      * @return
      */
-    int getUseIntegralCount(String openid);
+    Integer getUseIntegralCount(String openid);
 
     /**
      * 待入账的总积分数
      * @param userOpenId
      * @return
      */
-    int getStayIntegralCount(String userOpenId);
+    Integer getStayIntegralCount(String userOpenId);
 
     /**
      * 查询积分来源信息

+ 8 - 0
tooth-wechat-interface/src/main/java/com/iamberry/wechat/face/member/MemberService.java

@@ -142,4 +142,12 @@ public interface MemberService{
 	 * @return
 	 */
 	Member getMyMemberInfo(String openId);
+
+	/**
+	 * 根据 openid 修改用户待入账积分
+	 * 2018年1月10日17:18:39
+	 * @param member
+	 * @return
+	 */
+	public Integer updateUserStayIntegralByOpenId(Member member);
 }

+ 138 - 40
tooth-wechat-service/src/main/java/com/iamberry/wechat/service/apparatus/ApparatusServiceImpl.java

@@ -4,16 +4,20 @@ import com.iamberry.wechat.core.entity.admin.ShopSystemRule;
 import com.iamberry.wechat.core.entity.apparatus.Apparatus;
 import com.iamberry.wechat.core.entity.integral.IntegralConfig;
 import com.iamberry.wechat.core.entity.integral.MemberIntegral;
-import com.iamberry.wechat.core.entity.integral.RankRule;
 import com.iamberry.wechat.core.entity.integral.UseIntegral;
 import com.iamberry.wechat.core.entity.member.Member;
+import com.iamberry.wechat.core.entity.integral.StayIntegral;
 import com.iamberry.wechat.face.apparatus.ApparatusService;
 import com.iamberry.wechat.service.mapper.ApparatusMapper;
+import com.iamberry.wechat.service.mapper.MemberMapper;
 import com.iamberry.wechat.service.mapper.SystemMapper;
 import com.iamberry.wechat.service.mapper.UseIntegralMapper;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
+import java.util.Calendar;
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -28,6 +32,8 @@ public class ApparatusServiceImpl implements ApparatusService {
     private SystemMapper systemMapper;
     @Autowired
     private UseIntegralMapper useIntegralMapper;
+    @Autowired
+    private MemberMapper memberMapper;
 
     @Override
     public List<Apparatus> listApparatusPage(Apparatus apparatus) {
@@ -40,60 +46,152 @@ public class ApparatusServiceImpl implements ApparatusService {
     }
 
     @Override
+    @Transactional
     public boolean registerMember(Apparatus apparatus, Member member) {
-        //注册会员获取积分id
-        ShopSystemRule shopSystemRule = systemMapper.selectOneShopRuleById(247);
-        if (shopSystemRule == null) {
+
+        //获取会员信息,判断是否已经注册会员
+        Member memberInfo = memberMapper.getMemberByUserOpenId(member.getUserOpenid());
+        if(memberInfo == null){
+            return false;
+        }
+        //添加机器信息
+        int num = apparatusMapper.addApparatus(apparatus);
+        if(num > 0){
+            //这里判断是否是会员 1.会员 2.普通用户
+            if(memberInfo.getUserIdentity() == 2){
+                //赠送新注册积分
+                addStayIntegral(member.getUserOpenid(),1,0.0,0);
+
+            }
+            //赠送400新增牙刷积分
+            addStayIntegral(member.getUserOpenid(),2,0.0,0);
+           //修改用户信息
+            member.setUserIdentity(1);
+            if(memberMapper.updateMemberByUserId(member) < 1){
+                return false;
+            }
+        } else {
             return false;
         }
+        return true;
+    }
+
+
+    /**
+     * 获取数据库配置的积分数量
+     * @param id
+     * @return
+     */
+    public IntegralConfig getIntegralId(Integer id){
+        //新增加牙刷获取积分id
+        ShopSystemRule shopSystemRule = systemMapper.selectOneShopRuleById(id);
+        if (shopSystemRule == null) {
+            return null;
+        }
         IntegralConfig config = new IntegralConfig();
         config.setIntegralConfigId(shopSystemRule.getRuleNum().intValue());
         //获取会员获取积分配置信息
         List<IntegralConfig> configList = useIntegralMapper.listIntegralConfig(config);
         if (configList == null || configList.size() == 0) {
-            return false;
+            return null;
         }
-        config = configList.get(0);
-        //查询会员积分等级规则信息
-        RankRule rankRule = new RankRule();
-        rankRule.setRankRuleStatus(1);
-        List<RankRule> rankRuleList = useIntegralMapper.listRankRule(rankRule);
-        if (rankRuleList == null || rankRuleList.size() == 0) {
+        return configList.get(0);
+    }
+    @Override
+    public Apparatus getApparatus(Apparatus apparatus) {
+        return apparatusMapper.getApparatus(apparatus);
+    }
+
+    @Override
+    public Integer getColorIdByProductId(String productId) {
+        return apparatusMapper.getColorIdByProductId(productId);
+    }
+
+    /**
+     * 添加待入账积分统一调用该接口
+     * @param openId
+     * @param IntegralType 1.新注册会员送一百积分  2.新增牙刷赠送400积分 3.购买牙刷,赠送订单金额乘以2的积分
+     * @param orderAmount  订单金额  IntegralType为3时有值
+     * @param orderId  订单id  IntegralType为3时有值
+     * @return
+     */
+    @Override
+    @Transactional
+    public boolean addStayIntegral(String openId,Integer IntegralType,Double orderAmount,Integer orderId){
+        if(openId == null||openId.equals("") || IntegralType < 1){
             return false;
         }
-        int ruleId = 0;
-        //积分等级按积分数倒序排列,如果满足一个,则跳出整个循环
-        for (RankRule rule : rankRuleList) {
-            if (config.getIntegralConfigNumber().intValue() >= rule.getRankRuleIntegral()) {
-                ruleId = rankRule.getRankRuleId();
+        IntegralConfig integralConfig = null;
+        IntegralConfig registeredConfig = null;
+        IntegralConfig buyConfig = null;
+        IntegralConfig newConfig = null;
+        StayIntegral stayIntegral = new StayIntegral();
+        Integer stayNumber = 0;
+        Calendar calendar = Calendar.getInstance();
+        switch (IntegralType){
+            case 1:
+                //新注册会员积分数量
+                integralConfig = getIntegralId(247);
+                stayNumber = integralConfig.getIntegralConfigNumber();
+                //规则表查询新注册会员和新增牙刷积分到账时间(多少天到账)
+                registeredConfig = getIntegralId(251);
+                calendar.set(Calendar.DAY_OF_MONTH,calendar.get(Calendar.DAY_OF_MONTH)+registeredConfig.getIntegralConfigNumber());
+                stayIntegral.setStayRecordedTime(calendar.getTime());
                 break;
-            }
+            case 2:
+                //新增加牙刷赠送积分数量
+                integralConfig = getIntegralId(248);
+                stayNumber = integralConfig.getIntegralConfigNumber();
+                //规则表查询新注册会员和新增牙刷积分到账时间(多少天到账)
+                newConfig = getIntegralId(251);
+                calendar.set(Calendar.DAY_OF_MONTH,calendar.get(Calendar.DAY_OF_MONTH)+newConfig.getIntegralConfigNumber());
+                stayIntegral.setStayRecordedTime(calendar.getTime());
+                break;
+            case 3:
+                if(orderAmount == 0){
+                    break;
+                }
+                integralConfig = getIntegralId(250);
+                stayNumber = (int)(orderAmount * 2);
+                stayIntegral.setOrderId(orderId);
+                //规则表查询新注册会员和新增牙刷积分到账时间(多少天到账)
+                buyConfig = getIntegralId(252);
+                calendar.set(Calendar.DAY_OF_MONTH,calendar.get(Calendar.DAY_OF_MONTH)+buyConfig.getIntegralConfigNumber());
+                stayIntegral.setStayRecordedTime(calendar.getTime());
+                break;
+            default:
+                 break;
+        }
+        if(integralConfig == null){
+            return false;
         }
 
-        MemberIntegral memberIntegral = new MemberIntegral();
-        memberIntegral.setUserOpenid(member.getUserOpenid());
-        memberIntegral.setRankRuleId(ruleId);
-        memberIntegral.setMemberStatus(1);
-        memberIntegral.setMemberAllIntegral(config.getIntegralConfigNumber());
-        memberIntegral.setMemberSurplusIntegral(config.getIntegralConfigNumber());
-        memberIntegral.setMemberUsedIntegral(0);
-        //添加会员信息
-        int sum = useIntegralMapper.addMemberIntegral(memberIntegral);
+        stayIntegral.setUserOpenId(openId);
+        stayIntegral.setConfigId(integralConfig.getIntegralConfigId());
+        stayIntegral.setStayNumber(stayNumber);
 
-        UseIntegral useIntegral = new UseIntegral();
-        useIntegral.setUseConfigId(config.getIntegralConfigId());
-        useIntegral.setUseIntegralNumber(config.getIntegralConfigNumber());
-        useIntegral.setUserOpenId(member.getUserOpenid());
-        useIntegral.setUseType(1);
-        useIntegral.setUseIntegralRemarks("注册会员获取积分");
-        //添加积分获取日志信息
-        int count = useIntegralMapper.addUseIntegral(useIntegral);
-        //添加机器信息
-        int num = apparatusMapper.addApparatus(apparatus);
-        if (sum > 0 && count > 0 && num > 0) {
-            return true;
-        } else {
-            return false;
+        stayIntegral.setStayStatus(1);
+        Integer msg = memberMapper.insertStayIntegral(stayIntegral);
+        if(msg > 0){
+            //添加待入账积分
+            Member memberInfo = memberMapper.getMemberByUserOpenId(openId);
+            memberInfo.setUserStayIntegral(stayNumber);
+            if(memberMapper.updateUserStayIntegralByOpenId(memberInfo) > 0){
+                //添加日志
+                UseIntegral useIntegral = new UseIntegral();
+                useIntegral.setConfigId(integralConfig.getIntegralConfigId());
+                useIntegral.setUserOpenId(openId);
+                useIntegral.setIntegralType(3);
+                useIntegral.setIntegralNumber(stayNumber);
+                useIntegral.setIntegralBeforeNumber(memberInfo.getUserSurplusIntegral());
+                useIntegral.setIntegralEndNumber(memberInfo.getUserSurplusIntegral());
+                useIntegral.setIntegralRemark(integralConfig.getIntegralConfigName());
+                //添加积分获取日志信息
+                if(useIntegralMapper.addUseIntegral(useIntegral) < 1){
+                    return false;
+                }
+            }
         }
+        return true;
     }
 }

+ 3 - 3
tooth-wechat-service/src/main/java/com/iamberry/wechat/service/integral/UseIntegralServiceImpl.java

@@ -35,7 +35,7 @@ public class UseIntegralServiceImpl implements UseIntegralService {
      * @return
      */
     @Override
-    public int getGainIntegralCount(String userOpenId) {
+    public Integer getGainIntegralCount(String userOpenId) {
         return useIntegralMapper.getGainIntegralCount(userOpenId);
     }
 
@@ -45,7 +45,7 @@ public class UseIntegralServiceImpl implements UseIntegralService {
      * @return
      */
     @Override
-    public int getUseIntegralCount(String openid) {
+    public Integer getUseIntegralCount(String openid) {
         return useIntegralMapper.getUseIntegralCount(openid);
     }
 
@@ -55,7 +55,7 @@ public class UseIntegralServiceImpl implements UseIntegralService {
      * @return
      */
     @Override
-    public int getStayIntegralCount(String userOpenId) {
+    public Integer getStayIntegralCount(String userOpenId) {
         return useIntegralMapper.getStayIntegralCount(userOpenId);
     }
 

+ 10 - 0
tooth-wechat-service/src/main/java/com/iamberry/wechat/service/mapper/ApparatusMapper.java

@@ -22,4 +22,14 @@ public interface ApparatusMapper {
      * @return
      */
     Integer addApparatus(Apparatus apparatus);
+
+    /**
+     * 根据openid和条形码查询单个机器信息
+     * **/
+    Apparatus getApparatus(Apparatus apparatus);
+
+    /**
+     * 根据RST产品id和查询颜色id
+     * **/
+    Integer getColorIdByProductId(String productId);
 }

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

@@ -4,6 +4,7 @@ import java.util.List;
 
 import com.iamberry.wechat.core.entity.Page;
 import com.iamberry.wechat.core.entity.member.Member;
+import com.iamberry.wechat.core.entity.integral.StayIntegral;
 
 /**
  * 会员信息 mapper
@@ -128,4 +129,19 @@ public interface MemberMapper {
 	 * @return
 	 */
 	Member getMyMemberInfo(String userOpenid);
+
+	/**
+	 * 根据 openid 修改用户待入账积分
+	 * 2018年1月10日17:18:39
+	 * @param member
+	 * @return
+	 */
+	Integer updateUserStayIntegralByOpenId(Member member);
+
+	/**
+	 * 增加待入账积分记录
+	 * @param stayIntegral
+	 * @return
+	 */
+	Integer insertStayIntegral(StayIntegral stayIntegral);
 }

+ 3 - 3
tooth-wechat-service/src/main/java/com/iamberry/wechat/service/mapper/UseIntegralMapper.java

@@ -22,21 +22,21 @@ public interface UseIntegralMapper {
      * @param userOpenId
      * @return
      */
-    int getGainIntegralCount(String userOpenId);
+    Integer getGainIntegralCount(String userOpenId);
 
     /**
      * 使用的总积分数
      * @param openid
      * @return
      */
-    int getUseIntegralCount(String openid);
+    Integer getUseIntegralCount(String openid);
 
     /**
      * 待入账的总积分数
      * @param userOpenId
      * @return
      */
-    int getStayIntegralCount(String userOpenId);
+    Integer getStayIntegralCount(String userOpenId);
 
     /**
      * 查询积分来源信息

+ 12 - 4
tooth-wechat-service/src/main/java/com/iamberry/wechat/service/mapper/apparatusMapper.xml

@@ -32,13 +32,21 @@
     <insert id="addApparatus" parameterType="Apparatus">
         INSERT INTO tb_iamberry_member_apparatus
         (
-          apparatus_barcode, user_openid, apparatus_status, apparatus_create_time,
-          store_id, apparatus_buy_date, apparatus_warranty_date
+          apparatus_barcode, user_openid,color_id, apparatus_status, apparatus_create_time,
+          apparatus_store, apparatus_buy_date, apparatus_warranty_date
         )
         VALUES
         (
-          #{apparatusBarcode}, #{userOpenid}, #{apparatusStatus}, NOW(),
-          #{storeId}, #{apparatusBuyDate}, #{apparatusWarrantyDate}
+          #{apparatusBarcode}, #{userOpenid},#{colorId}, #{apparatusStatus}, NOW(),
+          #{apparatusStore}, #{apparatusBuyDate}, #{apparatusWarrantyDate}
         )
     </insert>
+
+    <select id="getApparatus" parameterType="Apparatus" resultType="Apparatus">
+        SELECT * from tb_iamberry_member_apparatus where apparatus_barcode = #{apparatusBarcode} and user_openid = #{userOpenid}
+    </select>
+
+    <select id="getColorIdByProductId" parameterType="String" resultType="Integer">
+        select color_id from tb_iamberry_product_related_rst_produce where pts_produce_id = #{productId}
+    </select>
 </mapper>

+ 9 - 4
tooth-wechat-service/src/main/java/com/iamberry/wechat/service/mapper/cartMapper.xml

@@ -11,8 +11,11 @@ PUBLIC
 	<select id="selectCartByOpenId" parameterType="String" resultType="CartDto">
 		SELECT 
 			C.CART_ID cartId, C.CART_PRODUCT_ID cartProductId,C.CART_COLOR_ID cartColorId, C.CART_NUM cartNum,
-			P.PRODUCT_NAME productName, pc.COLOR_DISCOUNT productDiscount, P.PRODUCT_STATUS productStatus, 
-			pc.COLOR_NAME productColor, P.PRODUCT_INTRODUCE_IMG productIntroduceImg, pc.COLOR_69CODE productRemark,
+			P.PRODUCT_NAME productName, pc.COLOR_DISCOUNT productDiscount,
+			pc.color_status productStatus,
+			pc.COLOR_NAME productColor,
+			pc.color_img productIntroduceImg,
+			pc.COLOR_69CODE productRemark,
 			P.PRODUCT_TYPE productType 
 		FROM 
 			TB_IAMBERRY_SHOP_CART C LEFT JOIN TB_IAMBERRY_PRODUCT_INFO P ON C.CART_PRODUCT_ID = P.PRODUCT_ID 
@@ -233,9 +236,11 @@ PUBLIC
 	<!-- 根据购物车ID数组,批量获取购物车集合 -->
 	<select id="selectCartItemByListId" parameterType="java.util.List" resultType="CartDto">
 		SELECT 
-			C.CART_ID cartId, G.PRODUCT_ID cartProductId, pc.COLOR_ID cartColorId, G.PRODUCT_STATUS productStatus, 
+			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_img productIntroduceImg,
+			pc.COLOR_PRICE productDiscount, PC.COLOR_69CODE productRemark,
 			pc.COLOR_NAME productColor, G.PRODUCT_TYPE productType 
 		FROM 
 			TB_IAMBERRY_SHOP_CART C 

+ 27 - 5
tooth-wechat-service/src/main/java/com/iamberry/wechat/service/mapper/couponItemMapper.xml

@@ -14,10 +14,11 @@
 		CI.COUPON_USE_STATUS couponUseStatus,
 		CI.COUPON_USE_DATE couponUseDate,
 		CI.COUPON_ITEM_REMARK couponItemRemark,
-		CI.COUPON_ITEM_CURRENT_USER_OPENID itemCurrentUserOpenid,
-
-		CT.COUPON_IS_GIVE coupon_is_give,
+		CI.coupon_item_current_user_openid couponItemCurrentUserOpenid,
+		CT.coupon_is_new_people couponIsNewPeople,
+		CT.coupon_is_give couponIsGive,
 		CT.COUPON_NAME couponName,
+		CT.coupon_type couponType,
  		CT.COUPON_REDUCE couponReduce,
  		CT.COUPON_CONSUME_ENOUGH couponConsumeEnough
 	</sql>
@@ -25,7 +26,7 @@
  	<select id="getCouponItemDtoList" resultType="CouponItemDto" parameterType="CouponItemDto">
  		SELECT 
  			<include refid="allField"></include>,
- 		  CT.COUPON_TYPE couponType
+ 		CT.COUPON_TYPE couponType	
  		FROM TB_IAMBERRY_COUPON_ITEM CI
  		JOIN TB_IAMBERRY_COUPON_TYPE CT ON CI.COUPON_ID=CT.COUPON_ID
 		<where>
@@ -58,7 +59,7 @@
 	     LIMIT ${page.pageSize}
 	    </if>
  	</select>
-
+ 	
  	<!-- 查询优惠券详情总数 -->
  	<select id="getCouponItemCount" resultType="Integer" parameterType="CouponItemDto">
  		SELECT COUNT(COUPON_ITEM_ID) FROM TB_IAMBERRY_COUPON_ITEM
@@ -81,6 +82,27 @@
 		</where>
  	</select>
 
+	<!--查询待用的优惠卷-->
+ 	<select id="getStandByCoupon" resultType="CouponItem">
+		SELECT CT.COUPON_NAME,CI.COUPON_USE_END_DATE ,CI.COUPON_RECEIVE_DATE
+		FROM TB_IAMBERRY_COUPON_ITEM CI
+		LEFT JOIN TB_IAMBERRY_COUPON_TYPE CT
+ 		ON CI.COUPON_ID=CT.COUPON_ID
+ 		WHERE CI.ITEM_CURRENT_USER_OPENID=#{openid} AND CI.COUPON_USE_STATUS=1
+ 		ORDER BY CI.COUPON_ITEM_ID
+	</select>
+
+	<!--查询已使用的优惠卷-->
+	<select id="getUseCoupon" resultType="CouponItem">
+		SELECT CT.COUPON_NAME,CI.COUPON_USE_END_DATE ,CI.COUPON_RECEIVE_DATE
+		FROM TB_IAMBERRY_COUPON_ITEM CI
+		LEFT JOIN TB_IAMBERRY_COUPON_TYPE CT
+ 		ON CI.COUPON_ID=CT.COUPON_ID
+ 		WHERE CI.ITEM_CURRENT_USER_OPENID=#{openid} AND CI.COUPON_USE_STATUS=2
+ 		ORDER BY CI.COUPON_ITEM_ID
+	</select>
+
+	<!--查询全部的优惠券-->
 
  	<!-- 添加一张优惠券 -->
  	<insert id="insertCouponItem" parameterType="CouponItem"

+ 33 - 5
tooth-wechat-service/src/main/java/com/iamberry/wechat/service/mapper/memberMapper.xml

@@ -40,7 +40,7 @@
 	<!-- 获取个人信息-->
 	<select id="getMyMemberInfo"  parameterType="String" resultType="Member" >
 		SELECT
-			<include refid="allField"></include>
+			user_name,user_tel,user_sex,user_birth_date,user_integral
 		FROM TB_IAMBERRY_USER_USERINFO
 		WHERE user_openid = #{userOpenid}
 	</select>
@@ -183,8 +183,21 @@
 			<if test="userQrcodeType != null">
 				user_qrcode_type = #{userQrcodeType}
 			</if>
+			<if test="userStayIntegral != null">
+				user_stay_integral = #{userStayIntegral}
+			</if>
+			<if test="userAgeStage != null">
+				user_age_stage = #{userAgeStage}
+			</if>
 		</set>
-		where user_id = #{userId}
+		<where>
+			<if test="userId != null">
+				user_id = #{userId}
+			</if>
+			<if test="userOpenid != null">
+				user_openid = #{userOpenid}
+			</if>
+		</where>
 	</update>
 
 	<!-- 修改用户已用积分 -->
@@ -210,11 +223,21 @@
 	<!-- 修改用户可用金额 -->
 	<update id="updateUserIncomeByOpenId" parameterType="Member">
 		UPDATE
-			TB_IAMBERRY_USER_USERINFO
+		TB_IAMBERRY_USER_USERINFO
 		SET
-			USER_INCOME = (USER_INCOME + #{userIncome})
+		USER_INCOME = (USER_INCOME + #{userIncome})
 		WHERE
-			USER_OPENID = #{userOpenid}
+		USER_OPENID = #{userOpenid}
+	</update>
+
+	<!-- 修改用户待入账积分 -->
+	<update id="updateUserStayIntegralByOpenId" parameterType="Member">
+		UPDATE
+		TB_IAMBERRY_USER_USERINFO
+		SET
+		user_stay_integral = (user_stay_integral + #{userStayIntegral})
+		WHERE
+		USER_OPENID = #{userOpenid}
 	</update>
 
 	<!-- 根据当前用户Id,下线信息 -->
@@ -322,4 +345,9 @@
 		</if>
 	</select>
 
+	<insert id="insertStayIntegral" parameterType="StayIntegral">
+        INSERT INTO (user_openid,config_id,order_id,stay_number,stay_recorded_time,stay_status,stay_remark,stay_create_time)
+        VALUES
+         (userOpenid,configId,orderId,stayNumber,stayRecordedTime,stayStatus,stayRemark,NOW())
+	</insert>
 </mapper> 

+ 28 - 23
tooth-wechat-service/src/main/java/com/iamberry/wechat/service/mapper/useIntegralMapper.xml

@@ -3,14 +3,13 @@
 
 <mapper namespace="com.iamberry.wechat.service.mapper.UseIntegralMapper">
     <sql id="AllUseField">
-        use_integral_id useIntegralId,
+        integral_id integralId,
         user_openid userOpenId,
-        use_integral_type useIntegralType,
-        use_integral_number useIntegralNumber,
-        use_type useType,
-        use_config_id useConfigId,
-        use_integral_remarks useIntegralRemarks,
-        use_integral_create_time useIntegralCreateTime,
+        integral_type integralType,
+        integral_number integralNumber,
+        config_id configId,
+        integral_remarks integralRemarks,
+        integral_create_time integralCreateTime,
         integral_before_number integralBeforeNumber,
         integral_end_number integralEndNumber
     </sql>
@@ -21,12 +20,12 @@
           c.integral_config_name integralConfigName
         FROM
           tb_iamberry_use_integral i
-        LEFT JOIN tb_iamberry_integral_config c ON i.use_config_id = c.integral_config_id
+        LEFT JOIN tb_iamberry_integral_config c ON i.config_id = c.integral_config_id
         WHERE i.user_openid=#{userOpenId}
-            <if test="useType != null||useType != ''">
-               AND i.use_type = #{useType}
+            <if test="integralType != null||integralType != ''">
+               AND i.integral_type = #{integralType}
             </if>
-        ORDER BY i.use_integral_id DESC
+        ORDER BY i.integral_id DESC
         <if test="page!=null and page.recordBegin>0 and page.pageSize>0 ">
             limit ${page.recordBegin},${page.pageSize}
         </if>
@@ -36,19 +35,19 @@
     </select>
 
     <!--获得的总积分数-->
-    <select id="getGainIntegralCount" parameterType="String" resultType="int">
-        SELECT avg(use_integral_number)
+    <select id="getGainIntegralCount" parameterType="String" resultType="Integer">
+        SELECT avg(integral_number)
         FROM tb_iamberry_use_integral
-        WHERE user_openid=#{userOpenid} AND use_type=1
+        WHERE user_openid=#{userOpenid} AND integral_type=1
     </select>
     <!--使用的总积分数-->
-    <select id="getUseIntegralCount" parameterType="String" resultType="int">
-        SELECT avg(use_integral_number)
+    <select id="getUseIntegralCount" parameterType="String" resultType="Integer">
+        SELECT avg(integral_number)
         FROM tb_iamberry_use_integral
-        WHERE user_openid=#{userOpenid} AND use_type=2
+        WHERE user_openid=#{userOpenid} AND integral_type=2
     </select>
     <!--待入账的总积分数-->
-    <select id="getStayIntegralCount" parameterType="String" resultType="int">
+    <select id="getStayIntegralCount" parameterType="String" resultType="Integer">
         SELECT avg(stay_number)
         FROM tb_iamberry_stay_integral
         WHERE user_openid=#{userOpenid} AND stay_status=1
@@ -72,16 +71,22 @@
     </select>
 
     <!-- 添加积分日志 -->
-    <insert id="addUseIntegral" parameterType="UseIntegral" keyProperty="useIntegralId" useGeneratedKeys="true">
+    <insert id="addUseIntegral" parameterType="UseIntegral" keyProperty="integralId" useGeneratedKeys="true">
         INSERT INTO tb_iamberry_use_integral
         (
-          user_openid, use_type, use_integral_type, use_config_id,
-          use_integral_number, use_integral_remarks, use_integral_create_time
+          user_openid,
+          integral_type,
+          config_id,
+          integral_number,
+          integral_before_number,
+          integral_end_number,
+          integral_remark,
+          integral_create_time
         )
         VALUES
         (
-          #{userOpenId},#{useType},#{useIntegralType},#{useConfigId},
-          #{useIntegralNumber},#{useIntegralRemarks},NOW()
+          #{userOpenid},#{integralType},#{configId},#{integralNumber},
+          #{integralBeforeNumber},#{integralEndNumber},#{integralRemark},NOW()
         )
     </insert>
 

+ 5 - 2
tooth-wechat-service/src/main/java/com/iamberry/wechat/service/member/MemberServiceImpl.java

@@ -75,7 +75,6 @@ public class MemberServiceImpl implements MemberService {
 	 * 根据 userid 修改会员信息
 	 * 2016年4月21日
 	 * @author 穆再兴
-	 * @param userId
 	 * @return
 	 */
 	@Override
@@ -123,7 +122,6 @@ public class MemberServiceImpl implements MemberService {
 	/**
 	 * 根据userid获取当前用户的“下线人数”和“已购买人数”
 	 * 2016年5月11日
-	 * @param openId
 	 * @return
 	 */
 	public List<Integer> selectDownCountByUserId(Integer userId){
@@ -328,4 +326,9 @@ public class MemberServiceImpl implements MemberService {
 		Member member=memberDao.getMyMemberInfo(openId);
 		return member;
 	}
+
+	@Override
+	public Integer updateUserStayIntegralByOpenId(Member member) {
+		return memberDao.updateUserStayIntegralByOpenId(member);
+	}
 }

+ 8 - 0
tooth-wechat-service/src/main/java/com/iamberry/wechat/service/member/dao/MemberDao.java

@@ -120,4 +120,12 @@ public interface MemberDao {
 	 * @return
 	 */
 	Member getMyMemberInfo(String openId);
+
+	/**
+	 * 根据 openid 修改用户待入账积分
+	 * 2018年1月10日17:18:39
+	 * @param member
+	 * @return
+	 */
+	public Integer updateUserStayIntegralByOpenId(Member member);
 }

+ 5 - 2
tooth-wechat-service/src/main/java/com/iamberry/wechat/service/member/dao/imp/MemberDaoImpl.java

@@ -57,7 +57,6 @@ public class MemberDaoImpl  implements MemberDao {
 	 * 根据 userid 修改会员信息
 	 * 2016年4月21日
 	 * @author 穆再兴
-	 * @param userId
 	 * @return
 	 */
 	@Override
@@ -105,7 +104,6 @@ public class MemberDaoImpl  implements MemberDao {
 	/**
 	 * 根据userid获取当前用户的“下线人数”和“已购买人数”
 	 * 2016年5月11日
-	 * @param openId
 	 * @return
 	 */
 	public List<Integer> selectDownCountByUserId(Integer userId){
@@ -143,4 +141,9 @@ public class MemberDaoImpl  implements MemberDao {
 	public Member getMyMemberInfo(String openId){
 		return memberMapper.getMyMemberInfo(openId);
 	}
+
+	@Override
+	public Integer updateUserStayIntegralByOpenId(Member member) {
+		return memberMapper.updateUserStayIntegralByOpenId(member);
+	}
 }

+ 32 - 7
tooth-wechat-web/src/main/java/com/iamberry/wechat/handles/apparatus/ApparatusHandler.java

@@ -1,5 +1,6 @@
 package com.iamberry.wechat.handles.apparatus;
 
+import com.iamberry.app.tool.util.HttpUtility;
 import com.iamberry.wechat.core.entity.PageBean;
 import com.iamberry.wechat.core.entity.ResultMsg;
 import com.iamberry.wechat.core.entity.WechatUtils;
@@ -77,23 +78,25 @@ public class ApparatusHandler {
     @RequestMapping("add_apparatus")
     public ResultMsg addApparatus(HttpServletRequest request,Member member) throws Exception {
         ResultMsg msg = new ResultMsg();
+       /* String machinrJson =  HttpUtility.httpsGet("https://rst.iamberry.com/mcahine/getMachineInfo?barCode=AURORAA30180100005");*/
+
         SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
         Member memberInfo = WechatUtils.getUserBySession(request);
         //获取换新时间期限
         ShopSystemRule renewRule =  systemService.selectOneShopRuleById(246);
         member.setUserOpenid(memberInfo.getUserOpenid());
-        //获取二维码中机器条形码
         String barCode = request.getParameter("barCode");
+        String apparatusStore = request.getParameter("apparatusStore");
         String buyDate = request.getParameter("buyDate");
-        String storeId = request.getParameter("storeId");
 
-        if (!StringUtil.isNotEmpty(barCode)) {
+        if (!StringUtil.isNotEmpty(barCode)
+                ||!StringUtil.isNotEmpty(apparatusStore)
+                ||!StringUtil.isNotEmpty(buyDate)) {
             msg.setResultCode(ResultInfo.ERRORCODE);
             msg.setStatus(false);
-            msg.setMessage("机器条形码为空,请重新扫描二维码!");
+            msg.setMessage("注册数据为空,请重新提交!");
             return msg;
         }
-
         Apparatus apparatus = new Apparatus();
         apparatus.setApparatusStatus(1);
         apparatus.setApparatusBarcode(barCode);
@@ -102,13 +105,35 @@ public class ApparatusHandler {
         if (apparatusList != null && apparatusList.size() > 0) {
             msg.setResultCode(ResultInfo.ERRORCODE);
             msg.setStatus(false);
-            msg.setMessage("机器条形码为空,请重新扫描二维码!");
+            msg.setMessage("该机器已被绑定!");
+            return msg;
+        }
+        //获取rst系统产品信息,根据获取到的产品id查出对呀的产品颜色id
+        Integer productColorId = 0;
+        String json =  HttpUtility.httpsGet(ResultInfo.GET_MACHINE_INFO+barCode);
+        if(json == null){
+            msg.setResultCode(ResultInfo.ERRORCODE);
+            msg.setStatus(false);
+            msg.setMessage("会员注册失败,请重新注册!");
+            return msg;
+        }
+        JSONObject machineJson = JSONObject.fromObject(json);
+        JSONObject message = machineJson.getJSONObject("message");
+        String isBeing = message.getString("message");
+        if(isBeing.equals("1")){
+            String productId = message.getString("productId");//产品id
+            productColorId = apparatusService.getColorIdByProductId(productId);
+        }else{
+            msg.setResultCode(ResultInfo.ERRORCODE);
+            msg.setStatus(false);
+            msg.setMessage("会员注册失败,请重新注册!");
             return msg;
         }
+        apparatus.setColorId(productColorId);
         apparatus.setUserOpenid(memberInfo.getUserOpenid());
         apparatus.setApparatusBuyDate(format.parse(buyDate));
         apparatus.setApparatusWarrantyDate(updateDate(format.parse(buyDate),renewRule.getRuleNum().intValue()));
-        apparatus.setStoreId(Integer.getInteger(storeId));
+        apparatus.setApparatusStore(Integer.getInteger(apparatusStore));
         //注册会员
         boolean flag = apparatusService.registerMember(apparatus,member);
         if (flag) {

+ 19 - 113
tooth-wechat-web/src/main/java/com/iamberry/wechat/handles/cart/CartHandlers.java

@@ -53,7 +53,8 @@ import com.iamberry.wechat.tools.StaticInfo;
 import static com.iamberry.wechat.service.ImberryConfig.INFORM_SHIPPING;
 
 @Controller
-@RequestMapping("/wechat/cart")
+//@RequestMapping("/wechat/cart")
+@RequestMapping("/cart")
 public class CartHandlers {
 
 	@Autowired
@@ -94,124 +95,26 @@ public class CartHandlers {
 	public ResultMsg selectCartByOpenId(HttpServletRequest request) throws Exception {
 		ResultMsg remsg = new ResultMsg();
 		Member member =  WechatUtils.getUserBySession(request);
-		//member.setUserId(11907);
-		//member.setUserOpenid("o-icas-WiwbEXfwO1wLGDKQ1iWJU");
+
 		List<CartDto> cartList = cartService.selectCartByOpenId(member.getUserOpenid());
-		String userQrcodeType = request.getParameter("userQrcodeType");
-		
-		/*
-		 * 金额统计
-		 */
+
+		/*金额统计*/
 		Integer total = 0;
 		if (null != cartList && cartList.size() > 0) {
-
-
-            /*//如果是有二维码的商户,进入后显示优惠价
-            int num = productInfoService.getQrCodeByPlaceOpenId(member.getUserOpenid());
-            if (num > 0) {
-                QrcodeGift gift = new QrcodeGift();
-                List<QrcodeGift> giftList = productInfoService.listQrcodeGift(gift);
-                if (giftList != null && giftList.size() > 0 && cartList != null && cartList.size() > 0) {
-                    for (CartDto cartDto : cartList) {
-                        for (QrcodeGift qrcodeGift : giftList) {
-                            if (cartDto.getCartColorId().intValue() == qrcodeGift.getQrcodeColorId()
-                                && qrcodeGift.getQrcodePreDiscount() != null
-                                && qrcodeGift.getQrcodePreDiscount() > 0) {
-                                cartDto.setProductDiscount(qrcodeGift.getQrcodePreDiscount());
-                            }
-                        }
-                    }
-                }
-            }*/
-
-			if (userQrcodeType != null) {
-				QrcodeGift gift = new QrcodeGift();
-				gift.setQrcodeStatus(1);
-				List<QrcodeGift> giftList = productInfoService.listQrcodeGift(gift);
-				if (giftList != null && giftList.size() > 0 && cartList != null && cartList.size() > 0) {
-					for (CartDto cartDto : cartList) {
-						for (QrcodeGift qrcodeGift : giftList) {
-							if (cartDto.getCartColorId().intValue() == qrcodeGift.getQrcodeColorId()) {
-								if ("1".equals(userQrcodeType) && qrcodeGift.getQrcodePreDiscount() != null
-										&& qrcodeGift.getQrcodePreDiscount() > 0) {
-									cartDto.setProductDiscount(qrcodeGift.getQrcodePreDiscount());
-								} else if ("2".equals(userQrcodeType) && qrcodeGift.getQrcodeSalesDiscount() != null
-										&& qrcodeGift.getQrcodeSalesDiscount() > 0) {
-									cartDto.setProductDiscount(qrcodeGift.getQrcodeSalesDiscount());
-								}
-							}
-						}
-					}
-				}
-			}
-
-			//判断是否为金牌会员下线,如果是,则以优惠价显示,如果不是则按原价显示
-			//查询金牌会员模板id
-			int templateId = systemService.selectOneShopRuleById(114).getRuleNum().intValue();
-			//查询用户信息
-			Member user= memberService.getMemberByUserOpenId(member.getUserOpenid());
-			if (user == null) {
-				remsg.setMessage(ResultInfo.loginOutError);
-				remsg.setStatus(false);
-				remsg.setMessage(ResultInfo.loginOutError);
-				return remsg;
-			}
-			//如果模板id等于金牌会模板id,则该用户为金牌会员下线
-			if (user.getUserDealers() != null && user.getTemplateId() != null
-					&& templateId == user.getTemplateId().intValue()  && user.getUserResType().intValue() == 3) {
-				//若果是金牌会员下线,产品的价格就以优惠价显示
-				for (CartDto cartDto : cartList) {
-					UserGiftDto userGiftDto = new UserGiftDto();
-					userGiftDto.setUserLevel(2);
-					userGiftDto.setUserProductId(cartDto.getCartProductId());
-					userGiftDto.setUserColorId(cartDto.getCartColorId());
-					//根据商品id和会员等级查询礼品信息
-					userGiftDto = productInfoService.selectUserGift(userGiftDto);
-					if (userGiftDto != null) {
-						cartDto.setProductDiscount(userGiftDto.getUserDiscount());
-					}
-				}
-			}
-
-			//根据openid查询该用户是否购买过订单
-			ShopSalesOrderDto shopSalesOrderDto = new ShopSalesOrderDto();
-			shopSalesOrderDto.setSalesOpenid(member.getUserOpenid());
-			shopSalesOrderDto.setSalesStatus("2");
-			int orderNum = cartService.selectOrderCount(shopSalesOrderDto);
-
 			for (CartDto cartDto : cartList) {
-
-				//如果购买过订单,则滤芯的价格可按折扣价购买
-				if (orderNum > 0) {
-					if (cartDto.getProductType().intValue() == 2) {
-						UserGiftDto userGiftDto = new UserGiftDto();
-						userGiftDto.setUserLevel(3);
-						userGiftDto.setUserProductId(cartDto.getCartProductId());
-						userGiftDto.setUserColorId(cartDto.getCartColorId());
-						//根据商品id和会员等级查询礼品信息
-						userGiftDto = productInfoService.selectUserGift(userGiftDto);
-						if (userGiftDto != null) {
-							cartDto.setProductDiscount(userGiftDto.getUserDiscount());
-						}
-					}
-				}
-
 				if (cartDto.getProductStatus() != null && cartDto.getProductStatus() == 1) { 	// 产品状态:在售
 					total += cartDto.getCartNum() * cartDto.getProductDiscount();
 				}
 			}
 		}
-		
-		/*
-		 * 组装数据
-		 */
+		/*组装数据*/
 		Map<String, Object> map = new HashMap<String, Object>();
 		map.put("cartList", cartList);
 		map.put("total", total);
-		map.put("isShow", ResultInfo.ISSHOW);
-		map.put("cartDesc", ResultInfo.CARTDESC);
-		map.put("cart_url", ResultInfo.CART_URL);
-		map.put("userQrcodeType",userQrcodeType);
+
+//		map.put("isShow", ResultInfo.ISSHOW);
+//		map.put("cartDesc", ResultInfo.CARTDESC);
+//		map.put("cart_url", ResultInfo.CART_URL);
 
 		remsg.setMessage(NameUtils.getConfig("SUCCESSINFO"));
 		remsg.setResultCode(ResultInfo.SUCCESSCODE);
@@ -244,7 +147,7 @@ public class CartHandlers {
 	}
 
 	/**
-	 * 首页添加商品到购物车
+	 * 首页添加商品到购物车post
 	 * @param productId
 	 * @param cartNum
 	 * @param request
@@ -328,7 +231,7 @@ public class CartHandlers {
 	 * @throws Exception
 	 */
 	@ResponseBody
-	@RequestMapping(value = "/addCart",method = RequestMethod.GET)
+	@RequestMapping(value = "/addCart")
 	public ResultMsg  addCart(HttpServletRequest request,@RequestParam("productId") Integer productId,
 							  @RequestParam("colorId") Integer colorId,
 							  @RequestParam(value = "cartNum", required = false, defaultValue = "1") Integer cartNum) throws Exception {
@@ -362,11 +265,12 @@ public class CartHandlers {
 	 * @throws Exception
 	 */
 	@ResponseBody
-	@RequestMapping(value = "/deleteCart",method = RequestMethod.GET)
+	@RequestMapping(value = "/deleteCart")
 	public ResultMsg  deleteCart(HttpServletRequest request,@RequestParam("productId") Integer productId,
 								 @RequestParam("colorId") Integer colorId,
 								 @RequestParam(value = "cartNum", required = false, defaultValue = "1") Integer cartNum) throws Exception {
 		String openId  = WechatUtils.getUserBySession(request).getUserOpenid();
+
 		ResultMsg remsg=new ResultMsg();
 		CartDto cartDto = new CartDto();
 		cartDto.setCartOpenId(openId);
@@ -396,8 +300,9 @@ public class CartHandlers {
 	 * @return ResultMsg
 	 */
 	@ResponseBody
-	@RequestMapping(value = "/deleteCartByProductId",method = RequestMethod.GET)
-	public ResultMsg deleteCartByProductId(HttpServletRequest request,@RequestParam("productId") Integer productId,
+	@RequestMapping(value = "/deleteCartByProductId")
+	public ResultMsg deleteCartByProductId(HttpServletRequest request,
+										   @RequestParam("productId") Integer productId,
 										   @RequestParam("colorId") Integer colorId) throws Exception{
 		String openId  = WechatUtils.getUserBySession(request).getUserOpenid();
 		CartDto cartDto = new CartDto();
@@ -435,7 +340,8 @@ public class CartHandlers {
 									  @RequestParam(value = "pageNO", defaultValue = "1") Integer pageNO,
 									  @RequestParam(value = "salesStatus",defaultValue = "")String salesStatus,
 									  @RequestParam(value = "text",defaultValue = "")String text) throws Exception {
-		String openId  = WechatUtils.getUserBySession(request).getUserOpenid();
+//		String openId  = WechatUtils.getUserBySession(request).getUserOpenid();
+		String openId  = "oZ9pv02WMRQgyDVRY1a_daYecwHI";
 		String beginDate = request.getParameter("beginDate");
 		PaperBean bean = new PaperBean();
 		ResultMsg remsg=new ResultMsg();

+ 35 - 17
tooth-wechat-web/src/main/java/com/iamberry/wechat/handles/integral/UseIntegralHandler.java

@@ -57,16 +57,16 @@ public class UseIntegralHandler {
             rm.setMessage(ResultInfo.loginOutError);
             return rm;
         }
-        int gainIntegralCount=useIntegralService.getGainIntegralCount(m.getUserOpenid());
-        if(gainIntegralCount<0){
-            rm.setStatus(false);
-            rm.setResultCode(ResultInfo.ERRORCODE);
-            rm.setMessage(NameUtils.getConfig("ERRORINFO"));
-            return rm;
-        }
+        Integer gainIntegralCount=useIntegralService.getGainIntegralCount(m.getUserOpenid());
+            if(gainIntegralCount != null && gainIntegralCount<0){
+                rm.setStatus(false);
+                rm.setResultCode(ResultInfo.ERRORCODE);
+                rm.setMessage(NameUtils.getConfig("ERRORINFO"));
+                return rm;
+            }
         UseIntegral useIntegral=new UseIntegral();
         useIntegral.setUserOpenId(m.getUserOpenid());
-        useIntegral.setUseType(useType);
+        useIntegral.setIntegralType(useType);
         useIntegral.getPage().setPageSize(pageSize);
         useIntegral.getPage().setPageNumber(pageNO);
         useIntegral.getPage().initRecordBegin();
@@ -103,8 +103,8 @@ public class UseIntegralHandler {
             rm.setMessage(ResultInfo.loginOutError);
             return rm;
         }
-        int stayIntegralCount=useIntegralService.getStayIntegralCount(m.getUserOpenid());
-        if(stayIntegralCount<0){
+        Integer stayIntegralCount=useIntegralService.getStayIntegralCount(m.getUserOpenid());
+        if(stayIntegralCount != null && stayIntegralCount<0){
             rm.setStatus(false);
             rm.setResultCode(ResultInfo.ERRORCODE);
             rm.setMessage(NameUtils.getConfig("ERRORINFO"));
@@ -112,7 +112,7 @@ public class UseIntegralHandler {
         }
         UseIntegral useIntegral=new UseIntegral();
         useIntegral.setUserOpenId(m.getUserOpenid());
-        useIntegral.setUseType(useType);
+        useIntegral.setIntegralType(useType);
         useIntegral.getPage().setPageSize(pageSize);
         useIntegral.getPage().setPageNumber(pageNO);
         useIntegral.getPage().initRecordBegin();
@@ -149,18 +149,30 @@ public class UseIntegralHandler {
             rm.setMessage(ResultInfo.loginOutError);
             return rm;
         }
-        int useIntegralCount=useIntegralService.getUseIntegralCount(openid);
-        int gainIntegralCount=useIntegralService.getGainIntegralCount(openid);
-        int stayIntegralCount=useIntegralService.getStayIntegralCount(openid);
-        if(useIntegralCount<0||gainIntegralCount<0||stayIntegralCount<0){
+        Integer useIntegralCount=useIntegralService.getUseIntegralCount(openid);
+        Integer gainIntegralCount=useIntegralService.getGainIntegralCount(openid);
+        Integer stayIntegralCount=useIntegralService.getStayIntegralCount(openid);
+        if(useIntegralCount != null && useIntegralCount<0){
+            rm.setStatus(false);
+            rm.setResultCode(ResultInfo.ERRORCODE);
+            rm.setMessage(NameUtils.getConfig("ERRORINFO"));
+            return rm;
+        }
+        if(gainIntegralCount != null && gainIntegralCount<0){
+            rm.setStatus(false);
+            rm.setResultCode(ResultInfo.ERRORCODE);
+            rm.setMessage(NameUtils.getConfig("ERRORINFO"));
+            return rm;
+        }
+        if(stayIntegralCount != null && stayIntegralCount<0){
             rm.setStatus(false);
             rm.setResultCode(ResultInfo.ERRORCODE);
             rm.setMessage(NameUtils.getConfig("ERRORINFO"));
             return rm;
         }
         UseIntegral useIntegral=new UseIntegral();
-        //useIntegral.setUserOpenId(m.getUserOpenid());
-        useIntegral.setUseType(useType);
+        useIntegral.setUserOpenId(m.getUserOpenid());
+        useIntegral.setIntegralType(useType);
         useIntegral.getPage().setPageSize(pageSize);
         useIntegral.getPage().setPageNumber(pageNO);
         useIntegral.getPage().initRecordBegin();
@@ -195,6 +207,12 @@ public class UseIntegralHandler {
             return rm;
         }
         member=memberService.getMyMemberInfo(member.getUserOpenid());
+        if(member==null){
+            rm.setStatus(false);
+            rm.setResultCode(ResultInfo.ERRORCODE);
+            rm.setMessage(NameUtils.getConfig("ERRORINFO"));
+            return rm;
+        }
         int userIntegralCount=member.getUserIntegral();
 
         List<RankRule> list=useIntegralService.getRankRule();

+ 2 - 1
tooth-wechat-web/src/main/java/com/iamberry/wechat/handles/kuaidi/LogisticsHandler.java

@@ -1,5 +1,6 @@
 package com.iamberry.wechat.handles.kuaidi;
 
+import com.iamberry.app.tool.util.HttpUtility;
 import com.iamberry.wechat.core.entity.ResultMsg;
 import com.iamberry.wechat.face.order.CodeService;
 import com.iamberry.wechat.tools.NameUtils;
@@ -63,7 +64,7 @@ public class LogisticsHandler {
      */
     /*@RequestMapping("/informShipping")
     @ResponseBody
-    public String informShipping(HttpServletResponse response,@RequestParam("iphone") String iphone){
+    public String informShipping(HttpServletResponse response,@RequestParam("iphone") String iphone) throws Exception{
         String msg = codeService.informShipping(iphone,INFORM_SHIPPING);
         return msg;
     }*/

+ 47 - 398
tooth-wechat-web/src/main/java/com/iamberry/wechat/handles/order/OrderHandler.java

@@ -63,7 +63,8 @@ import com.iamberry.wechat.tools.ValidatorUtil;
  * Update Date:2016年4月20日
  */
 @Controller
-@RequestMapping("/wechat/order")
+//@RequestMapping("/wechat/order")
+@RequestMapping("/order")
 public class OrderHandler {
 
 	@Autowired
@@ -104,7 +105,7 @@ public class OrderHandler {
 	 * @throws Exception
 	 */
 	@ResponseBody
-	@RequestMapping(value = "/payBefore", method = RequestMethod.POST)
+	@RequestMapping(value = "/payBefore")
 	public ResultMsg payBefore(HttpServletRequest request) throws Exception {
 
 		ResultMsg msg = new ResultMsg();
@@ -113,8 +114,12 @@ public class OrderHandler {
 		OrderPayDto dto = new OrderPayDto();
 		// 用户信息
 		Member member = WechatUtils.getUserBySession(request);
+//		Member member = new Member();
+//		member.setUserId(14708);
+//		member.setUserOpenid("oZ9pv02WMRQgyDVRY1a_daYecwHI");
+
 		member = memberService.getMemberByUserId(member.getUserId());
-		String cartIds = request.getParameter("cartId");
+		String cartIds = request.getParameter("cartIds");
 		if (cartIds == null) {
 			msg.setMessage(ResultInfo.cartEmptyError);
 			return msg;
@@ -148,198 +153,25 @@ public class OrderHandler {
 			return msg;
 		}
 
-        /*//如果是有二维码的商户,进入后显示优惠价
-        int num = productInfoService.getQrCodeByPlaceOpenId(member.getUserOpenid());
-        if (num > 0) {
-            QrcodeGift gift = new QrcodeGift();
-            List<QrcodeGift> giftList = productInfoService.listQrcodeGift(gift);
-            if (giftList != null && giftList.size() > 0 && cartDtos != null && cartDtos.size() > 0) {
-                for (CartDto cartDto : cartDtos) {
-                    for (QrcodeGift qrcodeGift : giftList) {
-                        if (cartDto.getCartColorId().intValue() == qrcodeGift.getQrcodeColorId()
-                            && qrcodeGift.getQrcodePreDiscount() != null
-                            && qrcodeGift.getQrcodePreDiscount() > 0) {
-                            cartDto.setProductPrice(qrcodeGift.getQrcodePreDiscount());
-                        }
-                    }
-                }
-            }
-        }*/
-
-		//判断是否为金牌会员下线,如果是,则以优惠价显示,如果不是则按原价显示
-		//查询金牌会员模板id
-		int templateId = systemService.selectOneShopRuleById(114).getRuleNum().intValue();
-		//如果模板id等于金牌会模板id,则该用户为金牌会员下线
-		if (member.getUserDealers() != null && member.getTemplateId() != null
-				&& templateId == member.getTemplateId().intValue() && member.getUserResType().intValue() == 3) {
-			//若果是金牌会员下线,产品的价格就以优惠价显示
-			if (cartDtos != null && cartDtos.size() >= 1) {
-				for (CartDto cartDto : cartDtos) {
-					UserGiftDto userGiftDto = new UserGiftDto();
-					userGiftDto.setUserLevel(2);
-					userGiftDto.setUserProductId(cartDto.getCartProductId());
-					userGiftDto.setUserColorId(cartDto.getCartColorId());
-					//根据商品id和会员等级查询礼品信息
-					userGiftDto = productInfoService.selectUserGift(userGiftDto);
-					if (userGiftDto != null) {
-						cartDto.setProductPrice(userGiftDto.getUserDiscount());
-					}
-				}
-			}
-		}
-
-		//根据openid查询该用户是否购买过订单
-		ShopSalesOrderDto shopSalesOrderDto = new ShopSalesOrderDto();
-		shopSalesOrderDto.setSalesOpenid(member.getUserOpenid());
-		shopSalesOrderDto.setSalesStatus("2");
-		int orderNum = cartService.selectOrderCount(shopSalesOrderDto);
-		//如果购买过订单,则滤芯的价格可按折扣价购买
-		if (orderNum > 0) {
-			if (cartDtos != null && cartDtos.size() >= 1) {
-				for (CartDto cartDto : cartDtos) {
-					if (cartDto.getProductType().intValue() == 2) {
-						UserGiftDto userGiftDto = new UserGiftDto();
-						userGiftDto.setUserLevel(3);
-						userGiftDto.setUserProductId(cartDto.getCartProductId());
-						userGiftDto.setUserColorId(cartDto.getCartColorId());
-						//根据商品id和会员等级查询礼品信息
-						userGiftDto = productInfoService.selectUserGift(userGiftDto);
-						if (userGiftDto != null) {
-							cartDto.setProductPrice(userGiftDto.getUserDiscount());
-						}
-					}
-				}
-			}
-		}
-
 		// 判断当前提交的购物车ID,有多少产品在售
 		int total = 0; // 支付金额
 		int sum = 0; // 产品数量
-		int productNum = 0;	//计算商品为滤芯的数量
-		int machineNum = 0;	//计算商品为水机的数量
-		boolean disable = true;	//标识,是否可用优惠券,当购买商品只有滤芯时禁止使用优惠券
+		boolean disable = false;	//标识,是否可以使用(新人券)优惠券,当购买商品需要有牙刷时才能使用优惠券
+		String element = systemService.selectOneShopRuleById(249).getRuleDesc();
 
 		List<CartDto> tempCarts = new ArrayList<CartDto>();
-
-		//查询系统规则表滤芯id信息
-		String element = systemService.selectOneShopRuleById(236).getRuleDesc();//赠送滤芯类型id
-		String machine = systemService.selectOneShopRuleById(237).getRuleDesc();//水机类型id
-		String[]  elements = null;
-		String[]  machines = null;
-		StringBuilder preGift = new StringBuilder();
-		if (element != null) {
-			String rolesStr = element.split(":")[1];
-			elements = rolesStr.split(",");
-		}
-		if (machine != null) {
-			String rolesStr = machine.split(":")[1];
-			machines = rolesStr.split(",");
-		}
-
-		String userQrcodeType = request.getParameter("userQrcodeType");
-		//存在水机时赠送4个滤芯
-		if(userQrcodeType != null && !"".equals(userQrcodeType)){
-
-			//如果是扫描优惠二维码进来,则显示优惠价并赠送滤芯
-			QrcodeGift gift = new QrcodeGift();
-			gift.setQrcodeStatus(1);
-			List<QrcodeGift> giftList = productInfoService.listQrcodeGift(gift);
-			if (giftList != null && giftList.size() > 0 && cartDtos != null && cartDtos.size() > 0) {
-				for (CartDto cartDto : cartDtos) {
-					for (QrcodeGift qrcodeGift : giftList) {
-						if (cartDto.getCartColorId().intValue() == qrcodeGift.getQrcodeColorId()) {
-							switch (userQrcodeType) {
-								case "1":
-									if (qrcodeGift.getQrcodePreDiscount() != null && qrcodeGift.getQrcodePreDiscount() > 0) {
-										cartDto.setProductPrice(qrcodeGift.getQrcodePreDiscount());
-									}
-									if (qrcodeGift.getQrcodePreGiftColor() != null) {
-										for (int i = 0;i < cartDto.getCartNum();i++) {
-											preGift.append(qrcodeGift.getQrcodePreGiftColor());
-											preGift.append(",");
-										}
-									}
-									break;
-								case "2":
-									if (qrcodeGift.getQrcodeSalesDiscount() != null && qrcodeGift.getQrcodeSalesDiscount() > 0) {
-										cartDto.setProductPrice(qrcodeGift.getQrcodeSalesDiscount());
-									}
-									if (qrcodeGift.getQrcodeSalesGiftColor() != null) {
-										for (int i = 0;i < cartDto.getCartNum();i++) {
-											preGift.append(qrcodeGift.getQrcodeSalesGiftColor());
-											preGift.append(",");
-										}
-									}
-									break;
-							}
-						}
-					}
-				}
-			}
-		}
-
 		for (CartDto cartDto : cartDtos) {
 			if (cartDto.getProductStatus() != null && cartDto.getProductStatus().intValue() == 1) {
 				total += cartDto.getCartNum() * cartDto.getProductPrice();
 				sum++;
 				tempCarts.add(cartDto);
 			}
-			for(int i=0,len = elements.length;i < len;i++){
-				//计算商品为滤芯的数量
-				if (cartDto.getProductType().intValue() == Integer.valueOf(elements[i])) {
-					productNum = productNum+cartDto.getCartNum();
+			String[] els = element.split("-");
+			for(String el : els){
+				if(cartDto.getProductType() == Integer.valueOf(el)){		//订单中没有牙刷的时候,不能使用新人券
+					disable = true;
 				}
 			}
-			for(int i=0,len = machines.length;i < len;i++){
-				//计算商品为滤芯的数量
-				if (cartDto.getProductType().intValue() == Integer.valueOf(machines[i])) {
-					machineNum = machineNum+cartDto.getCartNum();
-				}
-			}
-		}
-
-		if(preGift.toString() != null && !"".equals(preGift.toString())){
-			String[] giftss = preGift.toString().split(",");
-			ProductColor color = new ProductColor();
-			color.setPage(null);
-			List<ProductColor> colorList = productColorService.selectProductColorList(color);
-			for (int i = 0;i < giftss.length;i++) {
-				boolean cartFlag = false;
-				for (CartDto cart : tempCarts) {
-					//判断是否已经存在该赠品,如果存在则数量加1
-					if (Integer.parseInt(giftss[i]) == cart.getCartColorId() && cart.getTotal() == 0) {
-						cart.setCartNum(cart.getCartNum().intValue() + 1);
-						cartFlag = true;
-					}
-				}
-				//如果不存在,则新增赠品
-				if (!cartFlag) {
-					for (ProductColor productColor : colorList) {
-						if (Integer.parseInt(giftss[i]) == productColor.getColorId()) {
-							CartDto cartDto = new CartDto();
-							cartDto.setCartOpenId(member.getUserOpenid());
-							cartDto.setCartProductId(productColor.getColorProductId());
-							cartDto.setCartColorId(productColor.getColorId());
-							cartDto.setCartNum(1);
-							cartDto.setCartCreateDate(new Date());
-							cartDto.setProductName(productColor.getColorProductName());
-							cartDto.setProductType(productColor.getColorProductType());
-							cartDto.setProductPrice(0);
-							cartDto.setProductIntroduceImg(productColor.getColorProductPic());
-							cartDto.setTotal(0);
-							cartDto.setProductDiscount(0);
-							cartDto.setProductRemark("赠送滤芯");
-							cartDto.setProductColor(productColor.getColorName());
-							tempCarts.add(cartDto);
-						}
-					}
-				}
-			}
-		}
-
-		//当购买商品只有滤芯时禁止使用优惠券
-		if(productNum == cartDtos.size()) {
-			disable = false;
 		}
 
 		if (sum <= 0) {
@@ -347,16 +179,23 @@ public class OrderHandler {
 			return msg;
 		}
 
-		//未使用的优惠券
+		//查询所有优惠券
 		CouponItemDto cDto = new CouponItemDto();
 		cDto.setUseropenid(member.getUserOpenid());
 		cDto.setCouponUseStatus(1);
 		cDto.setBeginDate(new Date());
-		cDto.setPage(new PageBean());
-		cDto.getPage().setPageSize(12);
+		//cDto.setPage(new PageBean());
+		//cDto.getPage().setPageSize(12);
 		//cDto.getPage().setPageNumber(pageNO);
 		List<CouponItemDto> list = couponItemService.getCouponItemDtoList(cDto);
-
+		for(CouponItemDto couponItemDto : list){
+			if(couponItemDto.getCouponIsNewPeople() == 1 && member.getUserIdentity() != 1){  //当券为新人券,用户为非会员时,需要有牙刷,结算才可以使用该券
+				if(!disable){		//没有牙刷
+					couponItemDto.setCouponIsUse(2);
+					couponItemDto.setCouponNoUseReason("需要购买牙刷才能使用");
+				}
+			}
+		}
 		dto.setCouponItems(list);
 
 		dto.setCartId(cartIds);// 购物车ID
@@ -364,9 +203,6 @@ public class OrderHandler {
 		dto.setCartItems(tempCarts); // 订单项
 		dto.setSuccess(true); // 请求成功
 		dto.setMeonyProportion(0);
-		dto.setBalance(member.getUserIncome());
-
-		dto.setDisable(disable);
 
 		//回显用户支付过的地址信息
 		Order order=cartService.getOrderRecentAddress(member.getUserOpenid());
@@ -409,7 +245,12 @@ public class OrderHandler {
 
 		SendPayDto dto = new SendPayDto();
 		dto.setSuccess(false);
-		Member member = WechatUtils.getUserBySession(request); // 当前用户
+
+		//Member member = WechatUtils.getUserBySession(request); // 当前用户
+		Member member = new Member();
+		member.setUserId(14708);
+		member.setUserOpenid("oZ9pv02WMRQgyDVRY1a_daYecwHI");
+
 		/** 数据格式校验 */
 		if (member == null || member.getUserOpenid() == null) {// 校验当前用户信息是否丢失
 			msg.setMessage(ResultInfo.loginOutError);
@@ -445,119 +286,18 @@ public class OrderHandler {
 			return msg;
 		}
 
-		//根据openid查询该用户是否购买过订单
-		ShopSalesOrderDto shopSalesOrderDto = new ShopSalesOrderDto();
-		shopSalesOrderDto.setSalesOpenid(member.getUserOpenid());
-		shopSalesOrderDto.setSalesStatus("2");
-		int orderNum = cartService.selectOrderCount(shopSalesOrderDto);
+		/*是否含有电动牙刷*/
+		boolean isContainProduct = false;
 
 		int total = 0; // 需要支付的总额, 单位为分
-
-
-		//查询金牌会员模板id
-		int templateId = systemService.selectOneShopRuleById(114).getRuleNum().intValue();
-		UserGiftDto userGift = null;
-		int giftNum = 0;
-
 		/** 提前准备订单项数据 */
 		/** 准备数据 */
 		Order order = new Order();
 		order.setSalesOrderid(OrderNOUtil.createOrderCode(member.getUserId())); // 订单ID
 		List<OrderItem> list = new ArrayList<OrderItem>();
 		List<Integer> cartIds = new ArrayList<Integer>();
-		String userQrcodeType = request.getParameter("userQrcodeType");
 		int num = productInfoService.getQrCodeByPlaceOpenId(member.getUserOpenid());
 		for (CartDto cartDto : cartDtos) {
-
-            /*//如果是有二维码的商户,进入后显示优惠价
-            if (num > 0) {
-                QrcodeGift gift = new QrcodeGift();
-                List<QrcodeGift> giftList = productInfoService.listQrcodeGift(gift);
-                if (giftList != null && giftList.size() > 0) {
-                    for (QrcodeGift qrcodeGift : giftList) {
-                        if (cartDto.getCartColorId().intValue() == qrcodeGift.getQrcodeColorId()
-                            && qrcodeGift.getQrcodePreDiscount() != null
-                            && qrcodeGift.getQrcodePreDiscount() > 0) {
-                            cartDto.setProductDiscount(qrcodeGift.getQrcodePreDiscount());
-                            cartDto.setProductPrice(qrcodeGift.getQrcodePreDiscount());
-                        }
-                    }
-                }
-            }*/
-
-			if (userQrcodeType != null && !"".equals(userQrcodeType)) {
-
-				//如果是扫描优惠二维码进来,则显示优惠价并赠送滤芯
-				QrcodeGift gift = new QrcodeGift();
-				gift.setQrcodeStatus(1);
-				List<QrcodeGift> giftList = productInfoService.listQrcodeGift(gift);
-				if (giftList != null && giftList.size() > 0) {
-					for (QrcodeGift qrcodeGift : giftList) {
-						if (cartDto.getCartColorId().intValue() == qrcodeGift.getQrcodeColorId()) {
-							switch (userQrcodeType) {
-								case "1":
-									if (qrcodeGift.getQrcodePreDiscount() != null && qrcodeGift.getQrcodePreDiscount() > 0) {
-										cartDto.setProductDiscount(qrcodeGift.getQrcodePreDiscount());
-										cartDto.setProductPrice(qrcodeGift.getQrcodePreDiscount());
-									}
-									if (qrcodeGift.getQrcodePreGiftColor() != null) {
-										for (int i = 0;i < cartDto.getCartNum();i++) {
-											preGift.append(qrcodeGift.getQrcodePreGiftColor());
-											preGift.append(",");
-										}
-									}
-									break;
-								case "2":
-									if (qrcodeGift.getQrcodeSalesDiscount() != null && qrcodeGift.getQrcodeSalesDiscount() > 0) {
-										cartDto.setProductDiscount(qrcodeGift.getQrcodeSalesDiscount());
-										cartDto.setProductPrice(qrcodeGift.getQrcodeSalesDiscount());
-									}
-									if (qrcodeGift.getQrcodeSalesGiftColor() != null) {
-										for (int i = 0;i < cartDto.getCartNum();i++) {
-											preGift.append(qrcodeGift.getQrcodeSalesGiftColor());
-											preGift.append(",");
-										}
-									}
-									break;
-							}
-						}
-					}
-				}
-			}
-
-			//如果购买过订单,则滤芯的价格可按折扣价购买
-			if (orderNum > 0) {
-				if (cartDto.getProductType().intValue() == 2) {
-					UserGiftDto userGiftDto = new UserGiftDto();
-					userGiftDto.setUserLevel(3);
-					userGiftDto.setUserProductId(cartDto.getCartProductId());
-					userGiftDto.setUserColorId(cartDto.getCartColorId());
-					//根据商品id和会员等级查询礼品信息
-					userGiftDto = productInfoService.selectUserGift(userGiftDto);
-					if (userGiftDto != null) {
-						cartDto.setProductPrice(userGiftDto.getUserDiscount());
-					}
-				}
-			}
-
-			//如果模板id等于金牌会模板id,则该用户为金牌会员下线
-			if (member.getUserDealers() != null && member.getTemplateId() != null
-					&& templateId == member.getTemplateId().intValue() && member.getUserResType().intValue() == 3) {
-				UserGiftDto userGiftDto = new UserGiftDto();
-				userGiftDto.setUserLevel(2);
-				userGiftDto.setUserProductId(cartDto.getCartProductId());
-				userGiftDto.setUserColorId(cartDto.getCartColorId());
-				//根据商品id和会员等级查询礼品信息
-				userGiftDto = productInfoService.selectUserGift(userGiftDto);
-				if (userGiftDto != null) {
-					cartDto.setProductPrice(userGiftDto.getUserDiscount());
-					giftNum += cartDto.getCartNum();
-					if (userGift == null) {
-						userGift = userGiftDto;
-					}
-				}
-			}
-
 			if (cartDto.getProductStatus() != null && cartDto.getProductStatus().intValue() == 1) {
 				cartIds.add(cartDto.getCartId());
 				Integer subTotal = cartDto.getCartNum() * cartDto.getProductPrice(); // 小计
@@ -575,63 +315,8 @@ public class OrderHandler {
 				item.setItemColorId(cartDto.getCartColorId());
 				list.add(item);
 			}
-		}
-
-		//扫描优惠二维码赠送赠品信息
-		if (preGift != null && !"".equals(preGift.toString())) {
-			String[] giftss = preGift.toString().split(",");
-			ProductColor color = new ProductColor();
-			color.setPage(null);
-			List<ProductColor> colorList = productColorService.selectProductColorList(color);
-			for (int i = 0;i < giftss.length;i++) {
-				boolean cartFlag = false;
-				for (OrderItem item : list) {
-					//判断是否已经存在该赠品,如果存在则数量加1
-					if (Integer.parseInt(giftss[i]) == item.getItemColorId() && item.getItemTotal() == 0) {
-						item.setItemNum(item.getItemNum().intValue() + 1);
-						cartFlag = true;
-					}
-				}
-				//如果不存在,则新增订单项
-				if (!cartFlag) {
-					for (ProductColor productColor : colorList) {
-						if (Integer.parseInt(giftss[i]) == productColor.getColorId()) {
-							OrderItem orderItem = new OrderItem();
-							orderItem.setItemNum(1);
-							orderItem.setItemProductDiscount(0);
-							orderItem.setItemProductId(productColor.getColorProductId());
-							orderItem.setItemProductName(productColor.getColorProductName());
-							orderItem.setItemProductPic(productColor.getColorProductPic());
-							orderItem.setItemSalesOrderid(order.getSalesOrderid());
-							orderItem.setItemTotal(0);
-							orderItem.setItemProductType(productColor.getColorProductType());
-							orderItem.setItemProductPrice(0);
-							orderItem.setItemColorId(productColor.getColorId());
-							list.add(orderItem);
-						}
-					}
-				}
-			}
-		}
-
-		//如果模板id等于金牌会模板id,来源是3,则该用户为金牌会员直接下线,直接下线送三年滤芯
-		if (member.getUserDealers() != null && member.getTemplateId() != null &&
-				templateId == member.getTemplateId().intValue() && member.getUserResType().intValue() == 3) {
-			//当userGift不为空时,说明该用户购买的商品有奖励礼品,奖励礼品取第一个产品的,不适用于多个产品有不同奖励礼品的情况
-			if (userGift != null && userGift.getUserGiftId() != null && !"".equals(userGift.getUserGiftId())) {
-				Product product = productInfoService.getProductByProductId(userGift.getUserGiftId(),userGift.getUserGiftColor());
-				OrderItem orderItem = new OrderItem();
-				orderItem.setItemNum(userGift.getUserGiftCount() * giftNum);
-				orderItem.setItemProductDiscount(0);
-				orderItem.setItemProductId(userGift.getUserGiftId());
-				orderItem.setItemProductName(product.getProductName());
-				orderItem.setItemProductPic(product.getProductIntroduceImg());
-				orderItem.setItemSalesOrderid(order.getSalesOrderid());
-				orderItem.setItemTotal(0);
-				orderItem.setItemProductType(product.getProductType().getTypeId());
-				orderItem.setItemProductPrice(0);
-				orderItem.setItemColorId(userGift.getUserColorId());
-				list.add(orderItem);
+			if(cartDto.getProductType() == 100){		//当订单中有电动牙刷时,isContainProduct为true
+				isContainProduct = true;
 			}
 		}
 
@@ -656,6 +341,7 @@ public class OrderHandler {
 			couponItem.setCouponItemUseropenid(couponItemDto.getUseropenid());
 			couponItem.setCouponUseEndDate(couponItemDto.getCouponUseEndDate());
 			couponItem.setCouponUseDate(couponItemDto.getCouponUseDate());
+			couponItem.setCouponIsNewPeople(couponItemDto.getCouponIsNewPeople());
 
 			if(null==couponItemDto || !couponItemDto.getUseropenid().equals(member.getUserOpenid()) || couponItemDto.getCouponUseStatus()!=1){
 				msg.setMessage(ResultInfo.COUPON_INVALID); //优惠券无效
@@ -665,20 +351,25 @@ public class OrderHandler {
 				msg.setMessage(ResultInfo.COUPON_OUTOFDATE); //优惠券过期
 				return msg;
 			}
-
 			//消费达到指定额度
 			CouponType couponType = couponTypeService.getCouponTypeById(couponItemDto.getCouponId());
 			if(couponType.getCouponConsumeEnough()>total){
 				msg.setMessage(ResultInfo.COUPON_CONSUME_NO_ENOUGH); //消费额度不足
 				return msg;
 			}
-			//优惠券的类型,是直接减免额度 还是折扣价 
+			if(member.getUserIdentity() != 1){  //判断该用户是否为会员
+				if(couponItem.getCouponIsNewPeople() == 1 && !isContainProduct){
+					msg.setMessage(ResultInfo.COUPON_NO_MEMBER); //非会员需要购买电动牙刷才能使用该优惠券
+					return msg;
+				}
+			}
+			//优惠券的类型,是直接减免额度 还是折扣价
 			if(couponType.getCouponType()==1){
 				total=total-couponType.getCouponReduce();
 			}else if(couponType.getCouponType()==2){
+				Integer all =  new Integer(total);
 				total=total*couponType.getCouponReduce()/100;
 			}
-
 		}
 		if(total==0 || total<0){
 			total=0;
@@ -687,20 +378,11 @@ public class OrderHandler {
 			mustPay=total;
 		}
 
-		//获取账户余额,判断是否在可用范围内
-		int balancePayAmount=temp.getBalancePayAmount();
-		if(balancePayAmount>0 && member.getUserIncome()>balancePayAmount){
-			mustPay=total-temp.getBalancePayAmount()>0?total-temp.getBalancePayAmount():0;
-		}else if(balancePayAmount>0 && member.getUserIncome()<balancePayAmount){
-			msg.setMessage(ResultInfo.NO_ENOUGH_FOR_PAY);
-			return msg;
-		}
-
 		order.setSalesYetAmount(total);
 		order.setSalesRateAmount(0);
-		order.setSalesIntegralNum(temp.getOrderIntegralNum()); // 订单使用积分
+		order.setSalesIntegralNum(0); // 订单使用积分
 		order.setSalesCreateDate(new Date()); // 创建时间
-		order.setBalancePayAmount(temp.getBalancePayAmount()); //账户余额支付金额
+		order.setBalancePayAmount(0); //账户余额支付金额
 		order.setCouponId(couponId);   //优惠券id
 
 		order.setSalesStatus(1); // 待支付订单
@@ -715,7 +397,7 @@ public class OrderHandler {
 		boolean flag = false;
 		try {
 			flag = cartService.addOrderAndSaveOrderItem(order, list, cartIds);
-//System.out.println("====插入订单列表信息===="+flag);
+		//System.out.println("====插入订单列表信息===="+flag);
 			//修改优惠券状态为临时状态
 			if(hasCoupon){
 				couponItem.setCouponUseStatus(7);
@@ -766,40 +448,7 @@ public class OrderHandler {
 				couponItem.setCouponUseDate(new Date());//添加使用时间
 				int i=couponItemService.updateCouponItemById(couponItem);
 			}
-
-			//更新账户余额
-			if(balancePayAmount>0){
-				member.setUserIncome(-balancePayAmount);
-				memberService.updateUserIncomeByOpenId(member);
-
-				//修改用户购买记录为已购买
-				memberService.updateIsBaughtByOpenid(member.getUserOpenid(), 2);
-				//更新用户绑定状态
-				if (member.getUserIsFlag()!= null && member.getUserIsFlag() == 1) {
-					member.setUserIsFlag(2);//终身绑定
-					homeService.updateMemberIsFlagByOpenid(member);
-				}
-				try {
-					temporaryQrcodeService.applyTempQrcode(member.getUserOpenid());//为用户生成二维码
-				} catch (Exception e) {
-					System.out.println("为用户生成二维码失败!");
-				}
-
-				//现金使用记录
-				CashLog log=new CashLog();
-				log.setCashLogsIntroduction("订单支出");
-				log.setCashLogsNum(balancePayAmount);
-				log.setCashLogsOpenid(member.getUserOpenid());
-				log.setCashLogsType(2);
-				log.setCashLogsResType(3);
-				log.setCashLogsOrderid(order.getSalesOrderid());
-				log.setCashLogsCreateDate(nowDate);
-				cashLogService.addCashLog(log);
-
-			}
-			rebackServices.loadSingleOrderReward(order);
 			productInfoService.updateProductNumList(order.getSalesOrderid());
-
 		}
 		msg.setResultCode(ResultInfo.SUCCESSCODE);
 		msg.setMessage(NameUtils.getConfig("SUCCESSINFO"));

+ 51 - 11
tooth-wechat-web/src/main/java/com/iamberry/wechat/handles/pay/ResponseWechatPayHandler.java

@@ -6,6 +6,7 @@ import com.iamberry.wechat.core.entity.OrderUtil;
 import com.iamberry.wechat.core.entity.admin.ShopSystemRule;
 import com.iamberry.wechat.core.entity.agentInfo.AgentOrder;
 import com.iamberry.wechat.core.entity.coupon.CouponItem;
+import com.iamberry.wechat.core.entity.coupon.CouponItemDto;
 import com.iamberry.wechat.core.entity.giftCard.AgentInfo;
 import com.iamberry.wechat.core.entity.giftCard.AgentMachine;
 import com.iamberry.wechat.core.entity.giftCard.AgentPayLogs;
@@ -15,6 +16,7 @@ import com.iamberry.wechat.core.entity.member.CashLog;
 import com.iamberry.wechat.core.entity.member.Member;
 import com.iamberry.wechat.core.entity.mq.MQMessage;
 import com.iamberry.wechat.core.entity.order.Order;
+import com.iamberry.wechat.core.entity.order.OrderItem;
 import com.iamberry.wechat.core.entity.order.ProbationOrder;
 import com.iamberry.wechat.core.entity.order.ProbationOrderDto;
 import com.iamberry.wechat.core.entity.probation.ProbationAwardRelu;
@@ -33,6 +35,7 @@ import com.iamberry.wechat.face.lease.LeaseOrderService;
 import com.iamberry.wechat.face.member.CashLogService;
 import com.iamberry.wechat.face.member.MemberService;
 import com.iamberry.wechat.face.mq.EfastOrderService;
+import com.iamberry.wechat.face.order.AdminOrderService;
 import com.iamberry.wechat.face.order.AdminProbationOrderService;
 import com.iamberry.wechat.face.order.CodeService;
 import com.iamberry.wechat.face.order.ProbationShopOrderService;
@@ -118,9 +121,11 @@ public class ResponseWechatPayHandler {
 	private EfastOrderService efastOrderService;
 	@Autowired
 	private AgentPurchaseOrderService agentPurchaseOrderService;
+	@Autowired
+	private AdminOrderService adminOrderService;
 
 	/**
-	 * 销售订单支付回调方法
+	 * 销售订单支付回调方法 -- tooth订单返回
 	 */
 	@RequestMapping("/orderPayBack")
 	public synchronized void orderPayBack(HttpServletRequest request, 
@@ -154,35 +159,70 @@ public class ResponseWechatPayHandler {
 					order.setSalesTransactionId(wpr.getTransactionId()); // 微信支付ID
 					order.setSalesTransactionDate(new Date()); // 微信支付时间
 					order.setSalesOpenid(wpr.getOpenid());
-					
+
+					Order or = adminOrderService.getShopOrderByOrderId(orderIdMD5);
+					if(or.getSalesStatus() != 1){
+						return;
+					}
+
 					// 修改订单状态
 					int count = cartService.updateOrderStatus(order);
 
 					//发送短信给运营部
-					ShopSystemRule rule = cartService.getReluByRid(241);
+					/*ShopSystemRule rule = cartService.getReluByRid(241);
 					try {
 						String text = MessageFormat.format(ImberryConfig.ORDER_UPDATE_STATUS_TEXT, "发货");
 						codeService.informShipping(rule.getRuleDesc(),text);
 					} catch (Exception e) {
 						System.out.println("订单换货发送消息失败!");
-					}
-					
-//System.out.println("===========pay 132 修改订单状态==============");
+					}*/
+
+					/*计算使用优惠券优惠的金额*/
+					Integer couponAmount = 0;
+
 					//修改优惠券状态
 					order=cartService.selectOrderInfoById(order);
-					
-//System.out.println("===========pay 136 修改订单状态=============="+order.getSalesOrderid());
 					String couponId=order.getCouponId();
-					
 					if(couponId!=null && !couponId.equals("")){
 						CouponItem couponItem=new CouponItem();
 						couponItem.setCouponItemId(couponId);
 						couponItem.setCouponUseStatus(2);
 						couponItem.setCouponUseDate(new Date());
 						couponItemService.updateCouponItemById(couponItem);
+
+						CouponItemDto couponItemDto = couponItemService.getCouponItemById(couponId);
+						if(couponItemDto.getCouponType() == 1){  //按照金额
+							couponAmount = couponItemDto.getCouponReduce();
+						}else if(couponItemDto.getCouponType() == 2){  ////按照折扣
+							couponAmount = or.getSalesAmount() - or.getSalesAmount()/(couponItemDto.getCouponReduce()/100);
+						}
 					}
+
+					/*----------计算积分-----------
+					*  x * (n1*3 - n1) + y * (n2*3)  - coupon*3 + 400
+					*/
+					List<OrderItem> orderItemList = adminOrderService.getShopOrderItemByOrderId(orderIdMD5);
+					Integer allIntegral = 0;  //总积分
+					for(int i=0;i<orderItemList.size();i++){
+						OrderItem orderItem = orderItemList.get(i);
+						if(orderItem.getItemProductType()==100){//类型为电动牙刷
+							Integer integral = orderItem.getItemProductDiscount() * (orderItem.getItemNum()*3-orderItem.getItemNum());
+							allIntegral += integral;
+						}else{
+							Integer integral = orderItem.getItemProductDiscount() * (orderItem.getItemNum()*3);
+							allIntegral += integral;
+						}
+
+					}
+					if(couponAmount > 0){  //有优惠券减去优惠券的金额
+						allIntegral += -couponAmount*3;
+					}
+					//allIntegral
+					/*----------计算积分-----------*/
+
+
 					//更新账户余额
-					int balancePayAmount=order.getBalancePayAmount();
+					/*int balancePayAmount=order.getBalancePayAmount();
 					if(balancePayAmount>0){
 						Member member=new Member();
 						member.setUserOpenid(order.getSalesOpenid());
@@ -199,7 +239,7 @@ public class ResponseWechatPayHandler {
 						log.setCashLogsOrderid(order.getSalesOrderid());
 						log.setCashLogsCreateDate(nowDate);
 						count=cashLogService.addCashLog(log);
-					}
+					}*/
 					if (count < 1) {
 						resXml = "<xml><return_code><![CDATA[FAIL]]></return_code><return_msg><![CDATA[报文有误]]></return_msg></xml>";
 					}

+ 41 - 0
tooth-wechat-web/src/main/java/com/iamberry/wechat/handles/wx/QrCodeHandler.java

@@ -1,5 +1,14 @@
 package com.iamberry.wechat.handles.wx;
 
+import com.iamberry.wechat.core.entity.ResultMsg;
+import com.iamberry.wechat.core.entity.WechatUtils;
+import com.iamberry.wechat.core.entity.apparatus.Apparatus;
+import com.iamberry.wechat.core.entity.member.Member;
+import com.iamberry.wechat.face.apparatus.ApparatusService;
+import com.iamberry.wechat.face.member.MemberService;
+import com.iamberry.wechat.tools.ResultInfo;
+import com.iamberry.wechat.tools.payUtil.StringUtil;
+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;
@@ -10,6 +19,7 @@ import javax.servlet.ServletException;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
+import java.util.Map;
 
 /**
  * Created by Administrator on 2017/12/29.
@@ -17,9 +27,40 @@ import java.io.IOException;
 @Controller("scannQr")
 @RequestMapping("/wechat")
 public class QrCodeHandler {
+    @Autowired
+    ApparatusService apparatusService;
+    @Autowired
+    MemberService memberService;
 
     @RequestMapping("/qr/{qrCode}")
     public void getQrCode(@PathVariable("qrCode") String qrCode, HttpServletRequest req, HttpServletResponse res)throws ServletException, IOException {
         res.sendRedirect("http://w.iamberry.com/tooth/view/default.html?qrCode="+qrCode);
     }
+
+    @RequestMapping("/getMember/{qrCode}")
+    public ResultMsg getMember(@PathVariable("qrCode") String qrCode, HttpServletRequest req, HttpServletResponse res)throws ServletException, IOException {
+        ResultMsg msg = new ResultMsg();
+        if (!StringUtil.isNotEmpty(qrCode)) {
+            msg.setResultCode(ResultInfo.ERRORCODE);
+            msg.setStatus(false);
+            msg.setMessage("未扫描到二维码,请重新扫描!");
+            return msg;
+        }
+        boolean isActivation = false;//是否激活
+        Member memberInfo = WechatUtils.getUserBySession(req);
+        Apparatus apparatus = new Apparatus();
+        apparatus.setApparatusBarcode(qrCode);
+        apparatus.setUserOpenid(memberInfo.getUserOpenid());
+        apparatus =  apparatusService.getApparatus(apparatus);
+        if(apparatus != null){//不为空表示已激活
+            isActivation = true;
+        }
+        //查询用户信息
+        memberInfo = memberService.getMemberByUserOpenId(memberInfo.getUserOpenid());
+        Map<String,Object> map = null;
+        map.put("memberInfo",memberInfo);
+        map.put("isActivation",isActivation);
+        msg.setData(map);
+        return msg;
+    }
 }