Browse Source

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

# Conflicts:
#	tooth-common-core/src/main/java/com/iamberry/wechat/core/entity/coupon/CouponItemDto.java
#	tooth-wechat-service/src/main/java/com/iamberry/wechat/service/mapper/couponItemMapper.xml
wangxiaoming 7 years ago
parent
commit
a460fc1c45
66 changed files with 1420 additions and 377 deletions
  1. 16 6
      tooth-common-core/src/main/java/com/iamberry/wechat/core/entity/OrderUtil.java
  2. 5 5
      tooth-common-core/src/main/java/com/iamberry/wechat/core/entity/apparatus/Apparatus.java
  3. 1 1
      tooth-common-core/src/main/java/com/iamberry/wechat/core/entity/coupon/CouponItemDto.java
  4. 9 0
      tooth-common-core/src/main/java/com/iamberry/wechat/core/entity/integral/MemberIntegral.java
  5. 12 0
      tooth-common-core/src/main/java/com/iamberry/wechat/core/entity/integral/RankRule.java
  6. 94 0
      tooth-common-core/src/main/java/com/iamberry/wechat/core/entity/integral/StayIntegral.java
  7. 42 47
      tooth-common-core/src/main/java/com/iamberry/wechat/core/entity/integral/UseIntegral.java
  8. 18 0
      tooth-common-core/src/main/java/com/iamberry/wechat/core/entity/member/Member.java
  9. 18 0
      tooth-common-core/src/main/java/com/iamberry/wechat/core/entity/order/Order.java
  10. 11 0
      tooth-common-core/src/main/java/com/iamberry/wechat/core/entity/order/OrderActionDto.java
  11. 1 0
      tooth-common-core/src/main/java/com/iamberry/wechat/core/entity/product/Product.java
  12. 40 3
      tooth-common-core/src/main/java/com/iamberry/wechat/core/entity/product/ProductColor.java
  13. 44 2
      tooth-common-tool/src/main/java/com/iamberry/wechat/tools/ResultInfo.java
  14. 5 1
      tooth-common-tool/src/main/java/com/iamberry/wechat/tools/loadResultUtil.java
  15. 19 0
      tooth-wechat-interface/src/main/java/com/iamberry/wechat/face/apparatus/ApparatusService.java
  16. 16 0
      tooth-wechat-interface/src/main/java/com/iamberry/wechat/face/cart/ProductInfoService.java
  17. 0 6
      tooth-wechat-interface/src/main/java/com/iamberry/wechat/face/coupon/CouponItemService.java
  18. 14 0
      tooth-wechat-interface/src/main/java/com/iamberry/wechat/face/integral/UseIntegralService.java
  19. 8 0
      tooth-wechat-interface/src/main/java/com/iamberry/wechat/face/member/MemberService.java
  20. 6 0
      tooth-wechat-interface/src/main/java/com/iamberry/wechat/face/order/AdminOrderService.java
  21. 2 0
      tooth-wechat-interface/src/main/java/com/iamberry/wechat/face/porduct/ProductService.java
  22. 1 5
      tooth-wechat-interface/src/main/java/com/iamberry/wechat/face/porduct/ProductTypeService.java
  23. 125 41
      tooth-wechat-service/src/main/java/com/iamberry/wechat/service/apparatus/ApparatusServiceImpl.java
  24. 15 0
      tooth-wechat-service/src/main/java/com/iamberry/wechat/service/cart/ProductInfoServiceImpl.java
  25. 15 0
      tooth-wechat-service/src/main/java/com/iamberry/wechat/service/cart/dao/ProductInfoDao.java
  26. 19 0
      tooth-wechat-service/src/main/java/com/iamberry/wechat/service/cart/dao/impl/ProductInfoDaoImpl.java
  27. 1 9
      tooth-wechat-service/src/main/java/com/iamberry/wechat/service/coupon/CouponItemServiceImpl.java
  28. 20 0
      tooth-wechat-service/src/main/java/com/iamberry/wechat/service/integral/UseIntegralServiceImpl.java
  29. 7 0
      tooth-wechat-service/src/main/java/com/iamberry/wechat/service/mapper/AdminOrderMapper.java
  30. 10 0
      tooth-wechat-service/src/main/java/com/iamberry/wechat/service/mapper/ApparatusMapper.java
  31. 0 13
      tooth-wechat-service/src/main/java/com/iamberry/wechat/service/mapper/CouponItemMapper.java
  32. 16 0
      tooth-wechat-service/src/main/java/com/iamberry/wechat/service/mapper/MemberMapper.java
  33. 14 0
      tooth-wechat-service/src/main/java/com/iamberry/wechat/service/mapper/ProductInfoMapper.java
  34. 0 5
      tooth-wechat-service/src/main/java/com/iamberry/wechat/service/mapper/ProductMapper.java
  35. 13 0
      tooth-wechat-service/src/main/java/com/iamberry/wechat/service/mapper/UseIntegralMapper.java
  36. 23 6
      tooth-wechat-service/src/main/java/com/iamberry/wechat/service/mapper/adminOrderMapper.xml
  37. 12 4
      tooth-wechat-service/src/main/java/com/iamberry/wechat/service/mapper/apparatusMapper.xml
  38. 35 9
      tooth-wechat-service/src/main/java/com/iamberry/wechat/service/mapper/memberMapper.xml
  39. 44 1
      tooth-wechat-service/src/main/java/com/iamberry/wechat/service/mapper/productInfoMapper.xml
  40. 6 8
      tooth-wechat-service/src/main/java/com/iamberry/wechat/service/mapper/productMapper.xml
  41. 28 22
      tooth-wechat-service/src/main/java/com/iamberry/wechat/service/mapper/useIntegralMapper.xml
  42. 5 2
      tooth-wechat-service/src/main/java/com/iamberry/wechat/service/member/MemberServiceImpl.java
  43. 8 0
      tooth-wechat-service/src/main/java/com/iamberry/wechat/service/member/dao/MemberDao.java
  44. 5 2
      tooth-wechat-service/src/main/java/com/iamberry/wechat/service/member/dao/imp/MemberDaoImpl.java
  45. 5 0
      tooth-wechat-service/src/main/java/com/iamberry/wechat/service/order/AdminOrderServiceImpl.java
  46. 7 0
      tooth-wechat-service/src/main/java/com/iamberry/wechat/service/order/dao/AdminOrderDao.java
  47. 5 0
      tooth-wechat-service/src/main/java/com/iamberry/wechat/service/order/dao/impl/AdminOrderDaoImpl.java
  48. 0 7
      tooth-wechat-service/src/main/java/com/iamberry/wechat/service/product/ProductTypeServiceImpl.java
  49. 2 0
      tooth-wechat-service/src/main/java/com/iamberry/wechat/service/product/dao/ProductDao.java
  50. 0 1
      tooth-wechat-service/src/main/java/com/iamberry/wechat/service/product/dao/impl/ProductDAOImpl.java
  51. 28 26
      tooth-wechat-service/src/main/java/com/iamberry/wechat/service/wechat/WeChatServiceImpl.java
  52. 136 18
      tooth-wechat-web/src/main/java/com/iamberry/wechat/handles/admin/AdminOrderHandlers.java
  53. 32 6
      tooth-wechat-web/src/main/java/com/iamberry/wechat/handles/apparatus/ApparatusHandler.java
  54. 63 0
      tooth-wechat-web/src/main/java/com/iamberry/wechat/handles/cart/ProductInfoHandler.java
  55. 0 16
      tooth-wechat-web/src/main/java/com/iamberry/wechat/handles/coupon/AdminCouponTypeHandler.java
  56. 113 17
      tooth-wechat-web/src/main/java/com/iamberry/wechat/handles/integral/UseIntegralHandler.java
  57. 2 1
      tooth-wechat-web/src/main/java/com/iamberry/wechat/handles/kuaidi/LogisticsHandler.java
  58. 0 49
      tooth-wechat-web/src/main/java/com/iamberry/wechat/handles/member/MemberHandler.java
  59. 1 0
      tooth-wechat-web/src/main/java/com/iamberry/wechat/handles/porduct/ProductHandler.java
  60. 2 21
      tooth-wechat-web/src/main/java/com/iamberry/wechat/handles/porduct/ProductTypeHandler.java
  61. 41 0
      tooth-wechat-web/src/main/java/com/iamberry/wechat/handles/wx/QrCodeHandler.java
  62. 95 1
      tooth-wechat-web/src/main/java/com/iamberry/wechat/utils/SendMessageUtil.java
  63. 4 0
      tooth-wechat-web/src/main/resources/ResultInfo.properties
  64. 1 0
      tooth-wechat-web/src/main/resources/iamberry-wechat-service-mybatis.xml
  65. 2 0
      tooth-wechat-web/src/main/resources/platform.properties
  66. 78 16
      tooth-wechat-web/src/main/webapp/WEB-INF/views/admin/order/orderList.jsp

+ 16 - 6
tooth-common-core/src/main/java/com/iamberry/wechat/core/entity/OrderUtil.java

@@ -86,7 +86,8 @@ public class OrderUtil {
                     "insertPostInfoAndSend",    // 录入物流信息并发货
                     "rejectedReturn",            //拒绝退货
                     "rejectedInOrder",            //拒绝换货
-                    "select_efast_order"        //同步订单状态
+                    "select_efast_order",        //同步订单状态
+                    "markRefund"                 //财务已退款
             };
 
     public String[] getOrderActin() {
@@ -160,7 +161,7 @@ public class OrderUtil {
      * @return
      * @throws Exception
      */
-    public List<OrderOperation> orderStatusToOperation(Integer status, String orderId) throws Exception {
+    public List<OrderOperation> orderStatusToOperation(Integer status, String orderId, Integer rfund) throws Exception {
         if (status == null) {
             return null;
         }
@@ -215,8 +216,13 @@ public class OrderUtil {
                                 + adminUtils.byte2hex(adminUtils.createRandomByte())));
                 operations.add(agreedRefund);
                 return operations;
-            case 4: // 无操作权限
-
+            case 4: // 已退款
+                //财务没有退款时才有此功能
+                if (rfund == null || (rfund != null && rfund != 2)) {
+                    OrderOperation markRefund = new OrderOperation("&#xe60c;", "标记财务已退款",
+                            "/admin/order/" + orderActin[13] + "/" + orderId);
+                    operations.add(markRefund);
+                }
                 return operations;
             case 5: // 无操作权限
 
@@ -245,8 +251,12 @@ public class OrderUtil {
                                 + adminUtils.byte2hex(adminUtils.createRandomByte())));
                 operations.add(quitOrderSuccess);
                 return operations;
-            case 8: // 无操作权限
-
+            case 8: // 订单退货,订单关闭
+                if (rfund == null || (rfund != null && rfund != 2)) {
+                    OrderOperation markoperation = new OrderOperation("&#xe60c;", "标记财务已退款",
+                            "/admin/order/" + orderActin[13] + "/" + orderId);
+                    operations.add(markoperation);
+                }
                 return operations;
             case 9: // 换货中
 

+ 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() {

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

@@ -16,7 +16,7 @@ public class CouponItemDto implements java.io.Serializable{
 	private Integer couponId; 					//优惠券类型id
 	private String couponName;					//优惠券类型名称
 	private String useropenid;					//领取券的openid
-	private Integer couponUseStatus;			//使用状态 1:未使用; 2:已使用; 3:停用; 7:正在使用中
+	private Integer couponUseStatus;			//使用状态
 	private Integer couponType;                 //优惠券类型
 	
 	private Integer couponReduce;				//减免额/减免率

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

@@ -22,6 +22,15 @@ public class MemberIntegral implements Serializable {
     private Date memberUpdateTime;          //更新时间
 
     private String rankRuleName;            //会员等级名称
+    private String rankIco;                 //图标
+
+    public String getRankIco() {
+        return rankIco;
+    }
+
+    public void setRankIco(String rankIco) {
+        this.rankIco = rankIco;
+    }
 
     public String getRankRuleName() {
         return rankRuleName;

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

@@ -65,4 +65,16 @@ public class RankRule implements Serializable{
     public void setRankRuleUpdateTime(Date rankRuleUpdateTime) {
         this.rankRuleUpdateTime = rankRuleUpdateTime;
     }
+
+    @Override
+    public String toString() {
+        return "RankRule{" +
+                "rankRuleId=" + rankRuleId +
+                ", rankRuleName='" + rankRuleName + '\'' +
+                ", rankRuleIntegral=" + rankRuleIntegral +
+                ", rankRuleStatus=" + rankRuleStatus +
+                ", rankRuleCreateTime=" + rankRuleCreateTime +
+                ", rankRuleUpdateTime=" + rankRuleUpdateTime +
+                '}';
+    }
 }

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

@@ -0,0 +1,94 @@
+package com.iamberry.wechat.core.entity.integral;
+
+import javax.swing.*;
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * Created by Administrator on 2018/1/10.
+ */
+public class StayIntegral implements Serializable {
+
+    private static final long serialVersionUID = -6098568204626940754L;
+    private Integer stayId;
+    private String userOpenid;
+    private Integer configId;//来源
+    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 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;
+    }
+}

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

@@ -13,16 +13,17 @@ 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 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 Data integralCreateTime;     //创建时间
 
     private String integralConfigName;      //来源名称
     private PageBean page;                  //分页
@@ -43,12 +44,12 @@ public class UseIntegral implements Serializable {
         this.integralConfigName = integralConfigName;
     }
 
-    public Integer getUseIntegralId() {
-        return useIntegralId;
+    public Integer getIntegralId() {
+        return integralId;
     }
 
-    public void setUseIntegralId(Integer useIntegralId) {
-        this.useIntegralId = useIntegralId;
+    public void setIntegralId(Integer integralId) {
+        this.integralId = integralId;
     }
 
     public String getUserOpenId() {
@@ -59,65 +60,59 @@ public class UseIntegral implements Serializable {
         this.userOpenId = userOpenId;
     }
 
-    public Integer getUseType() {
-        return useType;
+    public Integer getIntegralType() {
+        return integralType;
     }
 
-    public void setUseType(Integer useType) {
-        this.useType = useType;
+    public void setIntegralType(Integer integralType) {
+        this.integralType = integralType;
     }
 
-    public Integer getUseIntegralType() {
-        return useIntegralType;
+    public Integer getIntegralNumber() {
+        return integralNumber;
     }
 
-    public void setUseIntegralType(Integer useIntegralType) {
-        this.useIntegralType = useIntegralType;
+    public void setIntegralNumber(Integer integralNumber) {
+        this.integralNumber = integralNumber;
     }
 
-    public Integer getUseIntegralNumber() {
-        return useIntegralNumber;
+    public Integer getConfigId() {
+        return configId;
     }
 
-    public void setUseIntegralNumber(Integer useIntegralNumber) {
-        this.useIntegralNumber = useIntegralNumber;
+    public void setConfigId(Integer configId) {
+        this.configId = configId;
     }
 
-    public Integer getUseConfigId() {
-        return useConfigId;
+    public Integer getIntegralBeforeNumber() {
+        return integralBeforeNumber;
     }
 
-    public void setUseConfigId(Integer useConfigId) {
-        this.useConfigId = useConfigId;
+    public void setIntegralBeforeNumber(Integer integralBeforeNumber) {
+        this.integralBeforeNumber = integralBeforeNumber;
     }
 
-    public String getUseIntegralRemarks() {
-        return useIntegralRemarks;
+    public Integer getIntegralEndNumber() {
+        return integralEndNumber;
     }
 
-    public void setUseIntegralRemarks(String useIntegralRemarks) {
-        this.useIntegralRemarks = useIntegralRemarks;
+    public void setIntegralEndNumber(Integer integralEndNumber) {
+        this.integralEndNumber = integralEndNumber;
     }
 
-    public Data getUseIntegralCreateTime() {
-        return useIntegralCreateTime;
+    public String getIntegralRemark() {
+        return integralRemark;
     }
 
-    public void setUseIntegralCreateTime(Data useIntegralCreateTime) {
-        this.useIntegralCreateTime = useIntegralCreateTime;
+    public void setIntegralRemark(String integralRemark) {
+        this.integralRemark = integralRemark;
     }
 
-    @Override
-    public String toString() {
-        return "UseIntegral{" +
-                "useIntegralId=" + useIntegralId +
-                ", userOpenId='" + userOpenId + '\'' +
-                ", useType=" + useType +
-                ", useIntegralType=" + useIntegralType +
-                ", useIntegralNumber=" + useIntegralNumber +
-                ", useConfigid=" + useConfigId +
-                ", useIntegralRemarks='" + useIntegralRemarks + '\'' +
-                ", useIntegralCreateTime=" + useIntegralCreateTime +
-                '}';
+    public Data getIntegralCreateTime() {
+        return integralCreateTime;
+    }
+
+    public void setIntegralCreateTime(Data integralCreateTime) {
+        this.integralCreateTime = integralCreateTime;
     }
 }

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

@@ -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

+ 18 - 0
tooth-common-core/src/main/java/com/iamberry/wechat/core/entity/order/Order.java

@@ -70,6 +70,8 @@ public class Order implements java.io.Serializable{
 	
 	private String salesPorderid;		//试用订单id
 	private Integer salesOrderType;		//订单类型		1:正常订单(默认)	2:试用订单
+	private String salesAuditRemark;	//审批备注
+	private Integer salesIsRfund;	//是否已退款
 	
 	// -------------------------------------------- 新增
 	private String storesName;			// 用户第二级上线
@@ -82,6 +84,22 @@ public class Order implements java.io.Serializable{
 	
 	private String userResource;		// 用户来源
 
+	public String getSalesAuditRemark() {
+		return salesAuditRemark;
+	}
+
+	public void setSalesAuditRemark(String salesAuditRemark) {
+		this.salesAuditRemark = salesAuditRemark;
+	}
+
+	public Integer getSalesIsRfund() {
+		return salesIsRfund;
+	}
+
+	public void setSalesIsRfund(Integer salesIsRfund) {
+		this.salesIsRfund = salesIsRfund;
+	}
+
 	public Integer getOldStatus() {
 		return oldStatus;
 	}

+ 11 - 0
tooth-common-core/src/main/java/com/iamberry/wechat/core/entity/order/OrderActionDto.java

@@ -36,6 +36,17 @@ public class OrderActionDto implements java.io.Serializable{
 	private Date probationEndTime;			//试用订单结束时间
 	private String probationUserRemark;	//试用订单备注,存放礼品信息
 
+	//-------------------审批备注
+	private String salesAuditRemark;	//审批备注
+
+	public String getSalesAuditRemark() {
+		return salesAuditRemark;
+	}
+
+	public void setSalesAuditRemark(String salesAuditRemark) {
+		this.salesAuditRemark = salesAuditRemark;
+	}
+
 	public Date getProbationEndTime() {
 		return probationEndTime;
 	}

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

@@ -51,6 +51,7 @@ public class Product implements java.io.Serializable{
 
 	private Integer configAmount;  //代理商的采购价
 
+
 	public Integer getColorId() {
 		return colorId;
 	}

+ 40 - 3
tooth-common-core/src/main/java/com/iamberry/wechat/core/entity/product/ProductColor.java

@@ -27,10 +27,31 @@ public class ProductColor implements java.io.Serializable{
 	private Integer colorPrice;			//产品市场价
 	private String color69Code;			//产品69码
 	private Date colorCretaeTime;		//创建时间
-	private Date colorUpdateTime;	//修改时间
-	
+	private Date colorUpdateTime;		//修改时间
+
+	private String colorImg;			//封面图
+	private Integer colorStatus;		//状态
 	private PageBean page = new PageBean();		//分页
-	
+	private String productName;			//商品名称
+
+	private Integer productType;		//产品类型
+
+	public Integer getProductType() {
+		return productType;
+	}
+
+	public void setProductType(Integer productType) {
+		this.productType = productType;
+	}
+
+	public String getProductName() {
+		return productName;
+	}
+
+	public void setProductName(String productName) {
+		this.productName = productName;
+	}
+
 	public Integer getColorProductType() {
 		return colorProductType;
 	}
@@ -127,6 +148,22 @@ public class ProductColor implements java.io.Serializable{
 		this.page = page;
 	}
 
+	public String getColorImg() {
+		return colorImg;
+	}
+
+	public void setColorImg(String colorImg) {
+		this.colorImg = colorImg;
+	}
+
+	public Integer getColorStatus() {
+		return colorStatus;
+	}
+
+	public void setColorStatus(Integer colorStatus) {
+		this.colorStatus = colorStatus;
+	}
+
 	@Override
 	public String toString() {
 		return "ProductColor [colorId=" + colorId + ", colorProductId="

+ 44 - 2
tooth-common-tool/src/main/java/com/iamberry/wechat/tools/ResultInfo.java

@@ -29,7 +29,7 @@ public class ResultInfo {
 	public  static String repeatNameError="";
 	public  static String lostMemberInfo="";
 
-	public  static String barCodePrefix="QR_CODE";
+	public  static String barCodePrefix="MACHINE_QR_CODE";
 	/**
 	 * 初始化代理商信息openid成功前缀
 	 */
@@ -150,6 +150,27 @@ public class ResultInfo {
 	 * 更换刷头提示信息 模板id
 	 */
 	public static String update_tooth_hint="";
+
+	/**
+	 * 用户申请退款提醒
+	 */
+	public static String order_apply_refund="";
+
+	/**
+	 * 用户 申请退货 提醒
+	 */
+	public static String order_apply_return="";
+
+	/**
+	 * 用户 申请换货 提醒
+	 */
+	public static String order_apply_barter="";
+
+	/**
+	 * 发货后 提醒
+	 */
+	public static String order_send_success="";
+
 	/**
 	 * 返现到账通知消息模版
 	 */
@@ -173,7 +194,7 @@ public class ResultInfo {
 	/** 	试用申请成功通知 	 */
 	public static String PROBATIONAPPLYSUCCESS = "{'first':{'color':'#173177','value':'firstValueIamberry'}, 'keyword1':{'color':'#173177','value':'keyword1Value'}, 'keyword2':{'color':'#173177', 'value':'keyword2Value'},'keyword3':{'color':'#173177','value':'keyword3Value'},'keyword4':{'color':'#173177','value':'keyword4Value'},'keyword5':{'color':'#173177','value':'keyword5Value'},'remark':{'color':'#173177','value':'remarkValue'}}";
 
-	/**		 试用订单支付成功	 */
+	/**		 试用订单支付成功   订单支付成功	 */
 	public static String PROBATIONPAYSUCCESS = "{'first':{'color':'#173177','value':'firstValueIamberry'}, 'orderMoneySum':{'color':'#173177','value':'orderMoneySumValue'}, 'orderProductName':{'color':'#173177', 'value':'orderProductNameValue'},'Remark':{'color':'#173177','value':'remarkValue'}}";
 
 	/** 	试用订单关闭通知		*/
@@ -184,6 +205,22 @@ public class ResultInfo {
 
 	/**  更换刷头提示信息  */
 	public static String UPDATETOOTHHINT= "{'first':{'color':'#173177','value':'firstValueIamberry'}, 'keyword1':{'color':'#173177','value':'keyword1Value'}, 'keyword2':{'color':'#173177', 'value':'keyword2Value'},'remark':{'color':'#173177','value':'remarkValue'}}";
+
+	/**  用户申请退款提醒 */
+	public static String APPLYREFUND= "{'first':{'color':'#173177','value':'firstValueIamberry'}, 'keyword1':{'color':'#173177','value':'keyword1Value'}, 'keyword2':{'color':'#173177', 'value':'keyword2Value'}, 'keyword3':{'color':'#173177', 'value':'keyword3Value'},'remark':{'color':'colorValue','value':'remarkValue'}}";
+
+	/**  用户 申请退货 提醒 */
+	public static String APPLYRETURN= "{'first':{'color':'#173177','value':'firstValueIamberry'}, 'keyword1':{'color':'#173177','value':'keyword1Value'}, 'keyword2':{'color':'#173177', 'value':'keyword2Value'}, 'keyword3':{'color':'#173177', 'value':'keyword3Value'}, 'keyword4':{'color':'#173177', 'value':'keyword4Value'},'remark':{'color':'colorValue','value':'remarkValue'}}";
+
+	/**  用户 申请换货 提醒 */
+	public static String APPLYBARTER= "{'first':{'color':'#173177','value':'firstValueIamberry'}, 'keyword1':{'color':'#173177','value':'keyword1Value'}, 'keyword2':{'color':'#173177', 'value':'keyword2Value'},'remark':{'color':'colorValue','value':'remarkValue'}}";
+
+	/**  发货后 提醒 */
+	public static String SENDSUCCESS= "{'first':{'color':'#173177','value':'firstValueIamberry'}, 'keyword1':{'color':'#173177','value':'keyword1Value'}, 'keyword2':{'color':'#173177', 'value':'keyword2Value'}, 'keyword3':{'color':'#173177', 'value':'keyword3Value'}, 'keyword4':{'color':'#173177', 'value':'keyword4Value'},'remark':{'color':'colorValue','value':'remarkValue'}}";
+
+
+
+
 	/**
 	 * 微信模板消息提示语
 	 */
@@ -231,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=";
+
 }

+ 5 - 1
tooth-common-tool/src/main/java/com/iamberry/wechat/tools/loadResultUtil.java

@@ -72,7 +72,11 @@ public class loadResultUtil {
 			ResultInfo.probation_pay_success = prop.getProperty("probation_pay_success");	//订单支付成功
 			ResultInfo.probation_shut_down = prop.getProperty("probation_shut_down");		//订单关闭通知	 	模版id	TM00984
 			ResultInfo.prize_receive_push = prop.getProperty("prize_receive_push");			//付费代理商支付后推送推荐人通知  	模版id
-			ResultInfo.update_tooth_hint = prop.getProperty("update_tooth_hint");	//订单支付成功
+			ResultInfo.update_tooth_hint = prop.getProperty("update_tooth_hint");			//订单支付成功
+			ResultInfo.order_apply_refund = prop.getProperty("order_apply_refund");			//用户申请退款提醒
+			ResultInfo.order_apply_return = prop.getProperty("order_apply_return");			//用户 申请退货 提醒
+			ResultInfo.order_apply_barter = prop.getProperty("order_apply_barter");			//用户 申请换货 提醒
+			ResultInfo.order_send_success = prop.getProperty("order_send_success");			//发货后 提醒
 			
 		} catch (IOException e) {
 			new RuntimeException(e.getMessage());

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

@@ -30,4 +30,23 @@ 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时有值
+     * @return
+     */
+    boolean addStayIntegral(String openId,Integer IntegralType,Double orderAmount);
 }

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

@@ -5,6 +5,7 @@ import java.util.List;
 import com.iamberry.wechat.core.entity.cart.UserGiftDto;
 import com.iamberry.wechat.core.entity.product.Product;
 import com.iamberry.wechat.core.entity.product.ProductColor;
+import com.iamberry.wechat.core.entity.product.ProductType;
 import com.iamberry.wechat.core.entity.product.QrcodeGift;
 
 public interface ProductInfoService {
@@ -109,4 +110,19 @@ public interface ProductInfoService {
 	 * @return
 	 */
 	List<ProductColor> selectColorList(Integer colorProductId);
+
+
+	/**
+	 * 根据产品类型id查询产品颜色信息
+	 * @param productColor
+	 * @return
+	 */
+
+	List<ProductColor> listProductColorByTypeId(ProductColor productColor);
+
+	/**
+	 * 查询正在使用的产品类型
+	 * @return
+	 */
+	List<ProductType> listProductType();
 }

+ 0 - 6
tooth-wechat-interface/src/main/java/com/iamberry/wechat/face/coupon/CouponItemService.java

@@ -61,10 +61,4 @@ public interface CouponItemService {
 	 */
 	public Integer updateCouponItemList(List<CouponItem> couponItemList);
 
-	/**
-	 * 查询待用的优惠卷
-	 * @param openid
-	 * @return
-	 */
-	List<CouponItem> getStandByCoupon(String openid );
 }

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

@@ -4,6 +4,7 @@ import com.iamberry.wechat.core.entity.PageBean;
 import com.iamberry.wechat.core.entity.ResultMsg;
 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 java.util.List;
@@ -31,6 +32,13 @@ public interface UseIntegralService {
     int getUseIntegralCount(String openid);
 
     /**
+     * 待入账的总积分数
+     * @param userOpenId
+     * @return
+     */
+    int getStayIntegralCount(String userOpenId);
+
+    /**
      * 查询积分来源信息
      * @param integralConfig
      * @return
@@ -43,4 +51,10 @@ public interface UseIntegralService {
      * @return
      */
     MemberIntegral getMemberInfoAndRankName(String openId);
+
+    /**
+     * 查询会员等级信息
+     * @return
+     */
+    List<RankRule> getRankRule();
 }

+ 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 修改用户待入账积分
+	 * 201811017:18:39
+	 * @param member
+	 * @return
+	 */
+	public Integer updateUserStayIntegralByOpenId(Member member);
 }

+ 6 - 0
tooth-wechat-interface/src/main/java/com/iamberry/wechat/face/order/AdminOrderService.java

@@ -196,5 +196,11 @@ public interface AdminOrderService {
 	 */
 	List<StatisticsSalesOrder> listYearNum(StatisticsSalesOrder salesOrder);
 
+	/**
+	 * 修改订单退款状态
+	 * @param order
+	 * @return
+	 */
+	Integer updateOrderRfund(Order order);
 
 }

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

@@ -74,4 +74,6 @@ public interface ProductService {
 	 * @return
 	 */
 	public Integer updateProductStatusByProductId(Product product);
+
+
 }

+ 1 - 5
tooth-wechat-interface/src/main/java/com/iamberry/wechat/face/porduct/ProductTypeService.java

@@ -46,9 +46,5 @@ public interface ProductTypeService {
 	 */
 	public Integer updateProductTypeStatusById(ProductType productType);
 
-	/**
-	 * 查询正在使用的产品类型
-	 * @return
-	 */
-	List<ProductType> listProductType();
+
 }

+ 125 - 41
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,138 @@ 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);
+
+            }
+            //赠送400新增牙刷积分
+            addStayIntegral(member.getUserOpenid(),2,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时有值
+     * @return
+     */
+    @Override
+    @Transactional
+    public boolean addStayIntegral(String openId,Integer IntegralType,Double orderAmount){
+        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;
+        StayIntegral stayIntegral = new StayIntegral();
+        Integer stayNumber = 0;
+        switch (IntegralType){
+            case 1:
+                //新注册会员积分数量
+                integralConfig = getIntegralId(247);
+                stayNumber = integralConfig.getIntegralConfigNumber();
+
                 break;
-            }
+            case 2:
+                //新增加牙刷赠送积分数量
+                integralConfig = getIntegralId(248);
+                stayNumber = integralConfig.getIntegralConfigNumber();
+                break;
+            case 3:
+                if(orderAmount == 0){
+                    break;
+                }
+                integralConfig = getIntegralId(250);
+                stayNumber = (int)(orderAmount * 2);
+                break;
+            default:
+                 break;
         }
-
-        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);
-
-        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 {
+        if(integralConfig == null){
             return false;
         }
+        //规则表查询积分到账时间(多少天到账)
+        integralConfig = getIntegralId(251);
+        stayIntegral.setUserOpenid(openId);
+        stayIntegral.setConfigId(integralConfig.getIntegralConfigId());
+        stayIntegral.setStayNumber(stayNumber);
+        Calendar calendar = Calendar.getInstance();
+        calendar.set(Calendar.DAY_OF_MONTH,calendar.get(Calendar.DAY_OF_MONTH)+integralConfig.getIntegralConfigNumber());
+        stayIntegral.setStayRecordedTime(calendar.getTime());
+        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;
     }
 }

+ 15 - 0
tooth-wechat-service/src/main/java/com/iamberry/wechat/service/cart/ProductInfoServiceImpl.java

@@ -4,6 +4,7 @@ import java.util.List;
 
 import com.iamberry.wechat.core.entity.PageBean;
 import com.iamberry.wechat.core.entity.product.ProductColor;
+import com.iamberry.wechat.core.entity.product.ProductType;
 import com.iamberry.wechat.core.entity.product.QrcodeGift;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -131,4 +132,18 @@ public class ProductInfoServiceImpl implements ProductInfoService {
 	public List<ProductColor> selectColorList(Integer colorProductId) {
 		return productInfoDao.selectColorList(colorProductId);
 	}
+	/**
+	 * 查询正在使用的产品类型
+	 * @return
+	 */
+
+	public List<ProductType> listProductType() {
+		return productInfoDao.listProductType();
+	}
+
+	@Override
+	public List<ProductColor> listProductColorByTypeId(ProductColor productColor) {
+		return productInfoDao.listProductColorByTypeId(productColor);
+	}
+
 }

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

@@ -6,6 +6,7 @@ import com.iamberry.wechat.core.entity.cart.ShopOrderItemDto;
 import com.iamberry.wechat.core.entity.cart.UserGiftDto;
 import com.iamberry.wechat.core.entity.product.Product;
 import com.iamberry.wechat.core.entity.product.ProductColor;
+import com.iamberry.wechat.core.entity.product.ProductType;
 import com.iamberry.wechat.core.entity.product.QrcodeGift;
 
 public interface ProductInfoDao {
@@ -105,4 +106,18 @@ public interface ProductInfoDao {
 	 * @return
 	 */
 	List<ProductColor> selectColorList(Integer colorProductId);
+
+	/**
+	 * 查询正在使用的产品类型
+	 * @return
+	 */
+	List<ProductType> listProductType();
+
+
+	/**
+	 * 根据产品类型id查询产品颜色信息
+	 * @param productColor
+	 * @return
+	 */
+	List<ProductColor> listProductColorByTypeId(ProductColor productColor);
 }

+ 19 - 0
tooth-wechat-service/src/main/java/com/iamberry/wechat/service/cart/dao/impl/ProductInfoDaoImpl.java

@@ -3,6 +3,7 @@ package com.iamberry.wechat.service.cart.dao.impl;
 import java.util.List;
 
 import com.iamberry.wechat.core.entity.product.ProductColor;
+import com.iamberry.wechat.core.entity.product.ProductType;
 import com.iamberry.wechat.core.entity.product.QrcodeGift;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Repository;
@@ -112,4 +113,22 @@ public class ProductInfoDaoImpl implements ProductInfoDao {
 	public List<ProductColor> selectColorList(Integer colorProductId) {
 		return productInfoMapper.selectColorList(colorProductId);
 	}
+	/**
+	 * 根据产品类型id查询产品颜色信息
+	 * @param productColor
+	 * @return
+	 */
+	@Override
+	public List<ProductColor> listProductColorByTypeId(ProductColor productColor) {
+		return productInfoMapper.listProductColorByTypeId(productColor);
+	}
+
+
+
+
+	@Override
+	public List<ProductType> listProductType() {
+		return productInfoMapper.listProductType();
+	}
+
 }

+ 1 - 9
tooth-wechat-service/src/main/java/com/iamberry/wechat/service/coupon/CouponItemServiceImpl.java

@@ -57,13 +57,5 @@ public class CouponItemServiceImpl implements CouponItemService {
 		// TODO Auto-generated method stub
 		return couponItemMapper.updateCouponItemList(couponItemList);
 	}
-	/**
-	 * 查询待用的优惠卷
-	 * @param openid
-	 * @return
-	 */
-	@Override
-	public List<CouponItem> getStandByCoupon(String openid) {
-		return couponItemMapper.getStandByCoupon(openid);
-	}
+
 }

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

@@ -4,6 +4,7 @@ import com.iamberry.wechat.core.entity.PageBean;
 import com.iamberry.wechat.core.entity.ResultMsg;
 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.face.integral.UseIntegralService;
 import com.iamberry.wechat.service.mapper.UseIntegralMapper;
@@ -49,6 +50,16 @@ public class UseIntegralServiceImpl implements UseIntegralService {
     }
 
     /**
+     * 待入账的总积分数
+     * @param userOpenId
+     * @return
+     */
+    @Override
+    public int getStayIntegralCount(String userOpenId) {
+        return useIntegralMapper.getStayIntegralCount(userOpenId);
+    }
+
+    /**
      * 全部积分记录
      * @param useIntegral
      * @return
@@ -62,4 +73,13 @@ public class UseIntegralServiceImpl implements UseIntegralService {
     public List<IntegralConfig> listIntegralConfig(IntegralConfig integralConfig) {
         return useIntegralMapper.listIntegralConfig(integralConfig);
     }
+
+    /**
+     * 查询会员等级信息
+     * @return
+     */
+    @Override
+    public List<RankRule> getRankRule() {
+        return useIntegralMapper.getRankRule();
+    }
 }

+ 7 - 0
tooth-wechat-service/src/main/java/com/iamberry/wechat/service/mapper/AdminOrderMapper.java

@@ -186,4 +186,11 @@ public interface AdminOrderMapper {
 	 */
 	List<StatisticsSalesOrder> listYearNum(StatisticsSalesOrder salesOrder);
 
+	/**
+	 * 修改订单退款状态
+	 * @param order
+	 * @return
+	 */
+	Integer updateOrderRfund(Order order);
+
 }

+ 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);
 }

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

@@ -62,17 +62,4 @@ public interface CouponItemMapper {
 	 */
 	public Integer updateCouponItemList(List<CouponItem> couponItemList);
 
-	/**
-	 * 查询待用的优惠卷
-	 * @param openid
-	 * @return
-	 */
-	List<CouponItem> getStandByCoupon(String openid );
-
-	/**
-	 * 查询已使用的优惠卷
-	 * @param openid
-	 * @return
-	 */
-	List<CouponItem> getUseCoupon(String openid);
 }

+ 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 修改用户待入账积分
+	 * 201811017:18:39
+	 * @param member
+	 * @return
+	 */
+	Integer updateUserStayIntegralByOpenId(Member member);
+
+	/**
+	 * 增加待入账积分记录
+	 * @param stayIntegral
+	 * @return
+	 */
+	Integer insertStayIntegral(StayIntegral stayIntegral);
 }

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

@@ -6,6 +6,7 @@ import com.iamberry.wechat.core.entity.cart.ShopOrderItemDto;
 import com.iamberry.wechat.core.entity.cart.UserGiftDto;
 import com.iamberry.wechat.core.entity.product.Product;
 import com.iamberry.wechat.core.entity.product.ProductColor;
+import com.iamberry.wechat.core.entity.product.ProductType;
 import com.iamberry.wechat.core.entity.product.QrcodeGift;
 
 public interface ProductInfoMapper {
@@ -107,4 +108,17 @@ public interface ProductInfoMapper {
 	 * @return
 	 */
 	List<ProductColor> selectColorList(Integer colorProductId);
+
+	/**
+	 * 查询正在使用的产品类型
+	 * @return
+	 */
+	List<ProductType> listProductType();
+
+	/**
+	 * 根据产品类型id查询产品颜色信息
+	 * @param productColor
+	 * @return
+	 */
+	List<ProductColor> listProductColorByTypeId(ProductColor productColor);
 }

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

@@ -104,9 +104,4 @@ public interface ProductMapper {
 	 */
 	public Integer updateProductTypeStatusById(ProductType productType);
 
-	/**
-	 * 查询正在使用的产品类型
-	 * @return
-	 */
-	List<ProductType> listProductType();
 }

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

@@ -32,6 +32,13 @@ public interface UseIntegralMapper {
     int getUseIntegralCount(String openid);
 
     /**
+     * 待入账的总积分数
+     * @param userOpenId
+     * @return
+     */
+    int getStayIntegralCount(String userOpenId);
+
+    /**
      * 查询积分来源信息
      * @param integralConfig
      * @return
@@ -66,4 +73,10 @@ public interface UseIntegralMapper {
      */
     MemberIntegral getMemberInfoAndRankName(String openId);
 
+    /**
+     * 查询会员等级信息
+     * @return
+     */
+    List<RankRule> getRankRule();
+
 }

+ 23 - 6
tooth-wechat-service/src/main/java/com/iamberry/wechat/service/mapper/adminOrderMapper.xml

@@ -42,7 +42,7 @@ PUBLIC
 			O.SALES_STATUS salesStatus, O.SALES_CREATE_DATE salesCreateDate, 
 			O.SALES_POST_NUM salesPostNum,O.SALES_POST_FIRM salesPostFirm,
 			O.SALES_ADMIN_REMARK salesAdminRemark, O.SALES_COLOR_TYPE salesColorType, 
-			O.SALES_USER_REMARK salesUserRemark,
+			O.SALES_USER_REMARK salesUserRemark,O.SALES_IS_RFUND salesIsRfund,
 			P.PLACE_NAME storesName, 
 			PP.PLACE_NAME vipName,
 			PP.PLACE_ROLE_ID vipRole,
@@ -102,7 +102,7 @@ PUBLIC
 			O.SALES_STATUS salesStatus, O.SALES_CREATE_DATE salesCreateDate, 
 			O.SALES_ADMIN_REMARK salesAdminRemark, O.SALES_COLOR_TYPE salesColorType,
 			o.sales_post_num salesPostNum,o.sales_post_firm salesPostFirm,
-			O.SALES_USER_REMARK salesUserRemark 
+			O.SALES_USER_REMARK salesUserRemark, O.SALES_IS_RFUND salesIsRfund
 		FROM 
 			TB_IAMBERRY_SHOP_SALES_ORDER O LEFT JOIN TB_IAMBERRY_USER_USERINFO U 
 		ON O.SALES_OPENID = U.USER_OPENID 
@@ -175,7 +175,7 @@ PUBLIC
 			O.SALES_USER_REMARK salesUserRemark, O.SALES_COLOR_TYPE salesColorType, O.SALES_ADMIN_REMARK salesAdminRemark, 
 			O.SALES_RETURN_DES salesReturnDes, O.SALES_ADDRESS_INFO salesAddressInfo, O.SALES_RETURN_DATE salesReturnDate,
 			O.SALES_AMOUNT salesAmount, O.SALES_TRANSACTION_DATE salesTransactionDate, O.SALES_OPENID salesOpenid, 
-			O.SALES_COUPON_RECEIVE_ID couponId, O.SALES_BALANCE_AMOUNT balancePayAmount 
+			O.SALES_COUPON_RECEIVE_ID couponId, O.SALES_BALANCE_AMOUNT balancePayAmount, O.SALES_IS_RFUND salesIsRfund
 		FROM 
 			TB_IAMBERRY_SHOP_SALES_ORDER O LEFT JOIN TB_IAMBERRY_USER_USERINFO U 
 			ON O.SALES_OPENID = U.USER_OPENID 
@@ -204,8 +204,9 @@ PUBLIC
 		SELECT 
 			SALES_STATUS salesStatus, SALES_PROXY_REWARD salesProxyReward, 
 			SALES_POST_FIRM salesPostFirm, SALES_POST_NUM salesPostNum ,
-			sales_openid salesOpenid
-			
+			sales_openid salesOpenid, SALES_IS_RFUND salesIsRfund,
+			SALES_YET_AMOUNT salesYetAmount, sales_return_des salesReturnDes,
+			SALES_ADDRESS_INFO salesAddressInfo
 		FROM 
 			TB_IAMBERRY_SHOP_SALES_ORDER
 		WHERE 
@@ -220,6 +221,9 @@ PUBLIC
 			<if test="salesChangeOrderid != null and salesChangeOrderid != ''">
 				SALES_CHANGE_ORDERID = #{salesChangeOrderid},
 			</if>
+			<if test="salesAuditRemark != null and salesAuditRemark != ''">
+				SALES_AUDIT_REMARK = #{salesAuditRemark},
+			</if>
 			SALES_STATUS = #{salesStatus} 
 		WHERE 
 			SALES_ORDERID = #{salesOrderid} 
@@ -274,12 +278,25 @@ PUBLIC
 				SALES_COLOR_TYPE = #{salesColorType}, 
 			</if>
 			<if test="salesAdminRemark != null and salesAdminRemark != ''">
-				SALES_ADMIN_REMARK = #{salesAdminRemark} 
+				SALES_ADMIN_REMARK = #{salesAdminRemark}
 			</if>
 		</set>
 		WHERE 
 			SALES_ORDERID = #{salesOrderid}
 	</update>
+
+	<!-- 修改订单退款状态 -->
+	<update id="updateOrderRfund" parameterType="Order" >
+		UPDATE
+		TB_IAMBERRY_SHOP_SALES_ORDER
+		<set>
+			<if test="salesIsRfund != null and salesIsRfund != ''">
+				SALES_IS_RFUND = #{salesIsRfund}
+			</if>
+		</set>
+		WHERE
+		SALES_ORDERID = #{salesOrderid}
+	</update>
 	
 	<!-- 查询订单中没有奖励积分的数据 -->
 	<select id="selectOrderByIntegral" resultType="Order" resultMap="orderMap">

+ 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>

+ 35 - 9
tooth-wechat-service/src/main/java/com/iamberry/wechat/service/mapper/memberMapper.xml

@@ -39,11 +39,9 @@
 	</sql>
 	<!-- 获取个人信息-->
 	<select id="getMyMemberInfo"  parameterType="String" resultType="Member" >
-		SELECT user_name,
-		user_sex,
-		user_tel,
-		user_birth_date
-		FROM 	TB_IAMBERRY_USER_USERINFO
+		SELECT
+			<include refid="allField"></include>
+		FROM TB_IAMBERRY_USER_USERINFO
 		WHERE user_openid = #{userOpenid}
 	</select>
 	<!-- 匹配查询会员信息 -->
@@ -185,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>
 
 	<!-- 修改用户已用积分 -->
@@ -212,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,下线信息 -->
@@ -324,4 +345,9 @@
 		</if>
 	</select>
 
+	<insert id="insertStayIntegral" parameterType="StayIntegral">
+        INSERT INTO (user_openid,config_id,stay_number,stay_recorded_time,stay_status,stay_remark,stay_create_time)
+        VALUES
+         (userOpenid,configId,stayNumber,stayRecordedTime,stayStatus,stayRemark,NOW())
+	</insert>
 </mapper> 

+ 44 - 1
tooth-wechat-service/src/main/java/com/iamberry/wechat/service/mapper/productInfoMapper.xml

@@ -29,9 +29,52 @@
 		COLOR_NAME colorName,
 		COLOR_DISCOUNT colorDiscount,
 		COLOR_PRICE colorPrice,
-		COLOR_69CODE color69Code 
+		COLOR_69CODE color69Code,
+		COLOR_IMG color_img,
+		COLOR_STATUS color_status
 	</sql>
+	<!-- 产品类型 -->
+	<sql id="allTypeField">
+		TYPE_ID typeId,
+		TYPE_NAME typeName,
+		TYPE_DETILAS typeDetilas,
+		TYPE_CREATE_DATE typeCreateDate,
+		TYPE_UPDATE_DATE typeUpdateDate,
+		TYPE_STATE typeState
+	</sql>
+	<!--根据产品类型id查询产品信息-->
+	<select id="listProductColorByTypeId" resultType="ProductColor" parameterType="ProductColor">
+		SELECT
+		COLOR_ID colorId,
+		COLOR_PRODUCT_ID colorProductId,
+		COLOR_NAME colorName,
+		COLOR_DISCOUNT colorDiscount,
+		COLOR_PRICE colorPrice,
+		COLOR_IMG colorImg,
+		COLOR_STATUS colorStatus,
+		COLOR_69CODE color69Code,
+		COLOR_CRETAE_TIME colorCretaeTime,
+		COLOR_UPDATE_TIME colorUpdateTime,
+		PRODUCT_NAME productName
+		FROM tb_iamberry_product_info PI
+		LEFT JOIN tb_iamberry_product_color PC ON PC.color_product_id=PI.PRODUCT_ID
+		WHERE PI.PRODUCT_TYPE=#{productType}
+		ORDER BY PI.product_sort_num
+		<if test="page!=null and page.recordBegin>0 and page.pageSize>0 ">
+			limit ${page.recordBegin},${page.pageSize}
+		</if>
+		<if test="page!=null and page.recordBegin==0 and page.pageSize>0 ">
+			limit ${page.pageSize}
+		</if>
+	</select>
 
+	<!--查询正在使用的产品类型-->
+	<select id="listProductType" resultType="ProductType">
+		SELECT
+		<include refid="allTypeField"></include>
+		FROM TB_IAMBERRY_PRODUCT_TYPE
+		WHERE TYPE_STATE=1
+	</select>
 	<!-- 分页查询商品信息 -->
 	<select id="selectPageProduct" parameterType="Product" resultType="Product">
 		SELECT

+ 6 - 8
tooth-wechat-service/src/main/java/com/iamberry/wechat/service/mapper/productMapper.xml

@@ -16,7 +16,11 @@
 		PRODUCT_COLOR_DES productColorDes,
 		PRODUCT_REMARK productRemark,
 		PRODUCT_COLOR productColor,
-		PRODUCT_RENT_TYPE productRentType
+		PRODUCT_RENT_TYPE productRentType,
+		PRODUCT_DISCOUNT productDiscount,
+		PRODUCT_PRICE productPrice,
+		PRODUCT_STATUS productStatus
+
 	</sql>
 	<!-- 产品类型的所有字段 -->
 	<sql id="allTypeField">
@@ -27,13 +31,7 @@
 		TYPE_UPDATE_DATE typeUpdateDate,
 		TYPE_STATE typeState
 	</sql>
-	<!--查询正在使用的产品类型-->
-	<select id="listProductType" resultType="ProductType">
-		SELECT
-			<include refid="allTypeField"></include>
-		FROM TB_IAMBERRY_PRODUCT_TYPE
-		WHERE TYPE_STATE=1
-	</select>
+
 	<!-- 查询所有的产品并分页 -->
 	<select id="selectAllProductInfo" resultMap="productColorMap" parameterType="product">
 		SELECT

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

@@ -10,25 +10,23 @@
         use_type useType,
         use_config_id useConfigId,
         use_integral_remarks useIntegralRemarks,
-        use_integral_create_time useIntegralCreateTime
+        use_integral_create_time useIntegralCreateTime,
+        integral_before_number integralBeforeNumber,
+        integral_end_number integralEndNumber
     </sql>
     <!--全部积分记录-->
     <select id="listIntegralInfo" resultType="UseIntegral" parameterType="UseIntegral">
         SELECT
-          i.*,
+          <include refid="AllUseField"></include>,
           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
-        <where>
-            <if test="openid!=null">
-                user_openid=#{openid}
-            </if>
-            <if test="useType != null">
-               AND use_type = #{useType}
+        WHERE i.user_openid=#{userOpenId}
+            <if test="useType != null||useType != ''">
+               AND i.use_type = #{useType}
             </if>
-        </where>
-        ORDER BY ORDER BY UI.use_integral_id DESC
+        ORDER BY i.use_integral_id DESC
         <if test="page!=null and page.recordBegin>0 and page.pageSize>0 ">
             limit ${page.recordBegin},${page.pageSize}
         </if>
@@ -49,14 +47,16 @@
         FROM tb_iamberry_use_integral
         WHERE user_openid=#{userOpenid} AND use_type=2
     </select>
-
-    <!--查询会员信息和会员等级名称-->
-    <select id="getMemberInfoAndRankName" parameterType="String" resultType="MemberIntegral">
-        SELECT m.*,r.rank_rule_name rankRuleName
-        FROM tb_iamberry_member_integral m
-        LEFT JOIN tb_iamberry_rank_rule r
-        ON m.rank_rule_id=r.rank_rule_id
-        WHERE m.user_openid=#{openId}
+    <!--待入账的总积分数-->
+    <select id="getStayIntegralCount" parameterType="String" resultType="int">
+        SELECT avg(stay_number)
+        FROM tb_iamberry_stay_integral
+        WHERE user_openid=#{userOpenid} AND stay_status=1
+    </select>
+    <!--查询积分等级信息-->
+    <select id="getRankRule" resultType="RankRule">
+        SELECT *
+        FROM tb_iamberry_rank_rule
     </select>
     <!-- 查询积分来源信息 -->
     <select id="listIntegralConfig" parameterType="IntegralConfig" resultType="IntegralConfig">
@@ -75,13 +75,19 @@
     <insert id="addUseIntegral" parameterType="UseIntegral" keyProperty="useIntegralId" 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 修改会员信息
 	 * 2016421
 	 * @author 穆再兴
-	 * @param userId
 	 * @return
 	 */
 	@Override
@@ -123,7 +122,6 @@ public class MemberServiceImpl implements MemberService {
 	/**
 	 * 根据userid获取当前用户的“下线人数”和“已购买人数”
 	 * 2016511
-	 * @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 修改用户待入账积分
+	 * 201811017: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 修改会员信息
 	 * 2016421
 	 * @author 穆再兴
-	 * @param userId
 	 * @return
 	 */
 	@Override
@@ -105,7 +104,6 @@ public class MemberDaoImpl  implements MemberDao {
 	/**
 	 * 根据userid获取当前用户的“下线人数”和“已购买人数”
 	 * 2016511
-	 * @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);
+	}
 }

+ 5 - 0
tooth-wechat-service/src/main/java/com/iamberry/wechat/service/order/AdminOrderServiceImpl.java

@@ -764,4 +764,9 @@ public class AdminOrderServiceImpl implements AdminOrderService {
 	public List<StatisticsSalesOrder> listYearNum(StatisticsSalesOrder salesOrder) {
 		return adminOrderDao.listYearNum(salesOrder);
 	}
+
+	@Override
+	public Integer updateOrderRfund(Order order) {
+		return adminOrderDao.updateOrderRfund(order);
+	}
 }

+ 7 - 0
tooth-wechat-service/src/main/java/com/iamberry/wechat/service/order/dao/AdminOrderDao.java

@@ -203,4 +203,11 @@ public interface AdminOrderDao {
 	 */
 	List<StatisticsSalesOrder> listYearNum(StatisticsSalesOrder salesOrder);
 
+	/**
+	 * 修改订单退款状态
+	 * @param order
+	 * @return
+	 */
+	Integer updateOrderRfund(Order order);
+
 }

+ 5 - 0
tooth-wechat-service/src/main/java/com/iamberry/wechat/service/order/dao/impl/AdminOrderDaoImpl.java

@@ -304,4 +304,9 @@ public class AdminOrderDaoImpl implements AdminOrderDao {
 	public List<StatisticsSalesOrder> listYearNum(StatisticsSalesOrder salesOrder) {
 		return adminOrderMapper.listYearNum(salesOrder);
 	}
+
+	@Override
+	public Integer updateOrderRfund(Order order) {
+		return adminOrderMapper.updateOrderRfund(order);
+	}
 }

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

@@ -22,8 +22,6 @@ public class ProductTypeServiceImpl implements ProductTypeService {
 
 	@Autowired
 	private ProductDao productDao;
-	@Autowired
-	private ProductMapper productMapper;
 
 	@Override
 	public List<ProductType> getAll() {
@@ -54,9 +52,4 @@ public class ProductTypeServiceImpl implements ProductTypeService {
 		// TODO Auto-generated method stub
 		return productDao.updateProductTypeStatusById(productType);
 	}
-
-	@Override
-	public List<ProductType> listProductType() {
-		return productMapper.listProductType();
-	}
 }

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

@@ -102,4 +102,6 @@ public interface ProductDao {
 	 * @return
 	 */
 	public Integer updateProductTypeStatusById(ProductType productType);
+
+
 }

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

@@ -120,5 +120,4 @@ public class ProductDAOImpl implements ProductDao{
 		// TODO Auto-generated method stub
 		return productMapper.updateProductTypeStatusById(productType);
 	}
-
 }

+ 28 - 26
tooth-wechat-service/src/main/java/com/iamberry/wechat/service/wechat/WeChatServiceImpl.java

@@ -3,6 +3,7 @@ package com.iamberry.wechat.service.wechat;
 import java.io.UnsupportedEncodingException;
 import java.net.URLEncoder;
 import java.text.ParseException;
+import java.text.SimpleDateFormat;
 import java.util.Date;
 import java.util.HashMap;
 import java.util.List;
@@ -10,8 +11,10 @@ import java.util.Map;
 
 import com.iamberry.wechat.core.entity.machineNumber.MachineNumber;
 import com.iamberry.wechat.face.machineNumber.MachineNumberService;
+import com.iamberry.wechat.tools.*;
 import net.sf.json.JSONObject;
 
+import org.apache.commons.lang3.StringEscapeUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -42,11 +45,6 @@ import com.iamberry.wechat.service.MessageUtil;
 import com.iamberry.wechat.service.ShopUtil;
 import com.iamberry.wechat.service.mapper.PlaceInfoMapper;
 import com.iamberry.wechat.service.relationship.Dao.WdRelationDao;
-import com.iamberry.wechat.tools.DateTimeUtil;
-import com.iamberry.wechat.tools.NameUtils;
-import com.iamberry.wechat.tools.QQFace;
-import com.iamberry.wechat.tools.ResultInfo;
-import com.iamberry.wechat.tools.WeixinUtil;
 
 /**
  * description : wechat handler的核心服务类
@@ -294,30 +292,34 @@ public class WeChatServiceImpl implements WeChatService {
 	 */
 	public String bindingMachine(String senceid, String fromUserName) {
 		StringBuilder str = new StringBuilder();
-		MachineNumber machineNumber = new MachineNumber();
-		machineNumber.setNumberBarcode(senceid);
-		//分页查询机器编号集合
-		List<MachineNumber> numberList = machineNumberService.listMachineNumber(machineNumber);
-		if (numberList == null && numberList.size() == 0) {
-			str.append("该机器条形码有误,请重新扫描!");
-		}
-		MachineNumber machine = numberList.get(0);
-		if (machine.getNumberOpenId() != null && !"".equals(machine.getNumberOpenId())) {
-			str.append("该机器已绑定用户,不能重复绑定!");
-			return str.toString();
-		} else {
-			machineNumber.setNumberOpenId(fromUserName);
-			boolean flag = machineNumberService.updateNumber(machineNumber);
-			if (flag) {
-                str.append("Hi!欢迎您关注WaterO,现在完善购买信息,即赠送美国WaterO滤芯T1一个、美国WaterO滤芯T2一个,<a href=\"");
-                str.append(NameUtils.getConfig("WECHAT_GO_PERSONAL_INFORMATION"));
-                str.append(machine.getNumberId());
-                str.append("\">立即完善>></a>");
+		String url = NameUtils.getConfig("rst_base_url") + senceid;
+		Map<String,String> params = new HashMap<String,String>();
+		SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
+		try {
+			//查询百胜订单信息
+			String resultJson = HttpClient431Util.doGet(params,url,null,null,null);
+			resultJson = StringEscapeUtils.unescapeJava(resultJson); // unicode
+			inLongLogger.info("==========================获取机器信息成功,返回值为:" + resultJson + "=========================");
+			JSONObject jsonObject = JSONObject.fromObject(resultJson);
+			if (jsonObject.getInt("resultCode") != 200) {
+				str.append("没有查到该机器信息,请确认二维码是否正确!");
 				return str.toString();
-			} else {
-				str.append("绑定机器失败,请重新操作!");
+			}
+			JSONObject jsonMessage = jsonObject.getJSONObject("message");
+			if (jsonMessage.getInt("isBeing") == 2) {
+				str.append("没有查到该机器信息,请确认二维码是否正确!");
 				return str.toString();
 			}
+			str.append("您的<");
+			str.append(jsonMessage.getString("productType"));
+			str.append(">为正品,生产日期为:");
+			str.append(format.format(new Date(jsonMessage.getLong("producedTime"))));
+			str.append("。请放心使用。");
+			return str.toString();
+		} catch (Exception e) {
+			inLongLogger.info("==========================获取机器信息失败,机器条形码为:" + senceid + "=========================");
+			str.append("没有查到该机器信息,请确认二维码是否正确!");
+			return str.toString();
 		}
 	}
 	

+ 136 - 18
tooth-wechat-web/src/main/java/com/iamberry/wechat/handles/admin/AdminOrderHandlers.java

@@ -42,6 +42,7 @@ import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
 import java.net.URLDecoder;
+import java.text.DecimalFormat;
 import java.text.SimpleDateFormat;
 import java.util.Date;
 import java.util.List;
@@ -132,7 +133,7 @@ public class AdminOrderHandlers {
                     orders.setUserNickname(URLDecoder.decode(orders.getUserNickname(), "UTF-8"));
                 }
                 // 获取用户的操作权限
-                orders.setOperations(orderUtil.orderStatusToOperation(orders.getSalesStatus(), orders.getSalesOrderid()));
+                orders.setOperations(orderUtil.orderStatusToOperation(orders.getSalesStatus(), orders.getSalesOrderid(), orders.getSalesIsRfund()));
                 orders.setOrderLinkStatus(orderUtil.orderStatusToString(orders.getSalesStatus())); // 订单状态描述,中文
 
                 // 遍历订单, 判断用户角色
@@ -178,7 +179,7 @@ public class AdminOrderHandlers {
                     orders.setUserNickname(URLDecoder.decode(orders.getUserNickname(), "UTF-8"));
                 }
                 // 获取用户的操作权限
-                orders.setOperations(orderUtil.orderStatusToOperation(orders.getSalesStatus(), orders.getSalesOrderid()));
+                orders.setOperations(orderUtil.orderStatusToOperation(orders.getSalesStatus(), orders.getSalesOrderid(), orders.getSalesIsRfund()));
 
                 // 遍历订单, 判断用户角色
                 if (orders.getPlaceOpenID() != null && orders.getPlaceOpenID().equals(orders.getSalesOrderid())) {
@@ -326,7 +327,7 @@ public class AdminOrderHandlers {
                 order.setUserNickname(URLDecoder.decode(order.getUserNickname(), "UTF-8"));
             }
             // 获取用户的操作权限
-            order.setOperations(orderUtil.orderStatusToOperation(order.getSalesStatus(), order.getSalesOrderid()));
+            order.setOperations(orderUtil.orderStatusToOperation(order.getSalesStatus(), order.getSalesOrderid(), order.getSalesIsRfund()));
             order.setOrderLinkStatus(orderUtil.orderStatusToString(order.getSalesStatus())); // 订单状态描述,中文
             if (order.getSalesStatus() == 2) {
                 // 给百胜推送信息
@@ -455,7 +456,7 @@ public class AdminOrderHandlers {
                     orders.setUserNickname(URLDecoder.decode(orders.getUserNickname(), "UTF-8"));
                 }
                 // 获取用户的操作权限
-                orders.setOperations(orderUtil.orderStatusToOperation(orders.getSalesStatus(), orders.getSalesOrderid()));
+                orders.setOperations(orderUtil.orderStatusToOperation(orders.getSalesStatus(), orders.getSalesOrderid(), orders.getSalesIsRfund()));
                 orders.setOrderLinkStatus(orderUtil.orderStatusToString(orders.getSalesStatus())); // 订单状态描述,中文
             }
         } else {
@@ -466,7 +467,7 @@ public class AdminOrderHandlers {
                     orders.setUserNickname(URLDecoder.decode(orders.getUserNickname(), "UTF-8"));
                 }
                 // 获取用户的操作权限
-                orders.setOperations(orderUtil.orderStatusToOperation(orders.getSalesStatus(), orders.getSalesOrderid()));
+                orders.setOperations(orderUtil.orderStatusToOperation(orders.getSalesStatus(), orders.getSalesOrderid(), orders.getSalesIsRfund()));
             }
         }
         // 时间区间的处理
@@ -510,6 +511,7 @@ public class AdminOrderHandlers {
             OrderActionDto actionDto
     ) throws Exception {
         ModelAndView mv = new ModelAndView("admin/msg/msg");
+        DecimalFormat df=new DecimalFormat("0.00");
         Order order = new Order();
         order.setSalesOrderid(orderId);
         // 订单状态,数字标识
@@ -517,6 +519,8 @@ public class AdminOrderHandlers {
         order.setSalesPostNum(actionDto.getPostNum());
         // 判断当前的订单,是否支持希望进行的操作
         Order currentOrder = adminOrderService.selectOrderStatusByOrderId(orderId);
+        //获取当前订单订单项
+        List<OrderItem> itemList = adminOrderService.getShopOrderItemByOrderId(orderId);
         Integer orderStatus = currentOrder.getSalesStatus();
         order.setOldStatus(orderStatus);
         order.setSalesOpenid(currentOrder.getSalesOpenid());
@@ -578,22 +582,29 @@ public class AdminOrderHandlers {
                         // TODO: handle exception
                     }
                     //给用户发送消息-已发货的通知
+                    try {
+                        sendMessageUtil.orderSendSuccess("尊敬的朵粉,您的订单已发货,物流信息:",orderId,SendMessageUtil.hashmap.get(actionDto.getPostFirm()),
+                                actionDto.getPostNum(),currentOrder.getSalesAddressInfo(),"如有问题请致电400-678-1860或直接在微信留言,soodo上朵将第一时间为您服务!(点击查看订单详情)",currentOrder.getSalesOpenid(),null);
+                    } catch (Exception e) {
+                        logger.info("订单号:"+ orderId +"的订单驳回退款,发送微信消息失败!");
+                    }
 
-
-                    //消息内容
+                    /*//消息内容
                     String data = ResultInfo.ORDERPACKAGETEMP;
                     data = data.replaceFirst("firstValueOrder", ResultInfo.SHIPMENTMESSAGE)
                             .replaceFirst("orderIdValueOrder", orderId)
                             .replaceFirst("orderValuePackageId", SendMessageUtil.hashmap.get(actionDto.getPostFirm()) + ":" + actionDto.getPostNum())
                             .replaceFirst("orderRemarkValue", ResultInfo.INTOSHOP);
-                    sendMessageUtil.sendTemplateMessageToOpenid(data, currentOrder.getSalesOpenid(), ResultInfo.PAGE_SHIPMENT + orderId, 2);
+                    sendMessageUtil.sendTemplateMessageToOpenid(data, currentOrder.getSalesOpenid(), ResultInfo.PAGE_SHIPMENT + orderId, 2);*/
 
                     return mv;
                 } else {
                     mv.addObject("msgObj", new MessageDto(false, "对不起,取消订单失败", "对不起,取消订单失败,请稍后重试!"));
                     return mv;
                 }
-            case 3: // 退款申请中(管理员可以操作:确认退款)
+            case 3: // 退款申请中(管理员可以操作:确认退款、驳回退款)
+
+                order.setSalesAuditRemark(actionDto.getSalesAuditRemark());
 
                 // 只有两种操作 : 确认退款、驳回退款
                 if (orderUtil.getOrderActin()[4].equals(action)) {
@@ -605,6 +616,14 @@ public class AdminOrderHandlers {
                     }
                     order.setSalesStatus(2);
                     if (adminOrderService.updateOrderStatusByOrderId(order)) {// 驳回退款
+                        String payMoney = df.format((float)currentOrder.getSalesYetAmount()/100) + "元";
+                        try {
+                            sendMessageUtil.orderApplyRefund("尊敬的朵粉,您的退款申请被退回:",payMoney,itemList.get(0).getItemProductName(),orderId,
+                                    "请确认您的退款申请信息填写无误。\\r\\n如有问题请致电400-678-1860或直接在微信留言,soodo上朵将第一时间为您服务!(点击查看订单详情)",currentOrder.getSalesOpenid(),null);
+                        } catch (Exception e) {
+                            logger.info("订单号:"+ orderId +"的订单驳回退款,发送微信消息失败!");
+                        }
+
                         mv.addObject("msgObj", new MessageDto(true, "驳回退款成功!", "驳回退款成功,订单进入待发货状态!"));
                         return mv;
                     } else {
@@ -644,7 +663,16 @@ public class AdminOrderHandlers {
                             adminOrderService.addCashLog(cashLog);
                         }
                         rebackServices.updateStatus(rabackInfo);
-                        mv.addObject("msgObj", new MessageDto(true, "订单退款成功", "恭喜您!订单退款成功,订单将封存!"));
+
+                        String payMoney = df.format((float)currentOrder.getSalesYetAmount()/100) + "元";
+                        try {
+                            sendMessageUtil.orderApplyRefund("尊敬的朵粉,您的退款申请已通过:",payMoney,itemList.get(0).getItemProductName(),orderId,
+                                    "退款金额将在三个工作日内退款到您的支付账户。\\r\\n如有问题请致电400-678-1860或直接在微信留言,soodo上朵将第一时间为您服务!(点击查看订单详情)",currentOrder.getSalesOpenid(),null);
+                        } catch (Exception e) {
+                            logger.info("订单号:"+ orderId +"的订单同意退款,发送微信消息失败!");
+                        }
+
+                        mv.addObject("msgObj", new MessageDto(true, "订单退款成功", "请联系财务部门,将此订单退款!"));
                         updateRebate(order, 3);
                         return mv;
                     } else {
@@ -665,6 +693,8 @@ public class AdminOrderHandlers {
                 return mv;
             case 6: // 申请退货中(只有管理员能操作 : 确认退货)
 
+                order.setSalesAuditRemark(actionDto.getSalesAuditRemark());
+
                 if (!orderUtil.getOrderActin()[6].equals(action) && !orderUtil.getOrderActin()[10].equals(action)) {// 判断当前请求操作是否相符, 否则提示不成功
                     mv.addObject("msgObj", new MessageDto(false, "对不起,操作有误", "对不起,您刚才的操作流程有误,请按照系统流程操作!"));
                     return mv;
@@ -678,8 +708,30 @@ public class AdminOrderHandlers {
                 order.setSalesStatus(orderUtil.getOrderStatusByStr(actionDto.getToOrderStatus()));
                 if (adminOrderService.updateOrderStatusByOrderId(order)) {
                     if (orderUtil.orderStatusIntToOrderStatusString(7).equals(actionDto.getToOrderStatus())) {
+                        String payMoney = df.format((float)currentOrder.getSalesYetAmount()/100) + "元";
+                        int productNum = 0;
+                        for (OrderItem item : itemList) {
+                            productNum += item.getItemNum();
+                        }
+                        try {
+                            sendMessageUtil.orderApplyReturn("尊敬的朵粉,soodo上朵已通过您的【退货申请】",orderId,payMoney,productNum+"件",currentOrder.getSalesReturnDes(),
+                                    "请您尽快联系客服人员处理,根据客服人员指引将机器寄回。\\r\\n对此结果,soodo上朵深表歉意,我们会继续提升,期待下一次相遇!",currentOrder.getSalesOpenid(),null);
+                        } catch (Exception e) {
+                            logger.info("订单号:"+ orderId +"的订单同意退货,发送微信消息失败!");
+                        }
                         mv.addObject("msgObj", new MessageDto(true, "订单申请退货成功", "恭喜您!同意订单:" + orderId + "退货,等待收到货物后确认退货!"));
                     } else {
+                        String payMoney = df.format((float)currentOrder.getSalesYetAmount()/100) + "元";
+                        int productNum = 0;
+                        for (OrderItem item : itemList) {
+                            productNum += item.getItemNum();
+                        }
+                        try {
+                            sendMessageUtil.orderApplyReturn("尊敬的朵粉,您的【退货申请】没有通过",orderId,payMoney,productNum+"件",currentOrder.getSalesReturnDes(),
+                                    "请确认您的退货申请信息填写无误。\\r\\n如有问题请致电400-678-1860或直接在微信留言,soodo上朵将第一时间为您服务!",currentOrder.getSalesOpenid(),null);
+                        } catch (Exception e) {
+                            logger.info("订单号:"+ orderId +"的订单驳回退货,发送微信消息失败!");
+                        }
                         mv.addObject("msgObj", new MessageDto(true, "成功驳回订单退货", "订单:" + orderId + "退货被驳回,状态返回已发货!"));
                     }
                     return mv;
@@ -771,14 +823,20 @@ public class AdminOrderHandlers {
                                 }
                                 break;
                         }
-                        //发送消息
-                        String temp = ResultInfo.INCOMEREMINDTEMP;
-                        temp = temp.replaceFirst("firstValueIamberry", ResultInfo.NEXTUSERTUIHUOMESSAGE)
-                                .replaceFirst("accountValueIamberry", URLDecoder.decode(member.getUserNickname(), "UTF-8"))
-                                .replaceFirst("timeValueIamberry", DateTimeUtil.format(new Date(), NameUtils.getConfig("DATE_TIME_FORMAT")))
-                                .replaceFirst("typeValueIamberry", "用户退货")
-                                .replaceFirst("remarkValueIamberry", ResultInfo.INTOSHOP);
-                        sendMessageUtil.sendTemplateMessageToOpenid(temp, toopenid, ResultInfo.TUIHUI_SHIPMENT, 3);
+
+                        /*try {
+                            //发送消息
+                            String temp = ResultInfo.INCOMEREMINDTEMP;
+                            temp = temp.replaceFirst("firstValueIamberry", ResultInfo.NEXTUSERTUIHUOMESSAGE)
+                                    .replaceFirst("accountValueIamberry", URLDecoder.decode(member.getUserNickname(), "UTF-8"))
+                                    .replaceFirst("timeValueIamberry", DateTimeUtil.format(new Date(), NameUtils.getConfig("DATE_TIME_FORMAT")))
+                                    .replaceFirst("typeValueIamberry", "用户退货")
+                                    .replaceFirst("remarkValueIamberry", ResultInfo.INTOSHOP);
+                            sendMessageUtil.sendTemplateMessageToOpenid(temp, toopenid, ResultInfo.TUIHUI_SHIPMENT, 3);
+                        } catch (Exception e) {
+
+                        }*/
+
                     }
 
                     return mv;
@@ -852,8 +910,24 @@ public class AdminOrderHandlers {
                 }
                 if (adminOrderService.updateOrderStatusByOrderId(order)) {
                     if (orderUtil.orderStatusIntToOrderStatusString(9).equals(actionDto.getToOrderStatus())) {
+
+                        try {
+                            sendMessageUtil.orderApplyBarter("尊敬的朵粉,您的【换货申请】通过。",orderId,itemList.get(0).getItemProductName(),
+                                    "退款金额将在三个工作日内退款到您的支付账户。\\r\\n如有问题请致电400-678-1860或直接在微信留言,soodo上朵将第一时间为您服务!(点击查看订单详情)",currentOrder.getSalesOpenid(),null);
+                        } catch (Exception e) {
+                            logger.info("订单号:"+ orderId +"的订单同意换货,发送微信消息失败!");
+                        }
+
                         mv.addObject("msgObj", new MessageDto(true, "同意换货成功", "恭喜您!同意订单:" + orderId + "换货,请收货后录入物流信息并同意换货!"));
                     } else {
+
+                        try {
+                            sendMessageUtil.orderApplyBarter("尊敬的朵粉,您的【换货申请】没有通过。",orderId,itemList.get(0).getItemProductName(),
+                                    "退款金额将在三个工作日内退款到您的支付账户。\\r\\n如有问题请致电400-678-1860或直接在微信留言,soodo上朵将第一时间为您服务!(点击查看订单详情)",currentOrder.getSalesOpenid(),null);
+                        } catch (Exception e) {
+                            logger.info("订单号:"+ orderId +"的订单驳回换货,发送微信消息失败!");
+                        }
+
                         mv.addObject("msgObj", new MessageDto(true, "驳回换货成功", "您已驳回订单:" + orderId + "换货,订单状态改为已发货!"));
                     }
                     return mv;
@@ -883,6 +957,50 @@ public class AdminOrderHandlers {
         LoadRewardTaskService.updateStatus(rabackInfo);
     }
 
+    @ResponseBody
+    @RequestMapping("/markRefund/{orderId}")
+    public ResultMsg markRefund(HttpServletRequest request,
+                                @PathVariable("orderId") String orderId) throws Exception {
+        ResultMsg msg = new ResultMsg();
+        //查询该订单的状态
+        Order order = adminOrderService.selectOrderStatusByOrderId(orderId);
+        if (order == null) {
+            msg.setResultCode(ResultInfo.ERRORCODE);
+            msg.setStatus(false);
+            msg.setMessage("该订单不存在,请重新操作!");
+            return msg;
+        }
+        //4:已退款,8:订单退货,订单关闭
+        if (order.getSalesStatus() != 4 && order.getSalesStatus() != 8) {
+            msg.setResultCode(ResultInfo.ERRORCODE);
+            msg.setStatus(false);
+            msg.setMessage("该订单不支持标记已退款!");
+            return msg;
+        }
+
+        if (order.getSalesIsRfund() != null && order.getSalesIsRfund() == 2) {
+            msg.setResultCode(ResultInfo.ERRORCODE);
+            msg.setStatus(false);
+            msg.setMessage("该订单已标记退款,不能重复标记!");
+            return msg;
+        }
+
+        Order orderInfo = new Order();
+        orderInfo.setSalesOrderid(orderId);
+        orderInfo.setSalesIsRfund(2);
+        //修改订单退款状态
+        int num = adminOrderService.updateOrderRfund(orderInfo);
+        if (num > 0) {
+            msg.setResultCode(ResultInfo.SUCCESSCODE);
+            msg.setStatus(true);
+        } else {
+            msg.setResultCode(ResultInfo.ERRORCODE);
+            msg.setStatus(false);
+            msg.setMessage("标记退款失败,请重新标记!");
+        }
+        return msg;
+    }
+
     /**
      * 订单备注
      *

+ 32 - 6
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,6 +78,8 @@ 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);
         //获取换新时间期限
@@ -84,16 +87,17 @@ public class ApparatusHandler {
         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 +106,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) {

+ 63 - 0
tooth-wechat-web/src/main/java/com/iamberry/wechat/handles/cart/ProductInfoHandler.java

@@ -670,4 +670,67 @@ public class ProductInfoHandler {
 		remsg.setData(map);
 		return remsg;
 	}
+
+	/**
+	 * 查询正在使用的产品类型列表
+	 * @return
+	 */
+	@RequestMapping("/listProductType")
+	@ResponseBody
+	public ResultMsg listProductType(){
+		ResultMsg rm=new ResultMsg();
+		List<ProductType> list=productInfoService.listProductType();
+		if(list.size()<0){
+			rm.setStatus(false);
+			rm.setResultCode(ResultInfo.ERRORCODE);
+			rm.setMessage(NameUtils.getConfig("ERRORINFO"));
+			return rm;
+		}
+		rm.setData(list);
+		rm.setResultCode(ResultInfo.SUCCESSCODE);
+		rm.setMessage(NameUtils.getConfig("SUCCESSINFO"));
+		rm.setStatus(true);
+		return rm;
+	}
+
+	/**
+	 * 根据产品类型id查询产品颜色信息
+	 * @param typeId
+	 * @param pageSize
+	 * @param pageNO
+	 * @return
+	 */
+	@ResponseBody
+	@RequestMapping("/listProductColorByTypeId")
+	public  ResultMsg listProductColorByTypeId( @RequestParam(value= "typeId",defaultValue= "" ,required=false) Integer typeId,
+											   @RequestParam(value= "pageSize",defaultValue= "6" ,required=false) Integer pageSize,
+											   @RequestParam(value = "pageNO", defaultValue = "1",required=false) Integer pageNO){
+		ResultMsg rm=new ResultMsg();
+		if(typeId<=0){
+			rm.setStatus(false);
+			rm.setResultCode(ResultInfo.ERRORCODE);
+			rm.setMessage(NameUtils.getConfig("ERRORINFO"));
+			return rm;
+		}
+
+		ProductColor productColor=new ProductColor();
+		productColor.setProductType(typeId);
+		productColor.getPage().setPageSize(pageSize);
+		productColor.getPage().setPageNumber(pageNO);
+		productColor.getPage().initRecordBegin();
+		List<ProductColor> list=productInfoService.listProductColorByTypeId(productColor);
+		if(list==null||list.size()<=0){
+			rm.setStatus(false);
+			rm.setResultCode(ResultInfo.ERRORCODE);
+			return rm;
+		}
+		Map<String,Object> map=new HashMap<String, Object>();
+		map.put("productColorList",list);
+		map.put("typeId",typeId);
+		rm.setStatus(true);
+		rm.setResultCode(ResultInfo.SUCCESSCODE);
+		rm.setMessage(NameUtils.getConfig("SUCCESSINFO"));
+		rm.setData(map);
+		return rm ;
+	}
 }

+ 0 - 16
tooth-wechat-web/src/main/java/com/iamberry/wechat/handles/coupon/AdminCouponTypeHandler.java

@@ -185,21 +185,5 @@ public class AdminCouponTypeHandler {
 		}
 		return mv;
 	}
-	/**
-	 * 查询待用的优惠卷
-	 * @param openid
-	 * @return
-	 */
-	public ResultMsg getStandByCoupon(HttpServletRequest req,
-									  @RequestParam(value = "openid",required = false)String openid){
-		ResultMsg rm=new ResultMsg();
-		Member m= WechatUtils.getUserBySession(req);
-		List<CouponItem> list=couponItemService.getStandByCoupon(m.getUserOpenid());
 
-		rm.setStatus(true);
-		rm.setResultCode(ResultInfo.SUCCESSCODE);
-		rm.setMessage(NameUtils.getConfig("SUCCESSINFO"));
-		rm.setData(list);
-		return rm;
-	}
 }

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

@@ -5,9 +5,11 @@ package com.iamberry.wechat.handles.integral;
 import com.iamberry.wechat.core.entity.PageBean;
 import com.iamberry.wechat.core.entity.ResultMsg;
 import com.iamberry.wechat.core.entity.WechatUtils;
+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.face.integral.UseIntegralService;
+import com.iamberry.wechat.face.member.MemberService;
 import com.iamberry.wechat.tools.NameUtils;
 import com.iamberry.wechat.tools.ResultInfo;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -18,6 +20,8 @@ import org.springframework.web.bind.annotation.ResponseBody;
 
 
 import javax.servlet.http.HttpServletRequest;
+import java.lang.reflect.Array;
+import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -31,7 +35,8 @@ public class UseIntegralHandler {
 
     @Autowired
     private UseIntegralService useIntegralService;
-
+    @Autowired
+    private MemberService memberService;
     /**
      * 收入记录 use_type=1
      * @param req
@@ -40,14 +45,18 @@ public class UseIntegralHandler {
      * @param pageNO
      * @return
      */
-    @RequestMapping("/listGainIntegralInfo")
+        @RequestMapping("/listGainIntegralInfo")
     @ResponseBody
     public ResultMsg listGainIntegralInfo(HttpServletRequest req,
                                     @RequestParam(value="useType",defaultValue= "1", required=false)Integer useType,
-                                     @RequestParam(value="pageSize",defaultValue= "6", required=false)String pageSize,
-                                     @RequestParam(value="pageNO",defaultValue= "1", required=false)String pageNO){
+                                    @RequestParam(value= "pageSize",defaultValue= "6" ,required=false) Integer pageSize,
+                                    @RequestParam(value = "pageNO", defaultValue = "1",required=false) Integer pageNO){
         ResultMsg rm=new ResultMsg();
         Member m= WechatUtils.getUserBySession(req);
+        if (m == null || m.getUserOpenid() == null) {
+            rm.setMessage(ResultInfo.loginOutError);
+            return rm;
+        }
         int gainIntegralCount=useIntegralService.getGainIntegralCount(m.getUserOpenid());
         if(gainIntegralCount<0){
             rm.setStatus(false);
@@ -58,10 +67,11 @@ public class UseIntegralHandler {
         UseIntegral useIntegral=new UseIntegral();
         useIntegral.setUserOpenId(m.getUserOpenid());
         useIntegral.setUseType(useType);
-        useIntegral.getPage().setPageSize(Integer.parseInt(pageSize));
-        useIntegral.getPage().setPageNumber(Integer.parseInt(pageNO));
+        useIntegral.getPage().setPageSize(pageSize);
+        useIntegral.getPage().setPageNumber(pageNO);
+        useIntegral.getPage().initRecordBegin();
         List<UseIntegral> listGainIntegralInfo=useIntegralService.listIntegralInfo(useIntegral);
-
+        System.out.println(listGainIntegralInfo);
         Map<String,Object> map=new HashMap<String, Object>();
         map.put("listGainIntegralInfo",listGainIntegralInfo);
         map.put("gainIntegralCount",gainIntegralCount);
@@ -74,6 +84,51 @@ public class UseIntegralHandler {
     }
 
     /**
+     * 待入账记录 use_type=3
+     * @param req
+     * @param useType
+     * @param pageSize
+     * @param pageNO
+     * @return
+     */
+    @RequestMapping("/listStayIntegral")
+    @ResponseBody
+    public ResultMsg listStayIntegral(HttpServletRequest req,
+                                      @RequestParam(value="useType",defaultValue= "3", required=false)Integer useType,
+                                      @RequestParam(value= "pageSize",defaultValue= "6" ,required=false)Integer pageSize,
+                                      @RequestParam(value = "pageNO", defaultValue = "1",required=false)Integer pageNO){
+        ResultMsg rm=new ResultMsg();
+        Member m= WechatUtils.getUserBySession(req);
+        if (m == null || m.getUserOpenid() == null) {
+            rm.setMessage(ResultInfo.loginOutError);
+            return rm;
+        }
+        int stayIntegralCount=useIntegralService.getStayIntegralCount(m.getUserOpenid());
+        if(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.getPage().setPageSize(pageSize);
+        useIntegral.getPage().setPageNumber(pageNO);
+        useIntegral.getPage().initRecordBegin();
+        List<UseIntegral> listStayIntegral=useIntegralService.listIntegralInfo(useIntegral);
+
+        Map<String,Object> map=new HashMap<String, Object>();
+        map.put("listStayIntegralInfo",listStayIntegral);
+        map.put("stayIntegralCount",stayIntegralCount);
+
+        rm.setStatus(true);
+        rm.setResultCode(ResultInfo.SUCCESSCODE);
+        rm.setMessage(NameUtils.getConfig("SUCCESSINFO"));
+        rm.setData(map);
+        return rm;
+    }
+    /**
      * 全部记录 use_type=null
      * @param req
      * @param useType
@@ -84,30 +139,38 @@ public class UseIntegralHandler {
     @RequestMapping("/listAllIntegralInfo")
     @ResponseBody
     public ResultMsg listAllIntegralInfo(HttpServletRequest req,
-                                   @RequestParam(value="useType",defaultValue= "null", required=false)Integer useType,
-                                   @RequestParam(value="pageSize",defaultValue= "6", required=false)String pageSize,
-                                   @RequestParam(value="pageNO",defaultValue= "1", required=false)String pageNO){
+                                   @RequestParam(value="useType",defaultValue= "", required=false)Integer useType,
+                                   @RequestParam(value= "pageSize",defaultValue= "6" ,required=false)Integer pageSize,
+                                   @RequestParam(value = "pageNO", defaultValue = "1",required=false)Integer pageNO){
         ResultMsg rm=new ResultMsg();
         Member m=WechatUtils.getUserBySession(req);
-        int useIntegralCount=useIntegralService.getUseIntegralCount(m.getUserOpenid());
-        int gainIntegralCount=useIntegralService.getGainIntegralCount(m.getUserOpenid());
-        if(useIntegralCount<0||gainIntegralCount<0){
+        String openid=m.getUserOpenid();
+        if (m == null || openid == null) {
+            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){
             rm.setStatus(false);
             rm.setResultCode(ResultInfo.ERRORCODE);
             rm.setMessage(NameUtils.getConfig("ERRORINFO"));
             return rm;
         }
         UseIntegral useIntegral=new UseIntegral();
-        useIntegral.setUserOpenId(m.getUserOpenid());
+        //useIntegral.setUserOpenId(m.getUserOpenid());
         useIntegral.setUseType(useType);
-        useIntegral.getPage().setPageSize(Integer.parseInt(pageSize));
-        useIntegral.getPage().setPageNumber(Integer.parseInt(pageNO));
+        useIntegral.getPage().setPageSize(pageSize);
+        useIntegral.getPage().setPageNumber(pageNO);
+        useIntegral.getPage().initRecordBegin();
         List<UseIntegral> listAllIntegralInfo=useIntegralService.listIntegralInfo(useIntegral);
 
         Map<String,Object> map=new HashMap<String, Object>();
         map.put("listAllIntegralInfo",listAllIntegralInfo);
         map.put("useIntegralCount",useIntegralCount);
         map.put("gainIntegralCount",gainIntegralCount);
+        map.put("stayIntegralCount",stayIntegralCount);
 
         rm.setStatus(true);
         rm.setResultCode(ResultInfo.SUCCESSCODE);
@@ -116,6 +179,39 @@ public class UseIntegralHandler {
         return rm;
     }
 
-
+    /**
+     * 获取会员信息、会员等级信息
+     * @param req
+     * @return
+     */
+    @RequestMapping("/getRankRule")
+    @ResponseBody
+    public ResultMsg getRankRule(HttpServletRequest req){
+        ResultMsg rm=new ResultMsg();
+        Map<String,Object> map=new HashMap<String, Object>();
+        Member member=WechatUtils.getUserBySession(req);
+        if (member == null || member.getUserOpenid() == null) {
+            rm.setMessage(ResultInfo.loginOutError);
+            return rm;
+        }
+        member=memberService.getMyMemberInfo(member.getUserOpenid());
+        int userIntegralCount=member.getUserIntegral();
+
+        List<RankRule> list=useIntegralService.getRankRule();
+        RankRule rankRule=null;
+        for(RankRule r:list){
+            if(r.getRankRuleIntegral()>=userIntegralCount){
+                rankRule=r;
+                break;
+            }
+        }
+        map.put("rankRule",rankRule);
+        map.put("memberInfo",member);
+        rm.setStatus(true);
+        rm.setResultCode(ResultInfo.SUCCESSCODE);
+        rm.setMessage(NameUtils.getConfig("SUCCESSINFO"));
+        rm.setData(map);
+        return rm;
+    }
 
 }

+ 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;
     }*/

+ 0 - 49
tooth-wechat-web/src/main/java/com/iamberry/wechat/handles/member/MemberHandler.java

@@ -366,54 +366,5 @@ public class MemberHandler {
 			}
 		}
 	}
-	/**
-	 * 获取个人信息
-	 * @param req
-	 * @return
-	 */
-	@RequestMapping("/getMyMemberInfo")
-	@ResponseBody
-	public ResultMsg getMyMemberInfo(HttpServletRequest req){
-		ResultMsg rm = new ResultMsg();
-		Member member = WechatUtils.getUserBySession(req);
-		member = memberService.getMyMemberInfo(member.getUserOpenid());
-		if(member==null){
-			rm.setStatus(false);
-			rm.setResultCode(ResultInfo.ERRORCODE);
-			rm.setMessage(NameUtils.getConfig("待完善"));
-			return rm;
-		}
-		rm.setStatus(true);
-		rm.setResultCode(ResultInfo.SUCCESSCODE);
-		rm.setMessage(NameUtils.getConfig("SUCCESSINFO"));
-		rm.setData(member);
-		return rm;
-	}
-
-	/**
-	 * 获取会员信息.会员等级名称
-	 * @param req
-	 * @return
-	 */
-	@RequestMapping("/getMemberInfoAndRankName")
-	@ResponseBody
-	public ResultMsg getMemberInfoAndRankName(HttpServletRequest req){
-		ResultMsg rm=new ResultMsg();
-		Member m=WechatUtils.getUserBySession(req);
-		String openid=m.getUserOpenid();
-		MemberIntegral mi=useIntegralService.getMemberInfoAndRankName(openid);
-		if(mi==null) {
-			rm.setStatus(false);
-			rm.setResultCode(ResultInfo.ERRORCODE);
-			rm.setMessage(NameUtils.getConfig("ERRORINFO"));
-			return rm;
-		}
-
-		rm.setStatus(true);
-		rm.setResultCode(ResultInfo.SUCCESSCODE);
-		rm.setMessage(NameUtils.getConfig("SUCCESSINFO"));
-		rm.setData(mi);
-		return rm;
-	}
 
 }

+ 1 - 0
tooth-wechat-web/src/main/java/com/iamberry/wechat/handles/porduct/ProductHandler.java

@@ -13,6 +13,7 @@ import javax.servlet.http.HttpServletResponse;
 import com.iamberry.wechat.core.entity.PageBean;
 import com.iamberry.wechat.core.entity.ResultMsg;
 import com.iamberry.wechat.core.entity.product.*;
+import com.iamberry.wechat.tools.NameUtils;
 import com.iamberry.wechat.tools.ResultInfo;
 import com.iamberry.wechat.utils.Result;
 import org.apache.commons.lang.StringUtils;

+ 2 - 21
tooth-wechat-web/src/main/java/com/iamberry/wechat/handles/porduct/ProductTypeHandler.java

@@ -7,6 +7,7 @@ import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
 import com.iamberry.wechat.core.entity.ResultMsg;
+import com.iamberry.wechat.core.entity.product.Product;
 import com.iamberry.wechat.tools.NameUtils;
 import com.iamberry.wechat.tools.ResultInfo;
 import org.apache.commons.lang.StringUtils;
@@ -26,6 +27,7 @@ import com.iamberry.wechat.face.porduct.ProductTypeService;
 public class ProductTypeHandler {
 	@Autowired
 	private ProductTypeService productTypeService;
+
 	
 	/**
 	 * 查询所有产品类型
@@ -140,25 +142,4 @@ public class ProductTypeHandler {
 		return "{\"status\":\"修改成功!\"}";
 	}
 
-	/**
-	 * 查询正在使用的产品类型列表
-	 * @return
-	 */
-	@RequestMapping("/listProductType")
-	@ResponseBody
-	public ResultMsg listProductType(){
-		ResultMsg rm=new ResultMsg();
-		List<ProductType> list=productTypeService.listProductType();
-		if(list.size()<0){
-			rm.setStatus(false);
-			rm.setResultCode(ResultInfo.ERRORCODE);
-			rm.setMessage(NameUtils.getConfig("ERRORINFO"));
-			return rm;
-		}
-		rm.setData(list);
-		rm.setResultCode(ResultInfo.SUCCESSCODE);
-		rm.setMessage(NameUtils.getConfig("SUCCESSINFO"));
-		rm.setStatus(true);
-		return rm;
-	}
 }

+ 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;
+    }
 }

+ 95 - 1
tooth-wechat-web/src/main/java/com/iamberry/wechat/utils/SendMessageUtil.java

@@ -74,9 +74,21 @@ public class SendMessageUtil {
 			case 10:  //10、奖品领取通知 
 				WeixinUtil.sendTemplateMessage(NameUtils.getConfig("appId"), NameUtils.getConfig("appSecret"), openId, ResultInfo.prize_receive_push, date, url);
 				break;
-			case 11:
+			case 11:  //11、更换电动牙刷通知
 				WeixinUtil.sendTemplateMessage(NameUtils.getConfig("appId"), NameUtils.getConfig("appSecret"), openId, ResultInfo.update_tooth_hint, date, url);
 				break;
+			case 12:  //12、用户申请退款提醒
+				WeixinUtil.sendTemplateMessage(NameUtils.getConfig("appId"), NameUtils.getConfig("appSecret"), openId, ResultInfo.order_apply_refund, date, url);
+				break;
+			case 13:  //13、用户 申请退货 提醒
+				WeixinUtil.sendTemplateMessage(NameUtils.getConfig("appId"), NameUtils.getConfig("appSecret"), openId, ResultInfo.order_apply_return, date, url);
+				break;
+			case 14:  //14、用户 申请换货 提醒
+				WeixinUtil.sendTemplateMessage(NameUtils.getConfig("appId"), NameUtils.getConfig("appSecret"), openId, ResultInfo.order_apply_barter, date, url);
+				break;
+			case 15:  //15、发货后 提醒
+				WeixinUtil.sendTemplateMessage(NameUtils.getConfig("appId"), NameUtils.getConfig("appSecret"), openId, ResultInfo.order_send_success, date, url);
+				break;
 			default: 
 				break;
 			}
@@ -234,4 +246,86 @@ public class SendMessageUtil {
 				.replaceFirst("remarkValue",remark);
 		sendTemplateMessageToOpenid(temp, openId, url,11);
 	}
+
+	/**
+	 * 换货提醒信息
+	 * @param first
+	 * @param keyword1
+	 * @param keyword2
+	 * @param remark
+	 * @param openId
+	 * @param url
+	 */
+	public void orderApplyBarter(String first,String keyword1,String keyword2,String remark,String openId,String url){
+		String temp = ResultInfo.APPLYBARTER;
+		temp = temp.replaceFirst("firstValueIamberry", first)
+				.replaceFirst("keyword1Value",keyword1)
+				.replaceFirst("keyword2Value",keyword2)
+				.replaceFirst("colorValue","#1C86EE")
+				.replaceFirst("remarkValue",remark);
+		sendTemplateMessageToOpenid(temp, openId, url,14);
+	}
+
+	/**
+	 * 退款提醒信息
+	 * @param first
+	 * @param keyword1
+	 * @param keyword2
+	 * @param remark
+	 * @param openId
+	 * @param url
+	 */
+	public void orderApplyRefund(String first,String keyword1,String keyword2,String keyword3,String remark,String openId,String url){
+		String temp = ResultInfo.APPLYREFUND;
+		temp = temp.replaceFirst("firstValueIamberry", first)
+				.replaceFirst("keyword1Value",keyword1)
+				.replaceFirst("keyword2Value",keyword2)
+				.replaceFirst("keyword3Value",keyword3)
+				.replaceFirst("colorValue","#1C86EE")
+				.replaceFirst("remarkValue",remark);
+		sendTemplateMessageToOpenid(temp, openId, url,12);
+	}
+
+	/**
+	 * 退货提醒信息
+	 * @param first
+	 * @param keyword1
+	 * @param keyword2
+	 * @param remark
+	 * @param openId
+	 * @param url
+	 */
+	public void orderApplyReturn(String first,String keyword1,String keyword2,String keyword3,String keyword4,String remark,String openId,String url){
+		String temp = ResultInfo.APPLYRETURN;
+		temp = temp.replaceFirst("firstValueIamberry", first)
+				.replaceFirst("keyword1Value",keyword1)
+				.replaceFirst("keyword2Value",keyword2)
+				.replaceFirst("keyword3Value",keyword3)
+				.replaceFirst("keyword4Value",keyword4)
+				.replaceFirst("colorValue","#1C86EE")
+				.replaceFirst("remarkValue",remark);
+		sendTemplateMessageToOpenid(temp, openId, url,13);
+	}
+
+	/**
+	 * 发货提醒信息
+	 * @param first
+	 * @param keyword1
+	 * @param keyword2
+	 * @param remark
+	 * @param openId
+	 * @param url
+	 */
+	public void orderSendSuccess(String first,String keyword1,String keyword2,String keyword3,String keyword4,String remark,String openId,String url){
+		String temp = ResultInfo.SENDSUCCESS;
+		temp = temp.replaceFirst("firstValueIamberry", first)
+				.replaceFirst("keyword1Value",keyword1)
+				.replaceFirst("keyword2Value",keyword2)
+				.replaceFirst("keyword3Value",keyword3)
+				.replaceFirst("keyword4Value",keyword4)
+				.replaceFirst("colorValue","#1C86EE")
+				.replaceFirst("remarkValue",remark);
+		sendTemplateMessageToOpenid(temp, openId, url,15);
+	}
+
 }

+ 4 - 0
tooth-wechat-web/src/main/resources/ResultInfo.properties

@@ -68,4 +68,8 @@ probation_pay_success=SrPdazrlMtsScC5w06C0ktqY-VnpLRCIqTeVtvtwxks
 probation_shut_down=QzfF4V8M9xXHR24kLsDABKNWGBGRVDVT0CSLQ_X3mpg
 prize_receive_push=7d_r3XJsY5MAISYCDxrjdnPXgNm3IU8XLRYWXbCJjbs
 update_tooth_hint=Ca7Yj8rbRPF6cnL5ZU3-gN9Bu2v98Jj_g2R0yw8NuAs
+order_apply_barter=i4WvtaMw3zJHP4PLmqkvM8l3EXHIFmGL9vysfjn1NKA
+order_apply_return=rypqDnrOLbEjTsFJFBa35jOSsFG_-A1i9hB6OjI8zQY
+order_apply_refund=ySwst_myzaUGRm3T56308QISvPIiP4ZXG2SqjD9qlEw
+order_send_success=eMk2Cu5IUPTIUVlNK5MdHNo6-QFiax3p85VBJXJfbTM
 

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

@@ -239,6 +239,7 @@
 		<typeAlias type="com.iamberry.wechat.core.entity.integral.IntegralConfig" alias="IntegralConfig"/>
 		<typeAlias type="com.iamberry.wechat.core.entity.integral.MemberIntegral" alias="MemberIntegral"/>
 		<typeAlias type="com.iamberry.wechat.core.entity.integral.RankRule" alias="RankRule"/>
+		<typeAlias type="com.iamberry.wechat.core.entity.integral.StayIntegral" alias="StayIntegral"/>
 
 		<package name="com.iamberry.wechat.core.entity.rent"/>
 	</typeAliases>

+ 2 - 0
tooth-wechat-web/src/main/resources/platform.properties

@@ -130,6 +130,8 @@ app_secret=8888
 sd_id=001
 # sd_idt	\u592A\u539F\u5E97\u94FA	test:001		watero:9
 sd_idt=001
+#rst_base_url
+rst_base_url=http://test.iamberry.com/rst/mcahine/getMachineInfo?barCode=
 # efast_base_url
 efast_base_url=http://121.199.165.244/efast_test/efast_api/webservice/web/index.php
 

+ 78 - 16
tooth-wechat-web/src/main/webapp/WEB-INF/views/admin/order/orderList.jsp

@@ -94,6 +94,28 @@
 		</span>
 	</div>
 
+<!-- 审核备注 -->
+	<div class="layui-layer layui-anim layui-layer-iframe" id="layui-audit" times="4" showtime="0" contype="string" style="display:none;z-index: 19891018; width: 400px; height: 260px; position: absolute; top: 100px; left: 379px;">
+		<form action="" method="post" class="form form-horizontal" id="form-admin-audit">
+			<div class="layui-layer-title" id="audit" style="cursor: move;" move="ok">审核备注</div>
+			<br>
+			<div class="row cl">
+				<label class="form-label col-3"><span class="c-red">*</span>&nbsp;审核备注:</label>
+				<div class="formControls col-5">
+					<input type="text" id="salesAuditRemark" name="salesAuditRemark" class="input-text" value="" placeholder="请输入审核备注" nullmsg="审核备注不能为空">
+				</div>
+				<div class="col-4"> </div>
+			</div>
+			<br>
+			<div class="col-9 col-offset-3">
+				<input class="btn btn-primary radius" onclick="return audit_order()" type="submit" value="&nbsp;&nbsp;确认&nbsp;&nbsp;">
+			</div>
+		</form>
+		<span class="layui-layer-setwin">
+					<a class="layui-layer-ico layui-layer-close layui-layer-close1" onclick="exitWindowsDiv(this)" href="javascript:;"></a>
+			</span>
+	</div>
+
 	<!-- 后台备注 -->
 	<div class="layui-layer layui-anim layui-layer-iframe" id="layui-remark" times="4" showtime="0" contype="string" style="display:none;z-index: 19891018; width: 400px; height: 260px; position: absolute; top: 100px; left: 379px;">
 		<form action="" method="post" class="form form-horizontal" id="form-admin-remark">
@@ -340,30 +362,58 @@
 						var url = $a.attr("href");
 						$("#url").val(url);
 						return false;
-						/*var url = $a.attr("href");
-						 $.ajax({
-						 type:'POST',
-						 url: url,
-						 dataType: 'json',
-						 success:function(data) {
-						 location.reload();
-						 }
-						 });
-						 return false;*/
+                    } else if (orderStatusStr == "驳回退款" || orderStatusStr == "确认退款"
+						|| orderStatusStr == "同意退货,等待收货" || orderStatusStr == "驳回退货"
+						|| orderStatusStr == "同意换货" || orderStatusStr == "驳回换货") {
+                        orderid = $a.attr("lang");
+                        $("#layui-audit").show();
+                        $("#form-admin-audit").attr("action", $a.attr("href"));
+                        return false;
+                    } else if (orderStatusStr == "标记财务已退款") {
+                        var url = $a.attr("href");
+                        //禁止<a>跳转
+                        stopDefault($a.attr("href"));
+                        $.ajax({
+                            type: "GET",
+                            url: url,
+                            traditional: true,
+                            dataType: "json",
+                            success: function (data) {
+								if (data.status) {
+                                    layer.msg("标记成功!",{icon: 1,time:2000});
+                                    //使用  setTimeout()方法设定定时2000毫秒
+                                    setTimeout(function(){
+										window.location.reload();
+                                    },2000);
+                                } else {
+                                    layer.msg(data.message,{icon: 5,time:2000});
+								}
+                            }
+                        });
                     }
 					return true;
 				}
 
-				function submitSendOrder() {
-				    var postNumId = $('#order-post-num-id').val();
-				    var postFirm = $('#postFirm').val();
-				    if (postNumId == null || postNumId == '') {
+				//禁止链接跳转
+                function stopDefault( e ) {
+                    if ( e && e.preventDefault )
+                        e.preventDefault();
+                    else
+                        window.event.returnValue = false;
+
+                    return false;
+                }
+
+                function submitSendOrder() {
+                    var postNumId = $('#order-post-num-id').val();
+                    var postFirm = $('#postFirm').val();
+                    if (postNumId == null || postNumId == '') {
                         layer.msg("请填写物流编号!",{icon: 5,time:2000});
-				        return false;
+                        return false;
                     }
                     if (postFirm == null || postFirm == '') {
                         layer.msg("请选择物流公司!",{icon: 5,time:2000});
-				        return false;
+                        return false;
                     }
                 }
 				
@@ -474,6 +524,18 @@
                     layer.closeAll();
                 });
 
+                /**
+				 * 审核订单
+				 */
+                function audit_order() {
+                    var salesAuditRemark = $('#salesAuditRemark').val();
+                    if (salesAuditRemark == null || salesAuditRemark == '') {
+                        layer.msg("请完善审核备注!",{icon: 5,time:2000});
+                        return false;
+                    }
+                    return true;
+                }
+
 				/**
 				 * 同步订单状态
 				 */