Explorar o código

Merge branch 'master' of http://47.112.200.206:3000/shenhao/sys

shenhao %!s(int64=5) %!d(string=hai) anos
pai
achega
d4e7b7b488
Modificáronse 54 ficheiros con 9476 adicións e 3273 borrados
  1. 2 6
      src/main/java/com/ssj/api/controller/ApiMerchantController.java
  2. 2 67
      src/main/java/com/ssj/bean/sys/fx/domain/Merchant.java
  3. 80 148
      src/main/java/com/ssj/bean/sys/fx/domain/MerchantBackup.java
  4. 119 0
      src/main/java/com/ssj/bean/sys/fx/domain/MerchantMeal.java
  5. 149 0
      src/main/java/com/ssj/bean/sys/fx/domain/MerchantMealOrder.java
  6. 67 0
      src/main/java/com/ssj/bean/sys/fx/domain/MerchantPlatOrder.java
  7. 20 20
      src/main/java/com/ssj/bean/sys/fx/domain/MerchantSign.java
  8. 107 0
      src/main/java/com/ssj/bean/sys/fx/domain/MerchantSignOrder.java
  9. 18 0
      src/main/java/com/ssj/dao/sys/fx/dao/FxQueryDao.java
  10. 1 1
      src/main/java/com/ssj/dao/sys/fx/dao/MerchantDao.java
  11. 37 0
      src/main/java/com/ssj/dao/sys/fx/dao/MerchantMealDao.java
  12. 29 0
      src/main/java/com/ssj/dao/sys/fx/dao/MerchantMealOrderDao.java
  13. 17 0
      src/main/java/com/ssj/dao/sys/fx/dao/MerchantPlatOrderDao.java
  14. 2 10
      src/main/java/com/ssj/dao/sys/fx/dao/MerchantSignDao.java
  15. 16 0
      src/main/java/com/ssj/dao/sys/fx/dao/MerchantSignOrderDao.java
  16. 232 6
      src/main/java/com/ssj/dao/sys/fx/dao/impl/FxQueryDaoImpl.java
  17. 1 1
      src/main/java/com/ssj/framework/basic/utils/DateHelper.java
  18. 22 0
      src/main/java/com/ssj/service/sys/fx/service/MerchantMealOrderService.java
  19. 32 0
      src/main/java/com/ssj/service/sys/fx/service/MerchantMealService.java
  20. 20 0
      src/main/java/com/ssj/service/sys/fx/service/MerchantPlatOrderService.java
  21. 3 0
      src/main/java/com/ssj/service/sys/fx/service/MerchantService.java
  22. 18 0
      src/main/java/com/ssj/service/sys/fx/service/MerchantSignOrderService.java
  23. 5 16
      src/main/java/com/ssj/service/sys/fx/service/MerchantSignService.java
  24. 2 0
      src/main/java/com/ssj/service/sys/fx/service/impl/MerchantBackupServiceImpl.java
  25. 71 0
      src/main/java/com/ssj/service/sys/fx/service/impl/MerchantMealOrderServiceImpl.java
  26. 376 0
      src/main/java/com/ssj/service/sys/fx/service/impl/MerchantMealServiceImpl.java
  27. 51 0
      src/main/java/com/ssj/service/sys/fx/service/impl/MerchantPlatOrderServiceImpl.java
  28. 73 420
      src/main/java/com/ssj/service/sys/fx/service/impl/MerchantServiceImpl.java
  29. 2174 0
      src/main/java/com/ssj/service/sys/fx/service/impl/MerchantServiceImpl_202012225.txt
  30. 51 0
      src/main/java/com/ssj/service/sys/fx/service/impl/MerchantSignOrderServiceImpl.java
  31. 71 591
      src/main/java/com/ssj/service/sys/fx/service/impl/MerchantSignServiceImpl.java
  32. 646 0
      src/main/java/com/ssj/service/sys/fx/service/impl/MerchantSignServiceImpl.txt
  33. 1 1
      src/main/java/com/ssj/service/weixin/sales/service/impl/LibVipServiceServiceImpl.java
  34. 2103 1233
      src/main/java/com/ssj/sys/controller/FxController.java
  35. 27 14
      src/main/java/com/ssj/task/sz/MerchantSummaryTask.java
  36. 1 70
      src/main/resources/templates/sys/fx/merchantAdd.html
  37. 97 155
      src/main/resources/templates/sys/fx/merchantAllList.html
  38. 25 4
      src/main/resources/templates/sys/fx/merchantAllMain.html
  39. 65 409
      src/main/resources/templates/sys/fx/merchantBackupList.html
  40. 139 0
      src/main/resources/templates/sys/fx/merchantCapList.html
  41. 530 0
      src/main/resources/templates/sys/fx/merchantMealAdd.html
  42. 108 0
      src/main/resources/templates/sys/fx/merchantMealList.html
  43. 136 0
      src/main/resources/templates/sys/fx/merchantMealOrderList.html
  44. 497 0
      src/main/resources/templates/sys/fx/merchantMealScAdd.html
  45. 129 0
      src/main/resources/templates/sys/fx/merchantMealStatusList.html
  46. 2 2
      src/main/resources/templates/sys/fx/merchantOldAdd.html
  47. 329 0
      src/main/resources/templates/sys/fx/merchantPlatAdd.html
  48. 109 0
      src/main/resources/templates/sys/fx/merchantPlatOrderList.html
  49. 1 72
      src/main/resources/templates/sys/fx/merchantScAdd.html
  50. 397 0
      src/main/resources/templates/sys/fx/merchantSignAdd.html
  51. 19 27
      src/main/resources/templates/sys/fx/merchantSignList.html
  52. 129 0
      src/main/resources/templates/sys/fx/merchantSignOrderList.html
  53. 115 0
      src/main/resources/templates/sys/fx/merchantSignStatusList.html
  54. 3 0
      src/main/resources/templates/sys/lib/libJoinAdd.html

+ 2 - 6
src/main/java/com/ssj/api/controller/ApiMerchantController.java

@@ -104,9 +104,7 @@ public class ApiMerchantController extends BaseController {
 									merchant.getLibService(),
 									merchant.getStartActiveTime()!=null ? format.format(merchant.getStartActiveTime()) : "",
 									merchant.getComputeTime()!=null ? format.format(merchant.getComputeTime()) : format.format(merchant.getActiveTime()),
-									merchant.getComputeTime()!=null ? 
-											format.format(DateHelper.getMonthDate(merchant.getComputeTime(),merchant.getLibServiceMonth())) : 
-												format.format(DateHelper.getMonthDate(merchant.getActiveTime(),merchant.getLibServiceMonth())));
+									merchant.getEndActiveTime()!=null ? format.format(merchant.getEndActiveTime()) :"" );
 						}
         			}else {
         				
@@ -141,9 +139,7 @@ public class ApiMerchantController extends BaseController {
         		data.put("startActiveTime", merchant.getStartActiveTime()!=null ?  format.format(merchant.getStartActiveTime()) : "");
         		data.put("summaryTime", merchant.getComputeTime()!=null ? 
         				format.format(merchant.getComputeTime()) :  format.format(merchant.getActiveTime()));
-        		data.put("endSummaryTime", merchant.getComputeTime()!=null ? 
-        				format.format(DateHelper.getMonthDate(merchant.getComputeTime(),merchant.getLibServiceMonth())) : 
-        					format.format(DateHelper.getMonthDate(merchant.getActiveTime(),merchant.getLibServiceMonth())) );
+        		data.put("endSummaryTime", merchant.getEndActiveTime()!=null ? format.format(merchant.getEndActiveTime()) : "");
         		data.put("signType", merchant.getSignType());
         		data.put("mealType", merchant.getMealType());
         		data.put("libService", merchant.getLibService());

+ 2 - 67
src/main/java/com/ssj/bean/sys/fx/domain/Merchant.java

@@ -72,8 +72,6 @@ public class Merchant extends BaseEntity {
 	
 	private Integer libService;
 	
-	private Integer libServiceMonth;
-	
 	private Integer platformService;
 	
 	private Integer signService;
@@ -104,8 +102,6 @@ public class Merchant extends BaseEntity {
 	
 	private Date computeTime;
 	
-	private Double munitPrice;
-	
 	private String signerPerson;
 	
 	private String contractNo;
@@ -114,14 +110,6 @@ public class Merchant extends BaseEntity {
 	
 	private Integer posType;
 	
-	private Integer buyMonth;
-	
-	private Integer giveMonth;
-	
-    private Double plusAmountPrice;
-    
-    private Double plusMonthPrice;
-	
 	@Transient
 	private List<Merchant> subMerchants=new ArrayList<Merchant>();
 	
@@ -338,10 +326,8 @@ public class Merchant extends BaseEntity {
 		this.curSummaryTime = curSummaryTime;
 	}
 
-	@OneToOne(cascade = { CascadeType.PERSIST}, fetch=FetchType.EAGER)
-	@JoinColumn(name="libId",updatable =false,insertable =false)
-	@NotFound(action=NotFoundAction.IGNORE)
-	@Fetch(FetchMode.SELECT)
+	@OneToOne(fetch=FetchType.LAZY)
+	@JoinColumn(name="libId",updatable =false,insertable =false,nullable=true)
 	public TbLibJoin getLibJoin() {
 		return libJoin;
 	}
@@ -407,14 +393,6 @@ public class Merchant extends BaseEntity {
 		this.signType = signType;
 	}
 
-	public Integer getLibServiceMonth() {
-		return libServiceMonth;
-	}
-
-	public void setLibServiceMonth(Integer libServiceMonth) {
-		this.libServiceMonth = libServiceMonth;
-	}
-
 	public Integer getMealType() {
 		return mealType;
 	}
@@ -456,15 +434,6 @@ public class Merchant extends BaseEntity {
 		this.endActiveTime = endActiveTime;
 	}
 
-
-	public Double getMunitPrice() {
-		return munitPrice;
-	}
-
-	public void setMunitPrice(Double munitPrice) {
-		this.munitPrice = munitPrice;
-	}
-
 	public String getSignerPerson() {
 		return signerPerson;
 	}
@@ -497,38 +466,4 @@ public class Merchant extends BaseEntity {
 		this.posType = posType;
 	}
 
-	public Integer getBuyMonth() {
-		return buyMonth;
-	}
-
-	public void setBuyMonth(Integer buyMonth) {
-		this.buyMonth = buyMonth;
-	}
-
-	public Integer getGiveMonth() {
-		return giveMonth;
-	}
-
-	public void setGiveMonth(Integer giveMonth) {
-		this.giveMonth = giveMonth;
-	}
-
-	public Double getPlusAmountPrice() {
-		return plusAmountPrice;
-	}
-
-	public void setPlusAmountPrice(Double plusAmountPrice) {
-		this.plusAmountPrice = plusAmountPrice;
-	}
-
-	public Double getPlusMonthPrice() {
-		return plusMonthPrice;
-	}
-
-	public void setPlusMonthPrice(Double plusMonthPrice) {
-		this.plusMonthPrice = plusMonthPrice;
-	}
-	
-	
-
 }

+ 80 - 148
src/main/java/com/ssj/bean/sys/fx/domain/MerchantBackup.java

@@ -1,8 +1,6 @@
 package com.ssj.bean.sys.fx.domain;
 
-import java.util.ArrayList;
 import java.util.Date;
-import java.util.List;
 
 import javax.persistence.CascadeType;
 import javax.persistence.Entity;
@@ -10,7 +8,6 @@ import javax.persistence.FetchType;
 import javax.persistence.JoinColumn;
 import javax.persistence.OneToOne;
 import javax.persistence.Table;
-import javax.persistence.Transient;
 
 import org.hibernate.annotations.Fetch;
 import org.hibernate.annotations.FetchMode;
@@ -26,6 +23,8 @@ public class MerchantBackup extends BaseEntity {
 	
     private static final long serialVersionUID = 1L;
     
+    private String merchantId;
+    
     private String posCode;
     
     private String orgCode;
@@ -72,8 +71,6 @@ public class MerchantBackup extends BaseEntity {
 	
 	private Integer libService;
 	
-	private Integer libServiceMonth;
-	
 	private Integer platformService;
 	
 	private Integer signService;
@@ -103,8 +100,6 @@ public class MerchantBackup extends BaseEntity {
 	private Date endActiveTime;
 	
 	private Date computeTime;
-    
-	private Double munitPrice;
 	
 	private String signerPerson;
 	
@@ -114,33 +109,26 @@ public class MerchantBackup extends BaseEntity {
 	
 	private Integer posType;
 	
-	private Integer buyMonth;
-	
-	private Integer giveMonth;
-	
-    private Double plusAmountPrice;
-    
-    private Double plusMonthPrice;
-	
 	private String backupMonth;
 
-	@Transient
-	private List<Merchant> subMerchants=new ArrayList<Merchant>();
-	
-	public String getSaleLoginName() {
-		return saleLoginName;
+	@OneToOne(cascade = { CascadeType.PERSIST}, fetch=FetchType.EAGER)
+	@JoinColumn(name="libId",updatable =false,insertable =false)
+	@NotFound(action=NotFoundAction.IGNORE)
+	@Fetch(FetchMode.SELECT)
+	public TbLibJoin getLibJoin() {
+		return libJoin;
 	}
 
-	public void setSaleLoginName(String saleLoginName) {
-		this.saleLoginName = saleLoginName;
+	public void setLibJoin(TbLibJoin libJoin) {
+		this.libJoin = libJoin;
 	}
 
-	public Date getSignTime() {
-		return signTime;
+	public String getPosCode() {
+		return posCode;
 	}
 
-	public void setSignTime(Date signTime) {
-		this.signTime = signTime;
+	public void setPosCode(String posCode) {
+		this.posCode = posCode;
 	}
 
 	public String getOrgCode() {
@@ -151,14 +139,6 @@ public class MerchantBackup extends BaseEntity {
 		this.orgCode = orgCode;
 	}
 
-	public String getPosCode() {
-		return posCode;
-	}
-
-	public void setPosCode(String posCode) {
-		this.posCode = posCode;
-	}
-
 	public String getManageUserId() {
 		return manageUserId;
 	}
@@ -271,10 +251,21 @@ public class MerchantBackup extends BaseEntity {
 		this.price = price;
 	}
 
-	public static long getSerialversionuid() {
-		return serialVersionUID;
+	public Double getHardwarePrice() {
+		return hardwarePrice;
 	}
 
+	public void setHardwarePrice(Double hardwarePrice) {
+		this.hardwarePrice = hardwarePrice;
+	}
+
+	public String getSaleLoginName() {
+		return saleLoginName;
+	}
+
+	public void setSaleLoginName(String saleLoginName) {
+		this.saleLoginName = saleLoginName;
+	}
 
 	public Double getOutPrice() {
 		return outPrice;
@@ -292,6 +283,14 @@ public class MerchantBackup extends BaseEntity {
 		this.libId = libId;
 	}
 
+	public Integer getPortNum() {
+		return portNum;
+	}
+
+	public void setPortNum(Integer portNum) {
+		this.portNum = portNum;
+	}
+
 	public Integer getLibService() {
 		return libService;
 	}
@@ -308,28 +307,36 @@ public class MerchantBackup extends BaseEntity {
 		this.platformService = platformService;
 	}
 
-	public Date getEndSignTime() {
-		return endSignTime;
+	public Integer getSignService() {
+		return signService;
 	}
 
-	public void setEndSignTime(Date endSignTime) {
-		this.endSignTime = endSignTime;
+	public void setSignService(Integer signService) {
+		this.signService = signService;
 	}
-	
-	public Integer getPortNum() {
-		return portNum;
+
+	public Integer getHardwareService() {
+		return hardwareService;
 	}
 
-	public void setPortNum(Integer portNum) {
-		this.portNum = portNum;
+	public void setHardwareService(Integer hardwareService) {
+		this.hardwareService = hardwareService;
 	}
 
-	public Date getNextSummaryTime() {
-		return nextSummaryTime;
+	public Date getSignTime() {
+		return signTime;
 	}
 
-	public void setNextSummaryTime(Date nextSummaryTime) {
-		this.nextSummaryTime = nextSummaryTime;
+	public void setSignTime(Date signTime) {
+		this.signTime = signTime;
+	}
+
+	public Date getEndSignTime() {
+		return endSignTime;
+	}
+
+	public void setEndSignTime(Date endSignTime) {
+		this.endSignTime = endSignTime;
 	}
 
 	public Date getCurSummaryTime() {
@@ -340,16 +347,12 @@ public class MerchantBackup extends BaseEntity {
 		this.curSummaryTime = curSummaryTime;
 	}
 
-	@OneToOne(cascade = { CascadeType.PERSIST}, fetch=FetchType.EAGER)
-	@JoinColumn(name="libId",updatable =false,insertable =false)
-	@NotFound(action=NotFoundAction.IGNORE)
-	@Fetch(FetchMode.SELECT)
-	public TbLibJoin getLibJoin() {
-		return libJoin;
+	public Date getNextSummaryTime() {
+		return nextSummaryTime;
 	}
 
-	public void setLibJoin(TbLibJoin libJoin) {
-		this.libJoin = libJoin;
+	public void setNextSummaryTime(Date nextSummaryTime) {
+		this.nextSummaryTime = nextSummaryTime;
 	}
 
 	public Integer getCurIsSummary() {
@@ -360,39 +363,6 @@ public class MerchantBackup extends BaseEntity {
 		this.curIsSummary = curIsSummary;
 	}
 
-	public Integer getSignService() {
-		return signService;
-	}
-
-	public void setSignService(Integer signService) {
-		this.signService = signService;
-	}
-	
-	@Transient
-	public List<Merchant> getSubMerchants() {
-		return subMerchants;
-	}
-
-	public void setSubMerchants(List<Merchant> subMerchants) {
-		this.subMerchants = subMerchants;
-	}
-
-	public Integer getHardwareService() {
-		return hardwareService;
-	}
-
-	public void setHardwareService(Integer hardwareService) {
-		this.hardwareService = hardwareService;
-	}
-
-	public Double getHardwarePrice() {
-		return hardwarePrice;
-	}
-
-	public void setHardwarePrice(Double hardwarePrice) {
-		this.hardwarePrice = hardwarePrice;
-	}
-
 	public String getAddress() {
 		return address;
 	}
@@ -409,14 +379,6 @@ public class MerchantBackup extends BaseEntity {
 		this.signType = signType;
 	}
 
-	public Integer getLibServiceMonth() {
-		return libServiceMonth;
-	}
-
-	public void setLibServiceMonth(Integer libServiceMonth) {
-		this.libServiceMonth = libServiceMonth;
-	}
-
 	public Integer getMealType() {
 		return mealType;
 	}
@@ -425,22 +387,6 @@ public class MerchantBackup extends BaseEntity {
 		this.mealType = mealType;
 	}
 
-	public Date getActiveTime() {
-		return activeTime;
-	}
-
-	public void setActiveTime(Date activeTime) {
-		this.activeTime = activeTime;
-	}
-
-	public Date getComputeTime() {
-		return computeTime;
-	}
-
-	public void setComputeTime(Date computeTime) {
-		this.computeTime = computeTime;
-	}
-
 	public Date getStartActiveTime() {
 		return startActiveTime;
 	}
@@ -449,12 +395,12 @@ public class MerchantBackup extends BaseEntity {
 		this.startActiveTime = startActiveTime;
 	}
 
-	public String getBackupMonth() {
-		return backupMonth;
+	public Date getActiveTime() {
+		return activeTime;
 	}
 
-	public void setBackupMonth(String backupMonth) {
-		this.backupMonth = backupMonth;
+	public void setActiveTime(Date activeTime) {
+		this.activeTime = activeTime;
 	}
 
 	public Date getEndActiveTime() {
@@ -465,6 +411,14 @@ public class MerchantBackup extends BaseEntity {
 		this.endActiveTime = endActiveTime;
 	}
 
+	public Date getComputeTime() {
+		return computeTime;
+	}
+
+	public void setComputeTime(Date computeTime) {
+		this.computeTime = computeTime;
+	}
+
 	public String getSignerPerson() {
 		return signerPerson;
 	}
@@ -497,44 +451,22 @@ public class MerchantBackup extends BaseEntity {
 		this.posType = posType;
 	}
 
-	public Double getMunitPrice() {
-		return munitPrice;
-	}
-
-	public void setMunitPrice(Double munitPrice) {
-		this.munitPrice = munitPrice;
-	}
-
-	public Integer getBuyMonth() {
-		return buyMonth;
-	}
-
-	public void setBuyMonth(Integer buyMonth) {
-		this.buyMonth = buyMonth;
-	}
-
-	public Integer getGiveMonth() {
-		return giveMonth;
+	public String getBackupMonth() {
+		return backupMonth;
 	}
 
-	public void setGiveMonth(Integer giveMonth) {
-		this.giveMonth = giveMonth;
+	public void setBackupMonth(String backupMonth) {
+		this.backupMonth = backupMonth;
 	}
 
-	public Double getPlusAmountPrice() {
-		return plusAmountPrice;
+	public String getMerchantId() {
+		return merchantId;
 	}
 
-	public void setPlusAmountPrice(Double plusAmountPrice) {
-		this.plusAmountPrice = plusAmountPrice;
+	public void setMerchantId(String merchantId) {
+		this.merchantId = merchantId;
 	}
 
-	public Double getPlusMonthPrice() {
-		return plusMonthPrice;
-	}
 
-	public void setPlusMonthPrice(Double plusMonthPrice) {
-		this.plusMonthPrice = plusMonthPrice;
-	}
 
 }

+ 119 - 0
src/main/java/com/ssj/bean/sys/fx/domain/MerchantMeal.java

@@ -0,0 +1,119 @@
+package com.ssj.bean.sys.fx.domain;
+
+import java.util.Date;
+
+import javax.persistence.Entity;
+import javax.persistence.Table;
+
+import com.ssj.bean.common.framework.core.domain.BaseEntity;
+
+@Entity
+@Table(name = "fx_merchant_meal")
+public class MerchantMeal extends BaseEntity {
+	
+    private static final long serialVersionUID = 1L;
+    
+    private String orderId;
+    
+    private String merchantId;
+    
+    private Integer signType;
+    
+    private Date signTime;
+    
+    private Date endSignTime;
+    
+    private Integer libService;
+    
+    private Date createTime;
+    
+    private Integer status;
+    
+    private Date updateTime;
+    
+    private String remarks;
+
+	public String getOrderId() {
+		return orderId;
+	}
+
+	public void setOrderId(String orderId) {
+		this.orderId = orderId;
+	}
+
+	public String getMerchantId() {
+		return merchantId;
+	}
+
+	public void setMerchantId(String merchantId) {
+		this.merchantId = merchantId;
+	}
+
+	public Integer getSignType() {
+		return signType;
+	}
+
+	public void setSignType(Integer signType) {
+		this.signType = signType;
+	}
+
+	public Date getSignTime() {
+		return signTime;
+	}
+
+	public void setSignTime(Date signTime) {
+		this.signTime = signTime;
+	}
+
+	public Date getEndSignTime() {
+		return endSignTime;
+	}
+
+	public void setEndSignTime(Date endSignTime) {
+		this.endSignTime = endSignTime;
+	}
+
+	public Integer getLibService() {
+		return libService;
+	}
+
+	public void setLibService(Integer libService) {
+		this.libService = libService;
+	}
+
+	public Date getCreateTime() {
+		return createTime;
+	}
+
+	public void setCreateTime(Date createTime) {
+		this.createTime = createTime;
+	}
+
+	public Integer getStatus() {
+		return status;
+	}
+
+	public void setStatus(Integer status) {
+		this.status = status;
+	}
+
+	public Date getUpdateTime() {
+		return updateTime;
+	}
+
+	public void setUpdateTime(Date updateTime) {
+		this.updateTime = updateTime;
+	}
+
+	public String getRemarks() {
+		return remarks;
+	}
+
+	public void setRemarks(String remarks) {
+		this.remarks = remarks;
+	}
+    
+    
+	
+	
+}

+ 149 - 0
src/main/java/com/ssj/bean/sys/fx/domain/MerchantMealOrder.java

@@ -0,0 +1,149 @@
+package com.ssj.bean.sys.fx.domain;
+
+import java.util.Date;
+
+import javax.persistence.Entity;
+import javax.persistence.Table;
+
+import com.ssj.bean.common.framework.core.domain.BaseEntity;
+
+@Entity
+@Table(name = "fx_merchant_meal_order")
+public class MerchantMealOrder extends BaseEntity {
+	
+    private static final long serialVersionUID = 1L;
+    
+    private String merchantId;
+    
+    private Integer signType;
+    
+    private Integer portNum;
+    
+    private Integer type;
+    
+    private Integer buyMonth;
+    
+    private Integer giveMonth;
+    
+    private Date signTime;
+    
+    private Date endSignTime;
+    
+    private Integer libService;
+    
+    private Double unitPrice;
+    
+    private Double price;
+    
+    private Date createTime;
+    
+    private String remarks;
+
+	public String getMerchantId() {
+		return merchantId;
+	}
+
+	public void setMerchantId(String merchantId) {
+		this.merchantId = merchantId;
+	}
+
+	public Integer getSignType() {
+		return signType;
+	}
+
+	public void setSignType(Integer signType) {
+		this.signType = signType;
+	}
+
+	public Integer getType() {
+		return type;
+	}
+
+	public void setType(Integer type) {
+		this.type = type;
+	}
+
+	public Integer getBuyMonth() {
+		return buyMonth;
+	}
+
+	public void setBuyMonth(Integer buyMonth) {
+		this.buyMonth = buyMonth;
+	}
+
+	public Integer getGiveMonth() {
+		return giveMonth;
+	}
+
+	public void setGiveMonth(Integer giveMonth) {
+		this.giveMonth = giveMonth;
+	}
+
+	public Date getSignTime() {
+		return signTime;
+	}
+
+	public void setSignTime(Date signTime) {
+		this.signTime = signTime;
+	}
+
+	public Date getEndSignTime() {
+		return endSignTime;
+	}
+
+	public void setEndSignTime(Date endSignTime) {
+		this.endSignTime = endSignTime;
+	}
+
+	public Integer getLibService() {
+		return libService;
+	}
+
+	public void setLibService(Integer libService) {
+		this.libService = libService;
+	}
+
+	public Double getUnitPrice() {
+		return unitPrice;
+	}
+
+	public void setUnitPrice(Double unitPrice) {
+		this.unitPrice = unitPrice;
+	}
+
+	public Double getPrice() {
+		return price;
+	}
+
+	public void setPrice(Double price) {
+		this.price = price;
+	}
+
+	public Date getCreateTime() {
+		return createTime;
+	}
+
+	public void setCreateTime(Date createTime) {
+		this.createTime = createTime;
+	}
+
+	public String getRemarks() {
+		return remarks;
+	}
+
+	public void setRemarks(String remarks) {
+		this.remarks = remarks;
+	}
+
+	public Integer getPortNum() {
+		return portNum;
+	}
+
+	public void setPortNum(Integer portNum) {
+		this.portNum = portNum;
+	}
+  
+    
+	
+	
+}

+ 67 - 0
src/main/java/com/ssj/bean/sys/fx/domain/MerchantPlatOrder.java

@@ -0,0 +1,67 @@
+package com.ssj.bean.sys.fx.domain;
+
+import java.util.Date;
+
+import javax.persistence.Entity;
+import javax.persistence.Table;
+
+import com.ssj.bean.common.framework.core.domain.BaseEntity;
+
+@Entity
+@Table(name = "fx_merchant_plat_order")
+public class MerchantPlatOrder extends BaseEntity {
+	
+    private static final long serialVersionUID = 1L;
+    
+    private String merchantId;
+    
+    private Integer mealType;
+    
+    private Double price;
+    
+    private Date createTime;
+    
+    private String remarks;
+
+	public String getMerchantId() {
+		return merchantId;
+	}
+
+	public void setMerchantId(String merchantId) {
+		this.merchantId = merchantId;
+	}
+
+	public String getRemarks() {
+		return remarks;
+	}
+
+	public void setRemarks(String remarks) {
+		this.remarks = remarks;
+	}
+
+	public Double getPrice() {
+		return price;
+	}
+
+	public void setPrice(Double price) {
+		this.price = price;
+	}
+
+	public Date getCreateTime() {
+		return createTime;
+	}
+
+	public void setCreateTime(Date createTime) {
+		this.createTime = createTime;
+	}
+
+	public Integer getMealType() {
+		return mealType;
+	}
+
+	public void setMealType(Integer mealType) {
+		this.mealType = mealType;
+	}
+
+	
+}

+ 20 - 20
src/main/java/com/ssj/bean/sys/fx/domain/MerchantSign.java

@@ -13,11 +13,11 @@ public class MerchantSign extends BaseEntity {
 	
     private static final long serialVersionUID = 1L;
     
-    private String merchantId;
+    private String orderId;
     
-    private Integer signType;
+    private String merchantId;
     
-    private Integer num;
+    private Integer type;
     
     private Date signTime;
     
@@ -41,14 +41,6 @@ public class MerchantSign extends BaseEntity {
 		this.merchantId = merchantId;
 	}
 
-	public Integer getSignType() {
-		return signType;
-	}
-
-	public void setSignType(Integer signType) {
-		this.signType = signType;
-	}
-
 	public Date getSignTime() {
 		return signTime;
 	}
@@ -96,21 +88,29 @@ public class MerchantSign extends BaseEntity {
 	public void setUpdateTime(Date updateTime) {
 		this.updateTime = updateTime;
 	}
+	
+	public String getRemarks() {
+		return remarks;
+	}
 
-	public Integer getNum() {
-		return num;
+	public void setRemarks(String remarks) {
+		this.remarks = remarks;
 	}
 
-	public void setNum(Integer num) {
-		this.num = num;
+	public String getOrderId() {
+		return orderId;
 	}
 
-	public String getRemarks() {
-		return remarks;
+	public void setOrderId(String orderId) {
+		this.orderId = orderId;
 	}
 
-	public void setRemarks(String remarks) {
-		this.remarks = remarks;
+	public Integer getType() {
+		return type;
 	}
-    
+
+	public void setType(Integer type) {
+		this.type = type;
+	}
+
 }

+ 107 - 0
src/main/java/com/ssj/bean/sys/fx/domain/MerchantSignOrder.java

@@ -0,0 +1,107 @@
+package com.ssj.bean.sys.fx.domain;
+
+import java.util.Date;
+
+import javax.persistence.Entity;
+import javax.persistence.Table;
+
+import com.ssj.bean.common.framework.core.domain.BaseEntity;
+
+@Entity
+@Table(name = "fx_merchant_sign_order")
+public class MerchantSignOrder extends BaseEntity {
+	
+    private static final long serialVersionUID = 1L;
+    
+    private String merchantId;
+    
+    private Integer type;
+    
+    private Integer num;
+    
+    private Date signTime;
+    
+    private Integer libService;
+    
+    private Double unitPrice;
+    
+    private Date createTime;
+    
+    private Date updateTime;
+    
+    private String remarks;
+
+	public String getMerchantId() {
+		return merchantId;
+	}
+
+	public void setMerchantId(String merchantId) {
+		this.merchantId = merchantId;
+	}
+
+	public Integer getType() {
+		return type;
+	}
+
+	public void setType(Integer type) {
+		this.type = type;
+	}
+
+	public Integer getNum() {
+		return num;
+	}
+
+	public void setNum(Integer num) {
+		this.num = num;
+	}
+
+	public Date getSignTime() {
+		return signTime;
+	}
+
+	public void setSignTime(Date signTime) {
+		this.signTime = signTime;
+	}
+
+	public Integer getLibService() {
+		return libService;
+	}
+
+	public void setLibService(Integer libService) {
+		this.libService = libService;
+	}
+
+	public Double getUnitPrice() {
+		return unitPrice;
+	}
+
+	public void setUnitPrice(Double unitPrice) {
+		this.unitPrice = unitPrice;
+	}
+
+	public Date getCreateTime() {
+		return createTime;
+	}
+
+	public void setCreateTime(Date createTime) {
+		this.createTime = createTime;
+	}
+
+	public Date getUpdateTime() {
+		return updateTime;
+	}
+
+	public void setUpdateTime(Date updateTime) {
+		this.updateTime = updateTime;
+	}
+
+	public String getRemarks() {
+		return remarks;
+	}
+
+	public void setRemarks(String remarks) {
+		this.remarks = remarks;
+	}
+
+	
+}

+ 18 - 0
src/main/java/com/ssj/dao/sys/fx/dao/FxQueryDao.java

@@ -50,5 +50,23 @@ public interface FxQueryDao {
 
     Page<Map<String, Object>> deviceOutList(Map<String, Object> params, Pageable initPage);
     
+    Page<Map<String, Object>> findMerchantSignOrderByPage(Map<String, Object> params, Pageable initPage);
+    
     Page<Map<String, Object>> findMerchantSignByPage(Map<String, Object> params, Pageable initPage);
+    
+    Page<Map<String, Object>> findMerchantSignStatusByPage(Map<String, Object> params, Pageable initPage);
+    
+    
+    Page<Map<String, Object>> findMerchantMealOrderPage(Map<String, Object> params, Pageable initPage);
+    
+    Page<Map<String, Object>> findMerchantMealPage(Map<String, Object> params, Pageable initPage);
+    
+    Page<Map<String, Object>> findMerchantMealStatusPage(Map<String, Object> params, Pageable initPage);
+    
+    Page<Map<String, Object>> findMerchantCapByPage(Map<String, Object> params, Pageable initPage);
+    
+    
+    Page<Map<String, Object>> findMerchantPlatOrderByPage(Map<String, Object> params, Pageable initPage);
+    
+    
 }

+ 1 - 1
src/main/java/com/ssj/dao/sys/fx/dao/MerchantDao.java

@@ -43,7 +43,7 @@ public interface MerchantDao extends JpaRepository<Merchant, String> {
 	@Query(nativeQuery = true, value = " SELECT t.* from fx_merchant t LEFT JOIN tb_lib_vip v ON t.lib_id=v.lib_id WHERE v.id IS NOT NULL AND v.id=?1 ORDER BY t.create_time DESC LIMIT 1 ")
 	public Merchant getMerchantByVipId(String vipId);
 	
-	@Query(nativeQuery = true, value = " SELECT * from fx_merchant t where t.sign_type>=1  ORDER BY t.create_time ASC ")
+	@Query(nativeQuery = true, value = " SELECT * from fx_merchant t where t.pos_type in (2,3)  ORDER BY t.create_time ASC ")
 	public List<Merchant> findMerchantSignByAll();
 	
 	@Query(nativeQuery = true, value = " SELECT * from fx_merchant t where t.sign_type>=1 AND TO_DAYS(t.next_summary_time)=TO_DAYS(NOW()) ORDER BY t.create_time ASC ")

+ 37 - 0
src/main/java/com/ssj/dao/sys/fx/dao/MerchantMealDao.java

@@ -0,0 +1,37 @@
+package com.ssj.dao.sys.fx.dao;
+
+import java.util.List;
+
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
+import org.springframework.data.jpa.domain.Specification;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.stereotype.Repository;
+
+import com.ssj.bean.sys.fx.domain.MerchantMeal;
+
+@Repository
+public interface MerchantMealDao extends JpaRepository<MerchantMeal, String> {
+	
+	public Page<MerchantMeal> findAll(Specification<MerchantMeal> specification, Pageable page);
+	
+	@Query(nativeQuery = true, value = " SELECT * from fx_merchant_meal t WHERE t.merchant_id=?1 and t.status=1  ORDER BY t.end_sign_time DESC LIMIT 1 ")
+	public MerchantMeal getMerchantMealByMaxEndSignTime(String merchantId);
+	
+	@Query(nativeQuery = true, value = " SELECT * from fx_merchant_meal t WHERE t.merchant_id=?1 and t.status=1 and TO_DAYS(t.sign_time)>=TO_DAYS(NOW()) ORDER BY t.sign_time ASC LIMIT 1 ")
+	public MerchantMeal getMerchantMealByCurSignTime(String merchantId);
+	
+	@Query(nativeQuery = true, value = " SELECT * from fx_merchant_meal t WHERE t.merchant_id=?1 and t.status=1  ORDER BY t.end_sign_time DESC")
+	public List<MerchantMeal> findMerchantMealByStatusList(String merchantId);
+	
+	@Query(nativeQuery = true, value = " SELECT * from fx_merchant_meal t WHERE t.merchant_id=?1 ORDER BY t.create_time DESC,t.end_sign_time DESC")
+	public List<MerchantMeal> findMerchantMealAll(String merchantId);
+	
+	@Query(nativeQuery = true, value = " SELECT * from fx_merchant_meal t WHERE t.merchant_id=?1 AND t.`status`=1 AND TO_DAYS(t.sign_time)<=TO_DAYS(NOW()) AND TO_DAYS(t.end_sign_time)>TO_DAYS(NOW()) ORDER BY t.end_sign_time DESC LIMIT 1")
+	public MerchantMeal getMerchantMealByCurTime(String merchantId);
+	
+	
+	
+	
+}

+ 29 - 0
src/main/java/com/ssj/dao/sys/fx/dao/MerchantMealOrderDao.java

@@ -0,0 +1,29 @@
+package com.ssj.dao.sys.fx.dao;
+
+import java.util.List;
+
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
+import org.springframework.data.jpa.domain.Specification;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.stereotype.Repository;
+
+import com.ssj.bean.sys.fx.domain.MerchantMealOrder;
+
+@Repository
+public interface MerchantMealOrderDao extends JpaRepository<MerchantMealOrder, String> {
+	
+	public Page<MerchantMealOrder> findAll(Specification<MerchantMealOrder> specification, Pageable page);
+	
+	@Query(nativeQuery = true, value = " SELECT * from fx_merchant_meal_order t WHERE t.merchant_id=?1 ORDER BY t.create_time DESC")
+	public List<MerchantMealOrder> findMerchantMealOrderAll(String merchantId);
+	
+	@Query(nativeQuery = true, value = " SELECT * from fx_merchant_meal_order t WHERE t.merchant_id=?1 AND TO_DAYS(t.sign_time)<=TO_DAYS(NOW()) AND TO_DAYS(t.end_sign_time)>TO_DAYS(NOW()) ORDER BY t.create_time DESC LIMIT 1")
+	public MerchantMealOrder getMerchantMealOrderByCurTime(String merchantId);
+	
+	@Query(nativeQuery = true, value = " SELECT * from fx_merchant_meal_order t WHERE t.merchant_id=?1 ORDER BY t.create_time DESC LIMIT 1")
+	public MerchantMealOrder getMerchantMealOrderByMaxCreateTime(String merchantId);
+	
+	
+}

+ 17 - 0
src/main/java/com/ssj/dao/sys/fx/dao/MerchantPlatOrderDao.java

@@ -0,0 +1,17 @@
+package com.ssj.dao.sys.fx.dao;
+
+import java.util.List;
+
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.stereotype.Repository;
+
+import com.ssj.bean.sys.fx.domain.MerchantPlatOrder;
+
+@Repository
+public interface MerchantPlatOrderDao extends JpaRepository<MerchantPlatOrder, String> {
+
+	@Query(nativeQuery = true, value = " SELECT * from fx_merchant_plat_order t WHERE t.merchant_id=?1 ORDER BY t.create_time DESC")
+	public List<MerchantPlatOrder> findMerchantPlatOrderAll(String merchantId);
+	
+}

+ 2 - 10
src/main/java/com/ssj/dao/sys/fx/dao/MerchantSignDao.java

@@ -1,6 +1,5 @@
 package com.ssj.dao.sys.fx.dao;
 
-import java.util.Date;
 import java.util.List;
 
 import org.springframework.data.jpa.repository.JpaRepository;
@@ -12,16 +11,9 @@ import com.ssj.bean.sys.fx.domain.MerchantSign;
 @Repository
 public interface MerchantSignDao extends JpaRepository<MerchantSign, String> {
 	
-	@Query(nativeQuery = true, value = " SELECT * FROM `fx_merchant_sign` t WHERE t.`status`=0 AND TO_DAYS(t.end_sign_time)=TO_DAYS(NOW())  ")
-	public List<MerchantSign> findMerchantSignByEndTime();
 	
-	@Query(nativeQuery = true, value = " SELECT * FROM `fx_merchant_sign` t WHERE t.`status`=2 AND TO_DAYS(t.sign_time)=TO_DAYS(NOW())  ")
-	public List<MerchantSign> findMerchantSignByStartTime();
+	@Query(nativeQuery = true, value = " SELECT * FROM `fx_merchant_sign` t WHERE t.merchant_id=?1 AND t.`status`=1 AND TO_DAYS(t.sign_time)<=TO_DAYS(NOW()) AND TO_DAYS(t.end_sign_time)>TO_DAYS(NOW()) order by t.end_sign_time desc ")
+	public List<MerchantSign> getMerchantSignByCur(String merchantId);
 	
-	@Query(nativeQuery = true, value = " SELECT * FROM `fx_merchant_sign` t WHERE t.merchant_id=?1 and t.`status` in (0,2)   ")
-	public List<MerchantSign> findMerchantSignByMerchantId(String merchantId);
-	
-	@Query(nativeQuery = true, value = " SELECT * FROM `fx_merchant_sign` t WHERE t.merchant_id=?1 and TO_DAYS(t.sign_time)>=TO_DAYS(?2) and t.`status`=?3   ")
-	public List<MerchantSign> findMerchantSignByMerchantIdGTTime(String merchantId,Date computeTime,Integer status);
 	
 }

+ 16 - 0
src/main/java/com/ssj/dao/sys/fx/dao/MerchantSignOrderDao.java

@@ -0,0 +1,16 @@
+package com.ssj.dao.sys.fx.dao;
+
+import java.util.List;
+
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.stereotype.Repository;
+
+import com.ssj.bean.sys.fx.domain.MerchantSignOrder;
+
+@Repository
+public interface MerchantSignOrderDao extends JpaRepository<MerchantSignOrder, String> {
+	
+	@Query(nativeQuery = true, value = " SELECT * from fx_merchant_sign_order t WHERE t.merchant_id=?1 ORDER BY t.create_time DESC")
+	public List<MerchantSignOrder> findMerchantSignAll(String merchantId);
+}

+ 232 - 6
src/main/java/com/ssj/dao/sys/fx/dao/impl/FxQueryDaoImpl.java

@@ -468,7 +468,7 @@ public class FxQueryDaoImpl implements FxQueryDao {
 	        StringBuilder selSql = new StringBuilder();
 	        List<Object> queryParams = new ArrayList<Object>();
 	        selSql.append(" SELECT time,merchant_id,SUM(counta) as counta,SUM(countb) as countb,m.unit_name,m.price,m.out_price from ( ");
-	        selSql.append("  	SELECT DATE_FORMAT(t.create_time,'%Y-%m') as time,t.to_merchant_id as merchant_id,COUNT(1) as counta,'0' as countb,'1' as type  from fx_device_act t ");
+	        selSql.append("  	SELECT DATE_FORMAT(t.create_time,'%Y-%m') as time,t.to_merchant_id as merchant_id,COUNT(1) as counta,0 as countb,'1' as type  from fx_device_act t ");
 	        selSql.append("  	where  t.from_merchant_id is NOT NULL AND DATE_FORMAT(t.create_time,'%Y-%m')>=? AND DATE_FORMAT(t.create_time,'%Y-%m')<=?  AND (t.type=3 OR t.type=4) ");
 	        queryParams.add(params.get("startMonth"));
 	        queryParams.add(params.get("endMonth"));
@@ -485,7 +485,7 @@ public class FxQueryDaoImpl implements FxQueryDao {
 	         
 	        selSql.append("  	GROUP BY time,merchant_id ");
 	        selSql.append("  	UNION ");
-	        selSql.append("  	SELECT DATE_FORMAT(t.create_time,'%Y-%m') as time,t.from_merchant_id as merchant_id,'0' as counta,COUNT(1) as countb,'2' as type  from fx_device_act t ");
+	        selSql.append("  	SELECT DATE_FORMAT(t.create_time,'%Y-%m') as time,t.from_merchant_id as merchant_id,0 as counta,COUNT(1) as countb,'2' as type  from fx_device_act t ");
 	        selSql.append("  	where  t.from_merchant_id is NOT NULL AND DATE_FORMAT(t.create_time,'%Y-%m')>=? AND DATE_FORMAT(t.create_time,'%Y-%m')<=?  AND (t.type=1 OR t.type=2) ");
 	        queryParams.add(params.get("startMonth"));
 	        queryParams.add(params.get("endMonth"));
@@ -695,15 +695,241 @@ public class FxQueryDaoImpl implements FxQueryDao {
             selSql.append(" AND t.merchant_id=? ");
             queryParams.add(params.get("merchantId"));
         }
-        if(params.containsKey("signType") && StringUtils.isNotEmpty(params.get("signType").toString())){
-            selSql.append(" AND t.sign_type=? ");
-            queryParams.add(params.get("signType"));
+        if(params.containsKey("type") && StringUtils.isNotEmpty(params.get("type").toString())){
+            selSql.append(" AND t.type=? ");
+            queryParams.add(params.get("type"));
+        }
+        if(params.containsKey("orderId") && StringUtils.isNotEmpty(params.get("orderId").toString())){
+            selSql.append(" AND t.order_id=? ");
+            queryParams.add(params.get("orderId"));
         }
-        selSql.append(" ORDER BY t.create_time DESC  ");
+        
+        selSql.append(" ORDER BY t.create_time DESC,t.end_sign_time DESC ");
         return dao.findPage(selSql.toString(),queryParams.toArray(), initPage);
     }
     
     
+	@Override
+	public Page<Map<String, Object>> findMerchantSignStatusByPage(Map<String, Object> params, Pageable initPage) {
+		StringBuilder selSql = new StringBuilder();
+        List<Object> queryParams = new ArrayList<Object>();
+        selSql.append(" SELECT t.pos_code,t.unit_name,o.type,o.num,o.lib_service,o.unit_price,m.sign_time,m.end_sign_time from fx_merchant t     ");
+        selSql.append(" LEFT JOIN fx_merchant_sign m ON t.id=m.merchant_id ");
+        selSql.append(" LEFT JOIN fx_merchant_sign_order o on m.order_id=o.id  ");
+        selSql.append(" WHERE t.sign_type>=1 ");
+        if(!"".equals(params.get("merchantId"))){
+            selSql.append(" and t.id=? ");
+            queryParams.add(params.get("merchantId"));
+        }
+        if(!"".equals(params.get("type"))){
+            selSql.append(" and o.type=? ");
+            queryParams.add(params.get("type"));
+        }
+        if(!"".equals(params.get("signTime")) && !"".equals(params.get("endSignTime"))){
+            selSql.append(" AND ( ");
+            selSql.append(" (TO_DAYS(m.sign_time) >= TO_DAYS(?) AND TO_DAYS(m.sign_time) <= TO_DAYS(?)) ");
+            selSql.append(" OR (TO_DAYS(m.sign_time) <= TO_DAYS(?) AND TO_DAYS(m.end_sign_time) >= TO_DAYS(?)) ");
+            selSql.append(" OR (TO_DAYS(m.end_sign_time) >= TO_DAYS(?) AND TO_DAYS(m.end_sign_time) <= TO_DAYS(?)) ");
+            selSql.append(" ) ");
+            queryParams.add(params.get("signTime"));
+            queryParams.add(params.get("signTime"));
+            queryParams.add(params.get("signTime"));
+            queryParams.add(params.get("endSignTime"));
+            queryParams.add(params.get("endSignTime"));
+            queryParams.add(params.get("endSignTime"));
+        }
+        selSql.append(" ORDER BY t.create_time ASC ,m.sign_time ASC,m.end_sign_time ASC ");
+        return dao.findPage(selSql.toString(),queryParams.toArray(), initPage);
+	}
+
+
+    
+	@Override
+	public Page<Map<String, Object>> findMerchantSignOrderByPage(Map<String, Object> params, Pageable initPage) {
+		StringBuilder selSql = new StringBuilder();
+        List<Object> queryParams = new ArrayList<Object>();
+        selSql.append(" SELECT t.*,(t.unit_price * t.num) as price,m.unit_name from fx_merchant_sign_order t  ");
+        selSql.append(" LEFT JOIN fx_merchant m ON t.merchant_id=m.id  ");
+        selSql.append(" where 1=1 ");
+        if(!"".equals(params.get("merchantId"))){
+            selSql.append(" and t.merchant_id=? ");
+            queryParams.add(params.get("merchantId"));
+        }
+        if(!"".equals(params.get("type"))){
+            selSql.append(" and t.type=? ");
+            queryParams.add(params.get("type"));
+        }
+        if(!"".equals(params.get("endSignTime"))){
+            selSql.append(" and TO_DAYS(t.create_time)<=TO_DAYS(?) ");
+            queryParams.add(params.get("endSignTime"));
+        }
+        
+        if(!"".equals(params.get("signTime"))){
+            selSql.append(" and TO_DAYS(t.create_time)>=TO_DAYS(?) ");
+            queryParams.add(params.get("signTime"));
+        }
+        selSql.append(" ORDER BY t.create_time DESC ");
+        return dao.findPage(selSql.toString(),queryParams.toArray(), initPage);
+	}
+
+    
+    
+	@Override
+	public Page<Map<String, Object>> findMerchantMealOrderPage(Map<String, Object> params, Pageable initPage) {
+		StringBuilder selSql = new StringBuilder();
+        List<Object> queryParams = new ArrayList<Object>();
+        selSql.append(" SELECT t.*,m.unit_name from fx_merchant_meal_order t  ");
+        selSql.append(" LEFT JOIN fx_merchant m ON t.merchant_id=m.id  ");
+        selSql.append(" where 1=1 ");
+        if(!"".equals(params.get("merchantId"))){
+            selSql.append(" and t.merchant_id=? ");
+            queryParams.add(params.get("merchantId"));
+        }
+        if(!"".equals(params.get("signType"))){
+            selSql.append(" and t.sign_type=? ");
+            queryParams.add(params.get("signType"));
+        }
+        
+        if(!"".equals(params.get("endSignTime"))){
+            selSql.append(" and TO_DAYS(t.create_time)<=TO_DAYS(?) ");
+            queryParams.add(params.get("endSignTime"));
+        }
+        
+        if(!"".equals(params.get("signTime"))){
+            selSql.append(" and TO_DAYS(t.create_time)>=TO_DAYS(?) ");
+            queryParams.add(params.get("signTime"));
+        }
+        selSql.append(" ORDER BY t.create_time DESC ");
+        return dao.findPage(selSql.toString(),queryParams.toArray(), initPage);
+	}
+
+	@Override
+	public Page<Map<String, Object>> findMerchantMealPage(Map<String, Object> params, Pageable initPage) {
+		StringBuilder selSql = new StringBuilder();
+        List<Object> queryParams = new ArrayList<Object>();
+        selSql.append(" SELECT t.*,m.unit_name,o.unit_price from fx_merchant_meal t    ");
+        selSql.append(" LEFT JOIN fx_merchant_meal_order o on t.order_id=o.id ");
+        selSql.append(" LEFT JOIN fx_merchant m ON t.merchant_id=m.id  ");
+        selSql.append(" where 1=1 ");
+        if(!"".equals(params.get("orderId"))){
+            selSql.append(" and t.order_id=? ");
+            queryParams.add(params.get("orderId"));
+        }
+        if(!"".equals(params.get("merchantId"))){
+            selSql.append(" and t.merchant_id=? ");
+            queryParams.add(params.get("merchantId"));
+        }
+        selSql.append(" ORDER BY t.create_time DESC,t.end_sign_time DESC ");
+        return dao.findPage(selSql.toString(),queryParams.toArray(), initPage);
+	}
+	
+	
+	
+	@Override
+	public Page<Map<String, Object>> findMerchantMealStatusPage(Map<String, Object> params, Pageable initPage) {
+		StringBuilder selSql = new StringBuilder();
+        List<Object> queryParams = new ArrayList<Object>();
+        selSql.append(" SELECT t.pos_code,t.unit_name,o.sign_type,o.buy_month,o.give_month,o.lib_service,o.unit_price,o.price,m.sign_time,m.end_sign_time from fx_merchant t     ");
+        selSql.append(" LEFT JOIN fx_merchant_meal m ON t.id=m.merchant_id ");
+        selSql.append(" LEFT JOIN fx_merchant_meal_order o on m.order_id=o.id  ");
+        selSql.append(" WHERE t.sign_type>=1 ");
+        if(!"".equals(params.get("merchantId"))){
+            selSql.append(" and t.id=? ");
+            queryParams.add(params.get("merchantId"));
+        }
+        if(!"".equals(params.get("signType"))){
+            selSql.append(" and o.sign_type=? ");
+            queryParams.add(params.get("signType"));
+        }
+        if(!"".equals(params.get("signTime")) && !"".equals(params.get("endSignTime"))){
+            selSql.append(" AND ( ");
+            selSql.append(" (TO_DAYS(m.sign_time) >= TO_DAYS(?) AND TO_DAYS(m.sign_time) <= TO_DAYS(?)) ");
+            selSql.append(" OR (TO_DAYS(m.sign_time) <= TO_DAYS(?) AND TO_DAYS(m.end_sign_time) >= TO_DAYS(?)) ");
+            selSql.append(" OR (TO_DAYS(m.end_sign_time) >= TO_DAYS(?) AND TO_DAYS(m.end_sign_time) <= TO_DAYS(?)) ");
+            selSql.append(" ) ");
+            queryParams.add(params.get("signTime"));
+            queryParams.add(params.get("signTime"));
+            queryParams.add(params.get("signTime"));
+            queryParams.add(params.get("endSignTime"));
+            queryParams.add(params.get("endSignTime"));
+            queryParams.add(params.get("endSignTime"));
+        }
+        selSql.append(" ORDER BY t.create_time ASC,m.sign_time ASC,m.end_sign_time ASC ");
+        return dao.findPage(selSql.toString(),queryParams.toArray(), initPage);
+	}
+
+	@Override
+	public Page<Map<String, Object>> findMerchantPlatOrderByPage(Map<String, Object> params, Pageable initPage) {
+		StringBuilder selSql = new StringBuilder();
+        List<Object> queryParams = new ArrayList<Object>();
+        selSql.append(" SELECT t.*,m.unit_name from fx_merchant_plat_order t  ");
+        selSql.append(" LEFT JOIN fx_merchant m ON t.merchant_id=m.id  ");
+        selSql.append(" where 1=1 ");
+        if(!"".equals(params.get("merchantId"))){
+            selSql.append(" and t.merchant_id=? ");
+            queryParams.add(params.get("merchantId"));
+        }
+        if(!"".equals(params.get("endSignTime"))){
+            selSql.append(" and TO_DAYS(t.create_time)<=TO_DAYS(?) ");
+            queryParams.add(params.get("endSignTime"));
+        }
+        
+        if(!"".equals(params.get("signTime"))){
+            selSql.append(" and TO_DAYS(t.create_time)>=TO_DAYS(?) ");
+            queryParams.add(params.get("signTime"));
+        }
+        selSql.append(" ORDER BY t.create_time DESC ");
+        return dao.findPage(selSql.toString(),queryParams.toArray(), initPage);
+	}
+
+	@Override
+	public Page<Map<String, Object>> findMerchantCapByPage(Map<String, Object> params, Pageable initPage) {
+		StringBuilder selSql = new StringBuilder();
+        List<Object> queryParams = new ArrayList<Object>();
+        selSql.append(" SELECT * from (  ");
+        selSql.append(" 	SELECT m.id,m.type as merchant_type,m.pos_code,m.unit_name,t.unit_price,t.price,t.buy_month,t.give_month,t.sign_type,t.type,t.lib_service,t.create_time as time,'1' as cap_type from fx_merchant_meal_order t    ");
+        selSql.append("  	LEFT JOIN fx_merchant m ON t.merchant_id=m.id ");
+        selSql.append("  UNION ");
+        selSql.append("  	SELECT m.id,m.type as merchant_type,m.pos_code,m.unit_name,o.unit_price,o.price,o.buy_month,o.give_month,o.sign_type,o.type,t.lib_service,t.sign_time as time,2 as cap_type from fx_merchant_meal t  ");
+        selSql.append("  	LEFT JOIN fx_merchant m ON t.merchant_id=m.id ");
+        selSql.append(" 	LEFT JOIN fx_merchant_meal_order o ON t.order_id=o.id  ");
+        selSql.append("  UNION ");
+        selSql.append("  	SELECT m.id,m.type as merchant_type,m.pos_code,m.unit_name,0 as price,t.price,0 as buy_month,0 as give_month,0 as sign_type,0 as type,0 as lib_service,t.create_time as time,3 as cap_type from fx_merchant_plat_order t  ");
+        selSql.append("   	LEFT JOIN fx_merchant m ON t.merchant_id=m.id ");
+        selSql.append("  UNION ");
+        selSql.append("   	SELECT m.id,m.type as merchant_type,m.pos_code,m.unit_name,0 as price,t.price,0 as buy_month,0 as give_month,0 as sign_type,0 as type,0 as lib_service,t.create_time as time,4 as cap_type from fx_merchant_plat_order t ");
+        selSql.append("  	LEFT JOIN fx_merchant m ON t.merchant_id=m.id ");
+        selSql.append("  UNION	");
+        selSql.append(" 	SELECT m.id,m.type as merchant_type,m.pos_code,m.unit_name,t.unit_price,0 as price,t.num as buy_month,0 as give_month,0 as sign_type,t.type,t.lib_service,t.create_time as time,'5' as cap_type from fx_merchant_sign_order t 	");
+        selSql.append(" 	LEFT JOIN fx_merchant m ON t.merchant_id=m.id	");
+        selSql.append("  UNION	");
+        selSql.append(" 	SELECT m.id,m.type as merchant_type,m.pos_code,m.unit_name,o.unit_price,0 as price,o.num as buy_month,0 as give_month,0 as sign_type,o.type,t.lib_service,t.sign_time as time,'6' as cap_type from fx_merchant_sign t ");
+        selSql.append(" 	LEFT JOIN fx_merchant m ON t.merchant_id=m.id ");
+        selSql.append(" 	LEFT JOIN fx_merchant_sign_order o ON t.order_id=o.id ");
+        selSql.append("  )as tmp  ");
+        selSql.append("  WHERE tmp.time<=NOW()  ");
+        if(!"".equals(params.get("merchantId"))){
+            selSql.append(" and tmp.id=? ");
+            queryParams.add(params.get("merchantId"));
+        }
+        if(!"".equals(params.get("merchantType"))){
+            selSql.append(" and tmp.merchant_type=? ");
+            queryParams.add(params.get("merchantType"));
+        }
+        if(!"".equals(params.get("endSignTime"))){
+            selSql.append(" and TO_DAYS(tmp.time)<=TO_DAYS(?) ");
+            queryParams.add(params.get("endSignTime"));
+        }
+        if(!"".equals(params.get("signTime"))){
+            selSql.append(" and TO_DAYS(tmp.time)>=TO_DAYS(?) ");
+            queryParams.add(params.get("signTime"));
+        }
+        selSql.append(" ORDER BY tmp.time DESC ");
+        return dao.findPage(selSql.toString(),queryParams.toArray(), initPage);
+	}
+
+
+    
     
     
 }

+ 1 - 1
src/main/java/com/ssj/framework/basic/utils/DateHelper.java

@@ -930,7 +930,7 @@ public class DateHelper {
 	    	  Calendar startCalendar = Calendar.getInstance();
 	    	  startCalendar.setTime(start);
 	    	  startCalendar.add(Calendar.MONTH, i);
-	    	  if(startCalendar.getTime().getTime()>end.getTime()) {
+	    	  if(startCalendar.getTime().getTime()>=end.getTime()) {
 	    		  break;
 	    	  }
 	    	  i=i+1;

+ 22 - 0
src/main/java/com/ssj/service/sys/fx/service/MerchantMealOrderService.java

@@ -0,0 +1,22 @@
+package com.ssj.service.sys.fx.service;
+
+import java.util.List;
+import java.util.Map;
+
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
+
+import com.ssj.bean.sys.fx.domain.MerchantMealOrder;
+import com.ssj.framework.core.common.service.BaseService;
+
+public interface MerchantMealOrderService extends BaseService<MerchantMealOrder, String> {
+	
+	public Page<Map<String, Object>> findMerchantMealOrderByPage(Map<String, Object> params, Pageable initPage);
+	
+	public List<MerchantMealOrder> findMerchantMealOrderAll(String merchantId);
+	
+	public MerchantMealOrder getMerchantMealOrderByCurTime(String merchantId);
+	
+	public MerchantMealOrder getMerchantMealOrderByMaxCreateTime(String merchantId);
+	
+}

+ 32 - 0
src/main/java/com/ssj/service/sys/fx/service/MerchantMealService.java

@@ -0,0 +1,32 @@
+package com.ssj.service.sys.fx.service;
+
+import java.util.List;
+import java.util.Map;
+
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
+
+import com.ssj.bean.sys.fx.domain.MerchantMeal;
+import com.ssj.framework.core.common.service.BaseService;
+
+public interface MerchantMealService extends BaseService<MerchantMeal, String> {
+	
+	Page<Map<String, Object>> findMerchantMealByPage(Map<String, Object> params, Pageable initPage);
+	
+	Page<Map<String, Object>> findMerchantMealStatusPage(Map<String, Object> params, Pageable initPage);
+	
+	Page<Map<String, Object>> findMerchantCapByPage(Map<String, Object> params, Pageable initPage);
+	
+	MerchantMeal getMerchantMealByMaxEndSignTime(String merchantId);
+	
+	List<MerchantMeal> findMerchantMealByStatusList(String merchantId);
+	
+	List<MerchantMeal> findMerchantMealAll(String merchantId);
+	
+	void saveMerchantMeal(String merchantId,Integer signType,Integer libService,Integer buyMonth,Integer giveMonth,Double unitPrice,Double price);
+	
+	void saveMerchantMealSC(String merchantId,Integer signType,Integer libService,String startActiveTime,String endActiveTime,Double unitPrice,Double price);
+	
+	void updateMerchantByMeal(String merchantId);
+	
+}

+ 20 - 0
src/main/java/com/ssj/service/sys/fx/service/MerchantPlatOrderService.java

@@ -0,0 +1,20 @@
+package com.ssj.service.sys.fx.service;
+
+import java.util.List;
+import java.util.Map;
+
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
+
+import com.ssj.bean.sys.fx.domain.MerchantPlatOrder;
+import com.ssj.framework.core.common.service.BaseService;
+
+
+
+public interface MerchantPlatOrderService extends BaseService<MerchantPlatOrder, String> {
+
+	Page<Map<String, Object>> findMerchantPlatOrderByPage(Map<String, Object> params, Pageable initPage);
+	
+	List<MerchantPlatOrder> findMerchantPlatOrderAll(String merchantId);
+	
+}

+ 3 - 0
src/main/java/com/ssj/service/sys/fx/service/MerchantService.java

@@ -151,5 +151,8 @@ public interface MerchantService extends BaseService<Merchant, String> {
 	//当日开始计费日的商户列表
 	List<Merchant> findMerchantSignByComputeTime();
 	
+	//更新商户的当前有效的服务包和加油包
+	Merchant updateMerchantByLibService(Merchant merchant);
+	
 
 }

+ 18 - 0
src/main/java/com/ssj/service/sys/fx/service/MerchantSignOrderService.java

@@ -0,0 +1,18 @@
+package com.ssj.service.sys.fx.service;
+
+import java.util.List;
+import java.util.Map;
+
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
+
+import com.ssj.bean.sys.fx.domain.MerchantSignOrder;
+import com.ssj.framework.core.common.service.BaseService;
+
+public interface MerchantSignOrderService extends BaseService<MerchantSignOrder, String> {
+
+	Page<Map<String, Object>> findMerchantSignOrderByPage(Map<String, Object> params, Pageable initPage);
+	
+	List<MerchantSignOrder> findMerchantSignAll(String merchantId);
+	
+}

+ 5 - 16
src/main/java/com/ssj/service/sys/fx/service/MerchantSignService.java

@@ -1,32 +1,21 @@
 package com.ssj.service.sys.fx.service;
 
-import java.util.Date;
-import java.util.List;
 import java.util.Map;
 
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.Pageable;
 
-import com.ssj.bean.sys.fx.domain.Merchant;
 import com.ssj.bean.sys.fx.domain.MerchantSign;
 import com.ssj.framework.core.common.service.BaseService;
 
 public interface MerchantSignService extends BaseService<MerchantSign, String> {
 	
-	//fx_merchant_sign和加油包过期的定时任务。
-	void runMerchantSignByEndTime();
-
-	//同步套餐人数,商户表 -> 机构表。
-	void syncMerchantByLibJoin(Merchant merchant);
+	Page<Map<String, Object>> findMerchantSignByPage(Map<String, Object> params, Pageable initPage);
 	
-	//开通套餐加油包,添加数据到MerchantSign,增量Merchant,同步套餐人数机构表
-	void insertMerchantSignAndSync(String merchantId,Integer signType,Integer num);
+	Page<Map<String, Object>> findMerchantSignStatusByPage(Map<String, Object> params, Pageable initPage);
 	
-	//查出商户有效的加油包
-	List<MerchantSign> findMerchantSignByMerchantId(String merchantId);
-	List<MerchantSign> findMerchantSignByMerchantIdGTTime(String merchantId,Date computeTime,Integer status);
+	void saveMerchantSign(String merchantId,Integer type,Integer num,Integer libService,String signTime,Double unitPrice);
+	
+	public int getMerchantSignByCurLibService(String merchantId);
 	
-	//加油包明细列表
-	Page<Map<String, Object>> findMerchantSignByPage(Map<String, Object> params, Pageable initPage);
-
 }

+ 2 - 0
src/main/java/com/ssj/service/sys/fx/service/impl/MerchantBackupServiceImpl.java

@@ -58,6 +58,8 @@ public class MerchantBackupServiceImpl extends BaseServiceImpl<MerchantBackup, S
 			try {
 				MerchantBackup merchantBackup=new MerchantBackup();
 				BeanUtils.copyProperties(merchant, merchantBackup);
+				merchantBackup.setId(null);
+				merchantBackup.setMerchantId(merchant.getId());
 				merchantBackup.setBackupMonth(DateHelper.formatDateByFormat(DateHelper.getLastMonthFirstDay(new Date()), "yyyy-MM").replace("/", ""));
 				merchantBackups.add(merchantBackup);
 			} catch (Exception e) {

+ 71 - 0
src/main/java/com/ssj/service/sys/fx/service/impl/MerchantMealOrderServiceImpl.java

@@ -0,0 +1,71 @@
+package com.ssj.service.sys.fx.service.impl;
+
+import java.util.List;
+import java.util.Map;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
+import org.springframework.data.jpa.domain.Specification;
+import org.springframework.data.repository.PagingAndSortingRepository;
+import org.springframework.stereotype.Service;
+
+import com.ssj.bean.sys.fx.domain.MerchantMealOrder;
+import com.ssj.dao.sys.fx.dao.FxQueryDao;
+import com.ssj.dao.sys.fx.dao.MerchantMealOrderDao;
+import com.ssj.framework.core.common.service.BaseServiceImpl;
+import com.ssj.framework.core.persistence.DynamicSpecifications;
+import com.ssj.framework.core.persistence.SearchFilter;
+import com.ssj.service.sys.fx.service.MerchantMealOrderService;
+import com.ssj.service.sys.fx.service.MerchantService;
+import com.ssj.service.weixin.sales.service.LibVipServiceService;
+
+@Service
+public class MerchantMealOrderServiceImpl extends BaseServiceImpl<MerchantMealOrder, String> implements MerchantMealOrderService {
+
+	private Logger logger = LoggerFactory.getLogger(this.getClass());
+	
+	@Autowired
+	private MerchantMealOrderDao dao;
+	
+	@Autowired
+	private MerchantService merchantService;
+	
+	@Autowired
+	private LibVipServiceService libVipServiceService;
+	
+    @Autowired
+    private FxQueryDao queryDao;
+
+	@Override
+	public PagingAndSortingRepository<MerchantMealOrder, String> getDao() {
+		return dao;
+	}
+
+	@Override
+	public List<MerchantMealOrder> findMerchantMealOrderAll(String merchantId) {
+		return dao.findMerchantMealOrderAll(merchantId);
+	}
+
+	@Override
+	public MerchantMealOrder getMerchantMealOrderByCurTime(String merchantId) {
+		return dao.getMerchantMealOrderByCurTime(merchantId);
+	}
+
+	@Override
+	public MerchantMealOrder getMerchantMealOrderByMaxCreateTime(String merchantId) {
+		return dao.getMerchantMealOrderByMaxCreateTime(merchantId);
+	}
+
+	@Override
+	public Page<Map<String, Object>> findMerchantMealOrderByPage(Map<String, Object> params, Pageable initPage) {
+		return queryDao.findMerchantMealOrderPage(params, initPage);
+	}
+	
+
+
+}
+
+

+ 376 - 0
src/main/java/com/ssj/service/sys/fx/service/impl/MerchantMealServiceImpl.java

@@ -0,0 +1,376 @@
+package com.ssj.service.sys.fx.service.impl;
+
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
+import org.springframework.data.repository.PagingAndSortingRepository;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import com.ssj.bean.sys.fx.domain.Merchant;
+import com.ssj.bean.sys.fx.domain.MerchantMeal;
+import com.ssj.bean.sys.fx.domain.MerchantMealOrder;
+import com.ssj.dao.sys.fx.dao.FxQueryDao;
+import com.ssj.dao.sys.fx.dao.MerchantMealDao;
+import com.ssj.framework.basic.utils.DateHelper;
+import com.ssj.framework.core.common.service.BaseServiceImpl;
+import com.ssj.service.sys.fx.service.MerchantMealOrderService;
+import com.ssj.service.sys.fx.service.MerchantMealService;
+import com.ssj.service.sys.fx.service.MerchantService;
+import com.ssj.service.sys.fx.service.MerchantSignService;
+import com.ssj.service.weixin.sales.service.LibVipServiceService;
+
+@Service
+public class MerchantMealServiceImpl extends BaseServiceImpl<MerchantMeal, String> implements MerchantMealService {
+
+	private Logger logger = LoggerFactory.getLogger(this.getClass());
+	
+	@Autowired
+	private MerchantMealDao dao;
+	
+	@Autowired
+	private MerchantService merchantService;
+	
+	@Autowired
+	private MerchantMealOrderService mrchantMealOrderService;
+	
+	@Autowired
+	private MerchantSignService merchantSignService;
+	
+	@Autowired
+	private LibVipServiceService libVipServiceService;
+	
+    @Autowired
+    private FxQueryDao queryDao;
+
+	@Override
+	public PagingAndSortingRepository<MerchantMeal, String> getDao() {
+		return dao;
+	}
+
+	@Override
+	public MerchantMeal getMerchantMealByMaxEndSignTime(String merchantId) {
+		return dao.getMerchantMealByMaxEndSignTime(merchantId);
+	}
+	
+	@Override
+	public List<MerchantMeal> findMerchantMealByStatusList(String merchantId) {
+		return dao.findMerchantMealByStatusList(merchantId);
+	}
+	
+	@Override
+	public List<MerchantMeal> findMerchantMealAll(String merchantId) {
+		return dao.findMerchantMealAll(merchantId);
+	}
+	
+
+	@Override
+	public Page<Map<String, Object>> findMerchantMealByPage(Map<String, Object> params, Pageable initPage){
+		return queryDao.findMerchantMealPage(params, initPage);
+	}
+	
+	@Override
+	public Page<Map<String, Object>> findMerchantMealStatusPage(Map<String, Object> params, Pageable initPage) {
+		return queryDao.findMerchantMealStatusPage(params, initPage);
+	}
+	
+	@Override
+	public Page<Map<String, Object>> findMerchantCapByPage(Map<String, Object> params, Pageable initPage) {
+		return queryDao.findMerchantCapByPage(params, initPage);
+	}
+
+	@Override
+	@Transactional
+	public void saveMerchantMeal(String merchantId, Integer signType,Integer libService, Integer buyMonth, Integer giveMonth,Double unitPrice,Double price) {
+		List<MerchantMeal> merchantMeals=new ArrayList<MerchantMeal>();
+		Merchant merchant=merchantService.getById(merchantId);
+		switch (merchant.getPosType()) {
+		case 2:
+			MerchantMealOrder mealOrder=new MerchantMealOrder();
+			mealOrder.setBuyMonth(buyMonth);
+			mealOrder.setGiveMonth(giveMonth);
+			mealOrder.setMerchantId(merchantId);
+			mealOrder.setLibService(libService);
+			mealOrder.setPrice(price);
+			mealOrder.setUnitPrice(unitPrice);
+			mealOrder.setCreateTime(new Date());
+			mealOrder.setType(1);
+			mealOrder.setSignType(signType);
+			switch (mealOrder.getSignType()) {
+			case 1:
+				mealOrder.setPortNum(200);
+				break;
+			case 2:
+				mealOrder.setPortNum(200);
+				break;
+			case 3:
+				mealOrder.setPortNum(400);
+				break;
+			case 4:
+				mealOrder.setPortNum(200);
+				break;
+			case 5:
+				mealOrder.setPortNum(400);
+				break;
+			default:
+				mealOrder.setPortNum(0);
+				break;
+			}
+			mrchantMealOrderService.save(mealOrder);
+			
+			//端口商户的处理,
+			Date signTime=new Date();
+			MerchantMeal merchantMeal=this.getMerchantMealByMaxEndSignTime(merchantId);	
+			if(merchantMeal!=null ) {
+				if(merchantMeal.getEndSignTime().getTime()>=new Date().getTime()) {
+					signTime=merchantMeal.getEndSignTime();
+				}
+			}else {
+				if(merchant.getComputeTime()!=null) {
+					signTime=merchant.getComputeTime();
+				}else {
+					signTime=merchant.getActiveTime();
+				}
+			}
+			Date endSignTime=DateHelper.getMonthDate(signTime,1);
+			//添加赠送的记录
+			for (int i =1; i <=giveMonth; i++) {
+				MerchantMeal meal=new MerchantMeal();
+				meal.setMerchantId(merchantId);
+				meal.setSignTime(signTime);
+				meal.setEndSignTime(DateHelper.getMonthDate(signTime,1));
+				meal.setSignType(signType);
+				meal.setStatus(1);
+				meal.setLibService(libService);
+				meal.setCreateTime(new Date());
+				meal.setOrderId(mealOrder.getId());
+				merchantMeals.add(meal);
+				
+				signTime=endSignTime;
+				endSignTime=DateHelper.getMonthDate(signTime,1);
+			}
+			
+			//添加购买的记录
+			for (int i =1; i <=buyMonth; i++) {
+				MerchantMeal meal=new MerchantMeal();
+				meal.setMerchantId(merchantId);
+				meal.setSignTime(signTime);
+				meal.setEndSignTime(endSignTime);
+				meal.setSignType(signType);
+				meal.setStatus(1);
+				meal.setLibService(libService);
+				meal.setCreateTime(new Date());
+				meal.setOrderId(mealOrder.getId());
+				merchantMeals.add(meal);
+				
+				signTime=endSignTime;
+				endSignTime=DateHelper.getMonthDate(signTime,1);
+			}
+			
+			this.save(merchantMeals);
+			
+			updateMerchantByMeal(merchantId);
+			
+			break;
+		default:
+			break;
+		}
+	}
+
+	@Override
+	@Transactional
+	public void saveMerchantMealSC(String merchantId, Integer signType, Integer libService, String startActiveTime,String endActiveTime,Double unitPrice, Double price) {
+		List<MerchantMeal> merchantMeals=new ArrayList<MerchantMeal>();
+		Merchant merchant=merchantService.getById(merchantId);
+		switch (merchant.getPosType()) {
+		case 3:
+			Integer month=DateHelper.getDifferMonth(DateHelper.parseDate(startActiveTime, "yyyy-MM-dd"),DateHelper.parseDate(endActiveTime, "yyyy-MM-dd"));
+			
+			MerchantMealOrder mealOrder=new MerchantMealOrder();
+			mealOrder.setBuyMonth(month);
+			mealOrder.setGiveMonth(0);
+			mealOrder.setSignTime(DateHelper.parseDate(startActiveTime, "yyyy-MM-dd"));
+			mealOrder.setEndSignTime(DateHelper.parseDate(endActiveTime, "yyyy-MM-dd"));
+			mealOrder.setMerchantId(merchantId);
+			mealOrder.setLibService(libService);
+			mealOrder.setPrice(price);
+			mealOrder.setUnitPrice(unitPrice);
+			mealOrder.setCreateTime(new Date());
+			mealOrder.setType(2);
+			mealOrder.setSignType(signType);
+			switch (mealOrder.getSignType()) {
+			case 1:
+				mealOrder.setPortNum(200);
+				break;
+			case 2:
+				mealOrder.setPortNum(200);
+				break;
+			case 3:
+				mealOrder.setPortNum(400);
+				break;
+			case 4:
+				mealOrder.setPortNum(200);
+				break;
+			case 5:
+				mealOrder.setPortNum(400);
+				break;
+			default:
+				mealOrder.setPortNum(0);
+				break;
+			}
+			mrchantMealOrderService.save(mealOrder);
+			
+			Date signTime=DateHelper.parseDate(startActiveTime, "yyyy-MM-dd");
+			Date endSignTime=DateHelper.getMonthDate(signTime,1);
+			//添加购买的记录
+			for (int i =1; i <=month; i++) {
+				MerchantMeal meal=new MerchantMeal();
+				meal.setMerchantId(merchantId);
+				meal.setSignTime(signTime);
+				if(month==i) {
+					meal.setEndSignTime(DateHelper.parseDate(endActiveTime, "yyyy-MM-dd"));
+				}else {
+					meal.setEndSignTime(endSignTime);
+				}
+				meal.setSignType(signType);
+				meal.setStatus(1);
+				meal.setLibService(libService);
+				meal.setCreateTime(new Date());
+				meal.setOrderId(mealOrder.getId());
+				merchantMeals.add(meal);
+				
+				signTime=endSignTime;
+				endSignTime=DateHelper.getMonthDate(signTime,1);
+			}
+			
+			this.save(merchantMeals);
+
+			updateMerchantByMeal(merchantId);
+			
+			break;
+		default:
+			break;
+		}
+	}
+	
+	
+	//激活日期间,如提前激活了就对所有的服务包做减天处理。
+	public void updateMerchantByActiveTime(String merchantId,Date activeTime) {
+		activeTime=DateHelper.parseDate(DateHelper.format(activeTime, "yyyy-MM-dd"), "yyyy-MM-dd");//转换一下日期,转为0点的状态。
+		Merchant merchant=merchantService.getById(merchantId);
+		if(merchant.getPosType()!=2) {
+			//不是端口商户的,直接不处理。
+			return ;
+		}
+		if(activeTime.getTime()>=merchant.getActiveTime().getTime()) {
+			//激活日期大于或等于商户设置的激活日期,直接不处理。
+			return ;
+		}
+		
+		
+		
+		
+		
+		
+	}
+	
+
+	//更新商户的有效服务
+	//端口商户,查询MerchantMeal表的数据,最新当前时间段的数据,更新到Merchant-》endActiveTime,signType,libService
+	//学校商户,查询MerchantMealOrder最新当前时间段的数据,更新Merchant-》startActiveTime,activeTime,endActiveTime,signType,libService。
+	//调用openapi接口,更新数据到libjoin表。
+	@Override
+	public void updateMerchantByMeal(String merchantId) {
+		Merchant merchant=merchantService.getById(merchantId);
+		switch (merchant.getPosType()) {
+		case 2://端口商户
+			
+			//查询结束时间最大的数据。
+			MerchantMeal maxMerchantMeal=dao.getMerchantMealByMaxEndSignTime(merchantId);
+			//查询当前日期在服务期段的数据
+			MerchantMeal merchantMeal=dao.getMerchantMealByCurTime(merchantId);
+			if(merchantMeal==null) {
+				//查出大于今天的服务数据
+				merchantMeal=dao.getMerchantMealByCurSignTime(merchantId);
+			}
+			if(merchantMeal==null) {
+				//查出没有大于今天的服务数据,就取最大的数据。
+				merchantMeal=maxMerchantMeal;
+			}
+			
+			if(maxMerchantMeal!=null && merchantMeal!=null) {
+				MerchantMealOrder merchantMealOrder=mrchantMealOrderService.getById(maxMerchantMeal.getOrderId());
+				merchant.setEndActiveTime(maxMerchantMeal.getEndSignTime());
+				merchant.setSignType(merchantMeal.getSignType());
+				merchant.setPortNum(merchantMealOrder!=null ? merchantMealOrder.getPortNum() : 0);
+				merchant.setLibService(merchantMeal.getLibService()+merchantSignService.getMerchantSignByCurLibService(merchantId));
+				merchantService.save(merchant);
+				
+				//调用openApi接口
+				if(StringUtils.isNotEmpty(merchant.getLibId())) {
+					DateFormat format = new SimpleDateFormat("yyyy-MM-dd");
+					libVipServiceService.openApiServiceCRM(
+							3,
+							merchant.getLibId(), 
+							merchant.getSignType(),
+							merchant.getMealType(),
+							merchant.getLibService(),
+							merchant.getStartActiveTime()!=null ? format.format(merchant.getStartActiveTime()) : "",
+							merchant.getStartActiveTime()!=null ? format.format(merchant.getStartActiveTime()) : "",
+							merchant.getEndActiveTime()!=null ? format.format(merchant.getEndActiveTime()) : ""
+							);
+				}
+			}
+			break;
+		case 3:
+			//学校商户
+			MerchantMealOrder merchantMealOrder=mrchantMealOrderService.getMerchantMealOrderByCurTime(merchantId);
+			if(merchantMealOrder==null) {
+				merchantMealOrder=mrchantMealOrderService.getMerchantMealOrderByMaxCreateTime(merchantId);
+			}
+			
+			if(merchantMealOrder!=null) {
+				merchant.setStartActiveTime(merchantMealOrder.getSignTime());
+				merchant.setActiveTime(merchantMealOrder.getSignTime());
+				merchant.setEndActiveTime(merchantMealOrder.getEndSignTime());
+				merchant.setSignType(merchantMealOrder.getSignType());
+				merchant.setPortNum(merchantMealOrder.getPortNum());
+				merchant.setLibService(merchantMealOrder.getLibService()+merchantSignService.getMerchantSignByCurLibService(merchantId));
+				merchantService.save(merchant);
+				
+				//调用openApi接口
+				if(StringUtils.isNotEmpty(merchant.getLibId())) {
+					DateFormat format = new SimpleDateFormat("yyyy-MM-dd");
+					libVipServiceService.openApiServiceCRM(
+							3,
+							merchant.getLibId(), 
+							merchant.getSignType(),
+							merchant.getMealType(),
+							merchant.getLibService(),
+							merchant.getStartActiveTime()!=null ? format.format(merchant.getStartActiveTime()) : "",
+							merchant.getStartActiveTime()!=null ? format.format(merchant.getStartActiveTime()) : "",
+							merchant.getEndActiveTime()!=null ? format.format(merchant.getEndActiveTime()) : ""
+							);
+				}
+			}
+			break;
+		default:
+			break;
+		}
+		
+	}
+
+
+}
+
+

+ 51 - 0
src/main/java/com/ssj/service/sys/fx/service/impl/MerchantPlatOrderServiceImpl.java

@@ -0,0 +1,51 @@
+package com.ssj.service.sys.fx.service.impl;
+
+import java.util.List;
+import java.util.Map;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
+import org.springframework.data.repository.PagingAndSortingRepository;
+import org.springframework.stereotype.Service;
+
+import com.ssj.bean.sys.fx.domain.MerchantPlatOrder;
+import com.ssj.dao.sys.fx.dao.FxQueryDao;
+import com.ssj.dao.sys.fx.dao.MerchantPlatOrderDao;
+import com.ssj.framework.core.common.service.BaseServiceImpl;
+import com.ssj.service.sys.fx.service.MerchantPlatOrderService;
+
+
+@Service
+public class MerchantPlatOrderServiceImpl extends BaseServiceImpl<MerchantPlatOrder, String> implements MerchantPlatOrderService {
+
+	private Logger logger = LoggerFactory.getLogger(this.getClass());
+	
+	@Autowired
+	private MerchantPlatOrderDao dao;
+	
+    @Autowired
+    private FxQueryDao queryDao;
+	
+    @Override
+    public PagingAndSortingRepository<MerchantPlatOrder, String> getDao() {
+        return dao;
+    }
+
+	@Override
+	public Page<Map<String, Object>> findMerchantPlatOrderByPage(Map<String, Object> params, Pageable initPage) {
+		return queryDao.findMerchantPlatOrderByPage(params, initPage);
+	}
+
+	@Override
+	public List<MerchantPlatOrder> findMerchantPlatOrderAll(String merchantId) {
+		return dao.findMerchantPlatOrderAll(merchantId);
+	}
+
+    
+
+}
+
+

+ 73 - 420
src/main/java/com/ssj/service/sys/fx/service/impl/MerchantServiceImpl.java

@@ -1,8 +1,6 @@
 package com.ssj.service.sys.fx.service.impl;
 
 import java.math.BigDecimal;
-import java.text.DateFormat;
-import java.text.SimpleDateFormat;
 import java.util.ArrayList;
 import java.util.Calendar;
 import java.util.Date;
@@ -26,7 +24,6 @@ import org.springframework.transaction.annotation.Transactional;
 import com.ssj.bean.common.framework.core.domain.Response;
 import com.ssj.bean.sys.fx.domain.Merchant;
 import com.ssj.bean.sys.fx.domain.MerchantArea;
-import com.ssj.bean.sys.fx.domain.MerchantSign;
 import com.ssj.bean.sys.organization.domain.Organization;
 import com.ssj.bean.sys.role.domain.Admin;
 import com.ssj.bean.weixin.libmy.domain.LibVip;
@@ -46,8 +43,8 @@ import com.ssj.framework.core.rabbitmq.producer.BaseRabbitSend;
 import com.ssj.framework.core.util.RedisUtil;
 import com.ssj.framework.core.util.SystemResourceLocator;
 import com.ssj.service.sys.fx.service.MerchantAreaService;
+import com.ssj.service.sys.fx.service.MerchantMealService;
 import com.ssj.service.sys.fx.service.MerchantService;
-import com.ssj.service.sys.fx.service.MerchantSignService;
 import com.ssj.service.sys.organization.service.OrganizationService;
 import com.ssj.service.sys.role.service.AdminService;
 import com.ssj.service.sys.role.service.RoleService;
@@ -98,10 +95,10 @@ public class MerchantServiceImpl extends BaseServiceImpl<Merchant, String> imple
     private MerchantAreaService merchantAreaService;
     
     @Autowired
-    private CnAreaService cnAreaService;
+    private MerchantMealService merchantMealService;
     
     @Autowired
-    private MerchantSignService merchantSignService;
+    private CnAreaService cnAreaService;
     
 	@Autowired
     private RoleService roleService;
@@ -1219,6 +1216,23 @@ public class MerchantServiceImpl extends BaseServiceImpl<Merchant, String> imple
 		return dao.findMerchantSignBySummaryTime();
 	}
 
+	
+	@Override
+	public List<Merchant> findMerchantSignByAll() {
+		return dao.findMerchantSignByAll();
+	}
+
+	@Override
+	public List<Merchant> findMerchantSignByActiveTime() {
+		return dao.findMerchantSignByActiveTime();
+	}
+
+	@Override
+	public List<Merchant> findMerchantSignByComputeTime() {
+		return dao.findMerchantSignByComputeTime();
+	}
+
+	
 	//保存旧模式商户
 	@Override
 	@Transactional
@@ -1246,19 +1260,13 @@ public class MerchantServiceImpl extends BaseServiceImpl<Merchant, String> imple
 				oldmerchant.setLevel(merchant.getLevel());
 				oldmerchant.setPhone(merchant.getPhone());
 				oldmerchant.setPrice(merchant.getPrice());
-				oldmerchant.setOutPrice(merchant.getOutPrice());
 				oldmerchant.setStatus(merchant.getStatus());
 				oldmerchant.setRemarks(merchant.getRemarks());
 				oldmerchant.setUnitName(merchant.getUnitName());
-				oldmerchant.setSignService(merchant.getSignService());
 				oldmerchant.setType(merchant.getType());
-				oldmerchant.setHardwareService(merchant.getHardwareService());
-				oldmerchant.setHardwarePrice(merchant.getHardwarePrice());
 				oldmerchant.setAddress(merchant.getAddress());
-				oldmerchant.setLibServiceMonth(0);
 				oldmerchant.setLocation(location);
 				
-				oldmerchant.setMunitPrice(merchant.getMunitPrice());
 				oldmerchant.setSignerPerson(merchant.getSignerPerson());
 				oldmerchant.setContractNo(merchant.getContractNo());
 				//合同签约时间
@@ -1346,14 +1354,17 @@ public class MerchantServiceImpl extends BaseServiceImpl<Merchant, String> imple
 				merchant.setLibService(0);
 				merchant.setPlatformService(0);
 				merchant.setHardwareService(0);
+				merchant.setSignService(0);
 				merchant.setHardwarePrice((double)0);
-				merchant.setLibServiceMonth(0);
+				merchant.setOutPrice((double)0);
+				merchant.setCurIsSummary(0);
+				
 				merchant.setContractTime(startTime!=null ? DateHelper.parseDate(contractTimeStr, "yyyy-MM-dd") : null);
 				merchant.setSignTime(startTime!=null ? DateHelper.parseDate(startTime, "yyyy-MM-dd"): null);
 				merchant.setEndSignTime(endTime!=null ? DateHelper.parseDate(endTime, "yyyy-MM-dd"): null);
 				merchant.setCreateTime(new Date());
 				merchant.setSaleLoginName(curadmin.getLoginName());
-				merchant.setCurIsSummary(0);
+				
 				String code="SSJ-FX";
 				if(StringUtils.isNotEmpty(merchant.getParentPosCode())){
 					Merchant pMerchant =this.getMerchantByPosCode(merchant.getParentPosCode());
@@ -1425,12 +1436,7 @@ public class MerchantServiceImpl extends BaseServiceImpl<Merchant, String> imple
 				Admin curadmin) {
 		Response response=new Response();
 		
-		
 		if(StringUtils.isNotEmpty(merchant.getId())){
-			
-				boolean isSignType=false;//修改了服务包
-				boolean isServiceMonth=false;//修改了月份
-				
 				Merchant oldmerchant =this.getById(merchant.getId());
 				
 				if(StringUtils.isNotEmpty(merchant.getLibId())) {
@@ -1441,60 +1447,32 @@ public class MerchantServiceImpl extends BaseServiceImpl<Merchant, String> imple
 					}
 				}
 				
-				if(merchant.getLibServiceMonth()<oldmerchant.getLibServiceMonth()) {
-					response.failure("您充值月份数不可小于当前月份数");
-			        return response;
-				}
-				
-				//旧的月份
-				Integer oldMonth=oldmerchant.getLibServiceMonth();
-				//新的月份
-				Integer month=merchant.getLibServiceMonth();
-				
-				if(!oldmerchant.getSignType().equals(merchant.getSignType())) {
-					isSignType=true;
-				}
-				if(!oldmerchant.getLibServiceMonth().equals(merchant.getLibServiceMonth())) {
-					isServiceMonth=true;
-				}
-
+				oldmerchant.setLibId(merchant.getLibId());
 				oldmerchant.setDeputyName(merchant.getDeputyName());
 				oldmerchant.setDeputyPhone(merchant.getDeputyPhone());
 				oldmerchant.setLegalPerson(merchant.getLegalPerson());
 				oldmerchant.setLevel(merchant.getLevel());
 				oldmerchant.setPhone(merchant.getPhone());
-				oldmerchant.setPrice(merchant.getPrice());
-				oldmerchant.setOutPrice(merchant.getOutPrice());
 				oldmerchant.setStatus(merchant.getStatus());
 				oldmerchant.setRemarks(merchant.getRemarks());
 				oldmerchant.setUnitName(merchant.getUnitName());
-				oldmerchant.setSignService(merchant.getSignService());
 				oldmerchant.setType(merchant.getType());
 				oldmerchant.setHardwareService(merchant.getHardwareService());
 				oldmerchant.setHardwarePrice(merchant.getHardwarePrice());
 				oldmerchant.setAddress(merchant.getAddress());
 				oldmerchant.setMealType(merchant.getMealType());
-				oldmerchant.setLibServiceMonth(merchant.getLibServiceMonth());
 				oldmerchant.setLocation(location);
-				
-				oldmerchant.setMunitPrice(merchant.getMunitPrice());
 				oldmerchant.setSignerPerson(merchant.getSignerPerson());
-				oldmerchant.setBuyMonth(merchant.getBuyMonth());
-				oldmerchant.setGiveMonth(merchant.getGiveMonth());
 				oldmerchant.setContractNo(merchant.getContractNo());
-				oldmerchant.setPlusAmountPrice(merchant.getPlusAmountPrice());
-				oldmerchant.setPlusMonthPrice(merchant.getPlusMonthPrice());
 				
 				//合同签约时间
 				if(StringUtils.isNotEmpty(contractTimeStr)) {
 					oldmerchant.setContractTime(DateHelper.parseDate(contractTimeStr, "yyyy-MM-dd"));
 				}
-				
 				//合同日期
 				if(StringUtils.isNotEmpty(startTime)) {
 					oldmerchant.setSignTime(DateHelper.parseDate(startTime, "yyyy-MM-dd"));
 				}
-				
 				//合同日期
 				if(StringUtils.isNotEmpty(endTime)) {
 					oldmerchant.setEndSignTime(DateHelper.parseDate(endTime, "yyyy-MM-dd"));
@@ -1505,14 +1483,11 @@ public class MerchantServiceImpl extends BaseServiceImpl<Merchant, String> imple
 					oldmerchant.setStartActiveTime(DateHelper.parseDate(startActiveTimeStr, "yyyy-MM-dd"));
 				}
 				
-				//激活结束日期,初始化下一个结算日。
+				//激活结束日期
 				if(StringUtils.isNotEmpty(activeTimeStr)) {
 					oldmerchant.setActiveTime(DateHelper.parseDate(activeTimeStr, "yyyy-MM-dd"));
-					
-					oldmerchant.setCurSummaryTime(oldmerchant.getActiveTime());//当前结算日为激活结束日期
-					oldmerchant.setNextSummaryTime(DateHelper.getMonthDate(oldmerchant.getCurSummaryTime(),1));//下一个结算日为激活结束日期+1月
 				}
-
+				
 				//计费开始日期也可设为空
 				if(StringUtils.isNotEmpty(computeTimeStr)) {
 					oldmerchant.setComputeTime(DateHelper.parseDate(computeTimeStr, "yyyy-MM-dd"));
@@ -1520,14 +1495,15 @@ public class MerchantServiceImpl extends BaseServiceImpl<Merchant, String> imple
 					oldmerchant.setComputeTime(null);
 				}
 				
-				//重新关联学校
+				this.save(oldmerchant);
+				
+			    //重新关联学校
 				if(StringUtils.isNotEmpty(schoollist)) {
 					//删除所有关联的学校
 					List<MerchantArea> merchantAreas=merchantAreaService.findSchoolByMerchantList(merchant.getId());
 					for (MerchantArea merchantArea : merchantAreas) {
 						merchantAreaService.delete(merchantArea);
 					}
-					
 					merchantAreas=new ArrayList<MerchantArea>();
 					String[] areaIds=schoollist.split(";");
 					for (String areaId : areaIds) {
@@ -1541,79 +1517,11 @@ public class MerchantServiceImpl extends BaseServiceImpl<Merchant, String> imple
 					merchantAreaService.save(merchantAreas);
 				}
 				
-				//如果修改了套餐的模式,就重新处理数据 加油包
-				if(!oldmerchant.getSignType().equals(merchant.getSignType())) {
-					List<MerchantSign> merchantSigns=merchantSignService.findMerchantSignByMerchantIdGTTime(
-							oldmerchant.getId(),
-							oldmerchant.getComputeTime()!=null ? oldmerchant.getComputeTime() : oldmerchant.getActiveTime(),
-							0);
-					Integer signNum=0;
-					for (MerchantSign merchantSign : merchantSigns) {
-						signNum=signNum+merchantSign.getLibService();
-					}
-					switch (merchant.getSignType()) {
-						case 1:
-							oldmerchant.setLibService(30+signNum);
-							oldmerchant.setPortNum(200);
-							break;
-						case 2:
-							oldmerchant.setLibService(50+signNum);
-							oldmerchant.setPortNum(200);
-							break;
-						case 3:
-							oldmerchant.setLibService(100+signNum);
-							oldmerchant.setPortNum(400);
-							break;
-						case 4:
-							oldmerchant.setLibService(20+signNum);
-							oldmerchant.setPortNum(200);
-							break;
-						case 5:
-							oldmerchant.setLibService(merchant.getLibService());
-							oldmerchant.setPortNum(400);
-							break;
-						default:
-							oldmerchant.setLibService(0);
-							oldmerchant.setPortNum(0);
-							break;
-					}
-					oldmerchant.setSignType(merchant.getSignType());//更新套餐
-				}
-				this.save(oldmerchant);
-				
-				if(isSignType || isServiceMonth) {
-					//记录套餐更改记录
-					for (int i = oldMonth+1; i <= month; i++) {
-						TbLibJoinConsume consume=new TbLibJoinConsume();
-						consume.setToLibId(merchant.getLibId());
-						consume.setToMerchantId(merchant.getId());
-						consume.setLibService(oldmerchant.getLibService());
-						consume.setPlatformService(0);
-						consume.setType(6);
-						consume.setSignType(merchant.getSignType());
-						consume.setComputeNum(merchant.getCurIsSummary());
-						consume.setRemarks("服务包开通【服务包开通:第"+i+"月】");
-						consume.setCreateTime(new Date());
-						libJoinConsumeService.save(consume);
-					}
-				}
-				
-				//调用openApi接口
+				//重新同步套餐的数据信息
 				if(StringUtils.isNotEmpty(oldmerchant.getLibId())) {
-					DateFormat format = new SimpleDateFormat("yyyy-MM-dd");
-					libVipServiceService.openApiServiceCRM(
-							3,
-							oldmerchant.getLibId(), 
-							oldmerchant.getSignType(),
-							oldmerchant.getMealType(),
-							oldmerchant.getLibService(),
-							oldmerchant.getStartActiveTime()!=null ? format.format(oldmerchant.getStartActiveTime()) : "",
-							oldmerchant.getComputeTime()!=null ? format.format(oldmerchant.getComputeTime()) : format.format(oldmerchant.getActiveTime()),
-							oldmerchant.getComputeTime()!=null ? 
-									format.format(DateHelper.getMonthDate(oldmerchant.getComputeTime(),oldmerchant.getLibServiceMonth())) : 
-										format.format(DateHelper.getMonthDate(oldmerchant.getActiveTime(),oldmerchant.getLibServiceMonth()))
-							);
+					merchantMealService.updateMerchantByMeal(oldmerchant.getId());
 				}
+				
 				this.syncRecordByMerchant(curadmin.getLoginName(), oldmerchant.getId(),"", "修改套餐商户");
 				
 		}else{
@@ -1642,6 +1550,8 @@ public class MerchantServiceImpl extends BaseServiceImpl<Merchant, String> imple
 				
 				merchant.setLocation(location);
 				merchant.setPortNum(0);
+				merchant.setPrice((double) 0);
+				merchant.setOutPrice((double) 0);
 				merchant.setLibService(0);
 				merchant.setPlatformService(0);
 				merchant.setHardwareService(0);
@@ -1654,29 +1564,30 @@ public class MerchantServiceImpl extends BaseServiceImpl<Merchant, String> imple
 				if(StringUtils.isNotEmpty(contractTimeStr)) {
 					merchant.setContractTime(DateHelper.parseDate(contractTimeStr, "yyyy-MM-dd"));
 				}
+				//合同开始日期
+				if(StringUtils.isNotEmpty(startTime)) {
+					merchant.setSignTime(DateHelper.parseDate(startTime, "yyyy-MM-dd"));
+				}
+				//合同结束日期
+				if(StringUtils.isNotEmpty(endTime)) {
+					merchant.setEndSignTime(DateHelper.parseDate(endTime, "yyyy-MM-dd"));
+				}
+				//激活开始日期
 				if(StringUtils.isNotEmpty(startActiveTimeStr)) {
 					merchant.setStartActiveTime(DateHelper.parseDate(startActiveTimeStr, "yyyy-MM-dd"));
 				}
+				//激活结束日期
 				if(StringUtils.isNotEmpty(activeTimeStr)) {
 					merchant.setActiveTime(DateHelper.parseDate(activeTimeStr, "yyyy-MM-dd"));
-					
-					merchant.setCurSummaryTime(DateHelper.parseDate(activeTimeStr, "yyyy-MM-dd"));
-					merchant.setNextSummaryTime(DateHelper.getMonthDate(merchant.getCurSummaryTime(),1));
 				}
+				//计费开始日期也可设为空
 				if(StringUtils.isNotEmpty(computeTimeStr)) {
 					merchant.setComputeTime(DateHelper.parseDate(computeTimeStr, "yyyy-MM-dd"));
-					
-					merchant.setCurSummaryTime(DateHelper.parseDate(activeTimeStr, "yyyy-MM-dd"));
-					merchant.setNextSummaryTime(DateHelper.getMonthDate(merchant.getCurSummaryTime(),1));
-				}
-				if(StringUtils.isNotEmpty(startTime)) {
-					merchant.setSignTime(DateHelper.parseDate(startTime, "yyyy-MM-dd"));
-				}
-				if(StringUtils.isNotEmpty(endTime)) {
-					merchant.setEndSignTime(DateHelper.parseDate(endTime, "yyyy-MM-dd"));
+				}else {
+					merchant.setComputeTime(null);
 				}
 				
-
+				
 				String code="SSJ-FX";
 				if(StringUtils.isNotEmpty(merchant.getParentPosCode())){
 					Merchant pMerchant =this.getMerchantByPosCode(merchant.getParentPosCode());
@@ -1686,33 +1597,6 @@ public class MerchantServiceImpl extends BaseServiceImpl<Merchant, String> imple
 				}
 				merchant.setOrgCode(code);
 				
-				switch (merchant.getSignType()) {
-					case 1:
-						merchant.setLibService(30);
-						merchant.setPortNum(200);
-						break;
-					case 2:
-						merchant.setLibService(50);
-						merchant.setPortNum(200);
-						break;
-					case 3:
-						merchant.setLibService(100);
-						merchant.setPortNum(400);
-						break;
-					case 4:
-						merchant.setLibService(20);
-						merchant.setPortNum(200);
-						break;
-					case 5:
-						merchant.setLibService(merchant.getLibService());
-						merchant.setPortNum(400);
-						break;
-					default:
-						merchant.setLibService(0);
-						merchant.setPortNum(0);
-						break;
-				}
-				
 				//添加admin用户信息
 				admin=new Admin();
 				admin.setLoginName(merchant.getPosCode());
@@ -1740,60 +1624,6 @@ public class MerchantServiceImpl extends BaseServiceImpl<Merchant, String> imple
 					}
 					merchantAreaService.save(merchantAreas);
 				}
-
-				//记录开通商户记录
-				for (int i = 1; i <= merchant.getLibServiceMonth(); i++) {
-					TbLibJoinConsume consume=new TbLibJoinConsume();
-					consume.setToLibId(merchant.getLibId());
-					consume.setToMerchantId(merchant.getId());
-					consume.setLibService(merchant.getLibService());
-					consume.setPlatformService(0);
-					consume.setSignType(merchant.getSignType());
-					consume.setType(6);
-					consume.setComputeNum(merchant.getCurIsSummary());
-					consume.setRemarks("服务包开通【服务包开通:第"+i+"月】");
-					consume.setCreateTime(new Date());
-					libJoinConsumeService.save(consume);
-				}
-	
-				//如果激活时间小于当前时间,生成激活流水。
-				if(merchant.getComputeTime()==null && merchant.getActiveTime().getTime()<=new Date().getTime()) {
-					merchant.setCurIsSummary(1);
-					merchant.setCurSummaryTime(new Date());
-					merchant.setNextSummaryTime(DateHelper.getMonthDate(merchant.getCurSummaryTime(),1));
-					this.save(merchant);
-					
-					//记录
-					TbLibJoinConsume consume=new TbLibJoinConsume();
-					consume.setFromLibId(merchant.getLibId());
-					consume.setFromMerchantId(merchant.getId());
-					consume.setLibService(merchant.getLibService());
-					consume.setPlatformService(0);
-					consume.setType(7);
-					consume.setComputeNum(merchant.getCurIsSummary());
-					consume.setSignType(merchant.getSignType());
-					consume.setRemarks("激活期扣费【服务包扣费】");
-					consume.setCreateTime(new Date());
-					libJoinConsumeService.save(consume);
-				}
-				
-				
-				//调用openApi接口
-				if(StringUtils.isNotEmpty(merchant.getLibId())) {
-					DateFormat format = new SimpleDateFormat("yyyy-MM-dd");
-					libVipServiceService.openApiServiceCRM(
-							3,
-							merchant.getLibId(), 
-							merchant.getSignType(),
-							merchant.getMealType(),
-							merchant.getLibService(),
-							merchant.getStartActiveTime()!=null ? format.format(merchant.getStartActiveTime()) : "",
-							merchant.getComputeTime()!=null ? format.format(merchant.getComputeTime()) : format.format(merchant.getActiveTime()),
-							merchant.getComputeTime()!=null ? 
-									format.format(DateHelper.getMonthDate(merchant.getComputeTime(),merchant.getLibServiceMonth())) : 
-										format.format(DateHelper.getMonthDate(merchant.getActiveTime(),merchant.getLibServiceMonth()))
-							);
-				}
 				
 				this.syncRecordByMerchant(curadmin.getLoginName(), merchant.getId(),"", "新增套餐商户");
 		}
@@ -1812,10 +1642,7 @@ public class MerchantServiceImpl extends BaseServiceImpl<Merchant, String> imple
 		Response response=new Response();
 		
 		if(StringUtils.isNotEmpty(merchant.getId())){
-				
-				boolean isSignType=false;//修改了服务包
-				boolean isServiceMonth=false;//修改了月份
-				
+			
 				Merchant oldmerchant =this.getById(merchant.getId());
 				
 				if(StringUtils.isNotEmpty(merchant.getLibId())) {
@@ -1826,20 +1653,12 @@ public class MerchantServiceImpl extends BaseServiceImpl<Merchant, String> imple
 					}
 				}
 				
-				//旧的月份
-				Integer oldMonth=oldmerchant.getLibServiceMonth();
-				
-				if(!oldmerchant.getSignType().equals(merchant.getSignType())) {
-					isSignType=true;
-				}
-
+				oldmerchant.setLibId(merchant.getLibId());
 				oldmerchant.setDeputyName(merchant.getDeputyName());
 				oldmerchant.setDeputyPhone(merchant.getDeputyPhone());
 				oldmerchant.setLegalPerson(merchant.getLegalPerson());
 				oldmerchant.setLevel(merchant.getLevel());
 				oldmerchant.setPhone(merchant.getPhone());
-				oldmerchant.setPrice(merchant.getPrice());
-				oldmerchant.setOutPrice(merchant.getOutPrice());
 				oldmerchant.setStatus(merchant.getStatus());
 				oldmerchant.setRemarks(merchant.getRemarks());
 				oldmerchant.setUnitName(merchant.getUnitName());
@@ -1849,17 +1668,9 @@ public class MerchantServiceImpl extends BaseServiceImpl<Merchant, String> imple
 				oldmerchant.setHardwarePrice(merchant.getHardwarePrice());
 				oldmerchant.setAddress(merchant.getAddress());
 				oldmerchant.setMealType(merchant.getMealType());
-				oldmerchant.setLibServiceMonth(merchant.getLibServiceMonth());
 				oldmerchant.setLocation(location);
-				
-				oldmerchant.setMunitPrice(merchant.getMunitPrice());
 				oldmerchant.setSignerPerson(merchant.getSignerPerson());
 				oldmerchant.setContractNo(merchant.getContractNo());
-				oldmerchant.setBuyMonth(merchant.getBuyMonth());
-				oldmerchant.setGiveMonth(merchant.getGiveMonth());
-				oldmerchant.setContractNo(merchant.getContractNo());
-				oldmerchant.setPlusAmountPrice(merchant.getPlusAmountPrice());
-				oldmerchant.setPlusMonthPrice(merchant.getPlusMonthPrice());
 				
 				//合同签约时间
 				if(StringUtils.isNotEmpty(contractTimeStr)) {
@@ -1876,25 +1687,7 @@ public class MerchantServiceImpl extends BaseServiceImpl<Merchant, String> imple
 					oldmerchant.setEndSignTime(DateHelper.parseDate(endTime, "yyyy-MM-dd"));
 				}
 				
-				//激活结束日期,初始化下一个结算日。
-				if(StringUtils.isNotEmpty(activeTimeStr)) {
-					oldmerchant.setStartActiveTime(DateHelper.parseDate(activeTimeStr, "yyyy-MM-dd"));
-					oldmerchant.setActiveTime(DateHelper.parseDate(activeTimeStr, "yyyy-MM-dd"));
-					
-					oldmerchant.setCurSummaryTime(oldmerchant.getActiveTime());//当前结算日为激活结束日期
-					oldmerchant.setNextSummaryTime(DateHelper.getMonthDate(oldmerchant.getCurSummaryTime(),1));//下一个结算日为激活结束日期+1月
-				}
-				
-				if(StringUtils.isNotEmpty(endActiveTimeStr)) {
-					oldmerchant.setEndActiveTime(DateHelper.parseDate(endActiveTimeStr, "yyyy-MM-dd"));
-				}
-				
-				Integer month=DateHelper.getDifferMonth(oldmerchant.getActiveTime(), oldmerchant.getEndActiveTime());
-				oldmerchant.setLibServiceMonth(month);
-				
-				if(!oldMonth.equals(month)) {
-					isServiceMonth=true;
-				}
+				this.save(oldmerchant);
 				
 				//重新关联学校
 				if(StringUtils.isNotEmpty(schoollist)) {
@@ -1903,7 +1696,6 @@ public class MerchantServiceImpl extends BaseServiceImpl<Merchant, String> imple
 					for (MerchantArea merchantArea : merchantAreas) {
 						merchantAreaService.delete(merchantArea);
 					}
-					
 					merchantAreas=new ArrayList<MerchantArea>();
 					String[] areaIds=schoollist.split(";");
 					for (String areaId : areaIds) {
@@ -1916,78 +1708,12 @@ public class MerchantServiceImpl extends BaseServiceImpl<Merchant, String> imple
 					}
 					merchantAreaService.save(merchantAreas);
 				}
-				
-				//如果修改了套餐的模式,就重新处理数据 加油包
-				if(!oldmerchant.getSignType().equals(merchant.getSignType())) {
-					List<MerchantSign> merchantSigns=merchantSignService.findMerchantSignByMerchantIdGTTime(
-							oldmerchant.getId(),
-							oldmerchant.getComputeTime()!=null ? oldmerchant.getComputeTime() : oldmerchant.getActiveTime(),
-							0);
-					Integer signNum=0;
-					for (MerchantSign merchantSign : merchantSigns) {
-						signNum=signNum+merchantSign.getLibService();
-					}
-					switch (merchant.getSignType()) {
-						case 1:
-							oldmerchant.setLibService(30+signNum);
-							oldmerchant.setPortNum(200);
-							break;
-						case 2:
-							oldmerchant.setLibService(50+signNum);
-							oldmerchant.setPortNum(200);
-							break;
-						case 3:
-							oldmerchant.setLibService(100+signNum);
-							oldmerchant.setPortNum(400);
-							break;
-						case 4:
-							oldmerchant.setLibService(20+signNum);
-							oldmerchant.setPortNum(200);
-							break;
-						case 5:
-							oldmerchant.setLibService(merchant.getLibService());
-							oldmerchant.setPortNum(400);
-							break;
-						default:
-							oldmerchant.setLibService(0);
-							oldmerchant.setPortNum(0);
-							break;
-					}
-					oldmerchant.setSignType(merchant.getSignType());//更新套餐
-				}
-				this.save(oldmerchant);
-				
-				if(isSignType || isServiceMonth) {
-					//记录套餐更改记录
-					for (int i = oldMonth+1; i <= month; i++) {
-						TbLibJoinConsume consume=new TbLibJoinConsume();
-						consume.setToLibId(merchant.getLibId());
-						consume.setToMerchantId(merchant.getId());
-						consume.setLibService(oldmerchant.getLibService());
-						consume.setPlatformService(0);
-						consume.setType(6);
-						consume.setSignType(merchant.getSignType());
-						consume.setComputeNum(merchant.getCurIsSummary());
-						consume.setRemarks("服务包开通【服务包开通:第"+i+"月】");
-						consume.setCreateTime(new Date());
-						libJoinConsumeService.save(consume);
-					}
-				}
-				
-				//调用openApi接口
+
+				//同步套餐的数据信息
 				if(StringUtils.isNotEmpty(oldmerchant.getLibId())) {
-					DateFormat format = new SimpleDateFormat("yyyy-MM-dd");
-					libVipServiceService.openApiServiceCRM(
-							3,
-							oldmerchant.getLibId(), 
-							oldmerchant.getSignType(),
-							oldmerchant.getMealType(),
-							oldmerchant.getLibService(),
-							oldmerchant.getActiveTime()!=null ? format.format(oldmerchant.getActiveTime()) : "",
-							oldmerchant.getActiveTime()!=null ? format.format(oldmerchant.getActiveTime()) : "",
-							oldmerchant.getEndActiveTime()!=null ? format.format(oldmerchant.getEndActiveTime()) : ""
-							);
+					merchantMealService.updateMerchantByMeal(oldmerchant.getId());
 				}
+				
 				this.syncRecordByMerchant(curadmin.getLoginName(), oldmerchant.getId(),"", "修改套餐商户");
 				
 		}else{
@@ -2016,31 +1742,19 @@ public class MerchantServiceImpl extends BaseServiceImpl<Merchant, String> imple
 				
 				merchant.setLocation(location);
 				merchant.setPortNum(0);
+				merchant.setLibService(0);
 				merchant.setPlatformService(0);
-				merchant.setHardwareService(0);
-				merchant.setHardwarePrice((double)0);
 				merchant.setCreateTime(new Date());
 				merchant.setSaleLoginName(curadmin.getLoginName());
 				merchant.setCurIsSummary(0);
+				merchant.setPrice((double) 0);
+				merchant.setOutPrice((double) 0);
+				
 				
 				if(StringUtils.isNotEmpty(contractTimeStr)) {
 					merchant.setContractTime(DateHelper.parseDate(contractTimeStr, "yyyy-MM-dd"));
 				}
 				
-				if(StringUtils.isNotEmpty(activeTimeStr)) {
-					merchant.setStartActiveTime(DateHelper.parseDate(activeTimeStr, "yyyy-MM-dd"));
-					merchant.setActiveTime(DateHelper.parseDate(activeTimeStr, "yyyy-MM-dd"));
-					
-					merchant.setCurSummaryTime(merchant.getActiveTime());//当前结算日为激活结束日期
-					merchant.setNextSummaryTime(DateHelper.getMonthDate(merchant.getCurSummaryTime(),1));//下一个结算日为激活结束日期+1月
-				}
-				if(StringUtils.isNotEmpty(endActiveTimeStr)) {
-					merchant.setEndActiveTime(DateHelper.parseDate(endActiveTimeStr, "yyyy-MM-dd"));
-				}
-				
-				Integer month=DateHelper.getDifferMonth(merchant.getActiveTime(), merchant.getEndActiveTime());
-				merchant.setLibServiceMonth(month);
-							
 				if(StringUtils.isNotEmpty(startTime)) {
 					merchant.setSignTime(DateHelper.parseDate(startTime, "yyyy-MM-dd"));
 				}
@@ -2057,33 +1771,6 @@ public class MerchantServiceImpl extends BaseServiceImpl<Merchant, String> imple
 				}
 				merchant.setOrgCode(code);
 				
-				switch (merchant.getSignType()) {
-					case 1:
-						merchant.setLibService(30);
-						merchant.setPortNum(200);
-						break;
-					case 2:
-						merchant.setLibService(50);
-						merchant.setPortNum(200);
-						break;
-					case 3:
-						merchant.setLibService(100);
-						merchant.setPortNum(400);
-						break;
-					case 4:
-						merchant.setLibService(20);
-						merchant.setPortNum(200);
-						break;
-					case 5:
-						merchant.setLibService(merchant.getLibService());
-						merchant.setPortNum(400);
-						break;
-					default:
-						merchant.setLibService(0);
-						merchant.setPortNum(0);
-						break;
-				}
-				
 				//添加admin用户信息
 				admin=new Admin();
 				admin.setLoginName(merchant.getPosCode());
@@ -2111,63 +1798,29 @@ public class MerchantServiceImpl extends BaseServiceImpl<Merchant, String> imple
 					}
 					merchantAreaService.save(merchantAreas);
 				}
-
-				//记录开通商户记录
-				for (int i = 1; i <= merchant.getLibServiceMonth(); i++) {
-					TbLibJoinConsume consume=new TbLibJoinConsume();
-					consume.setToLibId(merchant.getLibId());
-					consume.setToMerchantId(merchant.getId());
-					consume.setLibService(merchant.getLibService());
-					consume.setPlatformService(0);
-					consume.setSignType(merchant.getSignType());
-					consume.setType(6);
-					consume.setComputeNum(merchant.getCurIsSummary());
-					consume.setRemarks("服务包开通【服务包开通:第"+i+"月】");
-					consume.setCreateTime(new Date());
-					libJoinConsumeService.save(consume);
-				}
-	
-				//调用openApi接口
-				if(StringUtils.isNotEmpty(merchant.getLibId())) {
-					DateFormat format = new SimpleDateFormat("yyyy-MM-dd");
-					libVipServiceService.openApiServiceCRM(
-							3,
-							merchant.getLibId(), 
-							merchant.getSignType(),
-							merchant.getMealType(),
-							merchant.getLibService(),
-							merchant.getActiveTime()!=null ? format.format(merchant.getActiveTime()) : "",
-									merchant.getActiveTime()!=null ? format.format(merchant.getActiveTime()) : "",
-											merchant.getEndActiveTime()!=null ? format.format(merchant.getEndActiveTime()) : ""
-							);
-				}
-	
 				this.syncRecordByMerchant(curadmin.getLoginName(), merchant.getId(),"", "新增套餐商户");
 		}
 		
 		response.success();
 		return response;
 	}
+
+	@Override
+	public Merchant updateMerchantByLibService(Merchant merchant) {
+		
+		
+		
+		
+		
+		
+		return null;
+	}
 	
 	
 	
 	
 
-	@Override
-	public List<Merchant> findMerchantSignByAll() {
-		return dao.findMerchantSignByAll();
-	}
-
-	@Override
-	public List<Merchant> findMerchantSignByActiveTime() {
-		return dao.findMerchantSignByActiveTime();
-	}
-
-	@Override
-	public List<Merchant> findMerchantSignByComputeTime() {
-		return dao.findMerchantSignByComputeTime();
-	}
-
+	
 
 }
 

A diferenza do arquivo foi suprimida porque é demasiado grande
+ 2174 - 0
src/main/java/com/ssj/service/sys/fx/service/impl/MerchantServiceImpl_202012225.txt


+ 51 - 0
src/main/java/com/ssj/service/sys/fx/service/impl/MerchantSignOrderServiceImpl.java

@@ -0,0 +1,51 @@
+package com.ssj.service.sys.fx.service.impl;
+
+import java.util.List;
+import java.util.Map;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
+import org.springframework.data.repository.PagingAndSortingRepository;
+import org.springframework.stereotype.Service;
+
+import com.ssj.bean.sys.fx.domain.MerchantSignOrder;
+import com.ssj.dao.sys.fx.dao.FxQueryDao;
+import com.ssj.dao.sys.fx.dao.MerchantSignOrderDao;
+import com.ssj.framework.core.common.service.BaseServiceImpl;
+import com.ssj.service.sys.fx.service.MerchantSignOrderService;
+
+
+@Service
+public class MerchantSignOrderServiceImpl extends BaseServiceImpl<MerchantSignOrder, String> implements MerchantSignOrderService {
+
+	private Logger logger = LoggerFactory.getLogger(this.getClass());
+	
+	@Autowired
+	private MerchantSignOrderDao dao;
+	
+    @Autowired
+    private FxQueryDao queryDao;
+	
+    @Override
+    public PagingAndSortingRepository<MerchantSignOrder, String> getDao() {
+        return dao;
+    }
+
+	@Override
+	public Page<Map<String, Object>> findMerchantSignOrderByPage(Map<String, Object> params, Pageable initPage) {
+		return queryDao.findMerchantSignOrderByPage(params, initPage);
+	}
+
+	@Override
+	public List<MerchantSignOrder> findMerchantSignAll(String merchantId) {
+		return dao.findMerchantSignAll(merchantId);
+	}
+
+    
+
+}
+
+

+ 71 - 591
src/main/java/com/ssj/service/sys/fx/service/impl/MerchantSignServiceImpl.java

@@ -1,14 +1,10 @@
 package com.ssj.service.sys.fx.service.impl;
 
-import java.text.DateFormat;
-import java.text.SimpleDateFormat;
 import java.util.ArrayList;
-import java.util.Calendar;
 import java.util.Date;
 import java.util.List;
 import java.util.Map;
 
-import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -17,21 +13,16 @@ import org.springframework.data.domain.Pageable;
 import org.springframework.data.repository.PagingAndSortingRepository;
 import org.springframework.stereotype.Service;
 
-import com.ssj.bean.sys.fx.domain.Merchant;
 import com.ssj.bean.sys.fx.domain.MerchantSign;
-import com.ssj.bean.weixin.libmy.domain.LibVip;
-import com.ssj.bean.weixin.libmy.domain.TbLibJoin;
-import com.ssj.bean.weixin.libmy.domain.TbLibJoinConsume;
+import com.ssj.bean.sys.fx.domain.MerchantSignOrder;
 import com.ssj.dao.sys.fx.dao.FxQueryDao;
 import com.ssj.dao.sys.fx.dao.MerchantSignDao;
 import com.ssj.framework.basic.utils.DateHelper;
 import com.ssj.framework.core.common.service.BaseServiceImpl;
-import com.ssj.service.sys.fx.service.MerchantService;
+import com.ssj.service.sys.fx.service.MerchantMealService;
+import com.ssj.service.sys.fx.service.MerchantSignOrderService;
 import com.ssj.service.sys.fx.service.MerchantSignService;
-import com.ssj.service.weixin.library.service.ILibJoinConsumeService;
-import com.ssj.service.weixin.library.service.ILibJoinService;
-import com.ssj.service.weixin.library.service.ILibVipService;
-import com.ssj.service.weixin.sales.service.LibVipServiceService;
+
 
 
 @Service
@@ -44,612 +35,101 @@ public class MerchantSignServiceImpl extends BaseServiceImpl<MerchantSign, Strin
 	
     @Autowired
     private FxQueryDao queryDao;
-	
-	@Autowired
-	private MerchantService merchantService;
-	
-	@Autowired
-	private ILibJoinService libJoinService;
-	
-	@Autowired
-	private ILibJoinConsumeService libJoinConsumeService;
-	
+    
 	@Autowired
-	private ILibVipService libVipService;
+	private MerchantSignOrderService merchantSignOrderService;
 	
 	@Autowired
-	private LibVipServiceService libVipServiceService;
+	private MerchantMealService merchantMealService;
 	
     @Override
     public PagingAndSortingRepository<MerchantSign, String> getDao() {
         return dao;
     }
 
-    //12点定时任务,处理套餐的数据
-    //1:处理加油包过期的数据
-    
-    //2:处理激活日期的数据,生成一条0的激活数据,设置下一个结算日,CurIsSummary=0,免费结算
-    //注:如果在激活日期之前的时间,也会生成一条0的激活数据,设置下一个结算日,CurIsSummary=0,免费结算
-    
-    //3:处理激活日期的下一结算日数据,再生成一条0的结算数据,CurIsSummary=0的,设置下一个结算时间。
-    //注:设置当前的时间
-    
-    //4:处理开始计费日期,生成一条真实的数据30,设置当前的时间, 设置下一个结算日,CurIsSummary=+1,真实开始结算。
-    
-    
-    //5:处理开始计费日期的下一个结算日,生成一条30的数据,如果当前的CurIsSummary>=LibServiceMonth证明,结算完成,把结算日期都设置为空。
-    //注:处理商户主套餐过期的数据,加油包全过期。
-    
-    @Override
-	public void runMerchantSignByEndTime() {
-    	try {
-	    	//1:处理加油包过期的数据
-			List<MerchantSign> merchantSigns=dao.findMerchantSignByEndTime();
-			for (MerchantSign merchantSign : merchantSigns) {
-				try {
-					merchantSign.setRemarks("加油包失效【加油包过期】");
-					merchantSign.setStatus(1);
-					merchantSign.setUpdateTime(new Date());
-					this.save(merchantSign);
-					
-					Merchant merchant = merchantService.getById(merchantSign.getMerchantId());
-					merchant.setLibService(merchant.getLibService()-merchantSign.getLibService());
-					merchantService.save(merchant);
-		
-					//同步商户表与机构表
-					this.syncMerchantByLibJoin(merchant);
-					
-					//记录加油包记录
-					TbLibJoinConsume consume=new TbLibJoinConsume();
-					consume.setFromLibId(merchant.getLibId());
-					consume.setFromMerchantId(merchant.getId());
-					consume.setLibService(merchantSign.getLibService());
-					consume.setPlatformService(0);
-					consume.setType(11);
-					consume.setComputeNum(merchantSign.getNum());
-					consume.setSignType(merchant.getSignType());
-					consume.setRemarks("加油包失效【加油包过期】");
-					consume.setCreateTime(new Date());
-					libJoinConsumeService.save(consume);
-					
-					DateFormat format = new SimpleDateFormat("yyyy-MM-dd");
-					//调用openApi接口
-					libVipServiceService.openApiServiceCRM(
-							1,
-							merchant.getLibId(), 
-							merchant.getSignType(),
-							merchant.getMealType(),
-							merchant.getLibService(),
-							merchant.getStartActiveTime()!=null ? format.format(merchant.getStartActiveTime()) : "",
-							merchant.getComputeTime()!=null ? format.format(merchant.getComputeTime()) : format.format(merchant.getActiveTime()),
-							merchant.getComputeTime()!=null ? 
-									format.format(DateHelper.getMonthDate(merchant.getComputeTime(),merchant.getLibServiceMonth())) : 
-										format.format(DateHelper.getMonthDate(merchant.getActiveTime(),merchant.getLibServiceMonth())));
-				} catch (Exception e) {
-					e.printStackTrace();
-					logger.error("1:处理加油包过期数据,异常:"+e.getMessage());
-				}
-			}
-			
-			//1.1:处理加油包激活的数据
-			List<MerchantSign> merchantStartSigns=dao.findMerchantSignByStartTime();
-			for (MerchantSign merchantSign : merchantStartSigns) {
-				try {
-					merchantSign.setStatus(0);
-					merchantSign.setUpdateTime(new Date());
-					this.save(merchantSign);
-					
-					Merchant merchant = merchantService.getById(merchantSign.getMerchantId());
-					merchant.setLibService(merchant.getLibService()+merchantSign.getLibService());
-					merchantService.save(merchant);
-					
-					//记录加油包记录
-					TbLibJoinConsume consume=new TbLibJoinConsume();
-					consume.setFromLibId(merchant.getLibId());
-					consume.setFromMerchantId(merchant.getId());
-					consume.setLibService(merchantSign.getLibService());
-					consume.setPlatformService(0);
-					consume.setType(10);
-					consume.setComputeNum(merchantSign.getNum());
-					consume.setSignType(merchant.getSignType());
-					if(merchantSign.getSignType().equals(4)) {
-						consume.setRemarks("加油包开通【新模式月包】");
-					}else {
-						consume.setRemarks("加油包开通【新模式量包】");
-					}
-					consume.setCreateTime(new Date());
-					libJoinConsumeService.save(consume);
-					
-					DateFormat format = new SimpleDateFormat("yyyy-MM-dd");
-					//调用openApi接口
-					libVipServiceService.openApiServiceCRM(
-							1,
-							merchant.getLibId(), 
-							merchant.getSignType(),
-							merchant.getMealType(),
-							merchant.getLibService(),
-							merchant.getStartActiveTime()!=null ? format.format(merchant.getStartActiveTime()) : "",
-							merchant.getComputeTime()!=null ? format.format(merchant.getComputeTime()) : format.format(merchant.getActiveTime()),
-							merchant.getComputeTime()!=null ? 
-									format.format(DateHelper.getMonthDate(merchant.getComputeTime(),merchant.getLibServiceMonth())) : 
-										format.format(DateHelper.getMonthDate(merchant.getActiveTime(),merchant.getLibServiceMonth()))
-										);
-					
-				} catch (Exception e) {
-					e.printStackTrace();
-					logger.error("1:处理加油包激活数据,异常:"+e.getMessage());
-				}
-			}
-			
-			
-			//2:处理激活日期的数据,生成一条0的激活数据,设置下一个结算日,CurIsSummary=0,免费结算
-		    //注:如果在激活日期之前的时间,也会生成一条0的激活数据,设置下一个结算日,CurIsSummary=0,免费结算
-			List<Merchant> activeMerchants=merchantService.findMerchantSignByActiveTime();
-			for (Merchant merchant : activeMerchants) {
-				try {
-					//如果开始计费时间为null,就不处理
-					if(merchant.getComputeTime()==null) {
-						continue;
-					}
-					
-					merchant.setCurIsSummary(0);
-					merchant.setCurSummaryTime(new Date());
-					merchant.setNextSummaryTime(DateHelper.getMonthDate(merchant.getCurSummaryTime(),1));
-					merchantService.save(merchant);
-					
-					//记录
-					TbLibJoinConsume consume=new TbLibJoinConsume();
-					consume.setFromLibId(merchant.getLibId());
-					consume.setFromMerchantId(merchant.getId());
-					consume.setLibService(merchant.getLibService());
-					consume.setPlatformService(0);
-					consume.setType(7);
-					consume.setComputeNum(merchant.getCurIsSummary());
-					consume.setSignType(merchant.getSignType());
-					consume.setRemarks("激活期扣费【服务包扣费】");
-					consume.setCreateTime(new Date());
-					libJoinConsumeService.save(consume);
-					
-				} catch (Exception e) {
-					e.printStackTrace();
-					logger.error("2:处理商户系统激活日期数据,异常:"+e.getMessage());
-				}
-			}
-			
-			
-			
-			//3:处理激活日期的数据,设置下一个结算日,CurIsSummary=1
-		    //注:如果在激活日期之前的时间,设置下一个结算日,CurIsSummary=1
-			for (Merchant merchant : activeMerchants) {
-				try {
-					
-					if(merchant.getComputeTime()==null) {
-						merchant.setCurIsSummary(1);
-						merchant.setCurSummaryTime(new Date());
-						merchant.setNextSummaryTime(DateHelper.getMonthDate(merchant.getCurSummaryTime(),1));
-						merchantService.save(merchant);
-						
-						//记录
-						TbLibJoinConsume consume=new TbLibJoinConsume();
-						consume.setFromLibId(merchant.getLibId());
-						consume.setFromMerchantId(merchant.getId());
-						consume.setLibService(merchant.getLibService());
-						consume.setPlatformService(0);
-						consume.setType(7);
-						consume.setComputeNum(merchant.getCurIsSummary());
-						consume.setSignType(merchant.getSignType());
-						consume.setRemarks("激活期扣费【服务包扣费】");
-						consume.setCreateTime(new Date());
-						libJoinConsumeService.save(consume);
-					}
-					
-				} catch (Exception e) {
-					e.printStackTrace();
-					logger.error("3:处理商户系统激活日期数据,异常:"+e.getMessage());
-				}
-			}
-			
-			
-			
-			//4:处理激活日期的下一结算日数据,再生成一条0的结算数据,CurIsSummary=0的,设置下一个结算时间。
-		    //注:设置当前的时间
-			List<Merchant> activeEndMerchants=merchantService.findMerchantSignBySummaryTime();
-			for (Merchant merchant : activeEndMerchants) {
-				
-				//如果开始计费时间为null,就不处理
-				if(merchant.getComputeTime()==null) {
-					continue;
-				}
-				
-				//只有在激活期的商户才处理数据。
-				if(merchant.getCurIsSummary()==null || merchant.getCurIsSummary()==0) {
-					try {
-						//如果当前日期还是小于开始计费日期,再生一条激活的记录
-						if(merchant.getComputeTime().getTime()>new Date().getTime()) {
-							
-							merchant.setCurIsSummary(0);
-							merchant.setCurSummaryTime(new Date());
-							merchant.setNextSummaryTime(DateHelper.getMonthDate(merchant.getCurSummaryTime(),1));
-							merchantService.save(merchant);
-							
-							//生成激活期的免费失效记录。
-							TbLibJoinConsume consume=new TbLibJoinConsume();
-							consume.setFromLibId(merchant.getLibId());
-							consume.setFromMerchantId(merchant.getId());
-							consume.setLibService(merchant.getLibService());
-							consume.setPlatformService(0);
-							consume.setType(8);
-							consume.setComputeNum(merchant.getCurIsSummary());
-							consume.setSignType(merchant.getSignType());
-							consume.setRemarks("激活期失效【服务包失效】");
-							consume.setCreateTime(new Date());
-							libJoinConsumeService.save(consume);
-							
-							
-							consume=new TbLibJoinConsume();
-							consume.setFromLibId(merchant.getLibId());
-							consume.setFromMerchantId(merchant.getId());
-							consume.setLibService(merchant.getLibService());
-							consume.setPlatformService(0);
-							consume.setType(7);
-							consume.setComputeNum(merchant.getCurIsSummary());
-							consume.setSignType(merchant.getSignType());
-							consume.setRemarks("激活期扣费【服务包扣费】");
-							consume.setCreateTime(new Date());
-							libJoinConsumeService.save(consume);
-						}
+	@Override
+	public Page<Map<String, Object>> findMerchantSignByPage(Map<String, Object> params, Pageable initPage) {
+		return queryDao.findMerchantSignByPage(params, initPage);
+	}
+	
 
-					} catch (Exception e) {
-						e.printStackTrace();
-						logger.error("4:处理商户激活结算日期数据,异常:"+e.getMessage());
-					}
-				}
-			}
-			
-			
-			
-			//5:处理开始计费日期,生成一条真实的数据30,设置当前的时间, 设置下一个结算日,CurIsSummary=+1,真实开始结算。
-			List<Merchant> computeMerchants=merchantService.findMerchantSignByComputeTime();
-			for (Merchant merchant : computeMerchants) {
-				try {
-					//如果开始计费时间为null,就不处理
-					if(merchant.getComputeTime()==null) {
-						continue;
-					}
-					
-					//记录激活期的结算
-					TbLibJoinConsume consume=new TbLibJoinConsume();
-					consume.setFromLibId(merchant.getLibId());
-					consume.setFromMerchantId(merchant.getId());
-					consume.setLibService(merchant.getLibService());
-					consume.setPlatformService(0);
-					consume.setType(8);
-					consume.setComputeNum(merchant.getCurIsSummary());
-					consume.setSignType(merchant.getSignType());
-					consume.setRemarks("激活期失效【服务包失效】");
-					consume.setCreateTime(new Date());
-					libJoinConsumeService.save(consume);
-					
-					
-					merchant.setCurIsSummary(1);
-					merchant.setCurSummaryTime(new Date());
-					merchant.setNextSummaryTime(DateHelper.getMonthDate(merchant.getCurSummaryTime(),1));
-					merchantService.save(merchant);
-					
-					//记录
-					consume=new TbLibJoinConsume();
-					consume.setFromLibId(merchant.getLibId());
-					consume.setFromMerchantId(merchant.getId());
-					consume.setLibService(merchant.getLibService());
-					consume.setPlatformService(0);
-					consume.setType(7);
-					consume.setComputeNum(merchant.getCurIsSummary());
-					consume.setSignType(merchant.getSignType());
-					consume.setRemarks("计费期扣费【服务包扣费:第"+merchant.getCurIsSummary()+"月】");
-					consume.setCreateTime(new Date());
-					libJoinConsumeService.save(consume);
+	@Override
+	public Page<Map<String, Object>> findMerchantSignStatusByPage(Map<String, Object> params, Pageable initPage) {
+		return queryDao.findMerchantSignStatusByPage(params, initPage);
+	}
 
-				} catch (Exception e) {
-					e.printStackTrace();
-					logger.error("5:处理商户系统激活日期数据,异常:"+e.getMessage());
-				}
-			}
-			
-			
-			
-			//6:处理商户结算的数据
-			List<Merchant> summaryMerchants=merchantService.findMerchantSignBySummaryTime();
-			for (Merchant merchant : summaryMerchants) {
-				try {
-					//还在免费期的,直接跳出,由第3步处理了
-					if(merchant.getCurIsSummary()==null || merchant.getCurIsSummary()<=0) {
-						continue;
-					}
-					
-					//没有月份数据的,直接跳出,不做处理
-					if(merchant.getLibServiceMonth()==null || merchant.getLibServiceMonth()<=0) {
-						continue;
-					}
-					
-					//记录
-					TbLibJoinConsume consume=new TbLibJoinConsume();
-					consume.setFromLibId(merchant.getLibId());
-					consume.setFromMerchantId(merchant.getId());
-					consume.setLibService(merchant.getLibService());
-					consume.setSignType(merchant.getSignType());
-					consume.setPlatformService(0);
-					consume.setType(8);
-					consume.setComputeNum(merchant.getCurIsSummary());
-					consume.setRemarks("计费期失效【服务包失效:第"+(merchant.getCurIsSummary())+"月】");
-					consume.setCreateTime(new Date());
-					libJoinConsumeService.save(consume);
-					
-					//处理商户结算的数据
-					//已经够月份了,就终止商户
-					if(merchant.getCurIsSummary()>=merchant.getLibServiceMonth()) {
-						try {
-							merchant.setCurIsSummary(0);
-							merchant.setCurSummaryTime(null);
-							merchant.setNextSummaryTime(null);
-							merchant.setLibServiceMonth(0);
-							merchant.setLibService(0);
-							merchantService.save(merchant);
-							
-							this.syncMerchantByLibJoin(merchant);
-							
-							List<MerchantSign> signs=this.findMerchantSignByMerchantId(merchant.getId());
-							for (MerchantSign merchantSign : signs) {
-								merchantSign.setRemarks("套餐过期引起加油包过期");
-								merchantSign.setStatus(1);
-								merchantSign.setUpdateTime(new Date());
-								this.save(merchantSign);
-							}
-							
-						} catch (Exception e) {
-							e.printStackTrace();
-							logger.error("3:处理商户结算的数据,异常:"+e.getMessage());
-						}
-						continue;
-					}else {
-						merchant.setCurIsSummary(merchant.getCurIsSummary()==null ? 1 : merchant.getCurIsSummary()+1);
-						merchant.setCurSummaryTime(new Date());
-						merchant.setNextSummaryTime(DateHelper.getMonthDate(new Date(),1));
-						merchantService.save(merchant);
-						
-						
-						//记录
-						consume=new TbLibJoinConsume();
-						consume.setFromLibId(merchant.getLibId());
-						consume.setFromMerchantId(merchant.getId());
-						consume.setLibService(merchant.getLibService());
-						consume.setPlatformService(0);
-						consume.setType(7);
-						consume.setComputeNum(merchant.getCurIsSummary());
-						consume.setSignType(merchant.getSignType());
-						consume.setRemarks("计费期扣费【服务包扣费:第"+merchant.getCurIsSummary()+"月】");
-						consume.setCreateTime(new Date());
-						libJoinConsumeService.save(consume);
-						
-					}
-					
-				} catch (Exception e) {
-					e.printStackTrace();
-					logger.error("6:处理商户结算的数据,异常:"+e.getMessage());
-				}
-				
+	
+	@Override
+	public int getMerchantSignByCurLibService(String merchantId) {
+		int libService=0;
+		List<MerchantSign> merchantSigns=dao.getMerchantSignByCur(merchantId);
+		if(merchantSigns!=null) {
+			for (MerchantSign merchantSign : merchantSigns) {
+				libService=libService+merchantSign.getLibService();
 			}
-		} catch (Exception e) {
-			e.printStackTrace();
-			logger.error("12点定时任务,处理套餐的数据,异常:"+e.getMessage());
 		}
-		
+		return libService;
 	}
-    
-    
-    //加油的数量
-    private static int signLibService=5;
-    
-	//套餐模式 【1优选套餐 2VIP套餐 3尊享套餐 4校园服务】 4加油包月包+月 5加油包量包+量。
-	//现在暂时只记录加油的记录。
-	@Override
-	public void insertMerchantSignAndSync(String merchantId, Integer signType,Integer num) {
-		Merchant merchant = merchantService.getById(merchantId);
-		List<MerchantSign> merchantSigns=new ArrayList<MerchantSign>();
-		
-		//开始计费时间是否大等于今天。
-		boolean isGTDay=false;
-		Date computeTime=merchant.getComputeTime()!=null ? merchant.getComputeTime(): merchant.getActiveTime();
-		if(computeTime.getTime()<=new Date().getTime()) {
-			computeTime=new Date();
-			isGTDay=true;
-		}
 
-		String remarks="加油包开通【新模式月包】";
-		Calendar cal = Calendar.getInstance();
-		cal.setTime(computeTime);
-		switch (signType) {
-		case 4:
-			remarks="加油包开通【新模式月包】";
+
+	@Override
+	public void saveMerchantSign(String merchantId, Integer type, Integer num, Integer libService, String signTime,Double unitPrice) {
+		List<MerchantSign> list =new ArrayList<MerchantSign>();
+		MerchantSignOrder signOrder=new MerchantSignOrder();
+		if(type==1) {
+			signOrder.setLibService(libService*num);
+			signOrder.setMerchantId(merchantId);
+			signOrder.setNum(num);
+			signOrder.setSignTime(DateHelper.parseDate(signTime,"yyyy-MM-dd"));
+			signOrder.setType(type);
+			signOrder.setUnitPrice(unitPrice);
+			signOrder.setCreateTime(new Date());
+			merchantSignOrderService.save(signOrder);
+			
+			Date sTime=signOrder.getSignTime();
 			for (int i = 1; i <=num; i++) {
 				MerchantSign merchantSign=new MerchantSign();
-				merchantSign.setMerchantId(merchantId);
-				merchantSign.setSignType(signType);
-				merchantSign.setNum(1);
-				if(isGTDay && i==1) {
-					merchantSign.setStatus(0);
-				}else {
-					merchantSign.setStatus(2);
-				}
-				
 				merchantSign.setCreateTime(new Date());
-				merchantSign.setLibService(signLibService);
+				merchantSign.setLibService(libService);
+				merchantSign.setMerchantId(merchantId);
+				merchantSign.setSignTime(sTime);
+				merchantSign.setEndSignTime(DateHelper.getMonthDate(sTime,1));
+				merchantSign.setStatus(1);
+				merchantSign.setType(type);
+				merchantSign.setOrderId(signOrder.getId());
+				list.add(merchantSign);
 				
-				merchantSign.setSignTime(cal.getTime());
-				cal.add(Calendar.MONTH, 1);
-				merchantSign.setEndSignTime(cal.getTime());
-				merchantSigns.add(merchantSign);
-			}
-			break;
-		case 5:
-			remarks="加油包开通【新模式量包】";
-			MerchantSign merchantSign=new MerchantSign();
-			merchantSign.setMerchantId(merchantId);
-			merchantSign.setSignType(signType);
-			merchantSign.setNum(num);
-			if(isGTDay) {
-				merchantSign.setStatus(0);
-			}else {
-				merchantSign.setStatus(2);
+				sTime=merchantSign.getEndSignTime();
 			}
-			merchantSign.setCreateTime(new Date());
+		}else {
+			signOrder.setLibService(libService*num);
+			signOrder.setMerchantId(merchantId);
+			signOrder.setNum(num);
+			signOrder.setSignTime(DateHelper.parseDate(signTime,"yyyy-MM-dd"));
+			signOrder.setType(type);
+			signOrder.setUnitPrice(unitPrice);
+			signOrder.setCreateTime(new Date());
+			merchantSignOrderService.save(signOrder);
 			
-			merchantSign.setLibService(signLibService*num);
-			merchantSign.setSignTime(cal.getTime());
-			cal.add(Calendar.MONTH, 1);
-			merchantSign.setEndSignTime(cal.getTime());
-			merchantSigns.add(merchantSign);
-			
-			break;
-		default:
-			break;
-		}
-		//保存加油包的记录
-		this.save(merchantSigns);
-
-		//记录加油包记录
-		switch (signType) {
-		case 4:
 			for (int i = 1; i <=num; i++) {
-				TbLibJoinConsume consume=new TbLibJoinConsume();
-				consume.setToLibId(merchant.getLibId());
-				consume.setToMerchantId(merchant.getId());
-				consume.setLibService(signLibService);
-				consume.setPlatformService(0);
-				consume.setType(9);
-				consume.setComputeNum(0);
-				consume.setSignType(merchant.getSignType());
-				consume.setRemarks(remarks);
-				consume.setCreateTime(new Date());
-				libJoinConsumeService.save(consume);
-			}
-			break;
-		case 5:
-			TbLibJoinConsume consume=new TbLibJoinConsume();
-			consume.setToLibId(merchant.getLibId());
-			consume.setToMerchantId(merchant.getId());
-			consume.setLibService(signLibService*num);
-			consume.setPlatformService(0);
-			consume.setType(9);
-			consume.setComputeNum(0);
-			consume.setSignType(merchant.getSignType());
-			consume.setRemarks(remarks);
-			consume.setCreateTime(new Date());
-			libJoinConsumeService.save(consume);
-			break;
-		default:
-			break;
-		}
-		
-		if(computeTime.getTime()<=new Date().getTime()) {
-			TbLibJoinConsume consume=null;
-			switch (signType) {
-			case 4:
-				consume=new TbLibJoinConsume();
-				consume.setFromLibId(merchant.getLibId());
-				consume.setFromMerchantId(merchant.getId());
-				consume.setLibService(signLibService);
-				consume.setPlatformService(0);
-				consume.setType(10);
-				consume.setComputeNum(1);
-				consume.setSignType(merchant.getSignType());
-				consume.setRemarks("加油包激活【新模式月包】");
-				consume.setCreateTime(new Date());
-				libJoinConsumeService.save(consume);
-				
-				break;
-			case 5:
-				consume=new TbLibJoinConsume();
-				consume.setFromLibId(merchant.getLibId());
-				consume.setFromMerchantId(merchant.getId());
-				consume.setLibService(signLibService*num);
-				consume.setPlatformService(0);
-				consume.setType(10);
-				consume.setComputeNum(num);
-				consume.setSignType(merchant.getSignType());
-				consume.setRemarks("加油包激活【新模式量包】");
-				consume.setCreateTime(new Date());
-				libJoinConsumeService.save(consume);
-				
-				break;
-			default:
-				break;
-			}
-			if(consume!=null) {
-				
-				libJoinConsumeService.save(consume);
-				
-				//增量商户表的人数
-				merchant.setLibService(merchant.getLibService()+consume.getLibService());
-				merchantService.save(merchant);	
-				//同步商户表与机构表
-				this.syncMerchantByLibJoin(merchant);
-				
-				DateFormat format = new SimpleDateFormat("yyyy-MM-dd");
-				//调用openApi接口
-				libVipServiceService.openApiServiceCRM(
-						1,
-						merchant.getLibId(), 
-						merchant.getSignType(),
-						merchant.getMealType(),
-						merchant.getLibService(),
-						merchant.getStartActiveTime()!=null ? format.format(merchant.getStartActiveTime()) : "",
-						merchant.getComputeTime()!=null ? format.format(merchant.getComputeTime()) : format.format(merchant.getActiveTime()),
-						merchant.getComputeTime()!=null ? 
-								format.format(DateHelper.getMonthDate(merchant.getComputeTime(),merchant.getLibServiceMonth())) : 
-									format.format(DateHelper.getMonthDate(merchant.getActiveTime(),merchant.getLibServiceMonth())) 
-									);
+				MerchantSign merchantSign=new MerchantSign();
+				merchantSign.setCreateTime(new Date());
+				merchantSign.setLibService(libService);
+				merchantSign.setMerchantId(merchantId);
+				merchantSign.setSignTime(signOrder.getSignTime());
+				merchantSign.setEndSignTime(DateHelper.getMonthDate(merchantSign.getSignTime(),1));
+				merchantSign.setStatus(1);
+				merchantSign.setType(type);
+				merchantSign.setOrderId(signOrder.getId());
+				list.add(merchantSign);
 			}
 		}
-		
-		
-		
+		this.save(list);
+		merchantMealService.updateMerchantByMeal(merchantId);
 	}
 
-	
-	@Override
-	public void syncMerchantByLibJoin(Merchant merchant) {
-		if(merchant!=null && StringUtils.isNotEmpty(merchant.getLibId())) {
-			TbLibJoin libJoin = libJoinService.getById(merchant.getLibId());
-			libJoin.setLibService(merchant.getLibService());
-			libJoinService.save(libJoin);
-		}
-	}
 
-	@Override
-	public List<MerchantSign> findMerchantSignByMerchantId(String merchantId) {
-		return dao.findMerchantSignByMerchantId(merchantId);
-	}
 
-	@Override
-	public Page<Map<String, Object>> findMerchantSignByPage(Map<String, Object> params, Pageable initPage) {
-		return queryDao.findMerchantSignByPage(params, initPage);
-	}
-
-	@Override
-	public List<MerchantSign> findMerchantSignByMerchantIdGTTime(String merchantId, Date computeTime, Integer status) {
-		return dao.findMerchantSignByMerchantIdGTTime(merchantId, computeTime, status);
-	}
-	
-	
-	
-	public static void main(String[] args) {
-		
-		//双数继续,单数停止。
-		
-		final double d = Math.random();
-		final int i = (int)(d*100);
-		System.out.println(i);
-	}
 
 }
 

+ 646 - 0
src/main/java/com/ssj/service/sys/fx/service/impl/MerchantSignServiceImpl.txt

@@ -0,0 +1,646 @@
+package com.ssj.service.sys.fx.service.impl;
+
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
+import org.springframework.data.repository.PagingAndSortingRepository;
+import org.springframework.stereotype.Service;
+
+import com.ssj.bean.sys.fx.domain.Merchant;
+import com.ssj.bean.sys.fx.domain.MerchantSign;
+import com.ssj.bean.weixin.libmy.domain.TbLibJoin;
+import com.ssj.bean.weixin.libmy.domain.TbLibJoinConsume;
+import com.ssj.dao.sys.fx.dao.FxQueryDao;
+import com.ssj.dao.sys.fx.dao.MerchantSignDao;
+import com.ssj.framework.basic.utils.DateHelper;
+import com.ssj.framework.core.common.service.BaseServiceImpl;
+import com.ssj.service.sys.fx.service.MerchantService;
+import com.ssj.service.sys.fx.service.MerchantSignService;
+import com.ssj.service.weixin.library.service.ILibJoinConsumeService;
+import com.ssj.service.weixin.library.service.ILibJoinService;
+import com.ssj.service.weixin.sales.service.LibVipServiceService;
+
+
+@Service
+public class MerchantSignServiceImpl2 extends BaseServiceImpl<MerchantSign, String> implements MerchantSignService {
+
+	private Logger logger = LoggerFactory.getLogger(this.getClass());
+	
+	@Autowired
+	private MerchantSignDao dao;
+	
+    @Autowired
+    private FxQueryDao queryDao;
+	
+	@Autowired
+	private MerchantService merchantService;
+	
+	@Autowired
+	private ILibJoinService libJoinService;
+	
+	@Autowired
+	private ILibJoinConsumeService libJoinConsumeService;
+	
+	@Autowired
+	private LibVipServiceService libVipServiceService;
+	
+    @Override
+    public PagingAndSortingRepository<MerchantSign, String> getDao() {
+        return dao;
+    }
+
+    //12点定时任务,处理套餐的数据
+    //1:处理加油包过期的数据
+    
+    //2:处理激活日期的数据,生成一条0的激活数据,设置下一个结算日,CurIsSummary=0,免费结算
+    //注:如果在激活日期之前的时间,也会生成一条0的激活数据,设置下一个结算日,CurIsSummary=0,免费结算
+    
+    //3:处理激活日期的下一结算日数据,再生成一条0的结算数据,CurIsSummary=0的,设置下一个结算时间。
+    //注:设置当前的时间
+    
+    //4:处理开始计费日期,生成一条真实的数据30,设置当前的时间, 设置下一个结算日,CurIsSummary=+1,真实开始结算。
+    
+    
+    //5:处理开始计费日期的下一个结算日,生成一条30的数据,如果当前的CurIsSummary>=LibServiceMonth证明,结算完成,把结算日期都设置为空。
+    //注:处理商户主套餐过期的数据,加油包全过期。
+    
+    @Override
+	public void runMerchantSignByEndTime() {
+    	try {
+	    	//1:处理加油包过期的数据
+			List<MerchantSign> merchantSigns=dao.findMerchantSignByEndTime();
+			for (MerchantSign merchantSign : merchantSigns) {
+				try {
+					merchantSign.setRemarks("加油包失效【加油包过期】");
+					merchantSign.setStatus(1);
+					merchantSign.setUpdateTime(new Date());
+					this.save(merchantSign);
+					
+					Merchant merchant = merchantService.getById(merchantSign.getMerchantId());
+					merchant.setLibService(merchant.getLibService()-merchantSign.getLibService());
+					merchantService.save(merchant);
+		
+					//同步商户表与机构表
+					this.syncMerchantByLibJoin(merchant);
+					
+					//记录加油包记录
+					TbLibJoinConsume consume=new TbLibJoinConsume();
+					consume.setFromLibId(merchant.getLibId());
+					consume.setFromMerchantId(merchant.getId());
+					consume.setLibService(merchantSign.getLibService());
+					consume.setPlatformService(0);
+					consume.setType(11);
+					consume.setComputeNum(merchantSign.getNum());
+					consume.setSignType(merchant.getSignType());
+					consume.setRemarks("加油包失效【加油包过期】");
+					consume.setCreateTime(new Date());
+					libJoinConsumeService.save(consume);
+					
+					DateFormat format = new SimpleDateFormat("yyyy-MM-dd");
+					//调用openApi接口
+					libVipServiceService.openApiServiceCRM(
+							1,
+							merchant.getLibId(), 
+							merchant.getSignType(),
+							merchant.getMealType(),
+							merchant.getLibService(),
+							merchant.getStartActiveTime()!=null ? format.format(merchant.getStartActiveTime()) : "",
+							merchant.getComputeTime()!=null ? format.format(merchant.getComputeTime()) : format.format(merchant.getActiveTime()),
+							merchant.getComputeTime()!=null ? 
+									format.format(DateHelper.getMonthDate(merchant.getComputeTime(),merchant.getLibServiceMonth())) : 
+										format.format(DateHelper.getMonthDate(merchant.getActiveTime(),merchant.getLibServiceMonth())));
+				} catch (Exception e) {
+					e.printStackTrace();
+					logger.error("1:处理加油包过期数据,异常:"+e.getMessage());
+				}
+			}
+			
+			//1.1:处理加油包激活的数据
+			List<MerchantSign> merchantStartSigns=dao.findMerchantSignByStartTime();
+			for (MerchantSign merchantSign : merchantStartSigns) {
+				try {
+					merchantSign.setStatus(0);
+					merchantSign.setUpdateTime(new Date());
+					this.save(merchantSign);
+					
+					Merchant merchant = merchantService.getById(merchantSign.getMerchantId());
+					merchant.setLibService(merchant.getLibService()+merchantSign.getLibService());
+					merchantService.save(merchant);
+					
+					//记录加油包记录
+					TbLibJoinConsume consume=new TbLibJoinConsume();
+					consume.setFromLibId(merchant.getLibId());
+					consume.setFromMerchantId(merchant.getId());
+					consume.setLibService(merchantSign.getLibService());
+					consume.setPlatformService(0);
+					consume.setType(10);
+					consume.setComputeNum(merchantSign.getNum());
+					consume.setSignType(merchant.getSignType());
+					if(merchantSign.getSignType().equals(4)) {
+						consume.setRemarks("加油包开通【新模式月包】");
+					}else {
+						consume.setRemarks("加油包开通【新模式量包】");
+					}
+					consume.setCreateTime(new Date());
+					libJoinConsumeService.save(consume);
+					
+					DateFormat format = new SimpleDateFormat("yyyy-MM-dd");
+					//调用openApi接口
+					libVipServiceService.openApiServiceCRM(
+							1,
+							merchant.getLibId(), 
+							merchant.getSignType(),
+							merchant.getMealType(),
+							merchant.getLibService(),
+							merchant.getStartActiveTime()!=null ? format.format(merchant.getStartActiveTime()) : "",
+							merchant.getComputeTime()!=null ? format.format(merchant.getComputeTime()) : format.format(merchant.getActiveTime()),
+							merchant.getComputeTime()!=null ? 
+									format.format(DateHelper.getMonthDate(merchant.getComputeTime(),merchant.getLibServiceMonth())) : 
+										format.format(DateHelper.getMonthDate(merchant.getActiveTime(),merchant.getLibServiceMonth()))
+										);
+					
+				} catch (Exception e) {
+					e.printStackTrace();
+					logger.error("1:处理加油包激活数据,异常:"+e.getMessage());
+				}
+			}
+			
+			
+			//2:处理激活日期的数据,生成一条0的激活数据,设置下一个结算日,CurIsSummary=0,免费结算
+		    //注:如果在激活日期之前的时间,也会生成一条0的激活数据,设置下一个结算日,CurIsSummary=0,免费结算
+			List<Merchant> activeMerchants=merchantService.findMerchantSignByActiveTime();
+			for (Merchant merchant : activeMerchants) {
+				try {
+					//如果开始计费时间为null,就不处理
+					if(merchant.getComputeTime()==null) {
+						continue;
+					}
+					
+					merchant.setCurIsSummary(0);
+					merchant.setCurSummaryTime(new Date());
+					merchant.setNextSummaryTime(DateHelper.getMonthDate(merchant.getCurSummaryTime(),1));
+					merchantService.save(merchant);
+					
+					//记录
+					TbLibJoinConsume consume=new TbLibJoinConsume();
+					consume.setFromLibId(merchant.getLibId());
+					consume.setFromMerchantId(merchant.getId());
+					consume.setLibService(merchant.getLibService());
+					consume.setPlatformService(0);
+					consume.setType(7);
+					consume.setComputeNum(merchant.getCurIsSummary());
+					consume.setSignType(merchant.getSignType());
+					consume.setRemarks("激活期扣费【服务包扣费】");
+					consume.setCreateTime(new Date());
+					libJoinConsumeService.save(consume);
+					
+				} catch (Exception e) {
+					e.printStackTrace();
+					logger.error("2:处理商户系统激活日期数据,异常:"+e.getMessage());
+				}
+			}
+			
+			
+			
+			//3:处理激活日期的数据,设置下一个结算日,CurIsSummary=1
+		    //注:如果在激活日期之前的时间,设置下一个结算日,CurIsSummary=1
+			for (Merchant merchant : activeMerchants) {
+				try {
+					
+					if(merchant.getComputeTime()==null) {
+						merchant.setCurIsSummary(1);
+						merchant.setCurSummaryTime(new Date());
+						merchant.setNextSummaryTime(DateHelper.getMonthDate(merchant.getCurSummaryTime(),1));
+						merchantService.save(merchant);
+						
+						//记录
+						TbLibJoinConsume consume=new TbLibJoinConsume();
+						consume.setFromLibId(merchant.getLibId());
+						consume.setFromMerchantId(merchant.getId());
+						consume.setLibService(merchant.getLibService());
+						consume.setPlatformService(0);
+						consume.setType(7);
+						consume.setComputeNum(merchant.getCurIsSummary());
+						consume.setSignType(merchant.getSignType());
+						consume.setRemarks("激活期扣费【服务包扣费】");
+						consume.setCreateTime(new Date());
+						libJoinConsumeService.save(consume);
+					}
+					
+				} catch (Exception e) {
+					e.printStackTrace();
+					logger.error("3:处理商户系统激活日期数据,异常:"+e.getMessage());
+				}
+			}
+			
+			
+			
+			//4:处理激活日期的下一结算日数据,再生成一条0的结算数据,CurIsSummary=0的,设置下一个结算时间。
+		    //注:设置当前的时间
+			List<Merchant> activeEndMerchants=merchantService.findMerchantSignBySummaryTime();
+			for (Merchant merchant : activeEndMerchants) {
+				
+				//如果开始计费时间为null,就不处理
+				if(merchant.getComputeTime()==null) {
+					continue;
+				}
+				
+				//只有在激活期的商户才处理数据。
+				if(merchant.getCurIsSummary()==null || merchant.getCurIsSummary()==0) {
+					try {
+						//如果当前日期还是小于开始计费日期,再生一条激活的记录
+						if(merchant.getComputeTime().getTime()>new Date().getTime()) {
+							
+							merchant.setCurIsSummary(0);
+							merchant.setCurSummaryTime(new Date());
+							merchant.setNextSummaryTime(DateHelper.getMonthDate(merchant.getCurSummaryTime(),1));
+							merchantService.save(merchant);
+							
+							//生成激活期的免费失效记录。
+							TbLibJoinConsume consume=new TbLibJoinConsume();
+							consume.setFromLibId(merchant.getLibId());
+							consume.setFromMerchantId(merchant.getId());
+							consume.setLibService(merchant.getLibService());
+							consume.setPlatformService(0);
+							consume.setType(8);
+							consume.setComputeNum(merchant.getCurIsSummary());
+							consume.setSignType(merchant.getSignType());
+							consume.setRemarks("激活期失效【服务包失效】");
+							consume.setCreateTime(new Date());
+							libJoinConsumeService.save(consume);
+							
+							
+							consume=new TbLibJoinConsume();
+							consume.setFromLibId(merchant.getLibId());
+							consume.setFromMerchantId(merchant.getId());
+							consume.setLibService(merchant.getLibService());
+							consume.setPlatformService(0);
+							consume.setType(7);
+							consume.setComputeNum(merchant.getCurIsSummary());
+							consume.setSignType(merchant.getSignType());
+							consume.setRemarks("激活期扣费【服务包扣费】");
+							consume.setCreateTime(new Date());
+							libJoinConsumeService.save(consume);
+						}
+
+					} catch (Exception e) {
+						e.printStackTrace();
+						logger.error("4:处理商户激活结算日期数据,异常:"+e.getMessage());
+					}
+				}
+			}
+			
+			
+			
+			//5:处理开始计费日期,生成一条真实的数据30,设置当前的时间, 设置下一个结算日,CurIsSummary=+1,真实开始结算。
+			List<Merchant> computeMerchants=merchantService.findMerchantSignByComputeTime();
+			for (Merchant merchant : computeMerchants) {
+				try {
+					//如果开始计费时间为null,就不处理
+					if(merchant.getComputeTime()==null) {
+						continue;
+					}
+					
+					//记录激活期的结算
+					TbLibJoinConsume consume=new TbLibJoinConsume();
+					consume.setFromLibId(merchant.getLibId());
+					consume.setFromMerchantId(merchant.getId());
+					consume.setLibService(merchant.getLibService());
+					consume.setPlatformService(0);
+					consume.setType(8);
+					consume.setComputeNum(merchant.getCurIsSummary());
+					consume.setSignType(merchant.getSignType());
+					consume.setRemarks("激活期失效【服务包失效】");
+					consume.setCreateTime(new Date());
+					libJoinConsumeService.save(consume);
+					
+					
+					merchant.setCurIsSummary(1);
+					merchant.setCurSummaryTime(new Date());
+					merchant.setNextSummaryTime(DateHelper.getMonthDate(merchant.getCurSummaryTime(),1));
+					merchantService.save(merchant);
+					
+					//记录
+					consume=new TbLibJoinConsume();
+					consume.setFromLibId(merchant.getLibId());
+					consume.setFromMerchantId(merchant.getId());
+					consume.setLibService(merchant.getLibService());
+					consume.setPlatformService(0);
+					consume.setType(7);
+					consume.setComputeNum(merchant.getCurIsSummary());
+					consume.setSignType(merchant.getSignType());
+					consume.setRemarks("计费期扣费【服务包扣费:第"+merchant.getCurIsSummary()+"月】");
+					consume.setCreateTime(new Date());
+					libJoinConsumeService.save(consume);
+
+				} catch (Exception e) {
+					e.printStackTrace();
+					logger.error("5:处理商户系统激活日期数据,异常:"+e.getMessage());
+				}
+			}
+			
+			
+			
+			//6:处理商户结算的数据
+			List<Merchant> summaryMerchants=merchantService.findMerchantSignBySummaryTime();
+			for (Merchant merchant : summaryMerchants) {
+				try {
+					//还在免费期的,直接跳出,由第3步处理了
+					if(merchant.getCurIsSummary()==null || merchant.getCurIsSummary()<=0) {
+						continue;
+					}
+					
+					//没有月份数据的,直接跳出,不做处理
+					if(merchant.getLibServiceMonth()==null || merchant.getLibServiceMonth()<=0) {
+						continue;
+					}
+					
+					//记录
+					TbLibJoinConsume consume=new TbLibJoinConsume();
+					consume.setFromLibId(merchant.getLibId());
+					consume.setFromMerchantId(merchant.getId());
+					consume.setLibService(merchant.getLibService());
+					consume.setSignType(merchant.getSignType());
+					consume.setPlatformService(0);
+					consume.setType(8);
+					consume.setComputeNum(merchant.getCurIsSummary());
+					consume.setRemarks("计费期失效【服务包失效:第"+(merchant.getCurIsSummary())+"月】");
+					consume.setCreateTime(new Date());
+					libJoinConsumeService.save(consume);
+					
+					//处理商户结算的数据
+					//已经够月份了,就终止商户
+					if(merchant.getCurIsSummary()>=merchant.getLibServiceMonth()) {
+						try {
+							merchant.setCurIsSummary(0);
+							merchant.setCurSummaryTime(null);
+							merchant.setNextSummaryTime(null);
+							merchant.setLibServiceMonth(0);
+							merchant.setLibService(0);
+							merchantService.save(merchant);
+							
+							this.syncMerchantByLibJoin(merchant);
+							
+							List<MerchantSign> signs=this.findMerchantSignByMerchantId(merchant.getId());
+							for (MerchantSign merchantSign : signs) {
+								merchantSign.setRemarks("套餐过期引起加油包过期");
+								merchantSign.setStatus(1);
+								merchantSign.setUpdateTime(new Date());
+								this.save(merchantSign);
+							}
+							
+						} catch (Exception e) {
+							e.printStackTrace();
+							logger.error("3:处理商户结算的数据,异常:"+e.getMessage());
+						}
+						continue;
+					}else {
+						merchant.setCurIsSummary(merchant.getCurIsSummary()==null ? 1 : merchant.getCurIsSummary()+1);
+						merchant.setCurSummaryTime(new Date());
+						merchant.setNextSummaryTime(DateHelper.getMonthDate(new Date(),1));
+						merchantService.save(merchant);
+						
+						
+						//记录
+						consume=new TbLibJoinConsume();
+						consume.setFromLibId(merchant.getLibId());
+						consume.setFromMerchantId(merchant.getId());
+						consume.setLibService(merchant.getLibService());
+						consume.setPlatformService(0);
+						consume.setType(7);
+						consume.setComputeNum(merchant.getCurIsSummary());
+						consume.setSignType(merchant.getSignType());
+						consume.setRemarks("计费期扣费【服务包扣费:第"+merchant.getCurIsSummary()+"月】");
+						consume.setCreateTime(new Date());
+						libJoinConsumeService.save(consume);
+						
+					}
+					
+				} catch (Exception e) {
+					e.printStackTrace();
+					logger.error("6:处理商户结算的数据,异常:"+e.getMessage());
+				}
+				
+			}
+		} catch (Exception e) {
+			e.printStackTrace();
+			logger.error("12点定时任务,处理套餐的数据,异常:"+e.getMessage());
+		}
+		
+	}
+    
+    
+    //加油的数量
+    private static int signLibService=5;
+    
+	//套餐模式 【1优选套餐 2VIP套餐 3尊享套餐 4校园服务】 4加油包月包+月 5加油包量包+量。
+	//现在暂时只记录加油的记录。
+	@Override
+	public void insertMerchantSignAndSync(String merchantId, Integer signType,Integer num) {
+		Merchant merchant = merchantService.getById(merchantId);
+		List<MerchantSign> merchantSigns=new ArrayList<MerchantSign>();
+		
+		//开始计费时间是否大等于今天。
+		boolean isGTDay=false;
+		Date computeTime=merchant.getComputeTime()!=null ? merchant.getComputeTime(): merchant.getActiveTime();
+		if(computeTime.getTime()<=new Date().getTime()) {
+			computeTime=new Date();
+			isGTDay=true;
+		}
+
+		String remarks="加油包开通【新模式月包】";
+		Calendar cal = Calendar.getInstance();
+		cal.setTime(computeTime);
+		switch (signType) {
+		case 4:
+			remarks="加油包开通【新模式月包】";
+			for (int i = 1; i <=num; i++) {
+				MerchantSign merchantSign=new MerchantSign();
+				merchantSign.setMerchantId(merchantId);
+				merchantSign.setSignType(signType);
+				merchantSign.setNum(1);
+				if(isGTDay && i==1) {
+					merchantSign.setStatus(0);
+				}else {
+					merchantSign.setStatus(2);
+				}
+				
+				merchantSign.setCreateTime(new Date());
+				merchantSign.setLibService(signLibService);
+				
+				merchantSign.setSignTime(cal.getTime());
+				cal.add(Calendar.MONTH, 1);
+				merchantSign.setEndSignTime(cal.getTime());
+				merchantSigns.add(merchantSign);
+			}
+			break;
+		case 5:
+			remarks="加油包开通【新模式量包】";
+			MerchantSign merchantSign=new MerchantSign();
+			merchantSign.setMerchantId(merchantId);
+			merchantSign.setSignType(signType);
+			merchantSign.setNum(num);
+			if(isGTDay) {
+				merchantSign.setStatus(0);
+			}else {
+				merchantSign.setStatus(2);
+			}
+			merchantSign.setCreateTime(new Date());
+			
+			merchantSign.setLibService(signLibService*num);
+			merchantSign.setSignTime(cal.getTime());
+			cal.add(Calendar.MONTH, 1);
+			merchantSign.setEndSignTime(cal.getTime());
+			merchantSigns.add(merchantSign);
+			
+			break;
+		default:
+			break;
+		}
+		//保存加油包的记录
+		this.save(merchantSigns);
+
+		//记录加油包记录
+		switch (signType) {
+		case 4:
+			for (int i = 1; i <=num; i++) {
+				TbLibJoinConsume consume=new TbLibJoinConsume();
+				consume.setToLibId(merchant.getLibId());
+				consume.setToMerchantId(merchant.getId());
+				consume.setLibService(signLibService);
+				consume.setPlatformService(0);
+				consume.setType(9);
+				consume.setComputeNum(0);
+				consume.setSignType(merchant.getSignType());
+				consume.setRemarks(remarks);
+				consume.setCreateTime(new Date());
+				libJoinConsumeService.save(consume);
+			}
+			break;
+		case 5:
+			TbLibJoinConsume consume=new TbLibJoinConsume();
+			consume.setToLibId(merchant.getLibId());
+			consume.setToMerchantId(merchant.getId());
+			consume.setLibService(signLibService*num);
+			consume.setPlatformService(0);
+			consume.setType(9);
+			consume.setComputeNum(0);
+			consume.setSignType(merchant.getSignType());
+			consume.setRemarks(remarks);
+			consume.setCreateTime(new Date());
+			libJoinConsumeService.save(consume);
+			break;
+		default:
+			break;
+		}
+		
+		if(computeTime.getTime()<=new Date().getTime()) {
+			TbLibJoinConsume consume=null;
+			switch (signType) {
+			case 4:
+				consume=new TbLibJoinConsume();
+				consume.setFromLibId(merchant.getLibId());
+				consume.setFromMerchantId(merchant.getId());
+				consume.setLibService(signLibService);
+				consume.setPlatformService(0);
+				consume.setType(10);
+				consume.setComputeNum(1);
+				consume.setSignType(merchant.getSignType());
+				consume.setRemarks("加油包激活【新模式月包】");
+				consume.setCreateTime(new Date());
+				libJoinConsumeService.save(consume);
+				
+				break;
+			case 5:
+				consume=new TbLibJoinConsume();
+				consume.setFromLibId(merchant.getLibId());
+				consume.setFromMerchantId(merchant.getId());
+				consume.setLibService(signLibService*num);
+				consume.setPlatformService(0);
+				consume.setType(10);
+				consume.setComputeNum(num);
+				consume.setSignType(merchant.getSignType());
+				consume.setRemarks("加油包激活【新模式量包】");
+				consume.setCreateTime(new Date());
+				libJoinConsumeService.save(consume);
+				
+				break;
+			default:
+				break;
+			}
+			if(consume!=null) {
+				
+				libJoinConsumeService.save(consume);
+				
+				//增量商户表的人数
+				merchant.setLibService(merchant.getLibService()+consume.getLibService());
+				merchantService.save(merchant);	
+				//同步商户表与机构表
+				this.syncMerchantByLibJoin(merchant);
+				
+				DateFormat format = new SimpleDateFormat("yyyy-MM-dd");
+				//调用openApi接口
+				libVipServiceService.openApiServiceCRM(
+						1,
+						merchant.getLibId(), 
+						merchant.getSignType(),
+						merchant.getMealType(),
+						merchant.getLibService(),
+						merchant.getStartActiveTime()!=null ? format.format(merchant.getStartActiveTime()) : "",
+						merchant.getComputeTime()!=null ? format.format(merchant.getComputeTime()) : format.format(merchant.getActiveTime()),
+						merchant.getComputeTime()!=null ? 
+								format.format(DateHelper.getMonthDate(merchant.getComputeTime(),merchant.getLibServiceMonth())) : 
+									format.format(DateHelper.getMonthDate(merchant.getActiveTime(),merchant.getLibServiceMonth())) 
+									);
+			}
+		}
+		
+		
+		
+	}
+
+	
+	@Override
+	public void syncMerchantByLibJoin(Merchant merchant) {
+		if(merchant!=null && StringUtils.isNotEmpty(merchant.getLibId())) {
+			TbLibJoin libJoin = libJoinService.getById(merchant.getLibId());
+			libJoin.setLibService(merchant.getLibService());
+			libJoinService.save(libJoin);
+		}
+	}
+
+	@Override
+	public List<MerchantSign> findMerchantSignByMerchantId(String merchantId) {
+		return dao.findMerchantSignByMerchantId(merchantId);
+	}
+
+	@Override
+	public Page<Map<String, Object>> findMerchantSignByPage(Map<String, Object> params, Pageable initPage) {
+		return queryDao.findMerchantSignByPage(params, initPage);
+	}
+
+	@Override
+	public List<MerchantSign> findMerchantSignByMerchantIdGTTime(String merchantId, Date computeTime, Integer status) {
+		return dao.findMerchantSignByMerchantIdGTTime(merchantId, computeTime, status);
+	}
+	
+	
+	@Override
+	public List<MerchantSign> findMerchantSignAll(String merchantId) {
+		return dao.findMerchantSignAll(merchantId);
+	}
+
+}
+
+

+ 1 - 1
src/main/java/com/ssj/service/weixin/sales/service/impl/LibVipServiceServiceImpl.java

@@ -1807,7 +1807,7 @@ public class LibVipServiceServiceImpl extends BaseServiceImpl<LibVipService, Str
      */
     Date getEndDate(String vipId, String libId) {
         Merchant merchant=merchantService.getMerchantByLibId(libId);
-        return DateHelper.getMonthDate(merchant.getComputeTime()!=null ? merchant.getComputeTime() : merchant.getActiveTime() ,merchant.getLibServiceMonth());
+        return merchant.getEndActiveTime();
     }
 
 

A diferenza do arquivo foi suprimida porque é demasiado grande
+ 2103 - 1233
src/main/java/com/ssj/sys/controller/FxController.java


+ 27 - 14
src/main/java/com/ssj/task/sz/MerchantSummaryTask.java

@@ -2,6 +2,7 @@ package com.ssj.task.sz;
 
 import java.util.Calendar;
 import java.util.Date;
+import java.util.List;
 
 import org.quartz.DisallowConcurrentExecution;
 import org.quartz.Job;
@@ -11,10 +12,12 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.stereotype.Component;
 
+import com.ssj.bean.sys.fx.domain.Merchant;
 import com.ssj.framework.core.util.SystemResourceLocator;
 import com.ssj.service.sys.fx.service.MerchantBackupService;
+import com.ssj.service.sys.fx.service.MerchantMealService;
 import com.ssj.service.sys.fx.service.MerchantService;
-import com.ssj.service.sys.fx.service.MerchantSignService;
+
 
 @DisallowConcurrentExecution
 @Component
@@ -38,27 +41,37 @@ public class MerchantSummaryTask implements Job{
 			logger.error("【商户备份】月商户数据备份定时任务,异常:"+e.getMessage());
 		}
 		
+		MerchantService merchantService = SystemResourceLocator.getBean(MerchantService.class);
+		//0点系统刷新服务人数与日期
+		try{
+			MerchantMealService merchantMealService = SystemResourceLocator.getBean(MerchantMealService.class);
+			List<Merchant> merchants=merchantService.findMerchantSignByAll();
+			for (Merchant merchant : merchants) {
+				try {
+					logger.info("0点系统刷新服务人数与日期,开始>id="+merchant.getId());
+					merchantMealService.updateMerchantByMeal(merchant.getId());
+				} catch (Exception e) {
+					logger.info("0点系统刷新服务人数与日期,异常...>id="+merchant.getId());
+					e.printStackTrace();
+				}
+				//停2秒
+				Thread.sleep(2000);
+			}
+		}catch (Exception e) {
+			logger.error("【套餐模式】处理套餐的数据定时任务,异常:"+e.getMessage());
+		}
+		
+		
 		//12点定时任务,处理签约模式的数据
 		try{
-			MerchantService merchantService = SystemResourceLocator.getBean(MerchantService.class);
 			logger.error("【签约模式】结算扣币定时任务,开始...");
-			merchantService.runSummaryByMerchant_new();
+			//merchantService.runSummaryByMerchant_new();
 			logger.error("【签约模式】结算扣币定时任务,结束。");
 		}catch (Exception e) {
 			logger.error("【签约模式】结算扣币定时任务,异常:"+e.getMessage());
 		}
 		
-		//12点定时任务,处理套餐的数据
-	    //1:处理加油包过期的数据
-	    //2:处理商户主套餐过期的数据,加油包全过期。
-		try{
-			MerchantSignService merchantSignService = SystemResourceLocator.getBean(MerchantSignService.class);
-			logger.error("【套餐模式】处理套餐的数据定时任务,开始...");
-			merchantSignService.runMerchantSignByEndTime();
-			logger.error("【套餐模式】处理套餐的数据定时任务,结束。");
-		}catch (Exception e) {
-			logger.error("【套餐模式】处理套餐的数据定时任务,异常:"+e.getMessage());
-		}
+
 		
 		
 

+ 1 - 70
src/main/resources/templates/sys/fx/merchantAdd.html

@@ -142,73 +142,6 @@ dtext{
 			</li>
 			
 			<li>
-				<label>套餐:服务包类型:<b>*</b></label>
-				<div class="vocation" style="margin-right: 5px; width: 345px">
-					<select name="signType" id="signType" class="select1"  > 
-						<option value="1" th:selected="${merchant.signType==1 ? true : false}" data-val="30" data-upval="800" >服务包1</option>
-						<option value="2" th:selected="${merchant.signType==2 ? true : false}" data-val="50" data-upval="1200" >服务包2</option>
-						<option value="3" th:selected="${merchant.signType==3 ? true : false}" data-val="100" data-upval="2000" >服务包3</option>
-						<option value="4" th:selected="${merchant.signType==4 ? true : false}" data-val="20" data-upval="400" >服务包4</option>
-						<option value="5" th:selected="${merchant.signType==5 ? true : false}" th:data-val="${merchant.libService!=null ? merchant.libService : 0}" data-upval="0" >服务包5</option>
-					</select>
-				</div>
-				<text th:if="${merchant.id!=null}"  style="width: 230px;color:red">[ 修改套餐模式,不会影响加油包有效性 ]</text>
-			</li>
-			
-			<li>
-				<label>服务包人数:<b>*</b></label>
-				<input type="number" id="libService" min="0" class="dfinput fl" name="libService" th:value="${merchant.libService!=null ? merchant.libService : 0}" autocomplete="off"/>
-				<text id="libServiceTips" style="width: 230px;color:red;display: none;">[ 请输入服务包5的服务人数 ]</text>
-			</li>
-			
-			<li>
-				<label>服务包/套餐单价:平台管理费:<b>*</b></label>
-				<input type="number" id="outPrice" class="dfinput fl" name="outPrice" th:value="${merchant.outPrice==null ? 0 : merchant.outPrice}" autocomplete="off" placeholder=" 请输入平台管理费金额" />
-			</li>
-			
-			<li>
-				<label>服务包/总价(收入):<b>*</b></label>
-				<input type="number" id="price" class="dfinput fl" name="price" th:value="${merchant.price==null ? 0 : merchant.price}" autocomplete="off" placeholder=" 请输入服务包总价"/>
-			</li>	
-			
-			<li style="display: none">
-				<label>服务包/月单价(成本):<b>*</b></label>
-				<input type="number" id="munitPrice" class="dfinput fl" name="munitPrice" th:value="${merchant.munitPrice==null ? 0 : merchant.munitPrice}" autocomplete="off" placeholder=" 请输入服务包单价" />
-			</li>
-			
-			<li>
-				<label>购买月份数:<b>*</b></label>
-				<input type="number" id="buyMonth" min="0" class="dfinput fl" name="buyMonth" th:value="${merchant.buyMonth!=null ? merchant.buyMonth : 0}" autocomplete="off"/>
-			</li>
-			
-			<li>
-				<label>赠送月份数:<b>*</b></label>
-				<input type="number" id="giveMonth" min="0" class="dfinput fl" name="giveMonth" th:value="${merchant.giveMonth!=null ? merchant.giveMonth : 0}" autocomplete="off"/>
-				<text th:if="${merchant.id!=null}"  style="width: 230px;color:red"></text>
-			</li>
-			
-			<li>
-				<label>月包数量:1月/5人:<b>*</b></label>
-				<input type="text"  class="dfinput fl" value="0"    autocomplete="off" placeholder=" " />
-			</li>
-			
-			<li>
-				<label>加油包/月包单价:<b>*</b></label>
-				<input type="number" id="plusAmountPrice" class="dfinput fl" name="plusAmountPrice" th:value="${merchant.plusAmountPrice==null ? 0 : merchant.plusAmountPrice}" autocomplete="off" placeholder=" 请输入服务包单价" />
-			</li>
-			
-			<li>
-				<label>数量包数量:5人/月:<b>*</b></label>
-				<input type="text"  class="dfinput fl" value="0"    autocomplete="off" placeholder=" " />
-			</li>
-			
-			<li>
-				<label>加油包/量包单价:<b>*</b></label>
-				<input type="number" id="plusMonthPrice" class="dfinput fl" name="plusMonthPrice" th:value="${merchant.plusMonthPrice==null ? 0 : merchant.plusMonthPrice}" autocomplete="off" placeholder=" 请输入服务包单价" />
-			</li>
-			
-						
-			<li>
 				<label>合同日期:<b >*</b></label>
 				<input type="hidden"  id="minDate" value="2020-01-01" >
 				<input type="text" id="signTime" name="signTime"  onfocus="WdatePicker({dateFmt:'yyyy-MM-dd',minDate:'#F{$dp.$D(\'minDate\')}'})" autocomplete="off" th:value="${#dates.format(merchant.signTime, 'yyyy-MM-dd')}" class="scinput date_width " placeholder="合同开始日期">
@@ -230,7 +163,7 @@ dtext{
 				<input type="text"  class="dfinput fl"  id="computeTime" name="computeTime"  onfocus="WdatePicker({dateFmt:'yyyy-MM-dd',autoPickDate:true})" autocomplete="off" th:value="${#dates.format(merchant.computeTime, 'yyyy-MM-dd')}" placeholder="计费开始日期">
 			</li>
 			
-			<li style="display: none">
+			<li th:style="${ #httpSession.getAttribute('admin') !=null && #lists.contains(#httpSession.getAttribute('admin').authorities,'超级管理员角色')  ? ''   : 'display: none' }">
 				<label>上级渠道:<b >*</b></label>
 				<div class="vocation" style="margin-right: 5px; width: 345px">
 					<select name="parentposcode" id="parentposcode" class="select1" th:disabled="${merchant.id!=null || curMerchant.orgCode ne 'SSJ-FX' ? 'true' : 'false'}" > 
@@ -277,8 +210,6 @@ dtext{
 				</div>
 			</li>
 				
-
-			
 			<li style="display: none">
 				<label>签约数量(练习册用):<b></b></label>
 				<input type="text" id="signService" class="dfinput fl" name="signService" th:value="${merchant.signService!=null ? merchant.signService : 0}" autocomplete="off"/>

+ 97 - 155
src/main/resources/templates/sys/fx/merchantAllList.html

@@ -22,19 +22,19 @@
 		text-overflow: ellipsis;
 		overflow: hidden;
 	}
-	#mealServiceAdd .zwfb_shop_table {
+	#signServiceAdd .zwfb_shop_table {
 		margin-top: 10px
 	}
-	#mealServiceAdd tbody {
+	#signServiceAdd tbody {
 	    display: table-row-group;
 	    vertical-align: middle;
     	border-color: inherit;
 	}
-	#mealServiceAdd .fwmc_xxk {
+	#signServiceAdd .fwmc_xxk {
 	    overflow: hidden;
 	    margin-left: 20px;
 	}
-	#mealServiceAdd .fwmc_xxk li {
+	#signServiceAdd .fwmc_xxk li {
 	    float: left;
 	    width: 150px;
 	    height: 52px;
@@ -47,34 +47,34 @@
 	    overflow: hidden;
 	    cursor: pointer;
 	}
-	#mealServiceAdd .fwmc_xxk li p {
+	#signServiceAdd .fwmc_xxk li p {
 	    line-height: 18px;
 	    font-size: 12px;
 	    color: #999;
 	    margin-top: 5px;
 	}
-	#mealServiceAdd .zwsl_num {
+	#signServiceAdd .zwsl_num {
 	    margin-left: 20px;
 	    font-size: 16px;
 	    color: #333;
 	}
-	#mealServiceAdd .zwsl_num span {
+	#signServiceAdd .zwsl_num span {
 	    color: #999;
 	    font-size: 12px;
 	    padding-left: 10px;
 	}
-	#mealServiceAdd .nmb_jj {
+	#signServiceAdd .nmb_jj {
 	    overflow: hidden;
 	    margin-left: 20px;
 	}
-	#mealServiceAdd .nmb_jj li.jian {
+	#signServiceAdd .nmb_jj li.jian {
 	    border-right: none;
 	    cursor: pointer;
 	    color: #999;
 	    width: 30px;
 	    padding: 0;
 	}
-	#mealServiceAdd .nmb_jj li {
+	#signServiceAdd .nmb_jj li {
 	    float: left;
 	    text-align: center;
 	    line-height: 30px;
@@ -82,7 +82,7 @@
 	    font-size: 20px;
 	    padding: 0 8px;
 	}
-	#mealServiceAdd .nmb_jj li .srkk {
+	#signServiceAdd .nmb_jj li .srkk {
 	    width: 30px;
 	    font-size: 16px;
 	    border: none;
@@ -91,14 +91,14 @@
 	    outline: 0;
 	    background: #FFF;
 	}
-	#mealServiceAdd .nmb_jj li.jia {
+	#signServiceAdd .nmb_jj li.jia {
 	    border-left: none;
 	    cursor: pointer;
 	    color: #999;
 	    width: 30px;
 	    padding: 0;
 	}
-	#mealServiceAdd a.ty_but {
+	#signServiceAdd a.ty_but {
 	    width: 130px;
 	    height: 40px;
 	    line-height: 40px;
@@ -109,10 +109,10 @@
 	    border-radius: 3px;
 	    background: #169ed8;
 	}
-	#mealServiceAdd a.ty_but:hover {
+	#signServiceAdd a.ty_but:hover {
 	    background: #1187ba;
 	}
-	#mealServiceAdd .fwmc_xxk li.sign_type_select_on {
+	#signServiceAdd .fwmc_xxk li.sign_type_select_on {
 	    background: url(/static/sys/images/fwkk.jpg) no-repeat center;
 	    color: #169ed8;
 	    border: 1px solid #169ed8;
@@ -287,21 +287,20 @@
 
 		    	<th >商户账号</th>
 		    	<th >单位名称 </th>
-<!-- 		    	<th style="width: 60px;">商户级别</th> -->
 		    	<th >关联机构 </th>
 		    	<th >商户类型 </th>
 		    	<th >商户套餐 </th>
 		    	<th >商户模式 </th>
+		    	<th >平台管理费 </th>
 		    	<th style="width: 60px;">签约端口数量</th>
-		    	<th style="width: 60px;">服务人数/塾币</th>
-<!-- 		    	<th style="width: 60px;">旧转新余币</th> -->
-		    	<th style="width: 60px;">平台塾币</th>
+		    	<th style="width: 60px;">服务人数</th>
+		    	<th style="width: 60px;">剩余机构塾币</th>
 		    	<th style="max-width: 160px;" >合同日期</th>
-		    	<th>充值/已结算(月份)</th>
 		    	<th style="width: 60px;" >激活开始日期</th>
 		    	<th style="width: 60px;" >激活结束日期</th>
-		    	<th style="width: 60px;" >计费开始日</th>
-		    	<th style="width: 60px;" >下个结算日</th>
+		    	<th style="width: 60px;" >计费开始日期</th>
+		    	<th style="width: 60px;" >服务结束日期</th>
+		    	<th  >状态</th> 
 		        <th  >操作</th> 
 		    </tr> 
 		</thead>
@@ -310,15 +309,6 @@
 		
 					<td th:title="${item.posCode}" th:text="${item.posCode}"></td>
 					<td th:title="${item.unitName}" th:text="${item.unitName}"></td>
-					
-<!-- 					<td  th:switch="${item.level}"> -->
-<!-- 					   <span th:case="1" style="color:red">市代</span> -->
-<!-- 					   <span th:case="2" style="color:red">区代</span> -->
-<!-- 					   <span th:case="3" style="color:red">学校独家</span> -->
-<!-- 					   <span th:case="4" style="color:red">普通</span> -->
-<!-- 					   <span th:case="*" >--</span> -->
-<!-- 					</td> -->
-					
 					<td  th:title="${item.libJoin!=null ? item.libJoin.leagueName : '' }" >
 						<a href="javascript:;" th:onclick="'openNew(\''+${item.libId}+'\')'" th:if="${item.libId!='' && item.libId!=null}"	class="tablelink">[[${item.libJoin.leagueName}]]</a>
 					</td>
@@ -327,67 +317,69 @@
 					   <span th:case="1" >塾币商户</span>
 					   <span th:case="2" >端口商户</span>
 					   <span th:case="3" >学校商户</span>
+					   <span th:case="*" >--</span>
 					</td>
 					
 					<td  th:switch="${item.mealType}">
-					   <span th:case="0" style="color:red">旧兼容模式</span>
+					   <span th:case="0" >塾币模式</span>
 					   <span th:case="1" >优选套餐</span>
 					   <span th:case="2" >VIP套餐</span>
 					   <span th:case="3" >尊享套餐</span>
 					   <span th:case="4" >校园服务</span>
-					   <span th:case="*" style="color:red">旧兼容模式</span>
+					   <span th:case="*" >--</span>
 					</td>
 					
 					<td  th:switch="${item.signType}">
-					   <span th:case="0" style="color:red">旧兼容模式</span>
+					   <span th:case="0" >塾币模式</span>
 					   <span th:case="1" >服务包1</span>
 					   <span th:case="2" >服务包2</span>
 					   <span th:case="3" >服务包3</span>
 					   <span th:case="4" >服务包4</span>
 					   <span th:case="5" >服务包5</span>
-					   <span th:case="*" style="color:red">旧兼容模式</span>
+					   <span th:case="*" >--</span>
 					</td>
 					
+					<td  th:text="${item.posType>1 ? item.outPrice: '--' }"></td>
 					<td  th:text="${item.portNum}"></td>
-					<td  th:text="${item.libService}"></td>
-<!-- 					<td  th:text="${item.libServiceOdd}"></td> -->
-					<td  th:text="${item.platformService}"></td>
+					<td  th:text="${item.posType>1 ? item.libService : '--'}"></td>
+					<td  th:text="${item.posType<=1 ? item.libService  : '--' }"></td>
 					
 					
 					<td th:title="${item.signTime!=null ?  #dates.format(item.signTime, 'yyyy-MM-dd')+'~'+#dates.format(item.endSignTime, 'yyyy-MM-dd') : '--' }"  th:text="${item.signTime!=null ?  #dates.format(item.signTime, 'yyyy-MM-dd')+'~'+#dates.format(item.endSignTime, 'yyyy-MM-dd') : '--' }"></td>
-					<td >
-					   <span th:if="${item.libServiceMonth>0  && item.signType>0}"  style="color: red">[[${item.libServiceMonth +' / '+ item.curIsSummary}]]</span>
-					   <span th:if="${item.nextSummaryTime==null && item.signType>0}" >已结清</span>
+					<td  th:text="${item.posType>1 ? #calendars.format(item.startActiveTime,'yyyy-MM-dd'): '--'}" ></td> 
+					<td  th:text="${item.posType>1 ? #calendars.format(item.activeTime,'yyyy-MM-dd'): '--'}" ></td> 
+					<td  th:text="${item.posType>1 ? #calendars.format(item.computeTime,'yyyy-MM-dd'): '--'}" ></td> 
+					<td  th:text="${item.posType>1 ? #calendars.format(item.endActiveTime,'yyyy-MM-dd'): '--'}" ></td> 
+					<td  th:switch="${item.status}">
+					   <span th:case="1" >正常&nbsp;</span>
+					   <span th:case="2" >正常&nbsp;</span>
+					   <span th:case="3" >正常&nbsp;</span>
+					   <span th:case="4" >冻结&nbsp;</span>
 					</td>
-					<td  th:text="${#calendars.format(item.startActiveTime,'yyyy-MM-dd')}" ></td> 
-					<td  th:text="${#calendars.format(item.activeTime,'yyyy-MM-dd')}" ></td> 
-					<td  th:text="${#calendars.format(item.computeTime,'yyyy-MM-dd')}" ></td> 
-					<td  th:text="${#calendars.format(item.nextSummaryTime,'yyyy-MM-dd')}" ></td> 
-				
 					<td  >   
 						<di th:if="
 						${ #httpSession.getAttribute('admin') !=null && 
 						(
 							#lists.contains(#httpSession.getAttribute('admin').authorities,'财务管理员')  ||
-							#lists.contains(#httpSession.getAttribute('admin').authorities,'分销管理员')   ||
 							#lists.contains(#httpSession.getAttribute('admin').authorities,'超级管理员角色')  
 						)  }
 						">
-							<a href="javascript:;" th:if="${item.signType==0 && item.status!=4 && (curMerchant.orgCode eq 'SSJ-FX' || #strings.contains(item.orgCode,curMerchant.orgCode) ) }"  th:onclick="'joinServiceEdit(\''+${item.id}+'\')'" class="tablelink">塾&nbsp;&nbsp;&nbsp;币</a>
-							<a href="javascript:;" th:if="${item.signType!=0 && item.status!=4 && (curMerchant.orgCode eq 'SSJ-FX' || #strings.contains(item.orgCode,curMerchant.orgCode) ) }"  th:onclick="'libServiceAdd(\''+${item.id}+'\')'" class="tablelink">服务包</a>
-							<a href="javascript:;" th:if="${item.signType!=0 && item.status!=4 && (curMerchant.orgCode eq 'SSJ-FX' || #strings.contains(item.orgCode,curMerchant.orgCode) ) }"  th:onclick="'mealServiceAdd(\''+${item.id}+'\')'" class="tablelink">加油包</a>
+							<a href="javascript:;" th:if="${item.posType==1 && item.status!=4 && (curMerchant.orgCode eq 'SSJ-FX' || #strings.contains(item.orgCode,curMerchant.orgCode) ) }"  th:onclick="'joinServiceEdit(\''+${item.id}+'\')'" class="tablelink">塾&nbsp;&nbsp;&nbsp;币</a>
+							<a href="javascript:;" th:if="${item.posType==2 && item.status!=4 && (curMerchant.orgCode eq 'SSJ-FX' || #strings.contains(item.orgCode,curMerchant.orgCode) ) }"  th:onclick="'libServiceAdd(\''+${item.id}+'\')'" class="tablelink">服务包</a>
+							<a href="javascript:;" th:if="${item.posType==3 && item.status!=4 && (curMerchant.orgCode eq 'SSJ-FX' || #strings.contains(item.orgCode,curMerchant.orgCode) ) }"  th:onclick="'libServiceScAdd(\''+${item.id}+'\')'" class="tablelink">服务包</a>
+							
+							<a href="javascript:;" th:if="${item.signType!=0 && item.status!=4 && (curMerchant.orgCode eq 'SSJ-FX' || #strings.contains(item.orgCode,curMerchant.orgCode) ) }"  th:onclick="'signServiceAdd(\''+${item.id}+'\')'" class="tablelink">加油包</a>
+							
+							<a href="javascript:;" th:if="${item.signType!=0 && item.status!=4 && (curMerchant.orgCode eq 'SSJ-FX' || #strings.contains(item.orgCode,curMerchant.orgCode) ) }"  th:onclick="'platServiceAdd(\''+${item.id}+'\')'" class="tablelink">管理费</a>
 						
-							<a href="javascript:;" th:if="${item.status!=4 && (curMerchant.orgCode eq 'SSJ-FX' || #strings.contains(item.orgCode,curMerchant.orgCode) ) }"  th:onclick="'updatemerchant(\''+${item.id}+'\',\'4\')'"   class="tablelink">删除</a>
+							<a href="javascript:;" th:if="${item.status!=4 && (curMerchant.orgCode eq 'SSJ-FX' || #strings.contains(item.orgCode,curMerchant.orgCode) ) }"  th:onclick="'updatemerchant(\''+${item.id}+'\',\'4\')'"   class="tablelink">冻结</a>
 							
 							<a href="javascript:;" th:if="${item.posType==1 && item.status!=4 && (curMerchant.orgCode eq 'SSJ-FX' || #strings.contains(item.orgCode,curMerchant.orgCode) ) }"  th:onclick="'savemerchantold(\''+${item.id}+'\')'"  	class="tablelink">修改</a>
 							<a href="javascript:;" th:if="${item.posType==2 && item.status!=4 && (curMerchant.orgCode eq 'SSJ-FX' || #strings.contains(item.orgCode,curMerchant.orgCode) ) }"  th:onclick="'savemerchant(\''+${item.id}+'\')'"  	class="tablelink">修改</a>
 							<a href="javascript:;" th:if="${item.posType==3 && item.status!=4 && (curMerchant.orgCode eq 'SSJ-FX' || #strings.contains(item.orgCode,curMerchant.orgCode) ) }"  th:onclick="'savemerchantsc(\''+${item.id}+'\')'"  	class="tablelink">修改</a>
 						
 						</di>
-										
 						<a href="javascript:;" th:if="${item.status!=4 && item.libId!='' && item.libId!=null && (curMerchant.orgCode eq 'SSJ-FX' || #strings.contains(item.orgCode,curMerchant.orgCode) ) }"  th:onclick="'untyingmerchant(\''+${item.id}+'\')'"  	class="tablelink">解绑</a>
-<!-- 						<a href="javascript:;" th:onclick="'infomerchant(\''+${item.id}+'\')'"  	class="tablelink">查看</a> -->
-						
 					 </td>  
 					
 					
@@ -517,7 +509,7 @@
 
 
 
-<div class="formbody" id="mealServiceAdd" style="display: none;">
+<div class="formbody" id="signServiceAdd" style="display: none;">
 	<input type="hidden" id="meal_merchant_id" value="" >
 	<table width="100%" border="0" cellspacing="0" cellpadding="0" class="zwfb_shop_table">
 	      <tbody>
@@ -749,106 +741,56 @@ function joinServiceAdd(type){
 
 
 function libServiceAdd(id){
-	  $.ajax({
-		  url: "[[${sysUrl}]]/sys/fx/getMerchant/"+id,
-	      type: 'POST',
-	      data: {},
-	      processData: false,
-	      contentType: false, 
-	      beforeSend: function () {
-	      },
-	      success: function (responseStr) {
-	    	  if(responseStr.meta.success){
-	    		  $("#lib_merchant_id").val(id);
-	    		  var meal_merchant_li1="旧兼容模式";
-	    		  switch (responseStr.data.merchant.signType) {
-					case 1:
-						meal_merchant_li1="优选套餐";
-						break;
-					case 2:
-						meal_merchant_li1="VIP套餐";
-						break;
-					case 3:
-						meal_merchant_li1="尊享套餐";
-						break;
-					case 4:
-						meal_merchant_li1="校园服务";
-						break;
-					default:
-						break;
-					}
-	    		  $("#lib_merchant_li1").html("["+responseStr.data.merchant.unitName+"] 商户当前套餐模式:"+meal_merchant_li1);
-	    		  $("#lib_merchant_li2").html("["+responseStr.data.merchant.unitName+"] 商户当前套餐人数:"+responseStr.data.merchant.libService);
-	    		  layer.open({
-	  			    type: 1,
-	  			    title: "["+responseStr.data.merchant.unitName+"]"+' 续费服务包',
-	  			    closeBtn: 1, //不显示关闭按钮
-	  			    shift: 0.8,
-	  			    offset: '150px',
-	  			    area: ['40%', '50%'],
-	  			    content: $("#libServiceAdd")
-	  			 });
-	    	  }else{
-	    		  parent.layer.msg(responseStr.meta.message,{icon:11});
-	    	  }
-	      }
-	      ,
-	      error : function (responseStr) {
-	    	  parent.layer.msg("查询失败,请刷新后重试!",{icon:11});
-	      }
-	  });
+	var title="购买端口服务包";
+	parent.layer.open({
+	    type: 2,
+	    title: title,
+	    closeBtn: 1, //不显示关闭按钮
+	    shift: 0.8,
+	    offset: '10%',
+	    area: ['905px', '60%'],
+	    content: '[[${sysUrl}]]/sys/fx/merchantMealAdd.html?id='+id
+	});
 }
 
+function libServiceScAdd(id){
+	var title="购买学校服务包";
+	parent.layer.open({
+	    type: 2,
+	    title: title,
+	    closeBtn: 1, //不显示关闭按钮
+	    shift: 0.8,
+	    offset: '10%',
+	    area: ['905px', '60%'],
+	    content: '[[${sysUrl}]]/sys/fx/merchantMealScAdd.html?id='+id
+	});
+}
 
-function mealServiceAdd(id){
-	  $.ajax({
-		  url: "[[${sysUrl}]]/sys/fx/getMerchant/"+id,
-	      type: 'POST',
-	      data: {},
-	      processData: false,
-	      contentType: false, 
-	      beforeSend: function () {
-	      },
-	      success: function (responseStr) {
-	    	  if(responseStr.meta.success){
-	    		  $("#meal_merchant_id").val(id);
-	    		  var meal_merchant_li1="旧兼容模式";
-	    		  switch (responseStr.data.merchant.signType) {
-					case 1:
-						meal_merchant_li1="优选套餐";
-						break;
-					case 2:
-						meal_merchant_li1="VIP套餐";
-						break;
-					case 3:
-						meal_merchant_li1="尊享套餐";
-						break;
-					case 4:
-						meal_merchant_li1="校园服务";
-						break;
-					default:
-						break;
-					}
-	    		  $("#meal_merchant_li1").html("["+responseStr.data.merchant.unitName+"] 商户当前套餐模式:"+meal_merchant_li1);
-	    		  $("#meal_merchant_li2").html("["+responseStr.data.merchant.unitName+"] 商户当前套餐人数:"+responseStr.data.merchant.libService);
-	    		  layer.open({
-    			    type: 1,
-    			    title: "["+responseStr.data.merchant.unitName+"]"+' 添加加油包',
-    			    closeBtn: 1, //不显示关闭按钮
-    			    shift: 0.8,
-    			    offset: '150px',
-    			    area: ['40%', '40%'],
-    			    content: $("#mealServiceAdd")
-    			 });
-	    	  }else{
-	    		  parent.layer.msg(responseStr.meta.message,{icon:11});
-	    	  }
-	      }
-	      ,
-	      error : function (responseStr) {
-	    	  parent.layer.msg("查询失败,请刷新后重试!",{icon:11});
-	      }
-	  });
+function signServiceAdd(id){
+	var title="购买加油包";
+	parent.layer.open({
+	    type: 2,
+	    title: title,
+	    closeBtn: 1, //不显示关闭按钮
+	    shift: 0.8,
+	    offset: '10%',
+	    area: ['905px', '60%'],
+	    content: '[[${sysUrl}]]/sys/fx/merchantSignAdd.html?id='+id
+	});
+}
+
+
+function platServiceAdd(id){
+	var title="购买管理费";
+	parent.layer.open({
+	    type: 2,
+	    title: title,
+	    closeBtn: 1, //不显示关闭按钮
+	    shift: 0.8,
+	    offset: '10%',
+	    area: ['905px', '60%'],
+	    content: '[[${sysUrl}]]/sys/fx/merchantPlatAdd.html?id='+id
+	});
 }
 
 
@@ -996,7 +938,7 @@ function joinServiceEdit(id){
 			    shift: 0.8,
 			    offset: '10px',
 			    area: ['90%', '95%'],
-			    content: '[[${sysUrl}]]/sys/fx/merchantAdd_sc.html?id='+id
+			    content: '[[${sysUrl}]]/sys/fx/merchantScAdd.html?id='+id
 			});
 		}
 		
@@ -1013,7 +955,7 @@ function joinServiceEdit(id){
 			    shift: 0.8,
 			    offset: '10px',
 			    area: ['90%', '95%'],
-			    content: '[[${sysUrl}]]/sys/fx/merchantAdd_old.html?id='+id
+			    content: '[[${sysUrl}]]/sys/fx/merchantOldAdd.html?id='+id
 			});
 		}
 		
@@ -1048,7 +990,7 @@ function joinServiceEdit(id){
 		function updatemerchant(id,status){  
 			
 			if(status==4){
-				parent.layer.confirm("确定操作删除?", {
+				parent.layer.confirm("确定操作冻结此商户?", {
 					icon: 4, btn: ['确定','关闭'],offset: '100px' //按钮
 				}, function(){
 					$.ajax({

+ 25 - 4
src/main/resources/templates/sys/fx/merchantAllMain.html

@@ -47,12 +47,19 @@
 	</ul>
 </div>
 
-<div class="rightinfo container-fluid">
+<div class="rightinfo container-fluid" style="padding-left: 10px;">
 	<div class="row-fluid">
-		<div class="span2" style="border-right: #999999 1px dashed;">
-			<ul id="columnsTree" class="ztree" style="min-height:560px; overflow: auto;"></ul>
+		<div id="divTree" class="span2" >
+			<ul id="columnsTree" class="ztree" style="min-height:540px; overflow: auto;"></ul>
+			
+<!-- 			<div class="span2" id="closeTree" style="background-color: #ccc;width: 15px;height: 100%;padding-top: 300px;color: red;cursor: pointer;  "> -->
+<!-- 				<span> -->
+<!-- 					&lt;&gt; -->
+<!-- 				</span> -->
+<!-- 			</div> -->
 		</div>
-		<div class="span10">
+		
+		<div class="span10" >
 			<iframe id="listIframe" scrolling="auto" frameborder="0" style="width:104%;height:100%;"></iframe>
 		</div>
 	</div>
@@ -444,6 +451,20 @@ $("#button").on('click',function(){
 	$("#seachform").submit();
 	document.getElementById("seachform").action = "[[${sysUrl}]]/sys/fx/merchantAllList.html";
 });
+
+$("#closeTree").on('click',function(){
+	var display =$('#divTree').css('display');
+	if(display == 'none'){
+		$("#divTree").show();
+		$(".span10").css("width","82.90598290598291%");
+	}else{
+		$("#divTree").hide();
+		$(".span10").css("width","95%");
+	}
+	
+});
+
+
 </script>
 
 

+ 65 - 409
src/main/resources/templates/sys/fx/merchantBackupList.html

@@ -168,75 +168,95 @@
 	<table class="tablelist">
 		<thead>
 		    <tr>
-				<th >备份月份</th>
+		    	<th >备份月份</th>
 		    	<th >商户账号</th>
-		    	<th >单位名称 </th>
-		    	<th >关联机构 </th>
-		    	<th >商户套餐 </th>
-		    	<th >商户模式 </th>
-		    	<th style="width: 60px;">签约端口数量</th>
-		    	<th style="width: 60px;">服务人数/塾币</th>
-		    	<th style="width: 60px;">平台塾币</th>
-		    	<th style="max-width: 160px;" >合同日期</th>
-		    	<th>充值/已结算(月份)</th>
-		    	<th style="width: 60px;" >激活开始日期</th>
-		    	<th style="width: 60px;" >激活结束日期</th>
-		    	<th style="width: 60px;" >计费开始日</th>
-		    	<th style="width: 60px;" >下个结算日</th>
-		        <th  >操作</th> 
+		    	<th >商户编码 </th>
+		    	<th >商户类别 </th>
+		    	<th >商户名称:合作名称/合作校区 </th>
+		    	<th >套餐类型 </th>
+		    	<th >套餐单价:平台管理费</th> 
+		        <th >关联机构</th> 
+		        <th >端口数量</th>
+		        <th >服务人数</th>  
+		        <th >剩余机构塾币</th>  
+		        <th >甲方签约人</th> 
+		        <th >合同编号</th> 
+		        <th >合同签约时间</th> 
+		        <th >地址</th> 
+		        <th >法人姓名</th> 
+		        <th >法人电话</th> 
+		        <th >商户代表</th> 
+		        <th >代表电话</th> 
+		        <th >合同开始日期</th> 
+		        <th >合同结束日期</th> 
+		        <th >激活开始日期</th> 
+		        <th >激活结束日期</th> 
+		        <th >计费开始日期</th> 
+		        <th >服务结束日期</th> 
+		        <th >签约数(练习册用)</th> 
+		        <th >状态</th> 
+		        <th >创建时间</th> 
 		    </tr> 
 		</thead>
 		<tbody>
 			<tr th:each="item:${list}" >
-					
-					<td th:title="${item.backupMonth}" th:text="${item.backupMonth}"></td>
+					<td th:title="${search.get('EQ_backupMonth')}" th:text="${search.get('EQ_backupMonth')}"></td>
 					<td th:title="${item.posCode}" th:text="${item.posCode}"></td>
-					<td th:title="${item.unitName}" th:text="${item.unitName}"></td>
-
-					<td  th:title="${item.libJoin!=null ? item.libJoin.leagueName : '' }" >
-						<a href="javascript:;" th:onclick="'openNew(\''+${item.libId}+'\')'" th:if="${item.libId!='' && item.libId!=null}"	class="tablelink">[[${item.libJoin.leagueName}]]</a>
+					<td th:title="${item.orgCode}" th:text="${item.orgCode}"></td>
+					<td  th:switch="${item.type}">
+					   <span th:case="1" >直接签约(旧模式) </span>
+					   <span th:case="2" >内部消耗</span>
+					   <span th:case="3" >外部签约</span>
+					   <span th:case="4" >内部不结算(财务) </span>
+					   <span th:case="5" >直接签约(新模式)</span>
 					</td>
 					
+					<td th:title="${item.unitName}" th:text="${item.unitName}"></td>
+					
 					<td  th:switch="${item.mealType}">
-					   <span th:case="0" style="color:red">旧兼容模式</span>
+					   <span th:case="0" >旧兼容模式</span>
 					   <span th:case="1" >优选套餐</span>
 					   <span th:case="2" >VIP套餐</span>
 					   <span th:case="3" >尊享套餐</span>
 					   <span th:case="4" >校园服务</span>
-					   <span th:case="*" style="color:red">旧兼容模式</span>
+					   <span th:case="*" >--</span>
 					</td>
+					<td th:title="${item.outPrice}" th:text="${item.outPrice}"></td>
+					<td th:title="${item.libJoin!=null ? item.libJoin.leagueName : '' }" th:text="${item.libJoin!=null ? item.libJoin.leagueName : ''}" ></td>
+					<td  th:text="${item.portNum}"></td>
+					<td  th:text="${item.posType>1 ? item.libService : '--'}"></td>
+					<td  th:text="${item.posType<=1 ? item.libService  : '--' }"></td>
 					
-					<td  th:switch="${item.signType}">
-					   <span th:case="0" style="color:red">旧兼容模式</span>
-					   <span th:case="1" >服务包1</span>
-					   <span th:case="2" >服务包2</span>
-					   <span th:case="3" >服务包3</span>
-					   <span th:case="4" >服务包4</span>
-					   <span th:case="5" >服务包5</span>
-					   <span th:case="*" style="color:red">旧兼容模式</span>
-					</td>
+					<td  th:text="${item.signerPerson}"></td>
+					<td  th:text="${item.contractNo}"></td>
+					<td  th:text="${#calendars.format(item.contractTime,'yyyy-MM-dd')}"></td>
+					<td  th:text="${item.address}"></td>
 					
-					<td  th:text="${item.portNum}"></td>
-					<td  th:text="${item.libService}"></td>
-					<td  th:text="${item.platformService}"></td>
+					<td  th:text="${item.legalPerson}"></td>
+					<td  th:text="${item.phone}"></td>
+					<td  th:text="${item.deputyName}"></td>
+					<td  th:text="${item.deputyPhone}"></td>
+					
+					<td th:title="${#dates.format(item.signTime, 'yyyy-MM-dd')}"  th:text="${#dates.format(item.signTime, 'yyyy-MM-dd')}"></td>
+					<td th:title="${#dates.format(item.endSignTime, 'yyyy-MM-dd')}"  th:text="${#dates.format(item.endSignTime, 'yyyy-MM-dd')}"></td>
 					
-					<td th:title="${item.signTime!=null ?  #dates.format(item.signTime, 'yyyy-MM-dd')+'~'+#dates.format(item.endSignTime, 'yyyy-MM-dd') : '--' }"  th:text="${item.signTime!=null ?  #dates.format(item.signTime, 'yyyy-MM-dd')+'~'+#dates.format(item.endSignTime, 'yyyy-MM-dd') : '--' }"></td>
-					<td >
-					   <span th:if="${item.libServiceMonth>0  && item.signType>0 }" style="color: red">[[${item.libServiceMonth +' / '+ item.curIsSummary}]]</span>
-					   <span th:if="${item.nextSummaryTime==null &&  item.signType>0 }" >已结清</span>
-					</td>
 					<td  th:text="${#calendars.format(item.startActiveTime,'yyyy-MM-dd')}" ></td> 
 					<td  th:text="${#calendars.format(item.activeTime,'yyyy-MM-dd')}" ></td> 
 					<td  th:text="${#calendars.format(item.computeTime,'yyyy-MM-dd')}" ></td> 
-					<td  th:text="${#calendars.format(item.nextSummaryTime,'yyyy-MM-dd')}" ></td> 
-				
-					<td  >   
-						<a href="javascript:;" th:onclick="'infomerchant(\''+${item.id}+'\')'"  	class="tablelink">查看</a>
-					 </td>  
+					<td  th:text="${#calendars.format(item.endActiveTime,'yyyy-MM-dd')}" ></td> 
+					<td  th:text="${item.signService}"></td>
+					<td  th:switch="${item.status}">
+					   <span th:case="1" >正常&nbsp;</span>
+					   <span th:case="2" >正常&nbsp;</span>
+					   <span th:case="3" >正常&nbsp;</span>
+					   <span th:case="4" >冻结&nbsp;</span>
+					</td>
+					<td th:text="${item.createTime}"> </td>  	
 			</tr>
 		</tbody>
 	</table> 
 	
+	
 
 	<!-- 分页 -->
 	<div class="pagin">
@@ -248,370 +268,6 @@
 
 
 <script type="text/javascript">
-
-
-$(function () {
-	
-	$("#reduce_num").click(function (){
-		if($("#add_service_num").val()<=1){
-			parent.layer.msg("塾币不能小于1。",{icon:11});
-			return;
-		}
-		$("#add_service_num").val(parseInt($("#add_service_num").val())-1);
-	});
-	
-	$("#add_num").click(function (){
-		$("#add_service_num").val(parseInt($("#add_service_num").val())+1);
-	});
-	
-	$("#meal_reduce_num").click(function (){
-		if($("#meal_add_service_num").val()<=1){
-			parent.layer.msg("添加加油包数量不能小于1",{icon:11});
-			return;
-		}
-		$("#meal_add_service_num").val(parseInt($("#meal_add_service_num").val())-1);
-	});
-	
-	$("#meal_add_num").click(function (){
-		$("#meal_add_service_num").val(parseInt($("#meal_add_service_num").val())+1);
-	});
-	
-	$(".sign_type_select").click(function (){
-		$(".sign_type_select").removeClass("sign_type_select_on");
-		$(this).addClass("sign_type_select_on");
-	});
-	
-
-})
-
-
-function save(){
-	var type= $("#service_type").val();
-	var num=$("#add_service_num").val();
-	var merchantId=$("#merchant_id").val();
-	
-	var url="[[${sysUrl}]]/sys/fx/merchant/update/"+merchantId;
-	var params ={
-        'type' : type,
-        'num':num
-    };
-	$.post(url,params,function(data){
-		if(data.meta.success){
-			parent.layer.msg("设置成功",{icon:1});
-			parent.location.reload();
-			parent.layer.close(parent.layer.getFrameIndex(window.name));
-		}else{
-			parent.layer.msg(data.meta.message,{icon:11});
-		}
-	});
-}
-
-
-function joinServiceAdd(type){
-	var title='';
-	if(type==1){
-		title="添加机构塾币";
-	}else if(type==3){
-		title="添加平台塾币";
-	}else{
-		title="添加机构端口";
-	}
-	$("#add_service_num").val(1)
-	 $.ajax({
-		  url: "[[${sysUrl}]]/sys/fx/getMerchant/"+$("#merchant_id").val(),
-	      type: 'POST',
-	      data: {},
-	      processData: false,
-	      contentType: false, 
-	      beforeSend: function () {
-	      },
-	      success: function (responseStr) {
-	    	  if(responseStr.meta.success){
-	    		  $("#service_type").val(type);
-	    		  layer.open({
-	    			    type: 1,
-	    			    title: title,
-	    			    closeBtn: 1, //不显示关闭按钮
-	    			    shift: 0.8,
-	    			    offset: '150px',
-	    			    area: ['40%', '40%'],
-	    			    content: $("#joinServiceAdd")
-	    			});
-	    		  
-	    	  }else{
-	    		  parent.layer.msg(responseStr.meta.message,{icon:11});
-	    	  }
-	      }
-	      ,
-	      error : function (responseStr) {
-	    	  parent.layer.msg("查询失败,请刷新后重试!",{icon:11});
-	      }
-	  });
-	
-
-}
-
-
-function mealServiceAdd(id){
-	  $.ajax({
-		  url: "[[${sysUrl}]]/sys/fx/getMerchant/"+id,
-	      type: 'POST',
-	      data: {},
-	      processData: false,
-	      contentType: false, 
-	      beforeSend: function () {
-	      },
-	      success: function (responseStr) {
-	    	  if(responseStr.meta.success){
-	    		  $("#meal_merchant_id").val(id);
-	    		  var meal_merchant_li1="旧兼容模式";
-	    		  switch (responseStr.data.merchant.signType) {
-					case 1:
-						meal_merchant_li1="优选套餐";
-						break;
-					case 2:
-						meal_merchant_li1="VIP套餐";
-						break;
-					case 3:
-						meal_merchant_li1="尊享套餐";
-						break;
-					case 4:
-						meal_merchant_li1="校园服务";
-						break;
-					default:
-						break;
-					}
-	    		  $("#meal_merchant_li1").html("["+responseStr.data.merchant.unitName+"] 商户当前套餐模式:"+meal_merchant_li1);
-	    		  $("#meal_merchant_li2").html("["+responseStr.data.merchant.unitName+"] 商户当前套餐人数:"+responseStr.data.merchant.libService);
-	    		  layer.open({
-    			    type: 1,
-    			    title: "["+responseStr.data.merchant.unitName+"]"+' 添加加油包',
-    			    closeBtn: 1, //不显示关闭按钮
-    			    shift: 0.8,
-    			    offset: '150px',
-    			    area: ['40%', '40%'],
-    			    content: $("#mealServiceAdd")
-    			 });
-	    	  }else{
-	    		  parent.layer.msg(responseStr.meta.message,{icon:11});
-	    	  }
-	      }
-	      ,
-	      error : function (responseStr) {
-	    	  parent.layer.msg("查询失败,请刷新后重试!",{icon:11});
-	      }
-	  });
-}
-
-
-
-function saveMeal(){
-	parent.layer.confirm("确定为此商户添加加油包?", {
-		icon: 4, btn: ['确定','关闭'],offset: '100px' //按钮
-	}, function(){
-		var type=$(".sign_type_select_on").data("type");
-		var num=$("#meal_add_service_num").val();
-		var merchantId=$("#meal_merchant_id").val();
-		var url="[[${sysUrl}]]/sys/fx/merchant/updateMeal/"+merchantId;
-		var params ={
-	        'num':num,
-	        'type':type
-	    };
-		$.post(url,params,function(data){
-			if(data.meta.success){
-				parent.layer.msg("添加成功",{icon:1});
-				parent.location.reload();
-				parent.layer.close(parent.layer.getFrameIndex(window.name));
-			}else{
-				parent.layer.msg(data.meta.message,{icon:11});
-			}
-		});
-	});
-}
-
-
-
-
-function joinServiceEdit(id){
-	  $.ajax({
-		  url: "[[${sysUrl}]]/sys/fx/getMerchant/"+id,
-	      type: 'POST',
-	      data: {},
-	      processData: false,
-	      contentType: false, 
-	      beforeSend: function () {
-	      },
-	      success: function (responseStr) {
-	    	  if(responseStr.meta.success){
-	    		  
-	    		  $("#merchant_id").val(id);
-	    		  $("#lib_service_num").html(responseStr.data.merchant.libService);
-	    		  $("#platform_service_num").html(responseStr.data.merchant.platformService);
-	    		  $("#port_num").html(responseStr.data.merchant.portNum);
-	    		  
-	    		  if(responseStr.data.isPortNum){
-	    			  $(".isportnum").show();
-	    		  }else{
-	    			  $(".isportnum").hide();
-	    		  }
-	    		  
-	    		  layer.open({
-    			    type: 1,
-    			    title: '管理塾币',
-    			    closeBtn: 1, //不显示关闭按钮
-    			    shift: 0.8,
-    			    offset: '150px',
-    			    area: ['40%', '40%'],
-    			    content: $("#joinServiceEdit")
-	    		 });
-	    		  
-	    	  }else{
-	    		  parent.layer.msg(responseStr.meta.message,{icon:11});
-	    	  }
-	      }
-	      ,
-	      error : function (responseStr) {
-	    	  parent.layer.msg("查询失败,请刷新后重试!",{icon:11});
-	      }
-	  });
-}
-</script>
-
-<script type="text/javascript">
-
-	function  openNew(libId) {
-		//@{/sys/admin/curator/index.html(libId=${item.libId})}
-		window.open('[[${sysUrl}]]/sys/admin/curator/index.html?libId='+libId);
-	}
-		function merchantallot(type){
-			var id=$("#merchant_id").val();
-			var title="";
-			if(type==1){
-				title="分配机构塾币";
-			}else{
-				title="分配平台塾币";
-			}
-			layer.open({
-			    type: 2,
-			    title: title,
-			    closeBtn: 1, //不显示关闭按钮
-			    shift: 0.8,
-			    offset: '150px',
-			    area: ['40%', '40%'],
-			    content: '[[${sysUrl}]]/sys/fx/merchantAllot.html?id='+id+'&type='+type
-			});
-		}
-
-		
-		
-		
-		function infomerchant(id){
-			var title="查看商户";
-			
-			parent.layer.open({
-			    type: 2,
-			    title: title,
-			    closeBtn: 1, //不显示关闭按钮
-			    shift: 0.8,
-			    offset: '10px',
-			    area: ['90%', '95%'],
-			    content: '[[${sysUrl}]]/sys/fx/merchantBackupInfo.html?id='+id
-			});
-		}
-
-
-		function savemerchant(id){
-			var title="开通商户";
-			if(id!=null && id!='' && id!=undefined){
-				title="修改商户";
-			}
-			parent.layer.open({
-			    type: 2,
-			    title: title,
-			    closeBtn: 1, //不显示关闭按钮
-			    shift: 0.8,
-			    offset: '10px',
-			    area: ['90%', '95%'],
-			    content: '[[${sysUrl}]]/sys/fx/merchantAdd.html?id='+id
-			});
-		}
-		
-		
-		
-		function untyingmerchant(id){
-			
-			parent.layer.confirm("确定解绑机构?<br/>此动作会清空机构下塾币<br/>但此商户下的塾币会保留", {
-				icon: 4, btn: ['确定','关闭'],offset: '100px' //按钮
-			}, function(){
-				$.ajax({
-					url : "[[${sysUrl}]]/sys/fx/merchant/untying",
-					type : "post",
-					data : {id:id},
-					dataType : "json",
-					success : function(data) {
-						if(data.meta.success){
-							parent.layer.msg("操作成功",{icon:1});
-					    	setTimeout(function(){
-					    		location.reload();
-							},1000);
-						}else{
-							alert("操作异常,请刷新后重试...")
-						}
-					}
-				});
-			});
-			
-		}
-
-
-		function updatemerchant(id,status){  
-			
-			if(status==4){
-				parent.layer.confirm("确定操作删除?", {
-					icon: 4, btn: ['确定','关闭'],offset: '100px' //按钮
-				}, function(){
-					$.ajax({
-						url : "[[${sysUrl}]]/sys/fx/updateMerchant",
-						type : "post",
-						data : {id:id,status:status},
-						dataType : "json",
-						success : function(data) {
-							if(data.meta.success){
-								parent.layer.msg("操作成功",{icon:1});
-						    	setTimeout(function(){
-						    		location.reload();
-								},1000);
-							}else{
-								alert("操作异常,请刷新后重试...")
-							}
-						}
-					});
-				});
-			}else{
-				
-				$.ajax({
-					url : "[[${sysUrl}]]/sys/fx/updateMerchant",
-					type : "post",
-					data : {id:id,status:status},
-					dataType : "json",
-					success : function(data) {
-						if(data.meta.success){
-							parent.layer.msg("操作成功",{icon:1});
-					    	setTimeout(function(){
-					    		location.reload();
-							},1000);
-						}else{
-							alert("操作异常,请刷新后重试...")
-						}
-					}
-				});
-			}
-		}
-	
-	
-</script>
-
-<script type="text/javascript">
 $("#button").on('click',function(){
 	document.getElementById("seachform").action = "[[${sysUrl}]]/sys/fx/exportMerchantBackup";
 	$("#seachform").submit();

+ 139 - 0
src/main/resources/templates/sys/fx/merchantCapList.html

@@ -0,0 +1,139 @@
+<html xmlns:th="http://www.thymeleaf.org">
+<head>
+<title>爱加</title>
+<script th:include="sys/common/metaCSS" th:remove="tag"></script> 
+<script th:include="sys/common/metaJS" th:remove="tag"></script> 
+<script src="sys/js/My97DatePicker/WdatePicker.js" th:src="@{/static/sys/js/My97DatePicker/WdatePicker.js}"></script>
+</head>
+<style>
+	.tablelink{margin-right:10px;}
+	.stylecss{
+	      color: red;
+	}
+	.select_width{
+	     width: 220px;
+	}
+	.date_width{
+	     width: 150px;
+	}
+</style>
+<body>
+<div class="place">
+	<span>位置:</span>
+	<ul class="placeul">
+		<li><a href="#">资金管理</a></li>
+		<li><a href="#">端口商户资金流水</a></li>
+	</ul>
+</div>
+<div class="rightinfo">
+	<form id="seachform" th:action="@{/sys/fx/merchantCapList.html}" method="post">
+	<ul class="seachform">
+		<li>
+			<label>所有商户:</label>
+			<select class="scinput select_width"  name="merchantId"   style="width: 150px;" >
+				<option value="">全部</option>
+				<option th:each="item:${poslist}"  th:selected="${search.get('merchantId') eq item.id ? true : false}" th:value="${item.id}">[[${item.unitName}]]</option>
+			</select>
+		</li>
+
+		 <li>
+		 <label>开始日期:</label>
+		  <input style="width: 150px;" name="signTime" type="text" class="scinput"  onfocus="WdatePicker({dateFmt:'yyyy-MM-dd',autoPickDate:true})" th:value="${search.get('signTime')}" autocomplete="off"  placeholder="开始日期" />
+	    </li>
+	    
+	    <li>
+		 <label>结束日期:</label>
+		  <input style="width: 150px;" name="endSignTime" type="text" class="scinput"  onfocus="WdatePicker({dateFmt:'yyyy-MM-dd',autoPickDate:true})" th:value="${search.get('endSignTime')}" autocomplete="off"  placeholder="结束日期" />
+	    </li>
+	    
+	     <li>
+		 <label>商户类型</label>
+		 	<select class="scinput select_width" name="merchantType" id="merchantType"   style="width: 150px;" >
+		 	 	<option value="" >全部</option>
+				<option value="5"  th:selected="${search.get('merchantType') eq '5' ? true : false}">直接签约(端口模式)</option>
+				<option value="1"  th:selected="${search.get('merchantType') eq '1' ? true : false}">直接签约(塾币模式)</option>
+				<option value="2"  th:selected="${search.get('merchantType') eq '2' ? true : false}">内部消耗</option>
+				<option value="3"  th:selected="${search.get('merchantType') eq '3' ? true : false}">外部签约</option>
+				<option value="4"  th:selected="${search.get('merchantType') eq '4' ? true : false}">内部不结算(财务)</option>
+			</select>
+	    </li>
+	    
+		<li>
+			<input type="button" class="scbtn" value="查询" />
+		</li>
+	</ul>
+	</form>
+	
+	<ul class="seachform">
+		<li>
+			<input type="button" id="button" class="scbtn" value="导出明细" />
+		</li>
+	</ul>
+	
+	<table class="tablelist">
+		<thead>
+		    <tr>
+		    	<th>商户账号</th>
+		        <th>单位名称</th>
+		    	<th>端口数量</th>
+		    	<th>端口单价</th>
+		    	<th>充值金额</th>
+		        <th>消耗金额</th>
+		        <th>流水时间</th>
+		        <th>流水备注</th> 
+		        <th>流水类型</th> 
+		    </tr>
+		</thead>
+		<tbody>
+			<tr th:each="item:${list}" >
+					<td th:text="${item.pos_code}"></td>
+					<td th:text="${item.unit_name}"></td>
+					<td th:text="${item.lib_service}"></td>
+					
+					<td th:text="${item.pr_1}"></td>
+					<td th:text="${item.pr_2}"></td>
+					<td th:text="${item.pr_3}"></td>
+					
+					<td th:text="${item.time}" ></td>  
+					<td th:switch="${item.cap_type}">
+					   <span th:case="1" >充值服务包</span>
+					   <span th:case="2" >消耗服务包</span>
+					   <span th:case="3" >充值平台管理费</span>
+					   <span th:case="4" >消耗平台管理费</span>
+					   <span th:case="5" >充值加油包</span>
+					   <span th:case="6" >消耗加油包</span>
+					</td>
+					<td  th:switch="${item.cap_type}">
+					   <span th:case="1" >充值</span>
+					   <span th:case="2" >消耗</span>
+					   <span th:case="3" >充值</span>
+					   <span th:case="4" >消耗</span>
+					   <span th:case="5" >充值</span>
+					   <span th:case="6" >消耗</span>
+					</td>
+			</tr>
+		</tbody>
+	</table>
+	
+
+	<!-- 分页 -->
+	<div class="pagin">
+    	<div class="message">共<i class="blue">[[${page.rowCnt}]]</i>条记录,当前显示第&nbsp;<i class="blue">[[${page.pageNo }]]&nbsp;</i>页</div>
+    	<div th:utext='${listNavigatHtml}' th:remove="tag" ></div>
+   	</div>
+</div>
+
+</body>
+<script type="text/javascript">
+
+</script>
+
+<script type="text/javascript">
+$("#button").on('click',function(){
+	document.getElementById("seachform").action = "[[${sysUrl}]]/sys/fx/exportMerchantCapList";
+	$("#seachform").submit();
+	document.getElementById("seachform").action = "[[${sysUrl}]]/sys/fx/merchantCapList.html";
+});
+</script>
+
+</html>

+ 530 - 0
src/main/resources/templates/sys/fx/merchantMealAdd.html

@@ -0,0 +1,530 @@
+<html xmlns:th="http://www.thymeleaf.org">
+<head>
+<title>私塾家</title>
+<script th:include="sys/common/metaCSS" th:remove="tag"></script> 
+<script th:include="sys/common/metaJS" th:remove="tag"></script> 
+<script src="sys/js/My97DatePicker/WdatePicker.js" th:src="@{/static/sys/js/My97DatePicker/WdatePicker.js}"></script>
+</head>
+<style>
+	.tablelink{margin-right:10px;}
+	.stylecss{
+	      color: red;
+	}
+	.select_width{
+	     width: 220px;
+	}
+	.date_width{
+	     width: 150px;
+	}
+	
+	.tablelist th,td{
+		white-space: nowrap;
+		text-overflow: ellipsis;
+		overflow: hidden;
+	}
+	#mealServiceAdd .zwfb_shop_table {
+		margin-top: 10px
+	}
+	#mealServiceAdd tbody {
+	    display: table-row-group;
+	    vertical-align: middle;
+    	border-color: inherit;
+	}
+	#mealServiceAdd .fwmc_xxk {
+	    overflow: hidden;
+	    margin-left: 20px;
+	}
+	#mealServiceAdd .fwmc_xxk li {
+	    float: left;
+	    width: 150px;
+	    height: 52px;
+	    border: 1px solid #ddd;
+	    font-size: 18px;
+	    color: #666;
+	    margin-right: 30px;
+	    text-align: center;
+	    margin-bottom: 10px;
+	    overflow: hidden;
+	    cursor: pointer;
+	}
+	#mealServiceAdd .fwmc_xxk li p {
+	    line-height: 18px;
+	    font-size: 12px;
+	    color: #999;
+	    margin-top: 5px;
+	}
+	#mealServiceAdd .zwsl_num {
+	    margin-left: 20px;
+	    font-size: 16px;
+	    color: #333;
+	}
+	#mealServiceAdd .zwsl_num span {
+	    color: #999;
+	    font-size: 12px;
+	    padding-left: 10px;
+	}
+	#mealServiceAdd .nmb_jj {
+	    overflow: hidden;
+	    margin-left: 20px;
+	}
+	#mealServiceAdd .nmb_jj li.jian {
+	    border-right: none;
+	    cursor: pointer;
+	    color: #999;
+	    width: 30px;
+	    padding: 0;
+	}
+	#mealServiceAdd .nmb_jj li {
+	    float: left;
+	    text-align: center;
+	    line-height: 30px;
+	    border: 1px solid #ddd;
+	    font-size: 20px;
+	    padding: 0 8px;
+	}
+	#mealServiceAdd .nmb_jj li .srkk {
+	    width: 30px;
+	    font-size: 16px;
+	    border: none;
+	    line-height: 30px;
+	    text-align: center;
+	    outline: 0;
+	    background: #FFF;
+	}
+	#mealServiceAdd .nmb_jj li.jia {
+	    border-left: none;
+	    cursor: pointer;
+	    color: #999;
+	    width: 30px;
+	    padding: 0;
+	}
+	#mealServiceAdd a.ty_but {
+	    width: 130px;
+	    height: 40px;
+	    line-height: 40px;
+	    text-align: center;
+	    display: block;
+	    font-size: 16px;
+	    color: #fff;
+	    border-radius: 3px;
+	    background: #169ed8;
+	}
+	#mealServiceAdd a.ty_but:hover {
+	    background: #1187ba;
+	}
+	#mealServiceAdd .fwmc_xxk li.sign_type_select_on {
+	    background: url(/static/sys/images/fwkk.jpg) no-repeat center;
+	    color: #169ed8;
+	    border: 1px solid #169ed8;
+	}
+	
+	
+	
+	
+	
+	
+	#libServiceAdd .zwfb_shop_table {
+		margin-top: 10px
+	}
+	#libServiceAdd tbody {
+	    display: table-row-group;
+	    vertical-align: middle;
+    	border-color: inherit;
+	}
+	#libServiceAdd .fwmc_xxk {
+	    overflow: hidden;
+	    margin-left: 20px;
+	}
+	#libServiceAdd .fwmc_xxk li {
+	    float: left;
+	    width: 150px;
+	    height: 52px;
+	    border: 1px solid #ddd;
+	    font-size: 18px;
+	    color: #666;
+	    margin-right: 30px;
+	    text-align: center;
+	    margin-bottom: 25px;
+	    overflow: hidden;
+	    cursor: pointer;
+	}
+	#libServiceAdd .fwmc_xxk li p {
+	    line-height: 18px;
+	    font-size: 12px;
+	    color: #999;
+	    margin-top: 5px;
+	}
+	#libServiceAdd .zwsl_num {
+	    margin-left: 20px;
+	    font-size: 16px;
+	    color: #333;
+	}
+	#libServiceAdd .zwsl_num span {
+	    color: #999;
+	    font-size: 12px;
+	    padding-left: 10px;
+	}
+	#libServiceAdd .nmb_jj {
+	    overflow: hidden;
+	    margin-left: 20px;
+	}
+	#libServiceAdd .nmb_jj li.jian {
+	    border-right: none;
+	    cursor: pointer;
+	    color: #999;
+	    width: 30px;
+	    padding: 0;
+	}
+	#libServiceAdd .nmb_jj li {
+	    float: left;
+	    text-align: center;
+	    line-height: 30px;
+	    border: 1px solid #ddd;
+	    font-size: 20px;
+	    padding: 0 8px;
+	}
+	#libServiceAdd .nmb_jj li .srkk {
+	    width: 30px;
+	    font-size: 16px;
+	    border: none;
+	    line-height: 30px;
+	    text-align: center;
+	    outline: 0;
+	    background: #FFF;
+	}
+	#libServiceAdd .nmb_jj li.jia {
+	    border-left: none;
+	    cursor: pointer;
+	    color: #999;
+	    width: 30px;
+	    padding: 0;
+	}
+	#libServiceAdd a.ty_but {
+	    width: 130px;
+	    height: 40px;
+	    line-height: 40px;
+	    text-align: center;
+	    display: block;
+	    font-size: 16px;
+	    color: #fff;
+	    border-radius: 3px;
+	    background: #169ed8;
+	}
+	#libServiceAdd a.ty_but:hover {
+	    background: #1187ba;
+	}
+	#libServiceAdd .fwmc_xxk li.sign_type_select_on {
+	    background: url(/static/sys/images/fwkk.jpg) no-repeat center;
+	    color: #169ed8;
+	    border: 1px solid #169ed8;
+	}
+	
+	
+	
+</style>
+<body style="min-width: 100%;">
+
+<div class="rightinfo">
+	<div class="formbody" id="libServiceAdd" >
+		<input type="hidden" id="id" th:value="${merchant.id}" >
+		<table border="0" cellspacing="0" cellpadding="0" class="zwfb_shop_table">
+		      <tbody>
+		      	<tr valign="top">
+			        <td align="right" width="70" style="line-height: 50px;font-weight: 700">购买服务包:</td>
+			        <td style="width: 50px;">
+			        	<ul class="fwmc_xxk">
+			           	<li  th:class="sign_type_select"  data-type="1" data-lib_service="30" data-unit_price="800"  >
+			              <p>服务包1</p>
+			              	30人<i>/1月</i>
+			           	</li>
+			          </ul>
+			        </td>
+			        
+			        <td style="width: 50px;">
+			        	<ul class="fwmc_xxk">
+			           	<li th:class="sign_type_select" data-type="2" data-lib_service="50" data-unit_price="1200" >
+			              <p>服务包2</p>
+			              	50人<i>/1月</i>
+			           	</li>
+			          </ul>
+			        </td>
+			        
+			         <td style="width: 50px;">
+			        	<ul class="fwmc_xxk">
+			           	<li th:class="sign_type_select"  data-type="3" data-lib_service="100" data-unit_price="2000" >
+			              <p>服务包3</p>
+			            	100人<i>/1月</i>
+			           	</li>
+			          </ul>
+			        </td>
+			      
+			        
+		      </tr>
+		      
+		      <tr valign="top">
+			        <td align="right" width="70" style="line-height: 50px;font-weight: 700"></td>
+			        <td style="width: 50px;">
+			        	<ul class="fwmc_xxk">
+			           	<li th:class="sign_type_select" data-type="4" data-lib_service="20" data-unit_price="400" >
+			              <p>服务包4</p>
+			              	20人<i>/1月</i>
+			           	</li>
+			          </ul>
+			        </td>
+			        
+			        <td style="width: 50px;">
+			        	<ul class="fwmc_xxk">
+			           	<li th:class="sign_type_select"  data-type="5" th:data-lib_service="0" data-unit_price="0" >
+			              <p>服务包5</p>
+			              	自定义<i>/1月</i>
+			           	</li>
+			          </ul>
+			        </td>
+		      </tr>
+		      
+		       <tr id="lib_service_tr"  valign="top">
+		  			<td align="right" width="70" style="line-height: 30px;font-weight: 700">服务人数量:</td>
+		  	        <td>
+			        	<ul class="nmb_jj">
+				            <li class="jian" id="1_reduce_num">-</li>
+				            <li>
+				              <input name="" id="1_service_num" type="text" value="0" class="srkk" style="width: 50px;">
+				            </li>
+				            <li class="jia" id="1_add_num">+</li>  
+			          </ul>
+			        </td>
+		      </tr>
+		      <tr >
+		        <td height="20"></td>
+		        <td></td>
+		      </tr>
+		      
+
+		      <tr valign="top">
+	  			<td align="right" width="70" style="line-height: 30px;font-weight: 700">购买月数量:</td>
+	  	        <td>
+		        	<ul class="nmb_jj">
+			            <li class="jian" id="2_reduce_num">-</li>
+			            <li>
+			              <input name="" id="2_service_num" type="text" value="1" class="srkk" style="width: 50px;">
+			            </li>
+			            <li class="jia" id="2_add_num">+</li>  
+		          </ul>
+		        </td>
+		      </tr>
+		      <tr>
+		        <td height="20"></td>
+		        <td></td>
+		      </tr>
+		      
+		       <tr valign="top">
+	  			<td align="right" width="70" style="line-height: 30px;font-weight: 700">赠送月数量:</td>
+	  	        <td>
+		        	<ul class="nmb_jj">
+			            <li class="jian" id="3_reduce_num">-</li>
+			            <li>
+			              <input name="" id="3_service_num" type="text" value="0" class="srkk" style="width: 50px;">
+			            </li>
+			            <li class="jia" id="3_add_num">+</li>  
+		          </ul>
+		        </td>
+		      </tr>
+		      
+		      
+		      <tr>
+		        <td height="20"></td>
+		        <td></td>
+		      </tr>
+		      
+		      <tr valign="top">
+	  			<td align="right" width="70" style="line-height: 30px;font-weight: 700">月单价(成本):</td>
+	  	        <td>
+		        	<ul class="nmb_jj">
+			            <li>
+			              <input name="unitPrice" id="unitPrice" type="text" value="0" class="srkk" style="width: 95px;"><i> 元</i>
+			            </li>
+		          </ul>
+		        </td>
+		      </tr>
+		   	 <tr>
+		        <td height="20"></td>
+		        <td></td>
+		      </tr>
+		      
+		      <tr valign="top">
+	  			<td align="right" width="70" style="line-height: 30px;font-weight: 700">总价(收入):</td>
+	  	        <td>
+		        	<ul class="nmb_jj">
+			            <li>
+			              <input name="price" id="price" type="text" value="0" class="srkk" style="width: 95px;"><i> 元</i>
+			            </li>
+		          </ul>
+		        </td>
+		      </tr>
+		      <tr>
+		        <td height="20"></td>
+		        <td></td>
+		      </tr>
+		      
+		      <tr>
+		        <td></td>
+		        <td><a style="margin-left: 20px;" class="ty_but ml20" href="javascript:#" onclick="save();">购  买</a></td>
+		      </tr>
+		    </tbody>
+	   	</table>
+	    
+	</div>
+<br/>
+<br/>
+
+<table class="tablelist">
+	<thead>
+	    <tr>
+	    	<th >订单号</th>
+	    	<th >服务包类型</th>
+	    	<th >服务包人数</th>
+	    	<th >购买月份</th>
+	    	<th >赠送月份 </th>
+	    	<th >月单价(成本)</th>
+	    	<th >服务包总价(收入)</th>
+	    	<th >购买时间</th>
+	    </tr> 
+	</thead>
+	<tbody>
+		 <tr  th:each="item:${list}" >
+		 	<td th:text="${item.id}"></td>
+	    	<td  th:switch="${item.signType}">
+			   <span th:case="1" >服务包1</span>
+			   <span th:case="2" >服务包2</span>
+			   <span th:case="3" >服务包3</span>
+			   <span th:case="4" >服务包4</span>
+			   <span th:case="5" >服务包5</span>
+			</td>
+			<td th:text="${item.libService}"></td>
+	    	<td th:text="${item.buyMonth}"></td>
+	    	<td th:text="${item.giveMonth}"></td>
+	    	<td th:text="${item.unitPrice}"></td>
+	    	<td th:text="${item.price}"></td>
+	    	<td th:text="${item.createTime}"></td>
+	    </tr> 
+	</tbody>
+</table> 
+<br/>
+<br/>
+	
+
+</body>
+
+
+<script type="text/javascript">
+	$(function () {
+		
+	
+		$(".sign_type_select").click(function (){
+			$(".sign_type_select").removeClass("sign_type_select_on");
+			$(this).addClass("sign_type_select_on");
+			
+			var sign_type=$(this).data("type");
+			$("#1_service_num").val($(this).data("lib_service"));
+			$("#unitPrice").val($(this).data("unit_price"));
+			
+					
+// 			if(sign_type>=5){
+// 				$("#lib_service_tr").show();
+// 			}else{
+// 				$("#lib_service_tr").hide();
+// 			}
+		});
+		
+		$("#1_reduce_num").click(function (){
+			if($("#1_service_num").val()<=0){
+				parent.layer.msg("服务人数量不能小于1喔",{icon:11});
+				$("#2_service_num").val(0);
+				return;
+			}
+			$("#1_service_num").val(parseInt($("#1_service_num").val())-1);
+		});
+		
+		$("#1_add_num").click(function (){
+			$("#1_service_num").val(parseInt($("#1_service_num").val())+1);
+		});
+		
+		$("#2_reduce_num").click(function (){
+			if($("#2_service_num").val()<=1){
+				parent.layer.msg("购买月数量不能小于1喔",{icon:11});
+				$("#2_service_num").val(1);
+				return;
+			}
+			$("#2_service_num").val(parseInt($("#2_service_num").val())-1);
+		});
+		
+		$("#2_add_num").click(function (){
+			$("#2_service_num").val(parseInt($("#2_service_num").val())+1);
+		});
+		
+		$("#3_reduce_num").click(function (){
+			if($("#3_service_num").val()<=0){
+				parent.layer.msg("赠送月数量不能小于0",{icon:11});
+				$("#3_service_num").val(0);
+				return;
+			}
+			$("#3_service_num").val(parseInt($("#3_service_num").val())-1);
+		});
+		
+		$("#3_add_num").click(function (){
+			$("#3_service_num").val(parseInt($("#3_service_num").val())+1);
+		});
+		
+		
+	})
+	var islock=false;
+	function save(){
+		if(islock){
+			parent.layer.msg("正在下单中,请勿重复提交...",{icon:2});
+		}
+		if($(".sign_type_select_on").data("type")==undefined){
+			parent.layer.msg("请选择购买的服务包",{icon:11});
+			return;
+		}
+		parent.layer.confirm("确定为此商户购买服务包?", {
+			icon: 4, btn: ['确定','关闭'],offset: '100px' //按钮
+		}, function(){
+				islock=true;
+				var id=$("#id").val();
+				var signType=$(".sign_type_select_on").data("type");
+				var libService=$("#1_service_num").val();
+				var buyMonth=$("#2_service_num").val();
+				var giveMonth=$("#3_service_num").val();
+				var price=$("#price").val();
+				var unitPrice=$("#unitPrice").val();
+				
+				var url="[[${sysUrl}]]/sys/fx/saveMerchantMeal";
+				var params ={
+			        'id' : id,
+			        'signType':signType,
+			        'libService':libService,
+			        'buyMonth':buyMonth,
+			        'giveMonth':giveMonth,
+			        'unitPrice':unitPrice,
+			        'price':price
+			    };
+				$.post(url,params,function(data){
+					if(data.meta.success){
+						parent.layer.msg("购买成功",{icon:1});
+						parent.location.reload();
+						parent.layer.close(parent.layer.getFrameIndex(window.name));
+						islock=false;
+					}else{
+						parent.layer.msg(data.meta.message,{icon:11});
+						islock=false;
+					}
+				});
+		});
+	}
+	
+	
+	
+	
+</script>
+
+</html>

+ 108 - 0
src/main/resources/templates/sys/fx/merchantMealList.html

@@ -0,0 +1,108 @@
+<html xmlns:th="http://www.thymeleaf.org">
+<head>
+<title>爱加</title>
+<script th:include="sys/common/metaCSS" th:remove="tag"></script> 
+<script th:include="sys/common/metaJS" th:remove="tag"></script> 
+<script src="sys/js/My97DatePicker/WdatePicker.js" th:src="@{/static/sys/js/My97DatePicker/WdatePicker.js}"></script>
+</head>
+<style>
+	.tablelink{margin-right:10px;}
+	.stylecss{
+	      color: red;
+	}
+	.select_width{
+	     width: 220px;
+	}
+	.date_width{
+	     width: 150px;
+	}
+</style>
+<body>
+<div class="place">
+	<span>位置:</span>
+	<ul class="placeul">
+		<li><a href="#">服务包管理</a></li>
+		<li><a href="#">服务包订单明细列表</a></li>
+	</ul>
+</div>
+<div class="rightinfo">
+	<form id="seachform" th:action="@{/sys/fx/merchantMealList.html}" method="post">
+	<ul class="seachform">
+		<li>
+			<label>所有商户:</label>
+			<select class="scinput select_width"  name="merchantId"   style="width: 150px;" >
+				<option value="">全部</option>
+				<option th:each="item:${poslist}"  th:selected="${search.get('merchantId') eq item.id ? true : false}" th:value="${item.id}">[[${item.unitName}]]</option>
+			</select>
+		</li>
+		
+		 <li>
+		 <label>订单号:</label>
+		  <input style="width: 200px;" name="orderId" type="text" class="scinput" th:value="${search.get('orderId')}"/>
+	    </li>
+		<li>
+			<input type="button" class="scbtn" value="查询" />
+		</li>
+	</ul>
+	</form>
+	<ul class="seachform">
+		<li>
+			<input type="button" id="button" class="scbtn" value="导出明细" />
+		</li>
+	</ul>
+	
+	<table class="tablelist">
+		<thead>
+		    <tr>
+		        <th>订单编号</th>
+		        <th>商户名称</th>
+		    	<th>服务包类型</th>
+		    	<th>服务包人数</th>
+		    	<th>服务开始日期</th>
+		        <th>服务结束日期</th>
+		        <th>月单价(成本)</th>
+		        <th>购买时间</th> 
+		    </tr>
+		</thead>
+		<tbody>
+			<tr th:each="item:${list}" >
+					<td th:text="${item.order_id}"></td>
+					<td th:text="${item.unit_name}"></td>
+					<td  th:switch="${item.sign_type}">
+					   <span th:case="1" >服务包1</span>
+					   <span th:case="2" >服务包2</span>
+					   <span th:case="3" >服务包3</span>
+					   <span th:case="4" >服务包4</span>
+					   <span th:case="5" >服务包5</span>
+					</td>
+					<td th:text="${item.lib_service}"></td>
+					<td th:text="${#calendars.format(item.sign_time,'yyyy-MM-dd')}" ></td>  
+					<td th:text="${#calendars.format(item.end_sign_time,'yyyy-MM-dd')}" ></td>  
+					<td th:text="${item.unit_price}"></td>
+					<td th:text="${#calendars.format(item.create_time,'yyyy-MM-dd HH:mm:ss')}" ></td>  
+			</tr>
+		</tbody>
+	</table>
+	
+
+	<!-- 分页 -->
+	<div class="pagin">
+    	<div class="message">共<i class="blue">[[${page.rowCnt}]]</i>条记录,当前显示第&nbsp;<i class="blue">[[${page.pageNo }]]&nbsp;</i>页</div>
+    	<div th:utext='${listNavigatHtml}' th:remove="tag" ></div>
+   	</div>
+</div>
+
+</body>
+<script type="text/javascript">
+
+</script>
+
+<script type="text/javascript">
+$("#button").on('click',function(){
+	document.getElementById("seachform").action = "[[${sysUrl}]]/sys/fx/exportMerchantSignList";
+	$("#seachform").submit();
+	document.getElementById("seachform").action = "[[${sysUrl}]]/sys/fx/merchantSignList.html";
+});
+</script>
+
+</html>

+ 136 - 0
src/main/resources/templates/sys/fx/merchantMealOrderList.html

@@ -0,0 +1,136 @@
+<html xmlns:th="http://www.thymeleaf.org">
+<head>
+<title>爱加</title>
+<script th:include="sys/common/metaCSS" th:remove="tag"></script> 
+<script th:include="sys/common/metaJS" th:remove="tag"></script> 
+<script src="sys/js/My97DatePicker/WdatePicker.js" th:src="@{/static/sys/js/My97DatePicker/WdatePicker.js}"></script>
+</head>
+<style>
+	.tablelink{margin-right:10px;}
+	.stylecss{
+	      color: red;
+	}
+	.select_width{
+	     width: 220px;
+	}
+	.date_width{
+	     width: 150px;
+	}
+</style>
+<body>
+<div class="place">
+	<span>位置:</span>
+	<ul class="placeul">
+		<li><a href="#">服务包管理</a></li>
+		<li><a href="#">服务包订单列表</a></li>
+	</ul>
+</div>
+<div class="rightinfo">
+	<form id="seachform" th:action="@{/sys/fx/merchantMealOrderList.html}" method="post">
+	<ul class="seachform">
+	    <li>
+			<label>所有商户:</label>
+			<select class="scinput select_width"  name="merchantId"   style="width: 150px;" >
+				<option value="">全部</option>
+				<option th:each="item:${poslist}"  th:selected="${search.get('merchantId') eq item.id ? true : false}" th:value="${item.id}">[[${item.unitName}]]</option>
+			</select>
+		</li>
+		  <li>
+			<label>服务包类型:</label>
+			<select class="scinput select_width"  name="signType"   style="width: 100px;" >
+				<option value="">全部</option>
+				<option value="1" th:selected="${search.get('signType')+'' eq '1' ? true : false}">服务包1</option>
+				<option value="2" th:selected="${search.get('signType')+'' eq '2' ? true : false}">服务包2</option>
+				<option value="3" th:selected="${search.get('signType')+'' eq '3' ? true : false}">服务包3</option>
+				<option value="4" th:selected="${search.get('signType')+'' eq '4' ? true : false}">服务包4</option>
+				<option value="5" th:selected="${search.get('signType')+'' eq '5' ? true : false}">服务包5</option>
+			</select>
+		</li>
+		
+		 <li>
+		 <label>购买开始日期:</label>
+		  <input style="width: 150px;" name="signTime" type="text" class="scinput"  onfocus="WdatePicker({dateFmt:'yyyy-MM-dd',autoPickDate:true})" th:value="${search.get('signTime')}" autocomplete="off"  placeholder="开始购买日期" />
+	    </li>
+	    
+	    <li>
+		 <label>购买结束日期:</label>
+		  <input style="width: 150px;" name="endSignTime" type="text" class="scinput"  onfocus="WdatePicker({dateFmt:'yyyy-MM-dd',autoPickDate:true})" th:value="${search.get('endSignTime')}" autocomplete="off"  placeholder="结束购买日期" />
+	    </li>
+		
+		<li>
+			<input type="button" class="scbtn" value="查询" />
+		</li>
+	</ul>
+	</form>
+	
+	<ul class="seachform">
+		<li>
+			<input type="button" id="button" class="scbtn" value="导出明细" />
+		</li>
+	</ul>
+	
+	<table class="tablelist">
+		<thead>
+		    <tr>
+		        <th>订单编号</th>
+		        <th>商户名称</th>
+		    	<th>服务包类型</th>
+		    	<th>服务包人数</th>
+		    	<th>购买月份</th>
+		        <th>赠送月份</th>
+		        <th>试用开始时间</th>
+		        <th>试用结束时间</th>
+		        <th>月单价(成本)</th> 
+		        <th>总价(收入)</th> 
+		        <th>购买时间</th> 
+		        <th>操作</th> 
+		    </tr>
+		</thead>
+		<tbody>
+			<tr th:each="item:${list}" >
+					<td th:text="${item.id}"></td>
+					<td th:text="${item.unit_name}"></td>
+					<td  th:switch="${item.sign_type}">
+					   <span th:case="1" style="color:red">服务包1</span>
+					   <span th:case="2" style="color:red">服务包2</span>
+					   <span th:case="3" style="color:red">服务包3</span>
+					   <span th:case="4" style="color:red">服务包4</span>
+					   <span th:case="5" style="color:red">服务包5</span>
+					</td>
+					<td th:text="${item.lib_service}"></td>
+					<td th:text="${item.type==1 ? item.buy_month : '--'}"></td>
+					<td th:text="${item.type==1 ? item.give_month : '--'}"></td>		
+					<td th:text="${item.type==2 ? #calendars.format(item.sign_time,'yyyy-MM-dd') : '--'}" ></td>  
+					<td th:text="${item.type==2 ? #calendars.format(item.end_sign_time,'yyyy-MM-dd') : '--'}" ></td>  
+					<td th:text="${item.unit_price}"></td>
+					<td th:text="${item.price}"></td>
+					<td th:text="${#calendars.format(item.create_time,'yyyy-MM-dd HH:mm:ss')}" ></td>  
+					<td >
+						<a th:href="@{/sys/fx/merchantMealList.html(orderId=${item.id})}"  class="tablelink">明细列表</a>
+					</td>
+			</tr>
+		</tbody>
+	</table>
+	
+
+	<!-- 分页 -->
+	<div class="pagin">
+    	<div class="message">共<i class="blue">[[${page.rowCnt}]]</i>条记录,当前显示第&nbsp;<i class="blue">[[${page.pageNo }]]&nbsp;</i>页</div>
+    	<div th:utext='${listNavigatHtml}' th:remove="tag" ></div>
+   	</div>
+</div>
+
+</body>
+<script type="text/javascript">
+
+</script>
+
+<script type="text/javascript">
+$("#button").on('click',function(){
+	document.getElementById("seachform").action = "[[${sysUrl}]]/sys/fx/exportMerchantMealOrderList";
+	$("#seachform").submit();
+	document.getElementById("seachform").action = "[[${sysUrl}]]/sys/fx/merchantMealOrderList.html";
+});
+</script>
+
+</html>

+ 497 - 0
src/main/resources/templates/sys/fx/merchantMealScAdd.html

@@ -0,0 +1,497 @@
+<html xmlns:th="http://www.thymeleaf.org">
+<head>
+<title>私塾家</title>
+<script th:include="sys/common/metaCSS" th:remove="tag"></script> 
+<script th:include="sys/common/metaJS" th:remove="tag"></script> 
+<script src="sys/js/My97DatePicker/WdatePicker.js" th:src="@{/static/sys/js/My97DatePicker/WdatePicker.js}"></script>
+</head>
+<style>
+	.tablelink{margin-right:10px;}
+	.stylecss{
+	      color: red;
+	}
+	.select_width{
+	     width: 220px;
+	}
+	.date_width{
+	     width: 150px;
+	}
+	
+	.tablelist th,td{
+		white-space: nowrap;
+		text-overflow: ellipsis;
+		overflow: hidden;
+	}
+	#mealServiceAdd .zwfb_shop_table {
+		margin-top: 10px
+	}
+	#mealServiceAdd tbody {
+	    display: table-row-group;
+	    vertical-align: middle;
+    	border-color: inherit;
+	}
+	#mealServiceAdd .fwmc_xxk {
+	    overflow: hidden;
+	    margin-left: 20px;
+	}
+	#mealServiceAdd .fwmc_xxk li {
+	    float: left;
+	    width: 150px;
+	    height: 52px;
+	    border: 1px solid #ddd;
+	    font-size: 18px;
+	    color: #666;
+	    margin-right: 30px;
+	    text-align: center;
+	    margin-bottom: 10px;
+	    overflow: hidden;
+	    cursor: pointer;
+	}
+	#mealServiceAdd .fwmc_xxk li p {
+	    line-height: 18px;
+	    font-size: 12px;
+	    color: #999;
+	    margin-top: 5px;
+	}
+	#mealServiceAdd .zwsl_num {
+	    margin-left: 20px;
+	    font-size: 16px;
+	    color: #333;
+	}
+	#mealServiceAdd .zwsl_num span {
+	    color: #999;
+	    font-size: 12px;
+	    padding-left: 10px;
+	}
+	#mealServiceAdd .nmb_jj {
+	    overflow: hidden;
+	    margin-left: 20px;
+	}
+	#mealServiceAdd .nmb_jj li.jian {
+	    border-right: none;
+	    cursor: pointer;
+	    color: #999;
+	    width: 30px;
+	    padding: 0;
+	}
+	#mealServiceAdd .nmb_jj li {
+	    float: left;
+	    text-align: center;
+	    line-height: 30px;
+	    border: 1px solid #ddd;
+	    font-size: 20px;
+	    padding: 0 8px;
+	}
+	#mealServiceAdd .nmb_jj li .srkk {
+	    width: 30px;
+	    font-size: 16px;
+	    border: none;
+	    line-height: 30px;
+	    text-align: center;
+	    outline: 0;
+	    background: #FFF;
+	}
+	#mealServiceAdd .nmb_jj li.jia {
+	    border-left: none;
+	    cursor: pointer;
+	    color: #999;
+	    width: 30px;
+	    padding: 0;
+	}
+	#mealServiceAdd a.ty_but {
+	    width: 130px;
+	    height: 40px;
+	    line-height: 40px;
+	    text-align: center;
+	    display: block;
+	    font-size: 16px;
+	    color: #fff;
+	    border-radius: 3px;
+	    background: #169ed8;
+	}
+	#mealServiceAdd a.ty_but:hover {
+	    background: #1187ba;
+	}
+	#mealServiceAdd .fwmc_xxk li.sign_type_select_on {
+	    background: url(/static/sys/images/fwkk.jpg) no-repeat center;
+	    color: #169ed8;
+	    border: 1px solid #169ed8;
+	}
+	
+	
+	
+	
+	
+	
+	#libServiceAdd .zwfb_shop_table {
+		margin-top: 10px
+	}
+	#libServiceAdd tbody {
+	    display: table-row-group;
+	    vertical-align: middle;
+    	border-color: inherit;
+	}
+	#libServiceAdd .fwmc_xxk {
+	    overflow: hidden;
+	    margin-left: 20px;
+	}
+	#libServiceAdd .fwmc_xxk li {
+	    float: left;
+	    width: 150px;
+	    height: 52px;
+	    border: 1px solid #ddd;
+	    font-size: 18px;
+	    color: #666;
+	    margin-right: 30px;
+	    text-align: center;
+	    margin-bottom: 25px;
+	    overflow: hidden;
+	    cursor: pointer;
+	}
+	#libServiceAdd .fwmc_xxk li p {
+	    line-height: 18px;
+	    font-size: 12px;
+	    color: #999;
+	    margin-top: 5px;
+	}
+	#libServiceAdd .zwsl_num {
+	    margin-left: 20px;
+	    font-size: 16px;
+	    color: #333;
+	}
+	#libServiceAdd .zwsl_num span {
+	    color: #999;
+	    font-size: 12px;
+	    padding-left: 10px;
+	}
+	#libServiceAdd .nmb_jj {
+	    overflow: hidden;
+	    margin-left: 20px;
+	}
+	#libServiceAdd .nmb_jj li.jian {
+	    border-right: none;
+	    cursor: pointer;
+	    color: #999;
+	    width: 30px;
+	    padding: 0;
+	}
+	#libServiceAdd .nmb_jj li {
+	    float: left;
+	    text-align: center;
+	    line-height: 30px;
+	    border: 1px solid #ddd;
+	    font-size: 20px;
+	    padding: 0 8px;
+	}
+	#libServiceAdd .nmb_jj li .srkk {
+	    width: 30px;
+	    font-size: 16px;
+	    border: none;
+	    line-height: 30px;
+	    text-align: center;
+	    outline: 0;
+	    background: #FFF;
+	}
+	#libServiceAdd .nmb_jj li.jia {
+	    border-left: none;
+	    cursor: pointer;
+	    color: #999;
+	    width: 30px;
+	    padding: 0;
+	}
+	#libServiceAdd a.ty_but {
+	    width: 130px;
+	    height: 40px;
+	    line-height: 40px;
+	    text-align: center;
+	    display: block;
+	    font-size: 16px;
+	    color: #fff;
+	    border-radius: 3px;
+	    background: #169ed8;
+	}
+	#libServiceAdd a.ty_but:hover {
+	    background: #1187ba;
+	}
+	#libServiceAdd .fwmc_xxk li.sign_type_select_on {
+	    background: url(/static/sys/images/fwkk.jpg) no-repeat center;
+	    color: #169ed8;
+	    border: 1px solid #169ed8;
+	}
+	
+	
+	
+</style>
+<body style="min-width: 100%;">
+
+<div class="rightinfo">	
+	<div class="formbody" id="libServiceAdd" >
+		<input type="hidden" id="id" th:value="${merchant.id}" >
+		<table border="0" cellspacing="0" cellpadding="0" class="zwfb_shop_table">
+		      <tbody>
+		      	<tr valign="top">
+			        <td align="right" width="70" style="line-height: 50px;font-weight: 700">购买服务包:</td>
+			        <td style="width: 50px;">
+			        	<ul class="fwmc_xxk">
+			           	<li class="sign_type_select"   data-type="1" data-lib_service="30" data-unit_price="800" >
+			              <p>服务包1</p>
+			              	30人<i>/1月</i>
+			           	</li>
+			          </ul>
+			        </td>
+			        
+			        <td style="width: 50px;">
+			        	<ul class="fwmc_xxk">
+			           	<li class="sign_type_select"  data-type="2" data-lib_service="50" data-unit_price="1200" >
+			              <p>服务包2</p>
+			              	50人<i>/1月</i>
+			           	</li>
+			          </ul>
+			        </td>
+			        
+			         <td style="width: 50px;">
+			        	<ul class="fwmc_xxk">
+			           	<li class="sign_type_select"  data-type="3" data-lib_service="100" data-unit_price="2000" >
+			              <p>服务包3</p>
+			            	100人<i>/1月</i>
+			           	</li>
+			          </ul>
+			        </td>
+			      
+			        
+		      </tr>
+		      
+		      <tr valign="top">
+			        <td align="right" width="70" style="line-height: 50px;font-weight: 700"></td>
+			        <td style="width: 50px;">
+			        	<ul class="fwmc_xxk">
+			           	<li class="sign_type_select"  data-type="4" data-lib_service="20" data-unit_price="400" >
+			              <p>服务包4</p>
+			              	20人<i>/1月</i>
+			           	</li>
+			          </ul>
+			        </td>
+			        
+			        <td style="width: 50px;">
+			        	<ul class="fwmc_xxk">
+			           	<li class="sign_type_select"   data-type="5" th:data-lib_service="0" data-unit_price="0">
+			              <p>服务包5</p>
+			              	自定义<i>/1月</i>
+			           	</li>
+			          </ul>
+			        </td>
+		      </tr>
+		      
+		       <tr id="lib_service_tr" valign="top">
+		  			<td align="right" width="70" style="line-height: 30px;font-weight: 700">服务人数量:</td>
+		  	        <td>
+			        	<ul class="nmb_jj">
+				            <li class="jian" id="1_reduce_num">-</li>
+				            <li>
+				              <input name="" id="1_service_num" type="text" value="0" class="srkk" style="width: 68px;">
+				            </li>
+				            <li class="jia" id="1_add_num">+</li>  
+			          </ul>
+			        </td>
+		      </tr>
+		      <tr >
+		        <td height="20"></td>
+		        <td></td>
+		      </tr>
+		      
+
+		      <tr valign="top">
+	  			<td align="right" width="70" style="line-height: 30px;font-weight: 700">试用开始日期:</td>
+	  	        <td>
+		        	<ul class="nmb_jj">
+			            <li>
+			              <input style="width: 130px;font-size: 15px;"  id="startActiveTime" name="startActiveTime"  onfocus="WdatePicker({dateFmt:'yyyy-MM-dd',autoPickDate:true})"  autocomplete="off"  placeholder="试用开始时间日期" type="text"  class="srkk">
+			            </li>
+		          </ul>
+		        </td>
+		      </tr>
+		      <tr>
+		        <td height="20"></td>
+		        <td></td>
+		      </tr>
+		      
+		      <tr valign="top">
+	  			<td align="right" width="70" style="line-height: 30px;font-weight: 700">试用结束日期:</td>
+	  	        <td>
+		        	<ul class="nmb_jj">
+			            <li>
+			              <input style="width: 130px;font-size: 15px;" id="endActiveTime" name="endActiveTime"  onfocus="WdatePicker({dateFmt:'yyyy-MM-dd',autoPickDate:true})"  autocomplete="off"  placeholder="试用开始时间日期" type="text" class="srkk" >
+			            </li>
+		          </ul>
+		        </td>
+		      </tr>
+		      <tr>
+		        <td height="20"></td>
+		        <td></td>
+		      </tr>
+		      
+		      
+		      <tr valign="top">
+	  			<td align="right" width="70" style="line-height: 30px;font-weight: 700">月单价(成本):</td>
+	  	        <td>
+		        	<ul class="nmb_jj">
+			            <li>
+			              <input name="unitPrice" id="unitPrice" type="text" value="0" class="srkk" style="width: 115px;"><i> 元</i>
+			            </li>
+		          </ul>
+		        </td>
+		      </tr>
+		   	 <tr>
+		        <td height="20"></td>
+		        <td></td>
+		      </tr>
+		      
+		      <tr valign="top">
+	  			<td align="right" width="70" style="line-height: 30px;font-weight: 700">总价(收入):</td>
+	  	        <td>
+		        	<ul class="nmb_jj">
+			            <li>
+			              <input name="price" id="price" type="text" value="0" class="srkk" style="width: 115px;"><i> 元</i>
+			            </li>
+		          </ul>
+		        </td>
+		      </tr>
+		      <tr>
+		        <td height="20"></td>
+		        <td></td>
+		      </tr>
+		      
+		      <tr>
+		        <td></td>
+		        <td><a style="margin-left: 20px;" class="ty_but ml20" href="javascript:#" onclick="save();">购  买</a></td>
+		      </tr>
+		    </tbody>
+	   	</table>
+	    
+	</div>
+<br/>
+<br/>
+
+<table class="tablelist">
+	<thead>
+	    <tr>
+	    	<th >订单号</th>
+	    	<th >服务包类型</th>
+	    	<th >服务包人数</th>
+	    	<th >试用开始日期 </th>
+	    	<th >试用结束日期 </th>
+	    	<th >月单价(成本)</th>
+	    	<th >服务包总价(收入)</th>
+	    	<th >购买时间</th>
+	    </tr> 
+	</thead>
+	<tbody>
+		 <tr  th:each="item:${list}" >
+		 	<td th:text="${item.id}"></td>
+	    	<td  th:switch="${item.signType}">
+			   <span th:case="1" >服务包1</span>
+			   <span th:case="2" >服务包2</span>
+			   <span th:case="3" >服务包3</span>
+			   <span th:case="4" >服务包4</span>
+			   <span th:case="5" >服务包5</span>
+			</td>
+			<td th:text="${item.libService}"></td>
+	    	<td th:text="${#dates.format(item.signTime, 'yyyy-MM-dd')}"> </td>
+	    	<td th:text="${#dates.format(item.endSignTime, 'yyyy-MM-dd')}"> </td>
+	    	<td th:text="${item.unitPrice}"></td>
+	    	<td th:text="${item.price}"></td>
+	    	<td th:text="${item.createTime}"></td>
+	    	
+	    </tr> 
+	</tbody>
+</table> 
+<br/>
+<br/>
+	
+
+</body>
+
+
+<script type="text/javascript">
+	$(function () {
+			
+
+		$(".sign_type_select").click(function (){
+			$(".sign_type_select").removeClass("sign_type_select_on");
+			$(this).addClass("sign_type_select_on");
+			
+			var sign_type=$(this).data("type");
+			$("#1_service_num").val($(this).data("lib_service"));
+			$("#unitPrice").val($(this).data("unit_price"));
+			
+// 			if(sign_type>=5){
+// 				$("#lib_service_tr").show();
+// 			}else{
+// 				$("#lib_service_tr").hide();
+// 			}
+		});
+		
+		$("#1_reduce_num").click(function (){
+			if($("#1_service_num").val()<=0){
+				parent.layer.msg("服务人数量不能小于1喔",{icon:11});
+				$("#1_service_num").val(0);
+				return;
+			}
+			$("#1_service_num").val(parseInt($("#1_service_num").val())-1);
+		});
+		
+		$("#1_add_num").click(function (){
+			$("#1_service_num").val(parseInt($("#1_service_num").val())+1);
+		});
+	})
+	
+	var islock=false;
+	function save(){
+		if(islock){
+			parent.layer.msg("正在下单中,请勿重复提交...",{icon:2});
+		}
+		
+		if($(".sign_type_select_on").data("type")==undefined){
+			parent.layer.msg("请选择购买的服务包",{icon:11});
+			return;
+		}
+		parent.layer.confirm("确定为此商户购买服务包?", {
+			icon: 4, btn: ['确定','关闭'],offset: '100px' //按钮
+		}, function(){
+				islock=true;
+				var id=$("#id").val();
+				var signType=$(".sign_type_select_on").data("type");
+				var libService=$("#1_service_num").val();
+				var startActiveTime=$("#startActiveTime").val();
+				var endActiveTime=$("#endActiveTime").val();
+				var price=$("#price").val();
+				var unitPrice=$("#unitPrice").val();
+				
+				var url="[[${sysUrl}]]/sys/fx/saveMerchantMealSc";
+				var params ={
+			        'id' : id,
+			        'signType':signType,
+			        'libService':libService,
+			        'startActiveTime':startActiveTime,
+			        'endActiveTime':endActiveTime,
+			        'unitPrice':unitPrice,
+			        'price':price
+			    };
+				$.post(url,params,function(data){
+					if(data.meta.success){
+						parent.layer.msg("购买成功",{icon:1});
+						parent.location.reload();
+						parent.layer.close(parent.layer.getFrameIndex(window.name));
+						islock=false;
+					}else{
+						parent.layer.msg(data.meta.message,{icon:11});
+						islock=false;
+					}
+				});
+		});
+	}
+	
+	
+</script>
+
+</html>

+ 129 - 0
src/main/resources/templates/sys/fx/merchantMealStatusList.html

@@ -0,0 +1,129 @@
+<html xmlns:th="http://www.thymeleaf.org">
+<head>
+<title>爱加</title>
+<script th:include="sys/common/metaCSS" th:remove="tag"></script> 
+<script th:include="sys/common/metaJS" th:remove="tag"></script> 
+<script src="sys/js/My97DatePicker/WdatePicker.js" th:src="@{/static/sys/js/My97DatePicker/WdatePicker.js}"></script>
+</head>
+<style>
+	.tablelink{margin-right:10px;}
+	.stylecss{
+	      color: red;
+	}
+	.select_width{
+	     width: 220px;
+	}
+	.date_width{
+	     width: 150px;
+	}
+</style>
+<body>
+<div class="place">
+	<span>位置:</span>
+	<ul class="placeul">
+		<li><a href="#">服务包管理</a></li>
+		<li><a href="#">服务包商户状态列表</a></li>
+	</ul>
+</div>
+<div class="rightinfo">
+	<form id="seachform" th:action="@{/sys/fx/merchantMealStatusList.html}" method="post">
+	<ul class="seachform">
+		<li>
+			<label>所有商户:</label>
+			<select class="scinput select_width"  name="merchantId"   style="width: 150px;" >
+				<option value="">全部</option>
+				<option th:each="item:${poslist}"  th:selected="${search.get('merchantId') eq item.id ? true : false}" th:value="${item.id}">[[${item.unitName}]]</option>
+			</select>
+		</li>
+		 <li>
+			<label>服务包类型:</label>
+			<select class="scinput select_width"  name="signType"   style="width: 150px;" >
+				<option value="">全部</option>
+				<option value="1" th:selected="${search.get('signType')+'' eq '1' ? true : false}">服务包1</option>
+				<option value="2" th:selected="${search.get('signType')+'' eq '2' ? true : false}">服务包2</option>
+				<option value="3" th:selected="${search.get('signType')+'' eq '3' ? true : false}">服务包3</option>
+				<option value="4" th:selected="${search.get('signType')+'' eq '4' ? true : false}">服务包4</option>
+				<option value="5" th:selected="${search.get('signType')+'' eq '5' ? true : false}">服务包5</option>
+			</select>
+		</li>
+		
+		 <li>
+		 <label>服务开始日期:</label>
+		  <input style="width: 150px;" name="signTime" type="text" class="scinput"  onfocus="WdatePicker({dateFmt:'yyyy-MM-dd',autoPickDate:true})" th:value="${search.get('signTime')}" autocomplete="off"  placeholder="开始日期" />
+	    </li>
+	    
+	    <li>
+		 <label>服务结束日期:</label>
+		  <input style="width: 150px;" name="endSignTime" type="text" class="scinput"  onfocus="WdatePicker({dateFmt:'yyyy-MM-dd',autoPickDate:true})" th:value="${search.get('endSignTime')}" autocomplete="off"  placeholder="结束日期" />
+	    </li>
+		<li>
+			<input type="button" class="scbtn" value="查询" />
+		</li>
+	</ul>
+	</form>
+	
+	<table class="tablelist">
+		<thead>
+		    <tr>
+		    	<th>商户账号</th>
+		        <th>商户名称</th>
+		    	<th>服务包类型</th>
+		    	<th>服务包人数</th>
+		    	<th>人数单价(收入)</th>
+		        <th>人数单价(成本)</th>
+		        <th>月单价(收入)</th>
+		        <th>月单价(成本)</th> 
+		        <th>总价(收入)</th> 
+		        <th>总价(成本)</th> 
+		        <th>服务开始时间</th> 
+		        <th>服务结束时间</th> 
+		    </tr>
+		</thead>
+		<tbody>
+			<tr th:each="item:${list}" >
+					<td th:text="${item.pos_code}"></td>
+					<td th:text="${item.unit_name}"></td>
+					<td  th:switch="${item.sign_type}">
+					   <span th:case="1" >服务包1</span>
+					   <span th:case="2" >服务包2</span>
+					   <span th:case="3" >服务包3</span>
+					   <span th:case="4" >服务包4</span>
+					   <span th:case="5" >服务包5</span>
+					</td>
+					<td th:text="${item.lib_service}"></td>
+					
+					<td th:text="${item.pr_1}"></td>
+					<td th:text="${item.pr_2}"></td>
+					<td th:text="${item.pr_3}"></td>
+					<td th:text="${item.pr_4}"></td>
+					<td th:text="${item.pr_5}"></td>
+					<td th:text="${item.pr_6}"></td>
+					
+					<td th:text="${#calendars.format(item.sign_time,'yyyy-MM-dd')}" ></td>  
+					<td th:text="${#calendars.format(item.end_sign_time,'yyyy-MM-dd')}" ></td>  
+			</tr>
+		</tbody>
+	</table>
+	
+
+	<!-- 分页 -->
+	<div class="pagin">
+    	<div class="message">共<i class="blue">[[${page.rowCnt}]]</i>条记录,当前显示第&nbsp;<i class="blue">[[${page.pageNo }]]&nbsp;</i>页</div>
+    	<div th:utext='${listNavigatHtml}' th:remove="tag" ></div>
+   	</div>
+</div>
+
+</body>
+<script type="text/javascript">
+
+</script>
+
+<script type="text/javascript">
+$("#button").on('click',function(){
+	document.getElementById("seachform").action = "[[${sysUrl}]]/sys/fx/exportMerchantSignList";
+	$("#seachform").submit();
+	document.getElementById("seachform").action = "[[${sysUrl}]]/sys/fx/merchantSignList.html";
+});
+</script>
+
+</html>

+ 2 - 2
src/main/resources/templates/sys/fx/merchantOldAdd.html

@@ -705,7 +705,7 @@ function save(){
 	parent.layer.confirm(title, {
 		icon: 4, btn: ['确定','关闭'],offset: '100px' //按钮
 	}, function(){
-		var url="[[${sysUrl}]]/sys/fx/saveMerchant_old";
+		var url="[[${sysUrl}]]/sys/fx/saveMerchantOld";
 		if( $("#poscode").val()==''){
 			alert("商户账号不能为空");
 			return ;
@@ -716,7 +716,7 @@ function save(){
             'type' : $("#type").val(),
             'level' : $("#level").val(),
             'unitName' : $("#unitname").val(),
-            'legalPerson' : $("#legalperson").val(),
+            'legalPerson' : $("#legalPerson").val(),
             'phone' : $("#phone").val(),
             'deputyName' : $("#deputyname").val(),
             'deputyPhone' : $("#deputyphone").val(),

+ 329 - 0
src/main/resources/templates/sys/fx/merchantPlatAdd.html

@@ -0,0 +1,329 @@
+<html xmlns:th="http://www.thymeleaf.org">
+<head>
+<title>私塾家</title>
+<script th:include="sys/common/metaCSS" th:remove="tag"></script> 
+<script th:include="sys/common/metaJS" th:remove="tag"></script> 
+<script src="sys/js/My97DatePicker/WdatePicker.js" th:src="@{/static/sys/js/My97DatePicker/WdatePicker.js}"></script>
+</head>
+<style>
+	.tablelink{margin-right:10px;}
+	.stylecss{
+	      color: red;
+	}
+	.select_width{
+	     width: 220px;
+	}
+	.date_width{
+	     width: 150px;
+	}
+	
+	.tablelist th,td{
+		white-space: nowrap;
+		text-overflow: ellipsis;
+		overflow: hidden;
+	}
+	#mealServiceAdd .zwfb_shop_table {
+		margin-top: 10px
+	}
+	#mealServiceAdd tbody {
+	    display: table-row-group;
+	    vertical-align: middle;
+    	border-color: inherit;
+	}
+	#mealServiceAdd .fwmc_xxk {
+	    overflow: hidden;
+	    margin-left: 20px;
+	}
+	#mealServiceAdd .fwmc_xxk li {
+	    float: left;
+	    width: 150px;
+	    height: 52px;
+	    border: 1px solid #ddd;
+	    font-size: 18px;
+	    color: #666;
+	    margin-right: 30px;
+	    text-align: center;
+	    margin-bottom: 10px;
+	    overflow: hidden;
+	    cursor: pointer;
+	}
+	#mealServiceAdd .fwmc_xxk li p {
+	    line-height: 18px;
+	    font-size: 12px;
+	    color: #999;
+	    margin-top: 5px;
+	}
+	#mealServiceAdd .zwsl_num {
+	    margin-left: 20px;
+	    font-size: 16px;
+	    color: #333;
+	}
+	#mealServiceAdd .zwsl_num span {
+	    color: #999;
+	    font-size: 12px;
+	    padding-left: 10px;
+	}
+	#mealServiceAdd .nmb_jj {
+	    overflow: hidden;
+	    margin-left: 20px;
+	}
+	#mealServiceAdd .nmb_jj li.jian {
+	    border-right: none;
+	    cursor: pointer;
+	    color: #999;
+	    width: 30px;
+	    padding: 0;
+	}
+	#mealServiceAdd .nmb_jj li {
+	    float: left;
+	    text-align: center;
+	    line-height: 30px;
+	    border: 1px solid #ddd;
+	    font-size: 20px;
+	    padding: 0 8px;
+	}
+	#mealServiceAdd .nmb_jj li .srkk {
+	    width: 30px;
+	    font-size: 16px;
+	    border: none;
+	    line-height: 30px;
+	    text-align: center;
+	    outline: 0;
+	    background: #FFF;
+	}
+	#mealServiceAdd .nmb_jj li.jia {
+	    border-left: none;
+	    cursor: pointer;
+	    color: #999;
+	    width: 30px;
+	    padding: 0;
+	}
+	#mealServiceAdd a.ty_but {
+	    width: 130px;
+	    height: 40px;
+	    line-height: 40px;
+	    text-align: center;
+	    display: block;
+	    font-size: 16px;
+	    color: #fff;
+	    border-radius: 3px;
+	    background: #169ed8;
+	}
+	#mealServiceAdd a.ty_but:hover {
+	    background: #1187ba;
+	}
+	#mealServiceAdd .fwmc_xxk li.sign_type_select_on {
+	    background: url(/static/sys/images/fwkk.jpg) no-repeat center;
+	    color: #169ed8;
+	    border: 1px solid #169ed8;
+	}
+	
+	
+	
+	
+	
+	
+	#libServiceAdd .zwfb_shop_table {
+		margin-top: 10px
+	}
+	#libServiceAdd tbody {
+	    display: table-row-group;
+	    vertical-align: middle;
+    	border-color: inherit;
+	}
+	#libServiceAdd .fwmc_xxk {
+	    overflow: hidden;
+	    margin-left: 20px;
+	}
+	#libServiceAdd .fwmc_xxk li {
+	    float: left;
+	    width: 150px;
+	    height: 52px;
+	    border: 1px solid #ddd;
+	    font-size: 18px;
+	    color: #666;
+	    margin-right: 30px;
+	    text-align: center;
+	    margin-bottom: 25px;
+	    overflow: hidden;
+	    cursor: pointer;
+	}
+	#libServiceAdd .fwmc_xxk li p {
+	    line-height: 18px;
+	    font-size: 12px;
+	    color: #999;
+	    margin-top: 5px;
+	}
+	#libServiceAdd .zwsl_num {
+	    margin-left: 20px;
+	    font-size: 16px;
+	    color: #333;
+	}
+	#libServiceAdd .zwsl_num span {
+	    color: #999;
+	    font-size: 12px;
+	    padding-left: 10px;
+	}
+	#libServiceAdd .nmb_jj {
+	    overflow: hidden;
+	    margin-left: 20px;
+	}
+	#libServiceAdd .nmb_jj li.jian {
+	    border-right: none;
+	    cursor: pointer;
+	    color: #999;
+	    width: 30px;
+	    padding: 0;
+	}
+	#libServiceAdd .nmb_jj li {
+	    float: left;
+	    text-align: center;
+	    line-height: 30px;
+	    border: 1px solid #ddd;
+	    font-size: 20px;
+	    padding: 0 8px;
+	}
+	#libServiceAdd .nmb_jj li .srkk {
+	    width: 30px;
+	    font-size: 16px;
+	    border: none;
+	    line-height: 30px;
+	    text-align: center;
+	    outline: 0;
+	    background: #FFF;
+	}
+	#libServiceAdd .nmb_jj li.jia {
+	    border-left: none;
+	    cursor: pointer;
+	    color: #999;
+	    width: 30px;
+	    padding: 0;
+	}
+	#libServiceAdd a.ty_but {
+	    width: 130px;
+	    height: 40px;
+	    line-height: 40px;
+	    text-align: center;
+	    display: block;
+	    font-size: 16px;
+	    color: #fff;
+	    border-radius: 3px;
+	    background: #169ed8;
+	}
+	#libServiceAdd a.ty_but:hover {
+	    background: #1187ba;
+	}
+	#libServiceAdd .fwmc_xxk li.sign_type_select_on {
+	    background: url(/static/sys/images/fwkk.jpg) no-repeat center;
+	    color: #169ed8;
+	    border: 1px solid #169ed8;
+	}
+	
+	
+	
+</style>
+<body style="min-width: 100%;">
+
+<div class="rightinfo">
+	<div class="formbody" id="libServiceAdd" >
+		<input type="hidden" id="id" th:value="${merchant.id}" >
+		<table border="0" cellspacing="0" cellpadding="0" class="zwfb_shop_table">
+		     <tbody>
+		      	<tr valign="top">
+			        <td align="right" width="70" style="line-height: 50px;font-weight: 700">购买类型:</td>
+			        <td>
+			        	<ul class="fwmc_xxk">
+				            <li class="sign_type_select sign_type_select_on" >
+				              <p>平台管理费</p>
+				              *<i>/</i>
+				           	</li>
+			          </ul>
+			        </td>
+		      	</tr>
+		      <tr>
+		        <td height="20"></td>
+		        <td></td>
+		      </tr>
+		      
+		     <tr valign="top">
+	  			<td align="right" width="70" style="line-height: 30px;font-weight: 700">费用金额:</td>
+	  	        <td>
+		        	<ul class="nmb_jj">
+			            <li>
+			              <input name="price" id="price" type="text" th:value="${merchant.outPrice!=null ? merchant.outPrice : '0' }" class="srkk" style="width: 115px;"><i> 元</i>
+			            </li>
+		          </ul>
+		        </td>
+		      </tr>
+		   	 <tr>
+		        <td height="20"></td>
+		        <td></td>
+		      </tr>
+		   	 <tr>
+		        <td height="20"></td>
+		        <td></td>
+		      </tr>
+		      <tr>
+		        <td></td>
+		        <td><a style="margin-left: 20px;" class="ty_but ml20" href="javascript:#" onclick="save();">购 买</a></td>
+		      </tr>
+		    </tbody>
+	   	</table>
+	</div>
+<br/>
+<br/>
+	
+<table class="tablelist">
+	<thead>
+	    <tr>
+	    	<th >订单号</th>
+	    	<th >管理金额</th>
+	    	<th >购买时间</th>
+	    </tr> 
+	</thead>
+	<tbody>
+		 <tr th:each="item:${list}" >
+		 	<td th:text="${item.id}"></td>
+	    	<td th:text="${item.price}"></td>
+	    	<td th:text="${item.createTime}"></td>
+	    </tr> 
+	   
+	</tbody>
+</table> 
+
+</body>
+<script type="text/javascript">
+	var islock=false;
+	function save(){
+		if(islock){
+			parent.layer.msg("正在下单中,请勿重复提交...",{icon:2});
+		}
+		parent.layer.confirm("确定为此商户购买管理费?", {
+			icon: 4, btn: ['确定','关闭'],offset: '100px' //按钮
+		}, function(){
+				islock=true;
+				var id=$("#id").val();
+				var price=$("#price").val();
+				
+				var url="[[${sysUrl}]]/sys/fx/saveMerchantPlat";
+				var params ={
+			        'id' : id,
+			        'price':price,
+			    };
+				$.post(url,params,function(data){
+					if(data.meta.success){
+						parent.layer.msg("购买成功",{icon:1});
+						parent.location.reload();
+						parent.layer.close(parent.layer.getFrameIndex(window.name));
+						islock=false;
+					}else{
+						parent.layer.msg(data.meta.message,{icon:11});
+						islock=false;
+					}
+				});
+		});
+	}
+		
+</script>
+
+</html>

+ 109 - 0
src/main/resources/templates/sys/fx/merchantPlatOrderList.html

@@ -0,0 +1,109 @@
+<html xmlns:th="http://www.thymeleaf.org">
+<head>
+<title>爱加</title>
+<script th:include="sys/common/metaCSS" th:remove="tag"></script> 
+<script th:include="sys/common/metaJS" th:remove="tag"></script> 
+<script src="sys/js/My97DatePicker/WdatePicker.js" th:src="@{/static/sys/js/My97DatePicker/WdatePicker.js}"></script>
+</head>
+<style>
+	.tablelink{margin-right:10px;}
+	.stylecss{
+	      color: red;
+	}
+	.select_width{
+	     width: 220px;
+	}
+	.date_width{
+	     width: 150px;
+	}
+</style>
+<body>
+<div class="place">
+	<span>位置:</span>
+	<ul class="placeul">
+		<li><a href="#">商户管理</a></li>
+		<li><a href="#">平台管理费订单列表</a></li>
+	</ul>
+</div>
+<div class="rightinfo">
+	<form id="seachform" th:action="@{/sys/fx/merchantPlatOrderList.html}" method="post">
+	<ul class="seachform">
+	    <li>
+			<label>所有商户:</label>
+			<select class="scinput select_width"  name="merchantId"   style="width: 150px;" >
+				<option value="">全部</option>
+				<option th:each="item:${poslist}"  th:selected="${search.get('merchantId') eq item.id ? true : false}" th:value="${item.id}">[[${item.unitName}]]</option>
+			</select>
+		</li>
+		
+		 <li>
+		 <label>购买开始日期:</label>
+		  <input style="width: 150px;" name="signTime" type="text" class="scinput"  onfocus="WdatePicker({dateFmt:'yyyy-MM-dd',autoPickDate:true})" th:value="${search.get('signTime')}" autocomplete="off"  placeholder="开始购买日期" />
+	    </li>
+	    
+	    <li>
+		 <label>购买结束日期:</label>
+		  <input style="width: 150px;" name="endSignTime" type="text" class="scinput"  onfocus="WdatePicker({dateFmt:'yyyy-MM-dd',autoPickDate:true})" th:value="${search.get('endSignTime')}" autocomplete="off"  placeholder="结束购买日期" />
+	    </li>
+		
+		<li>
+			<input type="button" class="scbtn" value="查询" />
+		</li>
+	</ul>
+	</form>
+	
+	<ul class="seachform">
+		<li>
+			<input type="button" id="button" class="scbtn" value="导出明细" />
+		</li>
+	</ul>
+	
+	<table class="tablelist">
+		<thead>
+		    <tr>
+		    	<th>订单号</th>
+		        <th>商户名称</th>
+		        <th>套餐类型</th>
+		    	<th>费用金额</th>
+		        <th>购买时间</th> 
+		    </tr>
+		</thead>
+		<tbody>
+			<tr th:each="item:${list}" >
+					<td th:text="${item.id}"></td>
+					<td th:text="${item.unit_name}"></td>
+					<td  th:switch="${item.meal_type}">
+					   <span th:case="1" >优选套餐</span>
+					   <span th:case="2" >VIP套餐</span>
+					   <span th:case="3" >尊享套餐</span>
+					   <span th:case="4" >校园服务</span>
+					   <span th:case="*" >--</span>
+					</td>
+					<td th:text="${item.price}"></td>
+					<td th:text="${item.create_time}"></td>		
+			</tr>
+		</tbody>
+	</table>
+	
+
+	<!-- 分页 -->
+	<div class="pagin">
+    	<div class="message">共<i class="blue">[[${page.rowCnt}]]</i>条记录,当前显示第&nbsp;<i class="blue">[[${page.pageNo }]]&nbsp;</i>页</div>
+    	<div th:utext='${listNavigatHtml}' th:remove="tag" ></div>
+   	</div>
+</div>
+
+</body>
+<script type="text/javascript">
+
+</script>
+
+<script type="text/javascript">
+$("#button").on('click',function(){
+	document.getElementById("seachform").action = "[[${sysUrl}]]/sys/fx/exportMerchantPlatOrderList";
+	$("#seachform").submit();
+	document.getElementById("seachform").action = "[[${sysUrl}]]/sys/fx/merchantPlatOrderList.html";
+});
+</script>
+
+</html>

+ 1 - 72
src/main/resources/templates/sys/fx/merchantScAdd.html

@@ -137,65 +137,7 @@ dtext{
 				</div>
 			</li>
 			
-			<li>
-				<label>套餐:服务包类型:<b>*</b></label>
-				<div class="vocation" style="margin-right: 5px; width: 345px">
-					<select name="signType" id="signType" class="select1"  > 
-						<option value="5" th:selected="${merchant.signType==5 ? true : false}" th:data-val="${merchant.libService!=null ? merchant.libService : 0}" data-upval="0" >服务包5</option>
-						<option value="1" th:selected="${merchant.signType==1 ? true : false}" data-val="30" data-upval="800" >服务包1</option>
-						<option value="2" th:selected="${merchant.signType==2 ? true : false}" data-val="50" data-upval="1200" >服务包2</option>
-						<option value="3" th:selected="${merchant.signType==3 ? true : false}" data-val="100" data-upval="2000" >服务包3</option>
-						<option value="4" th:selected="${merchant.signType==4 ? true : false}" data-val="20" data-upval="400" >服务包4</option>
-					</select>
-				</div>
-				<text th:if="${merchant.id!=null}"  style="width: 230px;color:red">[ 修改套餐模式,不会影响加油包有效性 ]</text>
-			</li>
-			
-			<li>
-				<label>服务包人数:<b>*</b></label>
-				<input type="number" id="libService" min="0" class="dfinput fl" name="libService" th:value="${merchant.libService!=null ? merchant.libService : 0}" autocomplete="off"/>
-				<text id="libServiceTips" style="width: 230px;color:red;display: none;">[ 请输入服务包5的服务人数 ]</text>
-			</li>
-
-			<li>
-				<label>服务包/套餐单价:平台管理费:<b>*</b></label>
-				<input type="number" id="outPrice" class="dfinput fl" name="outPrice" th:value="${merchant.outPrice==null ? 0 : merchant.outPrice}" autocomplete="off" placeholder=" 请输入平台管理费金额" />
-			</li>
-			<li>
-				<label>月包数量:1月/5人:<b></b></label>
-				<input type="text"  class="dfinput fl" value="0"   autocomplete="off" placeholder=" " />
-			</li>
-			<li>
-				<label>服务包/总价(收入):<b>*</b></label>
-				<input type="number" id="price" class="dfinput fl" name="price" th:value="${merchant.price==null ? 0 : merchant.price}" autocomplete="off" placeholder=" 请输入服务包总价"/>
-			</li>	
-			
-			<li style="display: none">
-				<label>服务包/月单价(成本):<b>*</b></label>
-				<input type="number" id="munitPrice" class="dfinput fl" name="munitPrice" th:value="${merchant.munitPrice==null ? 0 : merchant.munitPrice}" autocomplete="off" placeholder=" 请输入服务包单价" />
-			</li>
-			
-			<li>
-				<label>月包数量:1月/5人:<b>*</b></label>
-				<input type="text"  class="dfinput fl" value="0"    autocomplete="off" placeholder=" " />
-			</li>
-			
-			<li>
-				<label>加油包/月包单价:<b>*</b></label>
-				<input type="number" id="plusAmountPrice" class="dfinput fl" name="plusAmountPrice" th:value="${merchant.plusAmountPrice==null ? 0 : merchant.plusAmountPrice}" autocomplete="off" placeholder=" 请输入服务包单价" />
-			</li>
-			
-			<li>
-				<label>数量包数量:5人/月:<b>*</b></label>
-				<input type="text"  class="dfinput fl" value="0"    autocomplete="off" placeholder=" " />
-			</li>
 			
-			<li>
-				<label>加油包/量包单价:<b>*</b></label>
-				<input type="number" id="plusMonthPrice" class="dfinput fl" name="plusMonthPrice" th:value="${merchant.plusMonthPrice==null ? 0 : merchant.plusMonthPrice}" autocomplete="off" placeholder=" 请输入服务包单价" />
-			</li>
-
-
 			<li style="display: none">
 				<label>上级渠道:<b >*</b></label>
 				<div class="vocation" style="margin-right: 5px; width: 345px">
@@ -240,7 +182,6 @@ dtext{
 				</div>
 			</li>
 				
-		  
 			<li>
 				<label>签约数量(练习册用):<b>*</b></label>
 				<input type="text" id="signService" class="dfinput fl" name="signService" th:value="${merchant.signService!=null ? merchant.signService : 0}" autocomplete="off"/>
@@ -265,16 +206,6 @@ dtext{
 			</li>
 			
 			<li>
-				<label>试用开始时间:<b >*</b></label>
-				<input type="text"  class="dfinput fl"  id="activeTime" name="activeTime"  onfocus="WdatePicker({dateFmt:'yyyy-MM-dd',autoPickDate:true})" autocomplete="off" th:value="${#dates.format(merchant.activeTime, 'yyyy-MM-dd')}" placeholder="试用开始时间日期">
-			</li>
-			
-			<li>
-				<label>试用结束时间:<b >*</b></label>
-				<input type="text"  class="dfinput fl"  id="endActiveTime" name="endActiveTime"  onfocus="WdatePicker({dateFmt:'yyyy-MM-dd',autoPickDate:true})" autocomplete="off" th:value="${#dates.format(merchant.endActiveTime, 'yyyy-MM-dd')}" placeholder="试用结束时间日期">
-			</li>
-			
-			<li>
 				<label>甲方签约人 :<b></b></label>
 				<input type="text" id="signerPerson" class="dfinput fl" name="signerPerson" th:value="${merchant.signerPerson}" autocomplete="off" placeholder=" 请输入甲方签约人"/>
 			</li>
@@ -316,8 +247,6 @@ dtext{
 				<input type="text" id="remarks" class="dfinput fl" name="remarks"  th:value="${merchant.remarks}" autocomplete="off" placeholder=" 请输入商户备注" />
 			</li>
 
-		
-			
 			<li style="padding-top: 10px">
 				<label>&nbsp;</label>
 				<button type="button" class="btn" onclick="javascript:location.reload();" style="background: #ccc;">清空</button>
@@ -792,7 +721,7 @@ function save(){
 	parent.layer.confirm(title, {
 		icon: 4, btn: ['确定','关闭'],offset: '100px' //按钮
 	}, function(){
-		var url="[[${sysUrl}]]/sys/fx/saveMerchant_sc";
+		var url="[[${sysUrl}]]/sys/fx/saveMerchantSc";
 		if( $("#poscode").val()==''){
 			alert("商户账号不能为空");
 			return ;

+ 397 - 0
src/main/resources/templates/sys/fx/merchantSignAdd.html

@@ -0,0 +1,397 @@
+<html xmlns:th="http://www.thymeleaf.org">
+<head>
+<title>私塾家</title>
+<script th:include="sys/common/metaCSS" th:remove="tag"></script> 
+<script th:include="sys/common/metaJS" th:remove="tag"></script> 
+<script src="sys/js/My97DatePicker/WdatePicker.js" th:src="@{/static/sys/js/My97DatePicker/WdatePicker.js}"></script>
+</head>
+<style>
+	.tablelink{margin-right:10px;}
+	.stylecss{
+	      color: red;
+	}
+	.select_width{
+	     width: 220px;
+	}
+	.date_width{
+	     width: 150px;
+	}
+	
+	.tablelist th,td{
+		white-space: nowrap;
+		text-overflow: ellipsis;
+		overflow: hidden;
+	}
+	#mealServiceAdd .zwfb_shop_table {
+		margin-top: 10px
+	}
+	#mealServiceAdd tbody {
+	    display: table-row-group;
+	    vertical-align: middle;
+    	border-color: inherit;
+	}
+	#mealServiceAdd .fwmc_xxk {
+	    overflow: hidden;
+	    margin-left: 20px;
+	}
+	#mealServiceAdd .fwmc_xxk li {
+	    float: left;
+	    width: 150px;
+	    height: 52px;
+	    border: 1px solid #ddd;
+	    font-size: 18px;
+	    color: #666;
+	    margin-right: 30px;
+	    text-align: center;
+	    margin-bottom: 10px;
+	    overflow: hidden;
+	    cursor: pointer;
+	}
+	#mealServiceAdd .fwmc_xxk li p {
+	    line-height: 18px;
+	    font-size: 12px;
+	    color: #999;
+	    margin-top: 5px;
+	}
+	#mealServiceAdd .zwsl_num {
+	    margin-left: 20px;
+	    font-size: 16px;
+	    color: #333;
+	}
+	#mealServiceAdd .zwsl_num span {
+	    color: #999;
+	    font-size: 12px;
+	    padding-left: 10px;
+	}
+	#mealServiceAdd .nmb_jj {
+	    overflow: hidden;
+	    margin-left: 20px;
+	}
+	#mealServiceAdd .nmb_jj li.jian {
+	    border-right: none;
+	    cursor: pointer;
+	    color: #999;
+	    width: 30px;
+	    padding: 0;
+	}
+	#mealServiceAdd .nmb_jj li {
+	    float: left;
+	    text-align: center;
+	    line-height: 30px;
+	    border: 1px solid #ddd;
+	    font-size: 20px;
+	    padding: 0 8px;
+	}
+	#mealServiceAdd .nmb_jj li .srkk {
+	    width: 30px;
+	    font-size: 16px;
+	    border: none;
+	    line-height: 30px;
+	    text-align: center;
+	    outline: 0;
+	    background: #FFF;
+	}
+	#mealServiceAdd .nmb_jj li.jia {
+	    border-left: none;
+	    cursor: pointer;
+	    color: #999;
+	    width: 30px;
+	    padding: 0;
+	}
+	#mealServiceAdd a.ty_but {
+	    width: 130px;
+	    height: 40px;
+	    line-height: 40px;
+	    text-align: center;
+	    display: block;
+	    font-size: 16px;
+	    color: #fff;
+	    border-radius: 3px;
+	    background: #169ed8;
+	}
+	#mealServiceAdd a.ty_but:hover {
+	    background: #1187ba;
+	}
+	#mealServiceAdd .fwmc_xxk li.sign_type_select_on {
+	    background: url(/static/sys/images/fwkk.jpg) no-repeat center;
+	    color: #169ed8;
+	    border: 1px solid #169ed8;
+	}
+	
+	
+	
+	
+	
+	
+	#libServiceAdd .zwfb_shop_table {
+		margin-top: 10px
+	}
+	#libServiceAdd tbody {
+	    display: table-row-group;
+	    vertical-align: middle;
+    	border-color: inherit;
+	}
+	#libServiceAdd .fwmc_xxk {
+	    overflow: hidden;
+	    margin-left: 20px;
+	}
+	#libServiceAdd .fwmc_xxk li {
+	    float: left;
+	    width: 150px;
+	    height: 52px;
+	    border: 1px solid #ddd;
+	    font-size: 18px;
+	    color: #666;
+	    margin-right: 30px;
+	    text-align: center;
+	    margin-bottom: 25px;
+	    overflow: hidden;
+	    cursor: pointer;
+	}
+	#libServiceAdd .fwmc_xxk li p {
+	    line-height: 18px;
+	    font-size: 12px;
+	    color: #999;
+	    margin-top: 5px;
+	}
+	#libServiceAdd .zwsl_num {
+	    margin-left: 20px;
+	    font-size: 16px;
+	    color: #333;
+	}
+	#libServiceAdd .zwsl_num span {
+	    color: #999;
+	    font-size: 12px;
+	    padding-left: 10px;
+	}
+	#libServiceAdd .nmb_jj {
+	    overflow: hidden;
+	    margin-left: 20px;
+	}
+	#libServiceAdd .nmb_jj li.jian {
+	    border-right: none;
+	    cursor: pointer;
+	    color: #999;
+	    width: 30px;
+	    padding: 0;
+	}
+	#libServiceAdd .nmb_jj li {
+	    float: left;
+	    text-align: center;
+	    line-height: 30px;
+	    border: 1px solid #ddd;
+	    font-size: 20px;
+	    padding: 0 8px;
+	}
+	#libServiceAdd .nmb_jj li .srkk {
+	    width: 30px;
+	    font-size: 16px;
+	    border: none;
+	    line-height: 30px;
+	    text-align: center;
+	    outline: 0;
+	    background: #FFF;
+	}
+	#libServiceAdd .nmb_jj li.jia {
+	    border-left: none;
+	    cursor: pointer;
+	    color: #999;
+	    width: 30px;
+	    padding: 0;
+	}
+	#libServiceAdd a.ty_but {
+	    width: 130px;
+	    height: 40px;
+	    line-height: 40px;
+	    text-align: center;
+	    display: block;
+	    font-size: 16px;
+	    color: #fff;
+	    border-radius: 3px;
+	    background: #169ed8;
+	}
+	#libServiceAdd a.ty_but:hover {
+	    background: #1187ba;
+	}
+	#libServiceAdd .fwmc_xxk li.sign_type_select_on {
+	    background: url(/static/sys/images/fwkk.jpg) no-repeat center;
+	    color: #169ed8;
+	    border: 1px solid #169ed8;
+	}
+	
+	
+	
+</style>
+<body style="min-width: 100%;">
+
+<div class="rightinfo">
+	<div class="formbody" id="libServiceAdd" >
+		<input type="hidden" id="id" th:value="${merchant.id}" >
+		<table border="0" cellspacing="0" cellpadding="0" class="zwfb_shop_table">
+		     <tbody>
+		      	<tr valign="top">
+			        <td align="right" width="70" style="line-height: 50px;font-weight: 700">加油包类型:</td>
+			        <td>
+			        	<ul class="fwmc_xxk">
+				            <li class="sign_type_select sign_type_select_on" data-type="1" data-lib_service="5">
+				              <p>加油包-月包</p>
+				              1个月<i>/5人</i>
+				           	</li>
+				           	<li class="sign_type_select"  data-type="2" data-lib_service="5">
+				              <p>加油包-数量包</p>
+				              5人<i>/1月</i>
+				           	</li>
+			          </ul>
+			        </td>
+		      	</tr>
+		      <tr>
+		        <td height="20"></td>
+		        <td></td>
+		      </tr>
+		      <tr>
+		        <td align="right" style="font-weight: 700">购买数量:</td>
+		        <td>
+		        	<ul class="nmb_jj">
+			            <li class="jian" id="reduce_num">-</li>
+			            <li>
+			              <input name="" id="service_num" type="text" value="1" class="srkk" style="width: 70px;">
+			            </li>
+			            <li class="jia" id="add_num">+</li>  
+		          </ul>
+		        </td>
+		      </tr>
+		      <tr>
+		        <td height="20"></td>
+		        <td></td>
+		      </tr>
+		      
+		     <tr valign="top">
+	  			<td align="right" width="70" style="line-height: 30px;font-weight: 700">激活日期:</td>
+	  	        <td>
+		        	<ul class="nmb_jj">
+			            <li>
+			              <input style="width: 130px;font-size: 15px;"  id="signTime" name="signTime"  onfocus="WdatePicker({dateFmt:'yyyy-MM-dd',autoPickDate:true})" th:value="${#dates.format(signTime, 'yyyy-MM-dd')}" autocomplete="off"  placeholder="激活日期" type="text"  class="srkk">
+			            </li>
+		          </ul>
+		        </td>
+		      </tr>
+		      <tr>
+		        <td height="20"></td>
+		        <td></td>
+		      </tr>
+		      
+		     <tr valign="top">
+	  			<td align="right" width="70" style="line-height: 30px;font-weight: 700">加油包单价:</td>
+	  	        <td>
+		        	<ul class="nmb_jj">
+			            <li>
+			              <input name="unitPrice" id="unitPrice" type="text" value="0" class="srkk" style="width: 115px;"><i> 元</i>
+			            </li>
+		          </ul>
+		        </td>
+		      </tr>
+		   	 <tr>
+		        <td height="20"></td>
+		        <td></td>
+		      </tr>
+		   	 <tr>
+		        <td height="20"></td>
+		        <td></td>
+		      </tr>
+		      <tr>
+		        <td></td>
+		        <td><a style="margin-left: 20px;" class="ty_but ml20" href="javascript:#" onclick="save();">购 买</a></td>
+		      </tr>
+		    </tbody>
+	   	</table>
+	</div>
+<br/>
+<br/>
+	
+<table class="tablelist">
+	<thead>
+	    <tr>
+	    	<th >订单号</th>
+	    	<th >加油包类型</th>
+	    	<th >购买数量</th>
+	    	<th >服务人数</th>
+	    	<th >激活日期 </th>
+	    	<th >服务包单价</th>
+	    	<th >购买时间</th>
+	    </tr> 
+	</thead>
+	<tbody>
+		 <tr th:each="item:${list}" >
+		 	<td th:text="${item.id}"></td>
+	    	<td  th:switch="${item.type}">
+			   <span th:case="1" >加油包月包</span>
+			   <span th:case="2" >加油包量包</span>
+			</td>
+	    	<td th:text="${item.num}"></td>
+	    	<td th:text="${item.libService}"></td>
+	    	<td th:text="${#dates.format(item.signTime, 'yyyy-MM-dd')}"> </td>
+	    	<td th:text="${item.unitPrice}"></td>
+	    	<td th:text="${item.createTime}"></td>
+	    </tr> 
+	   
+	</tbody>
+</table> 
+
+</body>
+<script type="text/javascript">
+	$(function () {
+		$(".sign_type_select").click(function (){
+			$(".sign_type_select").removeClass("sign_type_select_on");
+			$(this).addClass("sign_type_select_on");
+		});
+		
+		$("#reduce_num").click(function (){
+			if($("#service_num").val()<=1){
+				parent.layer.msg("购买数量不能小于1喔",{icon:11});
+				$("#service_num").val(1);
+				return;
+			}
+			$("#service_num").val(parseInt($("#service_num").val())-1);
+		});
+		
+		$("#add_num").click(function (){
+			$("#service_num").val(parseInt($("#service_num").val())+1);
+		});
+		
+	})
+	
+	function save(){
+		parent.layer.confirm("确定为此商户购买加油包?", {
+			icon: 4, btn: ['确定','关闭'],offset: '100px' //按钮
+		}, function(){
+				var id=$("#id").val();
+				var type=$(".sign_type_select_on").data("type");
+				var num=$("#service_num").val();
+				var signTime=$("#signTime").val();
+				var unitPrice=$("#unitPrice").val();
+				var libService=$(".sign_type_select_on").data("lib_service");
+				
+				var url="[[${sysUrl}]]/sys/fx/saveMerchantSign";
+				var params ={
+			        'id' : id,
+			        'type':type,
+			        'num':num,
+			        'signTime':signTime,
+			        'unitPrice':unitPrice,
+			        'libService':libService
+			    };
+				$.post(url,params,function(data){
+					if(data.meta.success){
+						parent.layer.msg("购买成功",{icon:1});
+						parent.location.reload();
+						parent.layer.close(parent.layer.getFrameIndex(window.name));
+					}else{
+						parent.layer.msg(data.meta.message,{icon:11});
+					}
+				});
+		});
+	}
+		
+</script>
+
+</html>

+ 19 - 27
src/main/resources/templates/sys/fx/merchantSignList.html

@@ -21,34 +21,38 @@
 <div class="place">
 	<span>位置:</span>
 	<ul class="placeul">
-		<li><a href="#">商户管理</a></li>
-		<li><a href="#">加油包明细</a></li>
+		<li><a href="#">加油包管理</a></li>
+		<li><a href="#">加油包订单明细列表</a></li>
 	</ul>
 </div>
 <div class="rightinfo">
 	<form id="seachform" th:action="@{/sys/fx/merchantSignList.html}" method="post">
 	<ul class="seachform">
 	    <li>
-			<label>所有商户</label>
+			<label>所有商户</label>
 			<select class="scinput select_width"  name="merchantId"   style="width: 150px;" >
 				<option value="">全部</option>
 				<option th:each="item:${poslist}"  th:selected="${search.get('merchantId') eq item.id ? true : false}" th:value="${item.id}">[[${item.unitName}]]</option>
 			</select>
 		</li>
 		  <li>
-			<label>套餐类型</label>
-			<select class="scinput select_width"  name="signType"   style="width: 150px;" >
+			<label>类型</label>
+			<select class="scinput select_width"  name="type"   style="width: 150px;" >
 				<option value="">全部</option>
-				<option value="4" th:selected="${search.get('signType')+'' eq '4' ? true : false}">加油包-月包</option>
-				<option value="5" th:selected="${search.get('signType')+'' eq '5' ? true : false}">加油包-量包</option>
+				<option value="1" th:selected="${search.get('type')+'' eq '1' ? true : false}">加油包-月包</option>
+				<option value="2" th:selected="${search.get('type')+'' eq '2' ? true : false}">加油包-量包</option>
 			</select>
 		</li>
 		<li>
+		 <label>订单号:</label>
+		  <input style="width: 200px;" name="orderId" type="text" class="scinput" th:value="${search.get('orderId')}"/>
+	    </li>
+		
+		<li>
 			<input type="button" class="scbtn" value="查询" />
 		</li>
 	</ul>
 	</form>
-	
 	<ul class="seachform">
 		<li>
 			<input type="button" id="button" class="scbtn" value="导出明细" />
@@ -58,39 +62,27 @@
 	<table class="tablelist">
 		<thead>
 		    <tr>
-		        <th>商户</th>
+		        <th>订单号</th>
 		        <th>商户名称</th>
 		    	<th>加油包类型</th>
-		    	<th>加油包数量</th>
-		        <th>套餐总人数</th>
+		        <th>服务人数</th>
 		        <th>开始时间</th>
 		        <th>结束时间</th>
-		        <th>是否服务</th>
-		        <th>添加时间</th> 
-		        <th>备注</th> 
+		        <th>购买时间</th> 
 		    </tr>
 		</thead>
 		<tbody>
 			<tr th:each="item:${list}" >
-					<td th:text="${item.pos_code}"></td>
+					<td th:text="${item.order_id}"></td>
 					<td th:text="${item.unit_name}"></td>
-					<td  th:switch="${item.sign_type}">
-					   <span th:case="4" style="color:red">加油包-月包</span>
-					   <span th:case="5" style="color:red">加油包-量包</span>
+					<td  th:switch="${item.type}">
+					   <span th:case="1" style="color:red">加油包-月包</span>
+					   <span th:case="2" style="color:red">加油包-量包</span>
 					</td>
-					<td th:text="${item.num}"></td>
 					<td th:text="${item.lib_service}"></td>		
 					<td th:text="${#calendars.format(item.sign_time,'yyyy-MM-dd')}" ></td>  
 					<td th:text="${#calendars.format(item.end_sign_time,'yyyy-MM-dd')}" ></td>  
-					<td  th:switch="${item.status}">
-					   <span th:case="0" style="color:red">服务中</span>
-					   <span th:case="1" >已结束</span>
-					   <span th:case="2" >未激活</span>
-					</td>
 					<td th:text="${#calendars.format(item.create_time,'yyyy-MM-dd HH:mm:ss')}" ></td>  
-					<td th:text="${item.remarks}" ></td>  
-				
-					
 			</tr>
 		</tbody>
 	</table>

+ 129 - 0
src/main/resources/templates/sys/fx/merchantSignOrderList.html

@@ -0,0 +1,129 @@
+<html xmlns:th="http://www.thymeleaf.org">
+<head>
+<title>爱加</title>
+<script th:include="sys/common/metaCSS" th:remove="tag"></script> 
+<script th:include="sys/common/metaJS" th:remove="tag"></script> 
+<script src="sys/js/My97DatePicker/WdatePicker.js" th:src="@{/static/sys/js/My97DatePicker/WdatePicker.js}"></script>
+</head>
+<style>
+	.tablelink{margin-right:10px;}
+	.stylecss{
+	      color: red;
+	}
+	.select_width{
+	     width: 220px;
+	}
+	.date_width{
+	     width: 150px;
+	}
+</style>
+<body>
+<div class="place">
+	<span>位置:</span>
+	<ul class="placeul">
+		<li><a href="#">加油包管理</a></li>
+		<li><a href="#">加油包订单列表</a></li>
+	</ul>
+</div>
+<div class="rightinfo">
+	<form id="seachform" th:action="@{/sys/fx/merchantSignOrderList.html}" method="post">
+	<ul class="seachform">
+	    <li>
+			<label>所有商户:</label>
+			<select class="scinput select_width"  name="merchantId"   style="width: 150px;" >
+				<option value="">全部</option>
+				<option th:each="item:${poslist}"  th:selected="${search.get('merchantId') eq item.id ? true : false}" th:value="${item.id}">[[${item.unitName}]]</option>
+			</select>
+		</li>
+		  <li>
+			<label>类型:</label>
+			<select class="scinput select_width"  name="type"   style="width: 100px;" >
+				<option value="">全部</option>
+				<option value="1" th:selected="${search.get('type')+'' eq '1' ? true : false}">加油包-月包</option>
+				<option value="2" th:selected="${search.get('type')+'' eq '2' ? true : false}">加油包-量包</option>
+			</select>
+		</li>
+		
+		 <li>
+		 <label>购买开始日期:</label>
+		  <input style="width: 150px;" name="signTime" type="text" class="scinput"  onfocus="WdatePicker({dateFmt:'yyyy-MM-dd',autoPickDate:true})" th:value="${search.get('signTime')}" autocomplete="off"  placeholder="开始购买日期" />
+	    </li>
+	    
+	    <li>
+		 <label>购买结束日期:</label>
+		  <input style="width: 150px;" name="endSignTime" type="text" class="scinput"  onfocus="WdatePicker({dateFmt:'yyyy-MM-dd',autoPickDate:true})" th:value="${search.get('endSignTime')}" autocomplete="off"  placeholder="结束购买日期" />
+	    </li>
+		
+		
+		<li>
+			<input type="button" class="scbtn" value="查询" />
+		</li>
+	</ul>
+	</form>
+	
+	<ul class="seachform">
+		<li>
+			<input type="button" id="button" class="scbtn" value="导出明细" />
+		</li>
+	</ul>
+	
+	<table class="tablelist">
+		<thead>
+		    <tr>
+		    	<th>订单号</th>
+		        <th>商户名称</th>
+		    	<th>加油包类型</th>
+		    	<th>购买数量</th>
+		    	<th>加油包单价</th>
+		    	<th>购买总价</th>
+		        <th>服务总人数</th>
+		        <th>激活时间</th>
+		        <th>购买时间</th> 
+		        <th>操作</th> 
+		    </tr>
+		</thead>
+		<tbody>
+			<tr th:each="item:${list}" >
+					<td th:text="${item.id}"></td>
+					<td th:text="${item.unit_name}"></td>
+					<td  th:switch="${item.type}">
+					   <span th:case="1">加油包-月包</span>
+					   <span th:case="2">加油包-量包</span>
+					</td>
+					<td th:text="${item.num}"></td>
+					<td th:text="${item.unit_price}"></td>
+					<td th:text="${item.price}"></td>
+					<td th:text="${item.lib_service}"></td>		
+					<td th:text="${#calendars.format(item.sign_time,'yyyy-MM-dd')}" ></td>  
+					<td th:text="${#calendars.format(item.create_time,'yyyy-MM-dd HH:mm:ss')}" ></td>  
+					<td >
+						<a th:href="@{/sys/fx/merchantSignList.html(orderId=${item.id})}"  class="tablelink">明细列表</a>
+					</td>  
+				
+					
+			</tr>
+		</tbody>
+	</table>
+	
+
+	<!-- 分页 -->
+	<div class="pagin">
+    	<div class="message">共<i class="blue">[[${page.rowCnt}]]</i>条记录,当前显示第&nbsp;<i class="blue">[[${page.pageNo }]]&nbsp;</i>页</div>
+    	<div th:utext='${listNavigatHtml}' th:remove="tag" ></div>
+   	</div>
+</div>
+
+</body>
+<script type="text/javascript">
+
+</script>
+
+<script type="text/javascript">
+$("#button").on('click',function(){
+	document.getElementById("seachform").action = "[[${sysUrl}]]/sys/fx/exportMerchantSignOrderList";
+	$("#seachform").submit();
+	document.getElementById("seachform").action = "[[${sysUrl}]]/sys/fx/merchantSignOrderList.html";
+});
+</script>
+
+</html>

+ 115 - 0
src/main/resources/templates/sys/fx/merchantSignStatusList.html

@@ -0,0 +1,115 @@
+<html xmlns:th="http://www.thymeleaf.org">
+<head>
+<title>爱加</title>
+<script th:include="sys/common/metaCSS" th:remove="tag"></script> 
+<script th:include="sys/common/metaJS" th:remove="tag"></script> 
+<script src="sys/js/My97DatePicker/WdatePicker.js" th:src="@{/static/sys/js/My97DatePicker/WdatePicker.js}"></script>
+</head>
+<style>
+	.tablelink{margin-right:10px;}
+	.stylecss{
+	      color: red;
+	}
+	.select_width{
+	     width: 220px;
+	}
+	.date_width{
+	     width: 150px;
+	}
+</style>
+<body>
+<div class="place">
+	<span>位置:</span>
+	<ul class="placeul">
+		<li><a href="#">加油包管理</a></li>
+		<li><a href="#">加油包商户状态列表</a></li>
+	</ul>
+</div>
+<div class="rightinfo">
+	<form id="seachform" th:action="@{/sys/fx/merchantMealStatusList.html}" method="post">
+	<ul class="seachform">
+		<li>
+			<label>所有商户:</label>
+			<select class="scinput select_width"  name="merchantId"   style="width: 150px;" >
+				<option value="">全部</option>
+				<option th:each="item:${poslist}"  th:selected="${search.get('merchantId') eq item.id ? true : false}" th:value="${item.id}">[[${item.unitName}]]</option>
+			</select>
+		</li>
+		 <li>
+			<label>服务包类型:</label>
+			<select class="scinput select_width"  name="type"   style="width: 150px;" >
+				<option value="">全部</option>
+				<option value="1" th:selected="${search.get('type')+'' eq '1' ? true : false}">加油包-月包</option>
+				<option value="2" th:selected="${search.get('type')+'' eq '2' ? true : false}">加油包-量包</option>
+			</select>
+		</li>
+		
+		 <li>
+		 <label>服务开始日期:</label>
+		  <input style="width: 150px;" name="signTime" type="text" class="scinput"  onfocus="WdatePicker({dateFmt:'yyyy-MM-dd',autoPickDate:true})" th:value="${search.get('signTime')}" autocomplete="off"  placeholder="开始日期" />
+	    </li>
+	    
+	    <li>
+		 <label>服务结束日期:</label>
+		  <input style="width: 150px;" name="endSignTime" type="text" class="scinput"  onfocus="WdatePicker({dateFmt:'yyyy-MM-dd',autoPickDate:true})" th:value="${search.get('endSignTime')}" autocomplete="off"  placeholder="结束日期" />
+	    </li>
+		<li>
+			<input type="button" class="scbtn" value="查询" />
+		</li>
+	</ul>
+	</form>
+	
+	<table class="tablelist">
+		<thead>
+		    <tr>
+		    	<th>商户账号</th>
+		        <th>商户名称</th>
+		    	<th>加油包类型</th>
+		    	<th>服务人数</th>
+		    	<th>人数单价</th>
+		        <th>总价</th>
+		        <th>服务开始时间</th> 
+		        <th>服务结束时间</th> 
+		    </tr>
+		</thead>
+		<tbody>
+			<tr th:each="item:${list}" >
+					<td th:text="${item.pos_code}"></td>
+					<td th:text="${item.unit_name}"></td>
+					<td  th:switch="${item.type}">
+					   <span th:case="1" >加油包-月包</span>
+					   <span th:case="2" >加油包-量包</span>
+					</td>
+					<td th:text="${item.lib_service}"></td>
+					
+					<td th:text="${item.pr_1}"></td>
+					<td th:text="${item.pr_2}"></td>
+					
+					<td th:text="${#calendars.format(item.sign_time,'yyyy-MM-dd')}" ></td>  
+					<td th:text="${#calendars.format(item.end_sign_time,'yyyy-MM-dd')}" ></td>  
+			</tr>
+		</tbody>
+	</table>
+	
+
+	<!-- 分页 -->
+	<div class="pagin">
+    	<div class="message">共<i class="blue">[[${page.rowCnt}]]</i>条记录,当前显示第&nbsp;<i class="blue">[[${page.pageNo }]]&nbsp;</i>页</div>
+    	<div th:utext='${listNavigatHtml}' th:remove="tag" ></div>
+   	</div>
+</div>
+
+</body>
+<script type="text/javascript">
+
+</script>
+
+<script type="text/javascript">
+$("#button").on('click',function(){
+	document.getElementById("seachform").action = "[[${sysUrl}]]/sys/fx/exportMerchantSignList";
+	$("#seachform").submit();
+	document.getElementById("seachform").action = "[[${sysUrl}]]/sys/fx/merchantSignList.html";
+});
+</script>
+
+</html>

+ 3 - 0
src/main/resources/templates/sys/lib/libJoinAdd.html

@@ -113,6 +113,7 @@
 						<option th:selected="${ ws.libtype eq 2 }" value="2" >共享图书馆A</option>
 						<option th:selected="${ ws.libtype eq 3 }" value="3" >共享图书馆B</option>
 						<option th:selected="${ ws.libtype eq 4 }" value="4" >共享图书馆C</option>
+						<option th:selected="${ ws.libtype eq 5 }" value="5" >学校类型</option>
 					</select>
 				</div>
 			</li>
@@ -181,6 +182,8 @@ function roleFrom(){
 					},1000);
 				}else{
 					layer.msg(data.meta.message,{icon:11});
+					
+					
 				}
 		}