diff --git a/src/.DS_Store b/src/.DS_Store
new file mode 100644
index 0000000000000000000000000000000000000000..54b39e62de9e3a8f825e1a67ded2106f7468d9b3
Binary files /dev/null and b/src/.DS_Store differ
diff --git a/src/main/.DS_Store b/src/main/.DS_Store
new file mode 100644
index 0000000000000000000000000000000000000000..110d569ef8f1d911208d2dfd3c8f85910d7d595c
Binary files /dev/null and b/src/main/.DS_Store differ
diff --git a/src/main/java/com/tianpengtech/admin/AdminCommonController.java b/src/main/java/com/tianpengtech/admin/AdminCommonController.java
index 7533eab6c11fb30361d2422faf72f8760e0115c1..92243ad2183e1e3715d05e9209a49f61c844e9f8 100644
--- a/src/main/java/com/tianpengtech/admin/AdminCommonController.java
+++ b/src/main/java/com/tianpengtech/admin/AdminCommonController.java
@@ -66,8 +66,9 @@ public class AdminCommonController extends Controller {
     
     public void upload() throws Exception {
         UploadFile upfile=getFile();
+        String category = getPara("category","pc-");
         try {
-            String upload = QiNiuUtil.upload(new FileInputStream(upfile.getFile()));
+            String upload = QiNiuUtil.upload(new FileInputStream(upfile.getFile()),category);
             upfile.getFile().delete();
             renderText(upload);
         } catch (Exception e) {
diff --git a/src/main/java/com/tianpengtech/admin/AdminRoutes.java b/src/main/java/com/tianpengtech/admin/AdminRoutes.java
index eebf97f92bfc6519731affcb8fe5be0f1536fc66..60857426358c7dbb54bf2d7906f5e694a0974175 100644
--- a/src/main/java/com/tianpengtech/admin/AdminRoutes.java
+++ b/src/main/java/com/tianpengtech/admin/AdminRoutes.java
@@ -17,6 +17,7 @@ import com.tianpengtech.admin.moneylog.MoneyLogAdminController;
 import com.tianpengtech.admin.notice.SMSNoticeController;
 import com.tianpengtech.admin.opertion.OpertionAdminController;
 import com.tianpengtech.admin.permission.PermissionAdminController;
+import com.tianpengtech.admin.platformincome.PlatFormIncomeAdminController;
 import com.tianpengtech.admin.role.RoleAdminController;
 import com.tianpengtech.admin.task.TaskAdminController;
 import com.tianpengtech.admin.taskscreenshot.TaskScreenShotAdminController;
@@ -58,6 +59,7 @@ public class AdminRoutes extends Routes{
         add("/admin/fairsalary",FairSalaryAdminController.class, "/admin/fairsalary");
         add("/admin/moneylog", MoneyLogAdminController.class, "/admin/moneylog");
         add("/admin/websitead", WebSiteAdAdminController.class, "/admin/websitead");
+        add("/admin/platformincome", PlatFormIncomeAdminController.class, "/admin/platformincome");
         add("/admin/notice", SMSNoticeController.class, "/admin/notice");
 	}
 }
diff --git a/src/main/java/com/tianpengtech/admin/fair/FairAdminServiceImpl.java b/src/main/java/com/tianpengtech/admin/fair/FairAdminServiceImpl.java
index cff7ef36bf0879c86e95404a00e171957387a9ae..5a999e19bc6e5a7a989d501913ed33edb6f2b0c2 100644
--- a/src/main/java/com/tianpengtech/admin/fair/FairAdminServiceImpl.java
+++ b/src/main/java/com/tianpengtech/admin/fair/FairAdminServiceImpl.java
@@ -34,22 +34,22 @@ public class FairAdminServiceImpl extends AbstractAdmin implements IAdminOpt{
 	public void beforeAdd(Model<?> model) throws ValidateException {
 
 		
-		Fair fair = new FairService().findByMobile(model.getStr(Fair.MOIBILE));
-		Validator validator = new Validator();
-		validator.addRule(new StringLengthBetween(model.getStr(Fair.NICK_NAME), "昵称只能是1-15个字符", 1, 15));
-//		validator.addRule(new StringLengthBetween(model.getStr(Fair.ID_CARD), "请输入正确的身份证号码", 1,18));
-		validator.addRule(new StringMustBeMobile(model.getStr(Fair.MOIBILE), "请输入正确的手机号码格式"));
-		validator.addRule(new MustBeNull(fair, "当前手机号已经存在"));
-//		validator.addRule(new NumbericMustBetween(model.getInt(Fair.AGE), "请输入正确的年龄范围(1-99)", 1, 99));
-//		validator.addRule(new StringMustBeRequired(model.getStr(Fair.HEIGHT), "请输入身高"));
-		validator.addRule(new StringMustBeRequired(model.getStr(Fair.PROVINCE), "请输入所在地区"));
-		validator.addRule(new StringMustBeRequired(model.getStr(Fair.CITY), "请输入所在市区"));
-		validator.addRule(new StringMustBeRequired(model.getStr(Fair.CHANNEL),"请输入推广渠道"));
-		validator.addRule(new StringMustBeRequired(model.getStr(Fair.PLATFORM), "请输入平台"));
-		validator.excute();
-		
-		model.set(Fair.STATUS,Fair.STATUS_SUCCESS);
-		PushKit.pushSystemMessageNow("管理员【通过】"+model.getStr(Fair.NICK_NAME)+"的认证请求");
+//		Fair fair = new FairService().findByMobile(model.getStr(Fair.MOIBILE));
+//		Validator validator = new Validator();
+//		validator.addRule(new StringLengthBetween(model.getStr(Fair.NICK_NAME), "昵称只能是1-15个字符", 1, 15));
+////		validator.addRule(new StringLengthBetween(model.getStr(Fair.ID_CARD), "请输入正确的身份证号码", 1,18));
+//		validator.addRule(new StringMustBeMobile(model.getStr(Fair.MOIBILE), "请输入正确的手机号码格式"));
+//		validator.addRule(new MustBeNull(fair, "当前手机号已经存在"));
+////		validator.addRule(new NumbericMustBetween(model.getInt(Fair.AGE), "请输入正确的年龄范围(1-99)", 1, 99));
+////		validator.addRule(new StringMustBeRequired(model.getStr(Fair.HEIGHT), "请输入身高"));
+//		validator.addRule(new StringMustBeRequired(model.getStr(Fair.PROVINCE), "请输入所在地区"));
+//		validator.addRule(new StringMustBeRequired(model.getStr(Fair.CITY), "请输入所在市区"));
+//		validator.addRule(new StringMustBeRequired(model.getStr(Fair.CHANNEL),"请输入推广渠道"));
+//		validator.addRule(new StringMustBeRequired(model.getStr(Fair.PLATFORM), "请输入平台"));
+//		validator.excute();
+//		
+//		model.set(Fair.STATUS,Fair.STATUS_SUCCESS);
+//		PushKit.pushSystemMessageNow("管理员【通过】"+model.getStr(Fair.NICK_NAME)+"的认证请求");
 	}
 
 	@Override
@@ -60,16 +60,16 @@ public class FairAdminServiceImpl extends AbstractAdmin implements IAdminOpt{
 	@Override
 	public void beforeUpdate(Model<?> model) throws ValidateException {
 		
-		Validator validator = new Validator();
-		validator.addRule(new StringLengthBetween(model.getStr(Fair.NICK_NAME), "昵称只能是1-15个字符", 1, 15));
-//		validator.addRule(new StringMustBeMobile(model.getStr(Fair.MOIBILE), "请输入正确的手机号码格式"));
-//		validator.addRule(new NumbericMustBetween(model.getInt(Fair.AGE), "请输入正确的年龄范围(1-99)", 1, 99));
-//		validator.addRule(new StringMustBeRequired(model.getStr(Fair.HEIGHT), "请输入身高"));
-		validator.addRule(new StringMustBeRequired(model.getStr(Fair.PROVINCE), "请输入所在地区"));
-		validator.addRule(new StringMustBeRequired(model.getStr(Fair.CITY), "请输入所在市区"));
-		validator.addRule(new StringMustBeRequired(model.getStr(Fair.CHANNEL),"请输入推广渠道"));
-		validator.addRule(new StringMustBeRequired(model.getStr(Fair.PLATFORM), "请输入平台"));
-		validator.excute();
+//		Validator validator = new Validator();
+//		validator.addRule(new StringLengthBetween(model.getStr(Fair.NICK_NAME), "昵称只能是1-15个字符", 1, 15));
+////		validator.addRule(new StringMustBeMobile(model.getStr(Fair.MOIBILE), "请输入正确的手机号码格式"));
+////		validator.addRule(new NumbericMustBetween(model.getInt(Fair.AGE), "请输入正确的年龄范围(1-99)", 1, 99));
+////		validator.addRule(new StringMustBeRequired(model.getStr(Fair.HEIGHT), "请输入身高"));
+//		validator.addRule(new StringMustBeRequired(model.getStr(Fair.PROVINCE), "请输入所在地区"));
+//		validator.addRule(new StringMustBeRequired(model.getStr(Fair.CITY), "请输入所在市区"));
+//		validator.addRule(new StringMustBeRequired(model.getStr(Fair.CHANNEL),"请输入推广渠道"));
+//		validator.addRule(new StringMustBeRequired(model.getStr(Fair.PLATFORM), "请输入平台"));
+//		validator.excute();
 	}
 
 	@Override
diff --git a/src/main/java/com/tianpengtech/admin/fairauth/FairAuthAdminController.java b/src/main/java/com/tianpengtech/admin/fairauth/FairAuthAdminController.java
index 0ee78d68a606e2c5303c714ef281601e0a6663f6..706b7ec6f4f517878dfbbe7facea9725c1551873 100644
--- a/src/main/java/com/tianpengtech/admin/fairauth/FairAuthAdminController.java
+++ b/src/main/java/com/tianpengtech/admin/fairauth/FairAuthAdminController.java
@@ -2,6 +2,7 @@ package com.tianpengtech.admin.fairauth;
 import com.jfinal.aop.Before;
 import com.jfinal.kit.Kv;
 import com.jfinal.plugin.activerecord.Model;
+import com.jfinal.plugin.activerecord.tx.Tx;
 import com.tianpengtech.admin.AbstractAdminController;
 import com.tianpengtech.admin.IAdminOpt;
 import com.tianpengtech.admin.InitInterceptor;
@@ -73,6 +74,8 @@ public class FairAuthAdminController extends AbstractAdminController{
 	/**
 	 * 审核通过
 	 */
+	
+	@Before(Tx.class)
 	public void  pass(){
 		int id = getParaToInt(FairAuth.ID,0);
 		int price = getParaToInt("price",0);
@@ -99,6 +102,7 @@ public class FairAuthAdminController extends AbstractAdminController{
 	/**
 	 * 审核不通过
 	 */
+	@Before(Tx.class)
 	public void  unpass(){
 		FairAuth fairauth = getModel(FairAuth.class);
 		String content = getPara(Opertion.CONTENT);
diff --git a/src/main/java/com/tianpengtech/admin/fairauth/FairAuthAdminServiceImpl.java b/src/main/java/com/tianpengtech/admin/fairauth/FairAuthAdminServiceImpl.java
index b91c6ed1609fe40895c27012f8cfa56f54de9c49..2866e40769542c9d76751d56cc073c372e168066 100644
--- a/src/main/java/com/tianpengtech/admin/fairauth/FairAuthAdminServiceImpl.java
+++ b/src/main/java/com/tianpengtech/admin/fairauth/FairAuthAdminServiceImpl.java
@@ -104,6 +104,7 @@ public class FairAuthAdminServiceImpl extends AbstractAdmin implements IAdminOpt
 			.set(FairMessage.WH_ID, temp.getInt(FairAuth.WH_ID)).save();
 			result = "【通过】"+temp.getStr(FairAuth.NICK_NAME)+"的"+temp.type()+"的认证请求";
 			Jpush.pushCustomContentToSomeOne(fair.getStr(Fair.MOIBILE), result,Jpush.PUSH_MSG);
+			Jpush.pushMessageInfoToSomeOne(fair.getStr(Fair.MOIBILE), result,Jpush.PUSH_MSG);
 			OperationDao.ME.recordLog(id, Opertion.OPT_FAIR_AUTH_LOG,userId,result);
 			
 			//更新粉丝数量
@@ -119,6 +120,7 @@ public class FairAuthAdminServiceImpl extends AbstractAdmin implements IAdminOpt
 			new FairMessage().set(FairMessage.CONTENT, "管理员"+result)
 			.set(FairMessage.WH_ID, temp.getInt(FairAuth.WH_ID)).save();
 			Jpush.pushCustomContentToSomeOne(fair.getStr(Fair.MOIBILE), result,Jpush.PUSH_MSG);
+			Jpush.pushMessageInfoToSomeOne(fair.getStr(Fair.MOIBILE), result,Jpush.PUSH_MSG);
 			result = "【拒绝】"+temp.getStr(FairAuth.NICK_NAME)+"的"+temp.type()+"的认证请求,原因是:"+content;
 			OperationDao.ME.recordLog(id, Opertion.OPT_FAIR_AUTH_LOG,userId,result);
 			
diff --git a/src/main/java/com/tianpengtech/admin/fairbankno/FairBankNoAdminController.java b/src/main/java/com/tianpengtech/admin/fairbankno/FairBankNoAdminController.java
index ce6897fd76903a6712f457092fc514571808271e..05e34983ccd0bfc508b1ea03f46e0f92000675f3 100644
--- a/src/main/java/com/tianpengtech/admin/fairbankno/FairBankNoAdminController.java
+++ b/src/main/java/com/tianpengtech/admin/fairbankno/FairBankNoAdminController.java
@@ -34,6 +34,9 @@ public class FairBankNoAdminController extends AbstractAdminController{
 	@Override
 	public void beforeQueryById(Model<?> model, int id) {
 
+		FairBankNo bankNo = FairBankNo.dao.findById(id);
+		long wh_id = bankNo.getLong(FairBankNo.WH_ID);
+		setAttr("fair", Fair.dao.findById(wh_id));
 	}
 
 	@Override
diff --git a/src/main/java/com/tianpengtech/admin/fairwithdraw/FairWithdrawAdminController.java b/src/main/java/com/tianpengtech/admin/fairwithdraw/FairWithdrawAdminController.java
index 8d640c03ca51d431ab6a7bad4721503d32dce4fd..1ff45ee698da8f8ea83fd19a61ba44d2c09cc206 100644
--- a/src/main/java/com/tianpengtech/admin/fairwithdraw/FairWithdrawAdminController.java
+++ b/src/main/java/com/tianpengtech/admin/fairwithdraw/FairWithdrawAdminController.java
@@ -2,6 +2,7 @@ package com.tianpengtech.admin.fairwithdraw;
 import com.jfinal.aop.Before;
 import com.jfinal.kit.Kv;
 import com.jfinal.plugin.activerecord.Model;
+import com.jfinal.plugin.activerecord.tx.Tx;
 import com.jfinal.plugin.activerecord.Record;
 import com.tianpengtech.admin.AbstractAdminController;
 import com.tianpengtech.admin.IAdminOpt;
@@ -65,14 +66,17 @@ public class FairWithdrawAdminController extends AbstractAdminController{
 			fairWithdraw.put("real_name",bankNo.getStr(FairBankNo.REAL_NAME));
 			//余额
 			fairWithdraw.put("balance",fair.getDouble(fair.MONEY));
+			fairWithdraw.put("avaliable_fee",fair.getDouble(Fair.AVALIABLE_FEE));
 			fairWithdraw.set(FairWithdraw.WH_ID, fair.getStr(Fair.NICK_NAME));
 			fairWithdraw.set(FairWithdraw.STATUS, fairWithdraw.status());
+			fairWithdraw.put("platform_fee", fairWithdraw.platFormFee());
 		}
 	}
 	
 	/**
 	 * 审核不通过
 	 */
+	@Before(Tx.class)
 	public void  unpass(){
 		FairWithdraw fairWithdraw = getModel(FairWithdraw.class);
 		String content = getPara(Opertion.CONTENT);
@@ -89,6 +93,7 @@ public class FairWithdrawAdminController extends AbstractAdminController{
 	/**
 	 * 审核通过
 	 */
+	@Before(Tx.class)
 	public void  pass(){
 		int id = getParaToInt(FairWithdraw.ID,0);
 		try {
diff --git a/src/main/java/com/tianpengtech/admin/fairwithdraw/FairWithdrawAdminServiceImpl.java b/src/main/java/com/tianpengtech/admin/fairwithdraw/FairWithdrawAdminServiceImpl.java
index e8f4a08307d371057365e6aeb86e8b54a5395222..a0ad080e25f385608727d4c0a4ee82339e747479 100644
--- a/src/main/java/com/tianpengtech/admin/fairwithdraw/FairWithdrawAdminServiceImpl.java
+++ b/src/main/java/com/tianpengtech/admin/fairwithdraw/FairWithdrawAdminServiceImpl.java
@@ -15,6 +15,7 @@ import com.tianpengtech.common.model.fairmessage.FairMessage;
 import com.tianpengtech.common.model.fairwithdraw.FairWithdraw;
 import com.tianpengtech.common.model.moneylog.MoneyLog;
 import com.tianpengtech.common.model.opertion.Opertion;
+import com.tianpengtech.common.model.platformincome.PlatFormIncome;
 import com.tianpengtech.common.search.EqualCondition;
 import com.tianpengtech.common.search.QueryConstructor;
 import com.tianpengtech.common.util.XxxUtil;
@@ -86,16 +87,43 @@ public class FairWithdrawAdminServiceImpl extends AbstractAdmin implements IAdmi
 		Fair fair = Fair.dao.findById(temp.getInt(FairWithdraw.WH_ID));
 		Account account = XxxUtil.readSessionInfo();
 		long userId = account.getLong(Account.ID);
+		
+		
+		
 		if(status==FairWithdraw.STATUS_SUCCESS ){
 			String result = "【通过】你的提现申请请求";
 			new FairMessage().set(FairMessage.CONTENT, "管理员"+result)
 			.set(FairMessage.WH_ID, temp.getInt(FairAuth.WH_ID)).save();
 			result = "【通过】"+fair.getStr(Fair.NICK_NAME)+"提现的认证请求";
 			OperationDao.ME.recordLog(id, Opertion.OPT_FAIR_GET_CASH,userId,result);
-			Jpush.pushCustomContentToSomeOne(fair.getStr(Fair.MOIBILE), result,Jpush.PUSH_MSG);
 			String sql = "select * from "+MoneyLog.dao.tableName()+" where operid=? limit 1";
 			MoneyLog moneyLog = MoneyLog.dao.findFirst(sql,id);
+			double money = moneyLog.getDouble(MoneyLog.MONEY);
+			double actualFee= money-temp.platFormFee();
+			moneyLog.set(MoneyLog.MONEY,(int)actualFee);
+			moneyLog.set(MoneyLog.DESCRIPTION,"用户提现:金额¥"+money+",实际收益:¥"+(int)actualFee);
 			moneyLog.set(MoneyLog.DELETETAG,MoneyLog.STATUS_SUCCESS).update();
+			
+			//更新网红余额数据信息
+			double leftMomey = fair.getDouble(Fair.MONEY);
+			double currentMoney = leftMomey-money;
+			
+			if(currentMoney<0){
+				throw new ValidateException("当前网红账户提现金额已经超出账户余额");
+			}
+			fair.set(Fair.MONEY,currentMoney);
+			fair.set(Fair.AVALIABLE_FEE,currentMoney);
+			fair.update();
+			
+			PlatFormIncome formIncome = new PlatFormIncome();
+			formIncome.set(PlatFormIncome.WH_ID, temp.getInt(FairAuth.WH_ID));
+			formIncome.set(PlatFormIncome.MONEY, temp.platFormFee());
+			formIncome.set(PlatFormIncome.WITH_DRAW_MONEY, money);
+			formIncome.set(PlatFormIncome.STATUS,PlatFormIncome.STATUS_OK);
+			formIncome.save();
+			
+			Jpush.pushCustomContentToSomeOne(fair.getStr(Fair.MOIBILE), result, Jpush.PUSH_MSG);
+			Jpush.pushMessageInfoToSomeOne(fair.getStr(Fair.MOIBILE), result, Jpush.PUSH_MSG);
 		}
 		if(status==FairWithdraw.STATUS_ERROR){
 			String result = "【拒绝】你的提现申请请求,原因是:"+content;
@@ -103,13 +131,27 @@ public class FairWithdrawAdminServiceImpl extends AbstractAdmin implements IAdmi
 			.set(FairMessage.WH_ID, temp.getInt(FairAuth.WH_ID)).save();
 			result = "【拒绝】"+fair.getStr(Fair.NICK_NAME)+"提现申请请求,原因是:"+content;
 			OperationDao.ME.recordLog(id, Opertion.OPT_FAIR_GET_CASH,userId,result);
-			Jpush.pushCustomContentToSomeOne(fair.getStr(Fair.MOIBILE), result,Jpush.PUSH_MSG);
 			String sql = "select * from "+MoneyLog.dao.tableName()+" where operid=? limit 1";
 			MoneyLog moneyLog = MoneyLog.dao.findFirst(sql,id);
 			moneyLog.set(MoneyLog.DELETETAG,MoneyLog.STATUS_ERROR).update();
 			//将提现的金额重新填入账户余额中
-			double currentMoney = temp.getDouble(FairWithdraw.MONEY)+fair.getDouble(Fair.MONEY);
-			fair.set(Fair.MONEY, currentMoney).update();
+//			double currentMoney = temp.getDouble(FairWithdraw.MONEY)+fair.getDouble(Fair.MONEY);
+//			fair.set(Fair.MONEY, currentMoney).update();
+			
+//			double money = moneyLog.getDouble(MoneyLog.MONEY);
+//			//更新网红余额数据信息
+//			double leftMomey = fair.getDouble(Fair.MONEY);
+//			double currentMoney = leftMomey-money;
+//			
+//			if(currentMoney<0){
+//				throw new ValidateException("当前网红账户提现金额已经超出账户余额");
+//			}
+//			fair.set(Fair.MONEY,currentMoney);
+//			fair.set(Fair.AVALIABLE_FEE,currentMoney);
+//			fair.update();
+			
+			Jpush.pushCustomContentToSomeOne(fair.getStr(Fair.MOIBILE), result, Jpush.PUSH_MSG);
+			Jpush.pushMessageInfoToSomeOne(fair.getStr(Fair.MOIBILE), result, Jpush.PUSH_MSG);
 		}
 	}
 
diff --git a/src/main/java/com/tianpengtech/admin/platformincome/PlatFormIncomeAdminController.java b/src/main/java/com/tianpengtech/admin/platformincome/PlatFormIncomeAdminController.java
new file mode 100644
index 0000000000000000000000000000000000000000..bf6a101db3fd5ba89386eb22efff547ca3a912b3
--- /dev/null
+++ b/src/main/java/com/tianpengtech/admin/platformincome/PlatFormIncomeAdminController.java
@@ -0,0 +1,60 @@
+package com.tianpengtech.admin.platformincome;
+
+import com.jfinal.aop.Before;
+import com.jfinal.plugin.activerecord.Model;
+import com.tianpengtech.admin.AbstractAdminController;
+import com.tianpengtech.admin.InitInterceptor;
+import com.tianpengtech.common.exception.ValidateException;
+import com.tianpengtech.common.model.fair.Fair;
+import com.tianpengtech.common.model.platformincome.PlatFormIncome;
+
+/**
+* 路由配置地址:add("/admin/platformincome", PlatFormIncomeAdminController.class, "/admin/platformincome");
+* 数据库映射地址:arp.addMapping(PlatFormIncome.dao.tableName(),PlatFormIncome.class);
+*/
+@Before(InitInterceptor.class)
+public class PlatFormIncomeAdminController extends AbstractAdminController{
+
+	@Override
+	protected void config() {
+		this.clazz=PlatFormIncome.class;
+		this.service=new PlatFormIncomeAdminServiceImpl();
+	}
+
+	@Override
+	public void beforeAdd() {
+
+	}
+
+	@Override
+	public void beforeAdd(Model< ? > model) throws ValidateException {
+
+	}
+
+	@Override
+	public void beforeQueryById(Model<?> model, int id) {
+
+	}
+
+	@Override
+	public void beforeUpdate(Model< ? > model) throws ValidateException {
+
+	}
+
+	@Override
+	public void beforeDelete(Model< ? > model) {
+
+	}
+
+	@Override
+	public void parsePageRecord(Object results) {
+		PlatFormIncome temp = (PlatFormIncome)results;
+		Fair fair = Fair.dao.findById(temp.getLong(PlatFormIncome.WH_ID));
+		if(fair!=null){
+			temp.put("wh_id_str",fair.getStr(Fair.NICK_NAME));
+		}
+		temp.set(PlatFormIncome.STATUS, temp.status());
+	}
+}
+
+	
\ No newline at end of file
diff --git a/src/main/java/com/tianpengtech/admin/platformincome/PlatFormIncomeAdminServiceImpl.java b/src/main/java/com/tianpengtech/admin/platformincome/PlatFormIncomeAdminServiceImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..dbfdd8da1f5871cfac17033ce196a1bedb61eb9d
--- /dev/null
+++ b/src/main/java/com/tianpengtech/admin/platformincome/PlatFormIncomeAdminServiceImpl.java
@@ -0,0 +1,44 @@
+package com.tianpengtech.admin.platformincome;
+
+import java.util.Map;
+
+import com.jfinal.plugin.activerecord.Model;
+import com.tianpengtech.common.exception.ValidateException;
+import com.tianpengtech.admin.AbstractAdmin;
+import com.tianpengtech.common.model.platformincome.PlatFormIncome;
+import com.tianpengtech.common.search.QueryConstructor;
+
+public class PlatFormIncomeAdminServiceImpl extends AbstractAdmin{
+
+	@Override
+	public void beforeAdd(Model<?> model) throws ValidateException {
+
+	}
+
+	@Override
+	public void beforeQueryById(Model<?> model, int id) {
+
+	}
+
+	@Override
+	public void beforeUpdate(Model<?> model) throws ValidateException {
+
+	}
+
+	@Override
+	public void beforeDelete(Model<?> model) {
+
+	}
+
+	@Override
+	public void builderSQLExpected(Model< ? > model,
+			QueryConstructor queryConstruct, Map< String, Object > params) {
+
+	}
+
+	@Override
+	public String tableName() {
+		return PlatFormIncome.dao.tableName();
+	}
+
+}
\ No newline at end of file
diff --git a/src/main/java/com/tianpengtech/admin/task/SendTaskSMSThread.java b/src/main/java/com/tianpengtech/admin/task/SendTaskSMSThread.java
index c65b75ce83366a06391f33e495a287fa104037b8..f6349c25115389a3cf710f2e03412ed0234cf22d 100644
--- a/src/main/java/com/tianpengtech/admin/task/SendTaskSMSThread.java
+++ b/src/main/java/com/tianpengtech/admin/task/SendTaskSMSThread.java
@@ -20,7 +20,9 @@ public class SendTaskSMSThread extends Thread {
 		for (Fair each : fair) {
 			if(each!=null && StringUtils.isNotEmpty(each.getStr(Fair.MOIBILE))){
 //				System.out.println("发送短息给对应的网红:"+each.getStr(Fair.MOIBILE));
-				SendSmsMsg.sendNewTaskInfo(each.getStr(Fair.MOIBILE), SendSmsMsg.TEMPLATE_NEW_MISSION);
+				if(each.getInt(Fair.SMS_SET)==1){
+					SendSmsMsg.sendNewTaskInfo(each.getStr(Fair.MOIBILE), SendSmsMsg.TEMPLATE_NEW_MISSION);
+				}
 			}
 		}
 //		SendSmsMsg.sendNewTaskInfo("13641489216", SendSmsMsg.TEMPLATE_NEW_MISSION);
diff --git a/src/main/java/com/tianpengtech/admin/task/TaskAdminController.java b/src/main/java/com/tianpengtech/admin/task/TaskAdminController.java
index 0f51b46d8fbc925b190685d6efd90a84831a8220..c90452da0343838b4a3a70a633e967c595f697a9 100644
--- a/src/main/java/com/tianpengtech/admin/task/TaskAdminController.java
+++ b/src/main/java/com/tianpengtech/admin/task/TaskAdminController.java
@@ -11,6 +11,7 @@ import com.jfinal.kit.Kv;
 import com.jfinal.plugin.activerecord.Db;
 import com.jfinal.plugin.activerecord.Model;
 import com.jfinal.plugin.activerecord.Record;
+import com.jfinal.plugin.activerecord.tx.Tx;
 import com.tianpengtech.admin.AbstractAdminController;
 import com.tianpengtech.admin.IAdminOpt;
 import com.tianpengtech.admin.InitInterceptor;
@@ -27,6 +28,8 @@ import com.tianpengtech.common.model.task.TaskCount;
 import com.tianpengtech.common.model.task.TaskWh;
 import com.tianpengtech.common.model.taskscreenshot.TaskScreenShot;
 import com.tianpengtech.common.util.JsonUtil;
+import com.tianpengtech.common.util.SendSmsMsg;
+import com.tianpengtech.front.mobile.task.TaskCalculateService;
 /**
 * 路由配置地址:add("/admin/task", TaskAdminController.class, "/admin/task");
 * 数据库映射地址:arp.addMapping(Task.dao.tableName(),Task.class);
@@ -109,6 +112,7 @@ public class TaskAdminController extends AbstractAdminController{
 		Task task = (Task)results;
 		task.set(Task.STATUS, task.status());
 		task.set(Task.EXTENSION_TYPE, task.type());
+		task.set(Task.TASK_PRICE,"¥"+TaskCalculateService.ME.calculateTaskTotalFee(task));
 	}
 
 	
@@ -129,20 +133,24 @@ public class TaskAdminController extends AbstractAdminController{
 		if(taskWh!=null){
 			long click_num =taskWh.getLong(TaskWh.CLICK_NUM);
 			Task task = Task.dao.findById(task_id);
-			actualFee =  click_num *0.3;
-			actualFee = (actualFee>task.getDouble(Task.TASK_PRICE))?task.getDouble(Task.TASK_PRICE):actualFee;
-			setAttr("actualFee",actualFee);
+			setAttr("actualFee",TaskCalculateService.ME.IShouldPayHowMuchMoney(click_num, task));
 			setAttr("click_num",click_num);
 			setAttr("task",task);
+			setAttr("totalFee",TaskCalculateService.ME.calculateTaskTotalFee(task));
 		}else{
 			setAttr("click_num",0);
-			setAttr("actualFee",actualFee);
+			setAttr("actualFee",(int)actualFee);
 		}
 		setAttr("task",Task.dao.findById(task_id));
+		Fair fair = Fair.dao.findById(fair_id);
 		setAttr("fair_id",fair_id);
+		setAttr("fair",fair);
 		renderTemplate("task-fee.html");
 	}
 	
+	
+	
+	@Before(Tx.class)
 	public void accept(){
 		int task_id = getParaToInt("task_id");
 		int fair_id = getParaToInt("fair_id");
@@ -152,20 +160,19 @@ public class TaskAdminController extends AbstractAdminController{
 		
 		int status = taskWh.getInt(TaskWh.STATUS);
 		if(status==Task.STATUS_COMPLETED){
-			renderJson(JsonUtil.printError("当前任务已经被验收,请勿重复操作"));
+			renderJson(JsonUtil.printError("当前任务已经被结算验收,请勿重复操作"));
 			return;
 		}else{
 			
-			
 			//为当前网红增加任务相关费用信息,以及增加流水日志信息
 			Task task = Task.dao.findById(task_id);
 			Fair fair = Fair.dao.findById(fair_id);
 			
-			final Float price=task.getFloat(Task.TASK_PRICE);
+			final Float price=task.getFloat(Task.TOTAL_FEE);
 			
 			final Float acturalFee=Float.parseFloat(fee);
 			if(acturalFee>price){
-				renderJson(JsonUtil.printError("实际支付金额不允许超过任务单价"));
+				renderJson(JsonUtil.printError("实际支付金额不允许超过任务预算"));
 				return;
 			}
 			
@@ -188,7 +195,19 @@ public class TaskAdminController extends AbstractAdminController{
             ml.set(MoneyLog.MONEY,acturalFee.doubleValue());
             ml.set(MoneyLog.DESCRIPTION,"任务完成:"+task.getStr(Task.TASK_TITLE));
             ml.save();
-			renderJson(JsonUtil.printSuccess("操作成功"));
+            
+            //同步收益表信息
+            
+            //if(SysConfigDao.ME.isSendTaskSMS()){
+            	//发送短信
+             
+            if(fair.getInt(Fair.SMS_SET)==1){
+            	SendSmsMsg.sendPayFeeInfo(fair.getStr(Fair.MOIBILE),task.getStr(Task.TASK_TITLE),
+                		taskWh.getLong(TaskWh.CLICK_NUM)+"", acturalFee+"",SendSmsMsg.TEMPLATE_PAY_FEE);
+            	}
+            
+            //}
+            renderJson(JsonUtil.printSuccess("操作成功"));
 			return;
 		}
 	}
diff --git a/src/main/java/com/tianpengtech/admin/task/TaskAdminServiceImpl.java b/src/main/java/com/tianpengtech/admin/task/TaskAdminServiceImpl.java
index c6d1927a637374deb17adfa04607641a31fe634c..d842ad78cb754edb6b4aeb0e3566a858222566de 100644
--- a/src/main/java/com/tianpengtech/admin/task/TaskAdminServiceImpl.java
+++ b/src/main/java/com/tianpengtech/admin/task/TaskAdminServiceImpl.java
@@ -110,7 +110,8 @@ public class TaskAdminServiceImpl extends AbstractAdmin implements IAdminOpt{
 			String result = "【通过】《"+temp.getStr(Task.TASK_TITLE)+"》的审核请求";
 			PushKit.pushSystemMessageNow("管理员"+result);
 			OperationDao.ME.recordLog(id, Opertion.OPT_TASK_LOG,userId,result);
-			Jpush.pushCustomContentToAll("《"+temp.getStr(Task.TASK_TITLE)+"》发布啦,快来接任务吧!",Jpush.PUSH_TASK);
+			Jpush.pushCustomContentToAll("任务《"+temp.getStr(Task.TASK_TITLE)+"》发布啦,快来接任务吧!",Jpush.PUSH_TASK);
+			Jpush.pushMessageInfoToAll("任务《"+temp.getStr(Task.TASK_TITLE)+"》发布啦,快来接任务吧!",Jpush.PUSH_TASK);
 			
 			if(SysConfigDao.ME.isSendTaskSMS()){
 				List<Fair> fairs = readAllFair();
diff --git a/src/main/java/com/tianpengtech/common/MyConfig.java b/src/main/java/com/tianpengtech/common/MyConfig.java
index ffc7a360db88e56ac1e3f16d9e5da1b30db426c7..b074f99eaa8cd3631cd4481db7be0cc4a40cd7d3 100644
--- a/src/main/java/com/tianpengtech/common/MyConfig.java
+++ b/src/main/java/com/tianpengtech/common/MyConfig.java
@@ -37,6 +37,7 @@ import com.tianpengtech.common.model.moneylog.MoneyLog;
 import com.tianpengtech.common.model.opertion.Opertion;
 import com.tianpengtech.common.model.permission.Permission;
 import com.tianpengtech.common.model.permission.PermissionDispather;
+import com.tianpengtech.common.model.platformincome.PlatFormIncome;
 import com.tianpengtech.common.model.role.Role;
 import com.tianpengtech.common.model.task.*;
 import com.tianpengtech.common.model.taskscreenshot.TaskScreenShot;
@@ -57,7 +58,8 @@ import com.tianpengtech.front.mobile.MobileRoutes;
 import com.tianpengtech.front.web.WebRoutes;
 import com.tianpengtech.front.web.common.util.WebPageUtil;
 import com.tianpengtech.front.web.job.SessionJob;
-import com.tianpengtech.front.web.job.TaskJob;
+import com.tianpengtech.front.web.job.TaskEndJob;
+import com.tianpengtech.front.web.job.TaskStartJob;
 import com.tianpengtech.front.web.tasktemplate.TaskTemplateController;
 import com.tianpengtech.front.website.H5AdController;
 import com.tianpengtech.front.website.WebSiteRoutes;
@@ -175,6 +177,7 @@ public class MyConfig extends JFinalConfig {
         arp.addMapping(FairOrder.dao.tableName(),FairOrder.class);
         arp.addMapping(FairSalary.dao.tableName(),FairSalary.class);
         arp.addMapping(WebSiteAd.dao.tableName(),WebSiteAd.class);
+        arp.addMapping(PlatFormIncome.dao.tableName(),PlatFormIncome.class);
         EhCachePlugin cachePlugin = new EhCachePlugin();
         me.add(cachePlugin);
     }
@@ -194,8 +197,8 @@ public class MyConfig extends JFinalConfig {
     public void afterJFinalStart() {
         //添加定时任务
         //0 5 0 * * ?
-        QuartzPlugin.addJob("TaskJob_first", "0 5 0 * * ?", TaskJob.class);//更新任务状态 使用doubleCheck的方式保证任务被执行
-        QuartzPlugin.addJob("TaskJob_second", "0 5 1 * * ?", TaskJob.class);//更新任务状态 使用doubleCheck的方式保证任务被执行
+        QuartzPlugin.addJob("TaskJob_first", "0 5 0 * * ?", TaskStartJob.class);//每天凌晨12:05检查当天需要被标记进行中的任务
+        QuartzPlugin.addJob("TaskJob_second", "0 50 23 * * ?", TaskEndJob.class);//每天11:50检查当天需要结束的任务
         QuartzPlugin.addJob("SessionJob", "0 0/2 * * * ?", SessionJob.class);
     }
 
diff --git a/src/main/java/com/tianpengtech/common/generator/app/Generator.java b/src/main/java/com/tianpengtech/common/generator/app/Generator.java
index 37f8f90bd73346b7e2a3740881cc1269239a25aa..704e05c16dc99663b9985e13c028ef76d888326d 100644
--- a/src/main/java/com/tianpengtech/common/generator/app/Generator.java
+++ b/src/main/java/com/tianpengtech/common/generator/app/Generator.java
@@ -234,7 +234,7 @@ public class Generator {
 //        Generator.excute(engine,".authenticate", "Authenticate", "fair_user_authenticate", "用户认证表");
 //        Generator.excute(engine,".m", "FairSalary", "fair_user_salary", "用户账户表");
 //        Generator.excute(engine,".wh", "Fair", "fair_wh", "网红表");
-        Generator.excute(engine,".websitead", "WebSiteAd", "fair_website_ad_img", "官网图片表");
+        Generator.excute(engine,".platincome", "PlatFormIncome", "fair_platform_income", "平台收入表");
 
 //        String modelName = "MoneyLog";
 //        String packageName = ".fair";
diff --git a/src/main/java/com/tianpengtech/common/model/dictionary/Dictionary.java b/src/main/java/com/tianpengtech/common/model/dictionary/Dictionary.java
index 11926e7458b7a3c65639888b941d303ef7fffcfb..d3daae19353dfa212622881e6342ec38cd29bbb5 100644
--- a/src/main/java/com/tianpengtech/common/model/dictionary/Dictionary.java
+++ b/src/main/java/com/tianpengtech/common/model/dictionary/Dictionary.java
@@ -21,7 +21,8 @@ public class Dictionary extends AbstractBaseModel< Dictionary > {
 		public static final String PID ="pid"; //父节点ID
 		public static final String CODE ="code"; //数字字典的code值
 		public static final int CONST_PERMISSION_CODE=1000;
-		public static final int CONST_PRICE_CODE=2000;
+		public static final int CONST_PRICE_CODE=2000;//任务单价
+		public static final int CONST_TOTAL_PRICE_CODE=2001;//任务预算
 		public static final int WEB_SITE_LABEL=10057;
 		public static final int SYS_APPLY_NUM=1006;//系统设定网红每天任务报名数
 		public static final int EXTRA_FEE=1007;//指定网红额外收取费用
diff --git a/src/main/java/com/tianpengtech/common/model/fair/Fair.java b/src/main/java/com/tianpengtech/common/model/fair/Fair.java
index 070f031bc1c9b0d5211df18379e79cbeb4929ee7..235f335f007a5bf285127c74281128b12dfc53e3 100644
--- a/src/main/java/com/tianpengtech/common/model/fair/Fair.java
+++ b/src/main/java/com/tianpengtech/common/model/fair/Fair.java
@@ -64,6 +64,9 @@ public class Fair extends AbstractBaseModel<Fair> {
 	public static final String DESCRIPT="descript"; //描述信息
 	public static final String FANS_FEATURE="fans_feature"; //描述信息
 	public static final String PRICE="price"; //网红价格区间
+	public static final String VERSION="version"; //乐观锁校验字段
+	public static final String SMS_SET="sms_set"; //短信设置提醒设置
+	public static final String AVALIABLE_FEE="avaliable_fee"; //网红可用余额
 
 	
 	public static final int STATUS_UNAPPROVER=-1;
diff --git a/src/main/java/com/tianpengtech/common/model/fairbankno/FairBankNo.java b/src/main/java/com/tianpengtech/common/model/fairbankno/FairBankNo.java
index a41a6dda2bdbd4ee83ddab5121cfdae2763c43f4..4e8d28e54b15c3d4bf33e05ffb2f5e9bf1dc23d4 100644
--- a/src/main/java/com/tianpengtech/common/model/fairbankno/FairBankNo.java
+++ b/src/main/java/com/tianpengtech/common/model/fairbankno/FairBankNo.java
@@ -24,6 +24,7 @@ public class FairBankNo extends AbstractBaseModel<FairBankNo> {
 	public static final String CREATE_TIME = "create_time"; // 创建时间
 	public static final String REAL_NAME = "real_name"; // 真实姓名
 	public static final String ICON = "icon"; // 银行图标
+	public static final String BRANCH = "branch"; // 银行图标
 
 	
 	public static final int DEL_NO=0;
diff --git a/src/main/java/com/tianpengtech/common/model/fairwithdraw/FairWithdraw.java b/src/main/java/com/tianpengtech/common/model/fairwithdraw/FairWithdraw.java
index ab910ff4382df5343d2c2528c8c9a3ad93916a19..8c90afc8636a770920d2274b17702898394190d1 100644
--- a/src/main/java/com/tianpengtech/common/model/fairwithdraw/FairWithdraw.java
+++ b/src/main/java/com/tianpengtech/common/model/fairwithdraw/FairWithdraw.java
@@ -44,4 +44,9 @@ public class FairWithdraw extends AbstractBaseModel<FairWithdraw> {
 		}
 		return result;
 	}
+	
+	
+	public float platFormFee(){
+		return (float)(getDouble(FairWithdraw.MONEY)*0.1);
+	}
 }
\ No newline at end of file
diff --git a/src/main/java/com/tianpengtech/common/model/platformincome/PlatFormIncome.java b/src/main/java/com/tianpengtech/common/model/platformincome/PlatFormIncome.java
new file mode 100644
index 0000000000000000000000000000000000000000..2440bcf6c1fd729265e358177bf5ae656c405dc7
--- /dev/null
+++ b/src/main/java/com/tianpengtech/common/model/platformincome/PlatFormIncome.java
@@ -0,0 +1,42 @@
+package com.tianpengtech.common.model.platformincome;
+import com.tianpengtech.common.model.AbstractBaseModel;
+/**
+ *实体类名-平台收入表
+ * fair_platform_income
+ *
+ * @since Wed Jan 17 01:15:34 HKT 2018
+ */
+public class PlatFormIncome extends AbstractBaseModel< PlatFormIncome > {
+
+	/**
+	 *
+	 */
+	private static final long serialVersionUID = 1L;
+	public static final PlatFormIncome dao = new PlatFormIncome();
+
+
+	public static final String ID = "id"; //
+	public static final String WH_ID = "wh_id"; // 提现网红ID
+	public static final String MONEY = "money"; // 平台收入
+	public static final String STATUS ="status"; //状态值
+	public static final String WITH_DRAW_MONEY ="with_draw_money"; //提现金额
+
+	public static final int STATUS_ERROR=0;
+	public static final int STATUS_OK=1;
+
+	public String status(){
+		String result="未知状态";
+		if(getInt(STATUS)==STATUS_ERROR){
+			result="收取失败";
+		}else if(getInt(STATUS)==STATUS_OK){
+			result="收取成功";
+		}
+		return result;
+	}
+
+	@Override
+	public String tableName() {
+		return "fair_platform_income";
+	}
+
+}
\ No newline at end of file
diff --git a/src/main/java/com/tianpengtech/common/model/task/Task.java b/src/main/java/com/tianpengtech/common/model/task/Task.java
index ea6b1be7d4b3be7114142e177095bb0100622c45..2522bc46424a8d193e2a19ae9fb85f43dcb14337 100644
--- a/src/main/java/com/tianpengtech/common/model/task/Task.java
+++ b/src/main/java/com/tianpengtech/common/model/task/Task.java
@@ -45,6 +45,7 @@ public class Task extends AbstractBaseModel<Task> {
 	public static final String SUCCESS = "success"; // 是否完成
 	public static final String WEB_URL = "web_url"; // 推广链接
 	public static final String H5_TYPE = "h5_type"; // 是否有H5页面
+	public static final String TOTAL_FEE = "total_fee"; // 任务预算
 
 
 	//白名单表 相关字段
diff --git a/src/main/java/com/tianpengtech/common/pay/weixin/controller/PayController.java b/src/main/java/com/tianpengtech/common/pay/weixin/controller/PayController.java
index 0891f35391bd509bc68c5afe79c35b1def27b098..81066dc336b06c184bfc4e2eab3f511f3573ed8a 100644
--- a/src/main/java/com/tianpengtech/common/pay/weixin/controller/PayController.java
+++ b/src/main/java/com/tianpengtech/common/pay/weixin/controller/PayController.java
@@ -87,7 +87,8 @@ public class PayController extends Controller {
 		out_trade_no = out_trade_no + "_" + WxPayParamBuilder.randomInt();
 		int objId = getParaToInt("objId", 0);
 		Task task = Task.dao.findById(objId);
-		double total_fee = task.getDouble(Task.TASK_PRICE)*task.getInt(Task.WH_NUMBER);
+//		double total_fee = task.getDouble(Task.TASK_PRICE)*task.getInt(Task.WH_NUMBER);
+		double total_fee = task.getDouble(Task.TOTAL_FEE);
 		String name = task.getStr(Task.TASK_TITLE);
 		name = "任务《"+name+"》付款";
 		total_fee = total_fee * 100;
diff --git a/src/main/java/com/tianpengtech/common/util/QiNiuUtil.java b/src/main/java/com/tianpengtech/common/util/QiNiuUtil.java
index a0f06ab3bdee55a414561806f14fc3e5423a8f6f..ea72126b224b7035d32f2a6d63038a4d5eded35e 100644
--- a/src/main/java/com/tianpengtech/common/util/QiNiuUtil.java
+++ b/src/main/java/com/tianpengtech/common/util/QiNiuUtil.java
@@ -14,6 +14,7 @@ import com.qiniu.util.Auth;
 import com.qiniu.util.StringMap;
 
 import java.io.InputStream;
+import java.util.UUID;
 
 /**
  * Created by GGD on 2017/5/31 0031.
@@ -40,9 +41,11 @@ public class QiNiuUtil {
         return upToken;
     }
 
-    public static String upload(InputStream path) throws QiniuException {
+    public static String upload(InputStream path,String category) throws QiniuException {
         Auth auth = Auth.create(accessKey, secretKey);
-        String upToken = auth.uploadToken(bucket);
+        
+        String upToken = auth.uploadToken(bucket,null, 3600, new StringMap()
+                .putNotEmpty("saveKey",category+UUID.randomUUID().toString()), true);
         try {
             Response response = uploadManager.put(path,null,upToken,null, null);
             //解析上传成功的结果
diff --git a/src/main/java/com/tianpengtech/common/util/SendSmsMsg.java b/src/main/java/com/tianpengtech/common/util/SendSmsMsg.java
index 7d549b12db7622cccf41d5ecbb87751a0207cdf1..de37bbf978ab9504d9fcc6b4b67726c5d0d16ecf 100644
--- a/src/main/java/com/tianpengtech/common/util/SendSmsMsg.java
+++ b/src/main/java/com/tianpengtech/common/util/SendSmsMsg.java
@@ -39,6 +39,7 @@ public class SendSmsMsg {
     public static final String TEMPLATE_PASS_BACK_SMS="SMS_76595518";//忘记密码验证码
     public static final String TEMPLATE_NOBODY_APPLY="SMS_119076886";//没有人接任务的短信模板
     public static final String TEMPLATE_NEW_MISSION="SMS_121855289";//新任务短信通知
+    public static final String TEMPLATE_PAY_FEE="SMS_121855832";//任务结算通知
     
     
     private static final String accessKeyId = prop.get("accessKeyId");
@@ -127,6 +128,34 @@ public class SendSmsMsg {
         return false;
     }
 
+    
+    
+    public static boolean sendPayFeeInfo(String mobile,String title,String clickNum,String money,String templateCode) {
+        IClientProfile profile = DefaultProfile.getProfile("cn-beijing", accessKeyId, accessKeySecret);
+        try {
+            DefaultProfile.addEndpoint("cn-beijing", "cn-beijing", product, domain);
+        } catch (ClientException e) {
+            e.printStackTrace();
+            return false;
+        }
+        IAcsClient acsClient = new DefaultAcsClient(profile);
+        SendSmsRequest request = new SendSmsRequest();
+        request.setPhoneNumbers(mobile);
+        request.setSignName(prop.get("signName"));
+        request.setTemplateParam("{\"title\":\"《"+title+"》\",\"clickCnt\":\""+clickNum+"\",\"money\":\""+money+"\"}");
+        request.setTemplateCode(templateCode);
+        SendSmsResponse sendSmsResponse = null;
+        try {
+            sendSmsResponse = acsClient.getAcsResponse(request);
+        } catch (ClientException e) {
+            e.printStackTrace();
+            return false;
+        }
+        if(sendSmsResponse.getCode() != null && sendSmsResponse.getCode().equals("OK")) {
+            return true;
+        }
+        return false;
+    }
 
 
     //发送自定义模板短信
@@ -261,6 +290,9 @@ public class SendSmsMsg {
 
 
 
+    public static void main(String[] args) {
+    	sendPayFeeInfo("13641489216", "12345", "10","3",TEMPLATE_PAY_FEE);
+	}
 
 
 
diff --git a/src/main/java/com/tianpengtech/common/util/XxxUtil.java b/src/main/java/com/tianpengtech/common/util/XxxUtil.java
index f42ca52019b49435124472f8385db396be48ed35..5ca47a6bd9e2570c5920467a2b9f582e30d27bd8 100644
--- a/src/main/java/com/tianpengtech/common/util/XxxUtil.java
+++ b/src/main/java/com/tianpengtech/common/util/XxxUtil.java
@@ -187,6 +187,20 @@ public class XxxUtil {
     	return s;
     }
     
+    public static String handleContent(String v,int length){
+    	String result = "";
+    	if(v==null){
+    		return result;
+    	}else if(v.length()<=length){
+    		result=v;
+    	}else if(v.length()>length){
+    		v= v.substring(0, length);
+    		v = v+"...";
+    		result=v;
+    	}
+    	return result;
+    }
+    
     public static void main(String[] args) {
 		System.out.println(hiddenMobile("13641489216"));
 		System.out.println(formatFans(128537));
diff --git a/src/main/java/com/tianpengtech/common/util/push/Jpush.java b/src/main/java/com/tianpengtech/common/util/push/Jpush.java
index 54d5f56b318616f6bbd0692ec5d07491fdbbb3b7..5690aae79060b5b4e4896983b1ae8f5ecfcecd6d 100644
--- a/src/main/java/com/tianpengtech/common/util/push/Jpush.java
+++ b/src/main/java/com/tianpengtech/common/util/push/Jpush.java
@@ -28,7 +28,7 @@ public class Jpush {
 	public final static String PUSH_TASK="task";
 	public final static String PUSH_MSG="msg";
 	
-	public final static int LIVE_TIME=90*1000;
+	public final static int LIVE_TIME=1*1000*60*10;
 	public final static boolean PRO_ENV=false;
 	
 	
@@ -41,6 +41,15 @@ public class Jpush {
         }
     }
 	
+	public static void pushMessageInfoToSomeOne(String alias,String ALERT,String type){
+        PushResult result = jPushMessageInfoToSomeOne(String.valueOf(alias),ALERT,type);
+        if(result != null && result.isResultOK()){
+            log.info("针对别名" + alias + "的信息推送成功!");
+        }else{
+            log.info("针对别名" + alias + "的信息推送失败!");
+        }
+    }
+	
 	public static void pushCustomContentToAll(String ALERT,String type){
         PushResult result = jPushCustomContentToAll(ALERT,type);
         if(result != null && result.isResultOK()){
@@ -50,6 +59,15 @@ public class Jpush {
         }
     }
 	
+	public static void pushMessageInfoToAll(String ALERT,String type){
+		PushResult result = jPushMessageInfoToAll(ALERT,type);
+        if(result != null && result.isResultOK()){
+            log.info("信息推送成功!");
+        }else{
+            log.info("信息推送失败!");
+        }
+	}
+	
 	private static PushPayload customContentPushToAll(String title,String type){
 		Map<String,String> param = new HashMap<String,String>();
 		param.put("type", type);
@@ -65,6 +83,32 @@ public class Jpush {
 		 
 	}
 	
+	
+	private static PushPayload customMessageInfoPushToAll(String title,String type){
+		Map<String,String> param = new HashMap<String,String>();
+		param.put("type", type);
+		return PushPayload.newBuilder()
+                .setPlatform(Platform.android_ios())
+                .setAudience(Audience.all())
+                .setNotification(Notification.newBuilder()
+                        .addPlatformNotification(AndroidNotification.newBuilder()
+                                .addExtra("type",type)
+                                .setAlert(title)
+                                .build())
+                        .addPlatformNotification(IosNotification.newBuilder()
+                                .addExtra("type",type)
+                                .setAlert(title)
+                                .build())
+                        .build())
+                .setOptions(Options.newBuilder()
+                        .setApnsProduction(PRO_ENV)//true-推送生产环境 false-推送开发环境(测试使用参数)
+                        .setTimeToLive(LIVE_TIME)//消息在JPush服务器的失效时间(测试使用参数)
+                        .build())
+                .build();
+		 
+	}
+	
+	
 	private static PushPayload customContentPushToSomeOne(String title,String someone,String pushType){
 		Map<String,String> param = new HashMap<String,String>();
 		param.put("type", pushType);
@@ -72,6 +116,32 @@ public class Jpush {
                 .setPlatform(Platform.android_ios())
                 .setAudience(Audience.alias(someone))
                 .setMessage(Message.newBuilder().addExtras(param).setMsgContent(title).build())
+                
+                .build();
+		 
+	}
+	
+	private static PushPayload customMessageInfoToSomeOne(String title,String someone,String pushType){
+		Map<String,String> param = new HashMap<String,String>();
+		param.put("type", pushType);
+		return PushPayload.newBuilder()
+                .setPlatform(Platform.android_ios())
+                .setAudience(Audience.alias(someone))
+                .setNotification(Notification.newBuilder()
+                        .addPlatformNotification(AndroidNotification.newBuilder()
+                                .addExtra("type",pushType)
+                                .setAlert(title)
+                                .build())
+                        .addPlatformNotification(IosNotification.newBuilder()
+                                .addExtra("type",pushType)
+                                .setAlert(title)
+                                .setBadge(0)
+                                .build())
+                        .build())
+                .setOptions(Options.newBuilder()
+                        .setApnsProduction(PRO_ENV)//true-推送生产环境 false-推送开发环境(测试使用参数)
+                        .setTimeToLive(LIVE_TIME)//消息在JPush服务器的失效时间(测试使用参数)
+                        .build())
                 .setOptions(Options.newBuilder()
                         .setApnsProduction(PRO_ENV)//true-推送生产环境 false-推送开发环境(测试使用参数)
                         .setTimeToLive(LIVE_TIME)//消息在JPush服务器的失效时间(测试使用参数)
@@ -99,6 +169,26 @@ public class Jpush {
         }    
     }
 	
+	
+	private static PushResult jPushMessageInfoToSomeOne(String alias,String alert,String type){
+        ClientConfig clientConfig = ClientConfig.getInstance();
+        JPushClient jpushClient = new JPushClient(masterSecret, appKey, null, clientConfig);
+        PushPayload payload = customMessageInfoToSomeOne(alert,alias,type);
+        try {
+            return jpushClient.sendPush(payload);
+        } catch (APIConnectionException e) {
+            log.error("Connection error. Should retry later. ", e);
+            return null;
+        } catch (APIRequestException e) {
+            log.error("Error response from JPush server. Should review and fix it. ", e);
+            log.info("HTTP Status: " + e.getStatus());
+            log.info("Error Code: " + e.getErrorCode());
+            log.info("Error Message: " + e.getErrorMessage());
+            log.info("Msg ID: " + e.getMsgId());
+            return null;
+        }    
+    }
+	
 	private static PushResult jPushCustomContentToAll(String title,String type){
         ClientConfig clientConfig = ClientConfig.getInstance();
         JPushClient jpushClient = new JPushClient(masterSecret, appKey, null, clientConfig);
@@ -118,8 +208,30 @@ public class Jpush {
         }    
     }
 	
+	private static PushResult jPushMessageInfoToAll(String title,String type){
+        ClientConfig clientConfig = ClientConfig.getInstance();
+        JPushClient jpushClient = new JPushClient(masterSecret, appKey, null, clientConfig);
+        PushPayload payload = customMessageInfoPushToAll(title,type);
+        try {
+            return jpushClient.sendPush(payload);
+        } catch (APIConnectionException e) {
+            log.error("Connection error. Should retry later. ", e);
+            return null;
+        } catch (APIRequestException e) {
+            log.error("Error response from JPush server. Should review and fix it. ", e);
+            log.info("HTTP Status: " + e.getStatus());
+            log.info("Error Code: " + e.getErrorCode());
+            log.info("Error Message: " + e.getErrorMessage());
+            log.info("Msg ID: " + e.getMsgId());
+            return null;
+        }    
+    }
+	
 	public static void main(String[] args) {
-		Jpush.pushCustomContentToAll("xxxxqqq!!",Jpush.PUSH_TASK);
-		Jpush.pushCustomContentToSomeOne("13262535273","你的消息····来了123ddd!23223!!",Jpush.PUSH_MSG);
+//		Jpush.pushCustomContentToAll("xxxxqqq!!",Jpush.PUSH_TASK);
+//		Jpush.pushCustomContentToSomeOne("13262535273","你的消息····来了123ddd!23223!!",Jpush.PUSH_MSG);
+//		Jpush.pushMessageInfoToSomeOne("13262535273","我是服务器通知信息 我来了!!!",Jpush.PUSH_MSG);
+		Jpush.pushMessageInfoToSomeOne("13262535273","我是服务器通知信息 我来了!!!",Jpush.PUSH_TASK);
+//		Jpush.pushMessageInfoToAll("您的快递到了,请到楼下取",Jpush.PUSH_TASK);
 	}
 }
diff --git a/src/main/java/com/tianpengtech/front/mobile/bankno/MobileBanknoController.java b/src/main/java/com/tianpengtech/front/mobile/bankno/MobileBanknoController.java
index 9b582ebb1ec9c8066b0c88598e22179caeb3e634..bc066b9fb98f50a782bae54d98bf334d15915589 100644
--- a/src/main/java/com/tianpengtech/front/mobile/bankno/MobileBanknoController.java
+++ b/src/main/java/com/tianpengtech/front/mobile/bankno/MobileBanknoController.java
@@ -23,12 +23,13 @@ public class MobileBanknoController extends BaseController {
     /**
      * 保存银行卡信息
      */
-    @Before({MobileBanknoValidator.class,Tx.class})
+    @Before({Tx.class})
     public void save(){
         Map<String,String> param  = new HashMap<>();
         param.put("bank",getPara("bank"));
         param.put("bank_no",getPara("bank_no"));
         param.put("real_name",getPara("real_name"));
+        param.put("branch",getPara("branch"));
         String icon =  getPara("icon");
         if(StringUtils.isNotEmpty(icon)){
         	icon = icon.substring(icon.lastIndexOf("/")+1);
@@ -65,5 +66,50 @@ public class MobileBanknoController extends BaseController {
     	 R r=service.unbindBankNo(id);
 	     renderJson(r);
     }
+    
+    
+    public void queryBankCardById(){
+    	int id = getParaToInt(FairBankNo.ID,0);
+    	FairBankNo bankNo = FairBankNo.dao.findById(id);
+    	if(bankNo==null){
+    		R r = R.fail("当前银行卡信息记录不存在");
+        	renderJson(r);
+        	return;
+    	}
+    	User user= UserUtil.getCurrentUser(getPara("token"),"ios");
+    	if(user.getLong(User.ID)!=bankNo.getLong(FairBankNo.WH_ID)){
+    		R r = R.fail("当前银行卡与当前登录人所属不一至,不允许当前操作");
+        	renderJson(r);
+        	return;
+    	}
+    	R r = R.ok();
+    	r.p("result",bankNo);
+    	renderJson(r);
+    	return;
+    }
+    
+    
+    
+    public void updateBankNo(){
+    	Map<String,String> param  = new HashMap<>();
+        param.put("bank",getPara("bank"));
+        param.put("bank_no",getPara("bank_no"));
+        param.put("real_name",getPara("real_name"));
+        param.put("branch",getPara("branch"));
+        param.put("id",getPara("id"));
+        String icon =  getPara("icon");
+        if(StringUtils.isNotEmpty(icon)){
+        	icon = icon.substring(icon.lastIndexOf("/")+1);
+        }
+        param.put("icon",icon);
+        User user= UserUtil.getCurrentUser(getPara("token"),"ios");
+        param.put("wh_id",user.getLong(User.ID)+"");
+        try {
+            R r=service.update(param);
+            renderJson(r);
+        } catch (Exception e) {
+            renderJson(R.fail("保存失败"));
+        }
+    }
 
 }
diff --git a/src/main/java/com/tianpengtech/front/mobile/bankno/MobileBanknoService.java b/src/main/java/com/tianpengtech/front/mobile/bankno/MobileBanknoService.java
index 7dc4a42a95d6dd2dd298dac17c876dec2bfa1825..834045e717f5888e752586136f41918da734d374 100644
--- a/src/main/java/com/tianpengtech/front/mobile/bankno/MobileBanknoService.java
+++ b/src/main/java/com/tianpengtech/front/mobile/bankno/MobileBanknoService.java
@@ -4,6 +4,7 @@ import com.jfinal.plugin.activerecord.Record;
 import com.jfinal.plugin.ehcache.CacheKit;
 import com.tianpengtech.common.GlobalConfigConstant;
 import com.tianpengtech.common.model.fairbankno.FairBankNo;
+import com.tianpengtech.common.model.fairwithdraw.FairWithdraw;
 import com.tianpengtech.front.mobile.common.util.R;
 
 import java.util.ArrayList;
@@ -12,6 +13,8 @@ import java.util.Map;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
+import org.apache.commons.lang.StringUtils;
+
 /**
  * Created by ggd on 2017/7/26 0026.
  */
@@ -32,6 +35,7 @@ public class MobileBanknoService {
             String bank_no=param.get("bank_no");
             String real_name=param.get("real_name");
             String icon=param.get("icon");
+            String branch=param.get("branch");
             if (isBankNoExists(bank_no,Long.parseLong(wh_id))){
                 return R.fail("此银行卡已添加过");
             }
@@ -40,13 +44,16 @@ public class MobileBanknoService {
             if(!m.find()){
             	return R.fail("收款人姓名必须为中文");
             }
-            
+            if(StringUtils.isEmpty(branch)){
+            	return R.fail("分行名称不能唯空");
+            }
             FairBankNo fb = new FairBankNo();
             fb.set(FairBankNo.WH_ID,wh_id);
             fb.set(FairBankNo.BANK,bank);
             fb.set(FairBankNo.BANK_NO,bank_no);
             fb.set(FairBankNo.REAL_NAME,real_name);
             fb.set(FairBankNo.ICON,icon);
+            fb.set(FairBankNo.BRANCH,branch);
             fb.save();
             R r=R.ok("成功");
             r.p("bankno",fb);
@@ -58,16 +65,56 @@ public class MobileBanknoService {
         }
     }
 
+    
+    public R update(Map<String,String> param) throws Exception{
+        try{
+            String wh_id=param.get("wh_id");
+            String id= param.get("id");
+            String bank=param.get("bank");
+            String bank_no=param.get("bank_no");
+            String real_name=param.get("real_name");
+            String icon=param.get("icon");
+            String branch=param.get("branch");
+//            if (isBankNoExists(bank_no,Long.parseLong(wh_id))){
+//                return R.fail("此银行卡已添加过");
+//            }
+            String regex = "^[\\u4e00-\\u9fa5]*$";  
+            Matcher m = Pattern.compile(regex).matcher(real_name);  
+            if(!m.find()){
+            	return R.fail("收款人姓名必须为中文");
+            }
+            if(StringUtils.isEmpty(branch)){
+            	return R.fail("分行名称不能唯空");
+            }
+            FairBankNo fb = new FairBankNo();
+            fb.set(FairBankNo.ID, id);
+            fb.set(FairBankNo.WH_ID,wh_id);
+            fb.set(FairBankNo.BANK,bank);
+            fb.set(FairBankNo.BANK_NO,bank_no);
+            fb.set(FairBankNo.REAL_NAME,real_name);
+            fb.set(FairBankNo.ICON,icon);
+            fb.set(FairBankNo.BRANCH,branch);
+            fb.update();
+            R r=R.ok("银行卡编辑保存成功");
+            r.p("bankno",fb);
+            CacheKit.remove(FairBankNo.CACHE_NAME,"bankno_"+wh_id);
+            return r;
+        }catch (Exception e){
+            e.printStackTrace();
+            throw e;
+        }
+    }
+
     /**
      *  获取某个人得银行卡列表
      * @param id
      * @return
      */
     public R findBankno(long id){
-        String sql = String.format("select %s,%s,%s,%s,icon from %s where %s=? and %s=?",
+        String sql = String.format("select %s,%s,%s,%s,icon,branch from %s where %s=? and %s=?",
         		FairBankNo.ID,FairBankNo.BANK,FairBankNo.REAL_NAME
         		,FairBankNo.BANK_NO,dao.tableName(),FairBankNo.DELETETAG,FairBankNo.WH_ID);
-        List<FairBankNo> list=dao.find(sql,0,id);
+        List<FairBankNo> list=dao.find(sql,FairBankNo.DEL_NO,id);
         for (FairBankNo fairBankNo : list) {
         	fairBankNo.set(FairBankNo.ICON, domain+fairBankNo.getStr(FairBankNo.ICON));
 		}
@@ -128,11 +175,21 @@ public class MobileBanknoService {
     
     public R unbindBankNo(int id ){
     	R r ;
-    	boolean result = FairBankNo.dao.deleteById(id);
+    	//检查是否在当前银行卡上有相关提现记录信息
+    	String sql="select * from "+FairWithdraw.dao.tableName()+ " where bank_id=? and status=? ";
+    	FairWithdraw fairWithdraw = FairWithdraw.dao.findFirst(sql,id,FairWithdraw.STATUS_APPROVING);
+    	
+    	if(fairWithdraw!=null){
+    		return R.fail("当前银行卡上未处理的提现信息,暂时不能进行当前操作");
+    	}
+    	
+    	FairBankNo fairBankNo = FairBankNo.dao.findById(id);
+    	fairBankNo.set(FairBankNo.DELETETAG, FairBankNo.DEL_YES);
+    	boolean result = fairBankNo.update();
     	if(result){
     		r= R.ok("操作成功");
     	}else{
-    		r= R.ok("操作失败");
+    		r= R.fail("解绑操作失败,当前记录不存在");
     	}
     	return r;
     }
diff --git a/src/main/java/com/tianpengtech/front/mobile/login/MobileLoginController.java b/src/main/java/com/tianpengtech/front/mobile/login/MobileLoginController.java
index 83172c0f7d1dd86871a32c5e0776a2078b669961..d27588767f04980e2fc498ad77971b90df9af2ec 100644
--- a/src/main/java/com/tianpengtech/front/mobile/login/MobileLoginController.java
+++ b/src/main/java/com/tianpengtech/front/mobile/login/MobileLoginController.java
@@ -77,6 +77,11 @@ public class MobileLoginController extends BaseController {
             renderJson(R.fail("手机号码格式不正确"));
             return;
         }
+        if (PassportService.me.isMobileExists(mobile,User.USER_TYPE_FAIR)) {
+        	R.fail("手机号码已被注册,请更换一个手机号码");
+            return;
+        }
+        
         String ip = IpKit.getRealIp(getRequest());
         Ret ret=passportService.sendAuthCode(mobile,ip,SendSmsMsg.TEMPLATE_REG_SMS);
         if (ret.isOk()){
@@ -209,6 +214,7 @@ public class MobileLoginController extends BaseController {
     public void upateVersion(){
     	R r = R.ok();
     	r.put("showUpdate", false);
+    	r.put("showInvite", false);
     	renderJson(r);
     }
 }
diff --git a/src/main/java/com/tianpengtech/front/mobile/moneylog/MobileMoenyLogService.java b/src/main/java/com/tianpengtech/front/mobile/moneylog/MobileMoenyLogService.java
index 2adf27e4b3496833a9f9a1843003eb150c19dc11..0ee4ca16eb6d4558f89922ab716151d5caccee77 100644
--- a/src/main/java/com/tianpengtech/front/mobile/moneylog/MobileMoenyLogService.java
+++ b/src/main/java/com/tianpengtech/front/mobile/moneylog/MobileMoenyLogService.java
@@ -2,6 +2,7 @@ package com.tianpengtech.front.mobile.moneylog;
 
 import com.jfinal.plugin.activerecord.Page;
 import com.tianpengtech.common.model.moneylog.MoneyLog;
+import com.tianpengtech.common.util.XxxUtil;
 import com.tianpengtech.front.mobile.common.util.R;
 
 /**
@@ -18,6 +19,10 @@ public class MobileMoenyLogService {
         String select = "select * ";
         String sql = String.format(" from %s where %s=?  order by %s desc", MoneyLog.dao.tableName(),MoneyLog.WH_ID,MoneyLog.CREATE_TIME);
         Page<MoneyLog> page=MoneyLog.dao.paginate(pageNum,length,select,sql.toString(),uid);
+        for (MoneyLog each : page.getList()) {
+        	each.set(MoneyLog.DESCRIPTION, XxxUtil.handleContent(each.getStr(MoneyLog.DESCRIPTION), 25));
+		}
+        
         R r= R.ok();
         r.p("count",page.getTotalRow());
         r.p("pageNum",page.getPageNumber());
diff --git a/src/main/java/com/tianpengtech/front/mobile/passport/MobilePassportController.java b/src/main/java/com/tianpengtech/front/mobile/passport/MobilePassportController.java
index e02d8bf1bbe3477dd361af1ec156d93898dfde5c..0bdf156fd858746c5ca7deaa2888429141233d45 100644
--- a/src/main/java/com/tianpengtech/front/mobile/passport/MobilePassportController.java
+++ b/src/main/java/com/tianpengtech/front/mobile/passport/MobilePassportController.java
@@ -4,6 +4,7 @@ import com.jfinal.aop.Before;
 import com.jfinal.kit.Ret;
 import com.jfinal.kit.StrKit;
 import com.jfinal.plugin.activerecord.Db;
+import com.jfinal.plugin.activerecord.Record;
 import com.jfinal.plugin.activerecord.tx.Tx;
 import com.jfinal.upload.UploadFile;
 import com.tianpengtech.common.exception.ValidateException;
@@ -12,11 +13,13 @@ import com.tianpengtech.common.model.fairauth.FairAuth;
 import com.tianpengtech.common.model.fairext.FairExt;
 import com.tianpengtech.common.model.fairphoto.FairPhoto;
 import com.tianpengtech.common.model.fairwithdraw.FairWithdraw;
+import com.tianpengtech.common.model.moneylog.MoneyLog;
 import com.tianpengtech.common.model.user.User;
 import com.tianpengtech.common.util.QiNiuUtil;
 import com.tianpengtech.front.mobile.common.util.R;
 import com.tianpengtech.front.mobile.common.util.U;
 import com.tianpengtech.front.mobile.common.util.UserUtil;
+import com.tianpengtech.front.mobile.task.TaskCalculateService;
 import com.tianpengtech.front.web.common.controller.BaseController;
 
 import java.io.FileInputStream;
@@ -321,6 +324,7 @@ public class MobilePassportController extends BaseController{
         String money = getPara("money");
         String bankId = getPara("bankId");
         String wdToken = getPara("wdToken");
+        String branch = getPara("branch");
         User user= UserUtil.getCurrentUser(getPara("token"),"ios");
         if (StrKit.isBlank(wdToken)){
             renderJson(R.fail("wdToken不能为空"));
@@ -382,15 +386,27 @@ public class MobilePassportController extends BaseController{
     	
     	User user= UserUtil.getCurrentUser(getPara("token"),"ios");
     	R r = R.ok("成功");
-    	Fair fair = Fair.dao.findById(user.getLong(User.ID));
-    	String sql="select count(id) as id from "+Fair.dao.tableName()+" where money>? order by money desc";
-    	Fair temp = Fair.dao.findFirst(sql,fair.getDouble(Fair.MONEY));
-    	int sort = (temp.getInt(Fair.ID)==0)?1:temp.getInt(Fair.ID)+1;
+//    	Fair fair = Fair.dao.findById(user.getLong(User.ID));
+//    	String sql="select count(id) as id from "+Fair.dao.tableName()+" where money>? order by money desc";
+//    	Fair temp = Fair.dao.findFirst(sql,fair.getDouble(Fair.MONEY));
+//    	int sort = (temp.getInt(Fair.ID)==0)?1:temp.getInt(Fair.ID)+1;
+//    	
+//    	sql = "select sum(money) as money from "+FairWithdraw.dao.tableName()+" where status=? and wh_id=?";
+//    	FairWithdraw withDraw = FairWithdraw.dao.findFirst(sql,FairWithdraw.STATUS_SUCCESS,user.getLong(User.ID));
     	
-    	sql = "select sum(money) as money from "+FairWithdraw.dao.tableName()+" where status=? and wh_id=?";
-    	FairWithdraw withDraw = FairWithdraw.dao.findFirst(sql,FairWithdraw.STATUS_SUCCESS,user.getLong(User.ID));
-    	double totalFee = (withDraw.getDouble("money")==null)?0:withDraw.getDouble("money");
+    	MoneyLog sumlog = MoneyLog.dao
+				.findFirst("select SUM(money) as money from " + MoneyLog.dao.tableName() + " where wh_id=? and deletetag=? and state=? ", 
+						user.getLong(User.ID),MoneyLog.STATUS_SUCCESS,MoneyLog.STATE_ADD);
+    	double totalFee = (sumlog.getDouble("money")==null)?0:sumlog.getDouble("money");
     	int yandou = (int)(totalFee/100);
+    	
+    	//检测所有登录用户的收益信息,并且存入数据表中分析
+    	if(totalFee>=0){
+    		TaskCalculateService.ME.syncTotalProfit(totalFee, user.getLong(User.ID));
+    	}
+    	String sql="select count(id) as id from fair_total_profit where profit>? order by profit desc";
+    	Record temp =Db.findFirst(sql,totalFee);
+    	int sort = (temp.getInt("id")==0)?1:temp.getInt("id")+1;
     	r.p("sort", sort);
     	r.p("yandou",yandou);
     	renderJson(r);
@@ -402,13 +418,15 @@ public class MobilePassportController extends BaseController{
     	boolean result = ps.isSetTransPwd(user.getLong(User.ID));
     	R r = R.ok("成功");
     	r.p("isSetTransPwd",result);
+    	r.p("isOpen",ps.isOpenSMS(user.getLong(User.ID)));
     	renderJson(r);
     }
     
     public void uploadAvatar() throws Exception {
         UploadFile upfile=getFile();
+        String category  = getPara("category","pc-");
         try {
-            String upload = QiNiuUtil.upload(new FileInputStream(upfile.getFile()));
+            String upload = QiNiuUtil.upload(new FileInputStream(upfile.getFile()),category);
             upfile.getFile().delete();
             R r = R.ok("成功");
         	r.p("savepath",upload);
@@ -437,4 +455,16 @@ public class MobilePassportController extends BaseController{
         long  uid = user.getLong(User.ID);
         renderJson(ps.queryHonnersOfMine(uid));
     }
+    
+    
+    public void smsSet(){
+    	boolean status = getParaToBoolean("status");
+    	User user= UserUtil.getCurrentUser(getPara("token"),"ios");
+        long  uid = user.getLong(User.ID);
+        R r = R.ok("成功");
+        Fair t = Fair.dao.findById(uid);
+        t.set(Fair.SMS_SET, status).update();
+        r.p("isOpen",status);
+    	renderJson(r);
+    }
 }
diff --git a/src/main/java/com/tianpengtech/front/mobile/passport/MobilePassportService.java b/src/main/java/com/tianpengtech/front/mobile/passport/MobilePassportService.java
index ffe971d51fc47400d9a36448ef63f38cfc60d373..55587897a57f376cc49f18bdccc63378d86cfce9 100644
--- a/src/main/java/com/tianpengtech/front/mobile/passport/MobilePassportService.java
+++ b/src/main/java/com/tianpengtech/front/mobile/passport/MobilePassportService.java
@@ -804,11 +804,12 @@ public class MobilePassportService {
 		} else {
 			r.p("yesterday", log.get("money"));
 		}
-//		MoneyLog sumlog = MoneyLog.dao
-//				.findFirst("select SUM(money) as money from " + MoneyLog.dao.tableName() + " where wh_id=?", id);
-		String sql = "select SUM(money) as money from "+FairWithdraw.dao.tableName()+" where wh_id=? and status=?";
-		FairWithdraw sumlog= FairWithdraw.dao.findFirst(sql,id,FairWithdraw.STATUS_SUCCESS);
-		if (log == null) {
+		MoneyLog sumlog = MoneyLog.dao
+				.findFirst("select SUM(money) as money from " + MoneyLog.dao.tableName() + " where wh_id=? and deletetag=? and state=? ", 
+						id,MoneyLog.STATUS_SUCCESS,MoneyLog.STATE_ADD);
+//		String sql = "select SUM(money) as money from "+FairWithdraw.dao.tableName()+" where wh_id=? and status=?";
+//		FairWithdraw sumlog= FairWithdraw.dao.findFirst(sql,id,FairWithdraw.STATUS_SUCCESS);
+		if (sumlog == null) {
 			r.p("all", 0);
 		} else {
 			r.p("all", sumlog.get("money"));
@@ -833,6 +834,12 @@ public class MobilePassportService {
 		String tran_pwd = fair.getStr(Fair.TRAN_PWD);
 		return (tran_pwd == null) ? false : true;
 	}
+	
+	public boolean isOpenSMS(long uid) {
+		Fair fair = fs.findById(Integer.parseInt(uid + ""));
+		int sms_set = fair.getInt(Fair.SMS_SET);
+		return (sms_set == 0) ? false : true;
+	}
 
 	/**
 	 * 验证交易密码
@@ -870,14 +877,30 @@ public class MobilePassportService {
 		Fair fair = fs.findById(Integer.parseInt(uid + ""));
 		Double yue = fair.getDouble(Fair.MONEY); // 余额
 		double tixian = Double.parseDouble(money); // 提现金额
+		
+		if (tixian <50) {
+			return R.fail("提现金额必须超过¥50");
+		}
+		
 		if (yue == null || tixian > yue.doubleValue()) {
 			return R.fail("提现金额超出可用余额");
 		}
+		
 		String cacheToken = CacheKit.get(User.AUTH_CODE_CACHENAME, TRAN_PWD_CACHE_KEY + uid);
 		if (token.equals(cacheToken)) {
 			CacheKit.remove(User.AUTH_CODE_CACHENAME, TRAN_PWD_CACHE_KEY + uid);
-			fair.set(Fair.MONEY, yue.doubleValue() - tixian);
-			if (fair.update()) {
+//			fair.set(Fair.MONEY, yue.doubleValue() - tixian);
+			int version = fair.getInt(Fair.VERSION);
+			//增加并发时候的乐观锁校验,以免产生重复的提交信息
+			int netxtVersion = version+1;
+			//String sql = "update "+Fair.dao.tableName()+" set "+Fair.MONEY+"=?,version=? where id=? and version=?";
+			String sql = "update "+Fair.dao.tableName()+" set "+Fair.MONEY+"=?,"+Fair.AVALIABLE_FEE+"=?,version=? where id=? and version=?";
+			
+			
+			//减去当前的提现金额,更新当前数据网红数据的账户银行
+			//int result = Db.update(sql,yue.doubleValue() - tixian,netxtVersion,uid,version);
+			int result = Db.update(sql,yue,yue,netxtVersion,uid,version);
+			if (result>0) {
 				FairWithdraw fw = new FairWithdraw();
 				fw.set(FairWithdraw.BANK_ID, bankId);
 				fw.set(FairWithdraw.MONEY, tixian);
diff --git a/src/main/java/com/tianpengtech/front/mobile/publisher/MobilePublishController.java b/src/main/java/com/tianpengtech/front/mobile/publisher/MobilePublishController.java
index bd3341ebf15d28b41629c9bca4105766758e361a..056c4224bb3b306425e04719b2479fa31141e812 100644
--- a/src/main/java/com/tianpengtech/front/mobile/publisher/MobilePublishController.java
+++ b/src/main/java/com/tianpengtech/front/mobile/publisher/MobilePublishController.java
@@ -116,7 +116,6 @@ public class MobilePublishController extends BaseController {
     	String sql = "select * from fair_task_wh where wh_id=? and task_id=? limit 1";
     	TaskWh wh = TaskWh.dao.findFirst(sql,uid,taskId);
     	if(wh!=null){
-    		
     		if(StringUtils.isEmpty(wh.getStr(TaskWh.EVALUATE_WHOM))){
     			wh.set(TaskWh.EVALUATE_WHOM, content).set(TaskWh.WHOM_DATE, new Date()).update();
     			renderJson(R.ok("评论成功"));
diff --git a/src/main/java/com/tianpengtech/front/mobile/task/MobileTaskController.java b/src/main/java/com/tianpengtech/front/mobile/task/MobileTaskController.java
index 8651860fe940d23c8ee18a250e6cd23b2e5f6112..bde8956a5e007f5e2d41f218a150b0018f5d2a1b 100644
--- a/src/main/java/com/tianpengtech/front/mobile/task/MobileTaskController.java
+++ b/src/main/java/com/tianpengtech/front/mobile/task/MobileTaskController.java
@@ -1,7 +1,9 @@
 package com.tianpengtech.front.mobile.task;
 
+import com.jfinal.aop.Before;
 import com.jfinal.aop.Clear;
 import com.jfinal.plugin.activerecord.Db;
+import com.jfinal.plugin.activerecord.tx.Tx;
 import com.tianpengtech.common.exception.ValidateException;
 import com.tianpengtech.common.model.taskscreenshot.TaskScreenShot;
 import com.tianpengtech.common.model.user.User;
@@ -65,6 +67,8 @@ public class MobileTaskController extends BaseController {
 	/**
 	 * 接受任务
 	 */
+	
+	@Before(Tx.class)
 	public void acceptTask() {
 		String id = getPara("id");// 任务ID
 		if (!U.isInteger(id)) {
diff --git a/src/main/java/com/tianpengtech/front/mobile/task/MobileTaskService.java b/src/main/java/com/tianpengtech/front/mobile/task/MobileTaskService.java
index f36584762c2fda5644e70d57933126358584734e..c44e0b17c7ff82cd88e4a896e4c3626cc79615ac 100644
--- a/src/main/java/com/tianpengtech/front/mobile/task/MobileTaskService.java
+++ b/src/main/java/com/tianpengtech/front/mobile/task/MobileTaskService.java
@@ -4,6 +4,7 @@ import com.jfinal.kit.Ret;
 import com.jfinal.kit.StrKit;
 import com.jfinal.plugin.activerecord.Db;
 import com.jfinal.plugin.activerecord.Page;
+import com.jfinal.plugin.activerecord.Record;
 import com.tianpengtech.admin.dictionary.DictionaryDao;
 import com.tianpengtech.common.exception.ValidateException;
 import com.tianpengtech.common.model.authenticate.Authenticate;
@@ -13,6 +14,7 @@ import com.tianpengtech.common.model.task.Task;
 import com.tianpengtech.common.model.task.TaskWh;
 import com.tianpengtech.common.model.taskscreenshot.TaskScreenShot;
 import com.tianpengtech.common.util.DateUtils;
+import com.tianpengtech.common.util.XxxUtil;
 import com.tianpengtech.front.mobile.common.util.R;
 import com.tianpengtech.front.web.passport.AuthenticateSerivce;
 import com.tianpengtech.front.web.task.TaskService;
@@ -48,15 +50,16 @@ public class MobileTaskService {
 	 * @return
 	 */
 	public R taskIndex(int pageNum, int length, long uid) {
-		String s = String.format("select task.task_type, task.create_user, %s,%s,%s,%s,%s,%s,%s,%s ", Task.STATUS,
+		String s = String.format("select task.task_type,task.total_fee, task.create_user, %s,%s,%s,%s,%s,%s,%s,%s ", Task.STATUS,
 				Task.ID, Task.TASK_TITLE, Task.TASK_START_TIME, Task.TASK_END_TIME, Task.TASK_DESCRIPTION,
 				Task.TASK_PRICE, Task.WH_NUMBER);
 		String sql = String.format(
-//				" from %s task where (task.%s in (?,?,?) and task.%s>?) and task.%s=? and task.%s=? "
-				" from %s task where (task.%s in (?,?)) and task.%s=? and task.%s=? "
-						+ "and task.%s not in(select %s from %s tw where tw.%s=?) order by task.id desc",
-//				taskDao.tableName(), Task.STATUS, Task.TASK_START_TIME, Task.DELETETAG, Task.EXTENSION_TYPE, Task.ID,
+				" from %s task where (task.%s in (?,?,?) ) and task.%s=? and task.%s=? "
+//				" from %s task where (task.%s in (?,?)) and task.%s=? and task.%s=? "
+//						+ "and task.%s not in(select %s from %s tw where tw.%s=?) order by task.id desc",
+						+ " order by task.id desc",
 				taskDao.tableName(), Task.STATUS, Task.DELETETAG, Task.EXTENSION_TYPE, Task.ID,
+//				taskDao.tableName(), Task.STATUS, Task.DELETETAG, Task.EXTENSION_TYPE, Task.ID,
 				TaskWh.TASK_ID, TaskWh.dao.tableName(), TaskWh.WH_ID);
 		String startDate = DateUtils.formateData(new Date(), DateUtils.YYMMdd_FORMAT);
 
@@ -65,8 +68,8 @@ public class MobileTaskService {
 
 		startDate = startDate + " 00:00:00";
 		Page<Task> page = taskDao.paginate(pageNum, length, s, sql,
-//				new Object[] { Task.STATUS_SUCCESS,Task.STATUS_START,Task.STATUS_COMPLETED, startDate, Task.DELETE_STATUS_NO, Task.EXT_TYPE_RL, uid });
-		new Object[] { Task.STATUS_SUCCESS,Task.STATUS_COMPLETED,Task.DELETE_STATUS_NO, Task.EXT_TYPE_RL, uid });
+				new Object[] { Task.STATUS_SUCCESS,Task.STATUS_START,Task.STATUS_COMPLETED, Task.DELETE_STATUS_NO, Task.EXT_TYPE_RL});
+//		new Object[] { Task.STATUS_SUCCESS,Task.STATUS_COMPLETED,Task.DELETE_STATUS_NO, Task.EXT_TYPE_RL, uid });
 		page.getList().forEach(t -> {
 			t.put("rece", t.getRece());
 			t.put("statusStr", t.status());
@@ -81,7 +84,7 @@ public class MobileTaskService {
 			int type = t.getInt(Task.TASK_TYPE);
 			int total = (type == Task.EXT_TYPE_RL) ? t.getInt(Task.WH_NUMBER) : t.getInt(Task.WH_NUMBER);
 			t.put("total", total);
-			t.put("haveAccept", queryAcceptNum(t.getLong(Task.ID), t.getInt(Task.TASK_TYPE)));
+			t.put("haveAccept", queryAcceptNum(t.getLong(Task.ID), t.getInt(Task.TASK_TYPE),t.getInt(Task.WH_NUMBER)));
 			t.put("dateString", t.getDateString());
 			boolean result = TaskService.isExistFairTask(uid + "", t.getLong(Task.ID) + "");
 			t.put("isJoin", result);
@@ -90,6 +93,9 @@ public class MobileTaskService {
 			int priceLevel = fair.getInt(Fair.PRICE);
 			boolean canApply = (priceLevel>=t.getDouble(Task.TASK_PRICE));
 			t.put("canApply", canApply);
+			t.set("task_price",TaskCalculateService.ME.calculateTaskTotalFee(t));
+			t.set(Task.TASK_TITLE,XxxUtil.handleContent(t.getStr(Task.TASK_TITLE), 14));
+			t.set(Task.TASK_DESCRIPTION,XxxUtil.handleContent(t.getStr(Task.TASK_DESCRIPTION),103));
 		});
 		R r = R.ok();
 		r.p("pageNum", pageNum);
@@ -99,16 +105,18 @@ public class MobileTaskService {
 		return r;
 	}
 
-	public long queryAcceptNum(long taskId, int taskType) {
+	public long queryAcceptNum(long taskId, int taskType,int limitNum) {
 		long num = 0;
 		if (taskType == Task.EXT_TYPE_ZD) {
 			String sql = "select count(id) as id from fair_task_wh where task_id=?";
 			num = Db.queryLong(sql, taskId);
 		}
-		if (taskType == Task.EXT_TYPE_ZD) {
+		if (taskType == Task.EXT_TYPE_RL) {
 			String sql = "select count(id) as id from fair_task_wh where task_id=?";
 			num = Db.queryLong(sql, taskId);
 		}
+		
+		//num = (num>limitNum)?limitNum:num;
 		return num;
 	}
 
@@ -136,7 +144,7 @@ public class MobileTaskService {
 	 */
 	public R findTask(int pageNum, int length, Map<String, Object> params) {
 		List<Object> param = new ArrayList<>();
-		String s = "select wh.status as wh_status, task.wh_number,task.task_type ,task.create_user,task.task_title,task.task_description,task.task_price,task.status as status,task.id as id,task.task_start_time,task.task_end_time ";
+		String s = "select wh.status as wh_status,task.total_fee, task.wh_number,task.task_type ,task.create_user,task.task_title,task.task_description,task.task_price,task.status as status,task.id as id,task.task_start_time,task.task_end_time ";
 		StringBuffer sql = new StringBuffer(" from " + taskDao.tableName() + " task left join " + TaskWh.dao.tableName()
 				+ " wh on task." + Task.ID + "=wh." + TaskWh.TASK_ID + " left join " + Fair.dao.tableName()
 				+ " fair on fair." + Fair.ID + "=wh." + TaskWh.WH_ID);
@@ -188,14 +196,19 @@ public class MobileTaskService {
 			t.put("company", companyName);
 			t.put("companyLogo", logo);
 
+			t.set(Task.TASK_TITLE,XxxUtil.handleContent(t.getStr(Task.TASK_TITLE), 14));
+			
 			int type = t.getInt(Task.TASK_TYPE);
 			
-			int total = (type == Task.EXT_TYPE_RL) ? t.getInt(Task.WH_NUMBER) : t.getInt(Task.WH_NUMBER);
+			int total = (type == Task.EXT_TYPE_RL) ? 200 : t.getInt(Task.WH_NUMBER);
 			t.put("total", total);
-			t.put("haveAccept", queryAcceptNum(t.getLong(Task.ID), type));
+			t.set("task_price",TaskCalculateService.ME.calculateTaskTotalFee(t));
+			t.put("haveAccept", queryAcceptNum(t.getLong(Task.ID), type,t.getInt(Task.WH_NUMBER)));
 			boolean result = TaskService.isExistFairTask(params.get("user") + "", t.getLong(Task.ID) + "");
 			t.put("isJoin", result);
 			// t.put("hasApprover", hasApprover);
+			t.set(Task.TASK_TITLE,XxxUtil.handleContent(t.getStr(Task.TASK_TITLE), 14));
+			t.set(Task.TASK_DESCRIPTION,XxxUtil.handleContent(t.getStr(Task.TASK_DESCRIPTION),103));
 		}
 		R r = R.ok();
 		r.p("count", page.getTotalRow());
@@ -208,22 +221,37 @@ public class MobileTaskService {
 
 	public R getTask(long id, long uid) {
 		StringBuffer sql = new StringBuffer(
-				"select task.task_type ,wh.reason ,wh.title as rec_title, wh.status as wh_status, wh.code, task.task_url, task.create_user, task.task_title,task.task_description,task.task_price,task.status as status,task.id as id,task.task_start_time,task.task_end_time,wh.click_num,wh.cvs_num,wh.id as whid,task.task_url from "
+				"select task.total_fee,task.extension_type,task.wh_number,task.task_type ,wh.reason ,wh.title as rec_title, wh.status as wh_status, wh.code, task.task_url, task.create_user, task.task_title,task.task_description,task.task_price,task.status as status,task.id as id,task.task_start_time,task.task_end_time,wh.click_num,wh.cvs_num,wh.id as whid,task.task_url from "
 						+ taskDao.tableName() + " task left join " + TaskWh.dao.tableName() + " wh on task." + Task.ID
 						+ "=wh." + TaskWh.TASK_ID + " where wh." + TaskWh.TASK_ID + "=? and wh." + TaskWh.WH_ID + "=?");
 		Task task = taskDao.findFirst(sql.toString(), id, uid);
+		String url ="http://www.ele-young.com/platform/mission?id=" + id;
+//		String url ="http://192.168.1.101:8091/platform/mission?id=" + id;
 		if (task == null) {
 			sql = new StringBuffer(
-					"select task.task_type, wh.reason , wh.code,task.task_url, task.create_user,task.task_title,task.task_description,task.task_price,task.status as status,task.id as id,task.task_start_time,task.task_end_time,wh.click_num,wh.cvs_num,wh.id as whid,task.task_url from "
+					"select task.total_fee,task.extension_type,task.wh_number,task.task_type, wh.reason , wh.code,task.task_url, task.create_user,task.task_title,task.task_description,task.task_price,task.status as status,task.id as id,task.task_start_time,task.task_end_time,wh.click_num,wh.cvs_num,wh.id as whid,task.task_url from "
 							+ taskDao.tableName() + " task left join " + TaskWh.dao.tableName() + " wh on task."
 							+ Task.ID + "=wh." + TaskWh.TASK_ID + " where task." + Task.ID + "=?");
 			task = taskDao.findFirst(sql.toString(), id);
-			task.put("sumClick", 0);
-			task.put("sumCvs", 0);
+			task.put("sumClick",task.getClick());
+			task.put("sumCvs",task.getCvs());
+			task.put("click_num",0);
+			task.put("cvs_num",0);
+			task.put("actual_price",0);
 		} else {
 			task.put("sumClick", task.getClick());
 			task.put("sumCvs", task.getCvs());
+//			task.put("sumClick",task.getLong(TaskWh.CLICK_NUM));
+//			task.put("sumCvs", task.getLong(TaskWh.CVS_NUM));
+			task.put("click_num",task.getLong(TaskWh.CLICK_NUM));
+			task.put("cvs_num",task.getLong(TaskWh.CVS_NUM));
+			long click_num =task.getLong(TaskWh.CLICK_NUM);
+			task.put("actual_price",TaskCalculateService.ME.IShouldPayHowMuchMoney(click_num, task));
+			if(task.getStr("code")!=null){
+				url =url+ "&ucode=" + task.getStr("code");
+			}
 		}
+		task.set("task_price",TaskCalculateService.ME.calculateTaskTotalFee(task));
 		task.put("dateString", task.getDateString());
 		Authenticate auth = AuthenticateSerivce.ME.findAuthenticateByUserId(task.getInt(Task.CREATE_USER));
 		String companyName = (auth == null) ? "未知" : auth.getStr(Authenticate.COMPANY_NAME);
@@ -233,27 +261,43 @@ public class MobileTaskService {
 		task.put("company", companyName);
 		task.put("companyId", companyId);
 		task.put("companyLogo", logo);
-		String url ="http://www.ele-young.com/platform/mission?id=" + id;
-		if(task.getStr("code")!=null){
-			url =url+ "&ucode=" + task.getStr("code");
-		}
+//		
+		
 		
 		task.put("task_url", url);
 		R r = R.ok();
 		r.p("task", task);
 		task.put("acceptNum", 0);
+		
+		int wh_num = (task.getInt(Task.EXTENSION_TYPE)==Task.EXT_TYPE_RL)?200:task.getInt(Task.WH_NUMBER);
 		// if (task.getInt("status")!=Task.STATUS_SUCCESS) {
 		String fairs = String.format(
-				"select wh.descript as descript, wh.photo,wh.nick_name,wh.id as id,task.task_price,wt.cvs_num,wt.click_num from %s wt left join %s wh on wt.%s=wh.%s left join %s task on wt.%s=task.%s where wt.%s=? order by wt.%s desc",
+				"select wt.code, wh.descript as descript, wh.photo,wh.nick_name,wh.id as id,task.task_price,wt.cvs_num,wt.click_num,wt.wh_id from %s wt "
+				+ "left join %s wh on wt.%s=wh.%s left join %s task on wt.%s=task.%s where wt.%s=? "
+				+ "order by wt.%s desc limit "+ wh_num,
 				TaskWh.dao.tableName(), Fair.dao.tableName(), TaskWh.WH_ID, Fair.ID, Task.dao.tableName(),
-				TaskWh.TASK_ID, Task.ID, TaskWh.TASK_ID, TaskWh.CVS_NUM);
+				TaskWh.TASK_ID, Task.ID, TaskWh.TASK_ID, TaskWh.CLICK_NUM);
 		List<Fair> fairses = fairDao.find(fairs, id);
 		for (int i = 0; i < fairses.size(); i++) {
+			//假如包含自己,则剔除自己再列表中的位置
 			Fair f = fairses.get(i);
+//			if(f.getLong(TaskWh.WH_ID)==uid){
+//				fairses.remove(f);
+//				continue;
+//			}
 			f.put("no", i + 1);
 			String photo = ((f.getStr(Fair.PHOTO).equals("/upload/avatar/x.jpg")) ? defaultAvatar
 					: f.getStr(Fair.PHOTO));
 			f.set(Fair.PHOTO, photo);
+			long click_num =f.getLong(TaskWh.CLICK_NUM);
+			f.put("task_price",TaskCalculateService.ME.IShouldPayHowMuchMoney(click_num, task));
+			
+			String fairUrl ="http://www.ele-young.com/platform/mission?id=" + id;
+//			String fairUrl ="http://192.168.1.101:8091/platform/mission?id=" + id;
+			if(f.getStr("code")!=null){
+				fairUrl =fairUrl+ "&ucode=" + f.getStr("code");
+			}
+			f.put("fairUrl",fairUrl);
 		}
 		r.p("fairs", fairses);
 		int num = (fairses.isEmpty()) ? 0 : fairses.size();
@@ -264,7 +308,7 @@ public class MobileTaskService {
 		Fair fair = Fair.dao.findById(uid);
 		boolean hasApprover = (fair != null && (fair.getInt(Fair.STATUS) == Fair.STATUS_SUCCESS)) ? true : false;
 		task.put("hasApprover", hasApprover);
-		
+		task.put("wh_status", Task.STATUS_COMPLETED);
 		String photo = ((fair.getStr(Fair.PHOTO).equals("/upload/avatar/x.jpg")) ? defaultAvatar
 				: fair.getStr(Fair.PHOTO));
 		task.put("myAvatar",photo);
@@ -292,34 +336,49 @@ public class MobileTaskService {
 			return r;
 		}
 		
-		List<TaskWh> taskWh= TaskService.queryFairTask(uid+"", taskId);
+		
+		//将报名信息加入报名的队列信息,获取生成的唯一的自助ID数据
+		Record record = new Record();
+		int pre_apply=1;//预报名
+		record.set("wh_id", uid);
+		record.set("task_id", taskId);
+		record.set("status", pre_apply);
+		Db.save("fair_task_queue", record);
+		int queueId = record.getInt("id");
+		
+		if(queueId<=0){
+			r = R.fail("报名排队失败");
+			return r;
+		}
+		
 		//检查当前网红报名任务个数是否超过系统设定值,假如超过,则提示信息
 		Dictionary dictionary = DictionaryDao.ME.readDirecotryByCode(Dictionary.SYS_APPLY_NUM);
-		
 		int applyNum = Integer.parseInt(dictionary.getStr(Dictionary.NAME));
 		List<TaskWh> wh_tasks = queryFairWhTasksToday(uid);
-		
 		if(wh_tasks.size()>=applyNum){
 			r = R.fail("你每天只能接受"+applyNum+"个任务");
 			return r;
 		}
 		
+		boolean result = TaskService.isExistFairTask(uid + "", taskId);
+		if (result) {
+			r = R.fail("你已经接受了当前任务,请勿重复操作!!");
+			return r;
+		}
 		
-		if(taskWh.size()>=task.getInt(Task.WH_NUMBER)){
+		int wh_num = (task.getInt(Task.EXTENSION_TYPE)==Task.EXT_TYPE_RL)?200:task.getInt(Task.WH_NUMBER);
+		List<TaskWh> taskWh= TaskService.queryFairApplyNumTask(taskId);
+		if(taskWh.size()>=wh_num){
 			r = R.fail("报名人数已经够了,感谢你的关注");
 			return r;
 		}
 		
-		boolean result = TaskService.isExistFairTask(uid + "", taskId);
-		if (result) {
-			r = R.fail("你已经接受了当前任务,请勿重复操作!!");
+		ret = taskService.saveTaskWait(new String[] { uid + "" }, taskId);
+		if (ret.isOk()) {
+			Db.update("update fair_task_queue set status=2 where id=?",queueId);//将预报名信息变成正式报名状态,此时报名task_wh表中才有一条正式的报名信息
+			r = R.ok();
 		} else {
-			ret = taskService.saveTaskWait(new String[] { uid + "" }, taskId);
-			if (ret.isOk()) {
-				r = R.ok();
-			} else {
-				r = R.fail(ret.getStr("msg"));
-			}
+			r = R.fail(ret.getStr("msg"));
 		}
 		return r;
 	}
diff --git a/src/main/java/com/tianpengtech/front/mobile/task/TaskCalculateService.java b/src/main/java/com/tianpengtech/front/mobile/task/TaskCalculateService.java
new file mode 100644
index 0000000000000000000000000000000000000000..eb6929607dab91937bd036d99259ae67b86abe29
--- /dev/null
+++ b/src/main/java/com/tianpengtech/front/mobile/task/TaskCalculateService.java
@@ -0,0 +1,58 @@
+package com.tianpengtech.front.mobile.task;
+
+import com.jfinal.plugin.activerecord.Db;
+import com.jfinal.plugin.activerecord.Record;
+import com.tianpengtech.common.model.task.Task;
+import com.tianpengtech.common.model.user.User;
+
+/**
+ * 任务费用计算相关类
+ * @author tianpengtech
+ *
+ */
+public class TaskCalculateService {
+
+	public static TaskCalculateService ME = new TaskCalculateService();
+	/**
+	 * 计算,每个人接受任务后通过点击数来计算任务费用
+	 * @param click_num
+	 * @param task
+	 * @return
+	 */
+	public int IShouldPayHowMuchMoney(long click_num,Task task){
+		double actualFee=0;
+		actualFee =  click_num *0.3;
+		double totoalFee = calculateTaskTotalFee(task);
+		actualFee = (actualFee>totoalFee)?totoalFee:actualFee;
+		int actualFeeInt = (int)actualFee;
+		return actualFeeInt;
+	}
+	
+	public double calculateTaskTotalFee(Task task){
+		double totoalFee =task.getDouble(Task.TASK_PRICE)*task.getInt(Task.WH_NUMBER);
+		totoalFee = (totoalFee==0)?task.getDouble(Task.TOTAL_FEE):totoalFee;
+		return totoalFee;
+	}
+	
+	
+	/**
+	 * 同步指定人的总收益数据信息
+	 * @param totalFee
+	 * @param userId
+	 */
+	public void syncTotalProfit(double totalFee,long userId){
+		
+		Record record = Db.findFirst("select * from fair_total_profit where wh_id=?",userId);
+		if(record!=null){
+			if(totalFee!=record.getDouble("profit")){
+				int id = record.getInt("id");
+				Db.update("update fair_total_profit set profit=?,wh_id=? where id =?",totalFee,userId,id);
+			}
+		}else{
+			record = new Record();
+			record.set("profit", totalFee);
+			record.set("wh_id", userId);
+			Db.save("fair_total_profit", record);
+		}
+	}
+}
diff --git a/src/main/java/com/tianpengtech/front/web/fair/FairWebController.java b/src/main/java/com/tianpengtech/front/web/fair/FairWebController.java
index 2a6fba9290b34745d23e525c255de84a0e0e2ebb..f6fc3e1dd5c3bd2ae27c59bd343a3535a894bb35 100644
--- a/src/main/java/com/tianpengtech/front/web/fair/FairWebController.java
+++ b/src/main/java/com/tianpengtech/front/web/fair/FairWebController.java
@@ -34,7 +34,7 @@ public class FairWebController extends BaseController {
         setAttr("platform",dictionaryDao.readParents(10055));
         setAttr("channel",dictionaryDao.readParents(10056));
         setAttr("features",AppSettingDao.dao.getAppSettingByCategory(AppSetting.FANS));
-        setAttr("prices",taskService.getPriceList());
+        setAttr("prices",taskService.getTaskTotalPriceList());
         render("fair_list.html");
     }
 
diff --git a/src/main/java/com/tianpengtech/front/web/job/TaskJob.java b/src/main/java/com/tianpengtech/front/web/job/TaskEndJob.java
similarity index 90%
rename from src/main/java/com/tianpengtech/front/web/job/TaskJob.java
rename to src/main/java/com/tianpengtech/front/web/job/TaskEndJob.java
index 5f4b992ac42e1c2af55c3834eb319181e28a74d7..c7d6a77398a78ba87496a14f8af39bed223ec354 100644
--- a/src/main/java/com/tianpengtech/front/web/job/TaskJob.java
+++ b/src/main/java/com/tianpengtech/front/web/job/TaskEndJob.java
@@ -14,13 +14,13 @@ import java.util.List;
 /**
  * Created by ggd on 2017/6/21 0021.
  */
-public class TaskJob implements Job {
+public class TaskEndJob implements Job {
 
     private static TaskService taskService = Duang.duang(TaskService.class,Tx.class);
     @Override
     public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
         //taskService.taskJob();
-    	taskService.setTaskToStart();
+    	//taskService.setTaskToStart();
     	taskService.setTaskToEnd();
 //    	System.out.println("修正Task的状态");
     }
diff --git a/src/main/java/com/tianpengtech/front/web/job/TaskStartJob.java b/src/main/java/com/tianpengtech/front/web/job/TaskStartJob.java
new file mode 100644
index 0000000000000000000000000000000000000000..7edc2d108402f5d70dc9fda95222902f5da39ad4
--- /dev/null
+++ b/src/main/java/com/tianpengtech/front/web/job/TaskStartJob.java
@@ -0,0 +1,27 @@
+package com.tianpengtech.front.web.job;
+
+import com.jfinal.aop.Duang;
+import com.jfinal.plugin.activerecord.Db;
+import com.jfinal.plugin.activerecord.tx.Tx;
+import com.tianpengtech.common.model.task.Task;
+import com.tianpengtech.front.web.task.TaskService;
+import org.quartz.Job;
+import org.quartz.JobExecutionContext;
+import org.quartz.JobExecutionException;
+
+import java.util.List;
+
+/**
+ * Created by ggd on 2017/6/21 0021.
+ */
+public class TaskStartJob implements Job {
+
+    private static TaskService taskService = Duang.duang(TaskService.class,Tx.class);
+    @Override
+    public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
+        //taskService.taskJob();
+    	//taskService.setTaskToStart();
+    	taskService.setTaskToEnd();
+//    	System.out.println("修正Task的状态");
+    }
+}
diff --git a/src/main/java/com/tianpengtech/front/web/main/MainWebController.java b/src/main/java/com/tianpengtech/front/web/main/MainWebController.java
index e0e24f525c9eabf253a2f601b26c86bdd98c654d..40cb0c6f8e64067be27b9d97d75c90b7fee8e30b 100644
--- a/src/main/java/com/tianpengtech/front/web/main/MainWebController.java
+++ b/src/main/java/com/tianpengtech/front/web/main/MainWebController.java
@@ -2,6 +2,7 @@ package com.tianpengtech.front.web.main;
 
 import com.jfinal.plugin.activerecord.Db;
 import com.jfinal.plugin.activerecord.Record;
+import com.tianpengtech.common.model.authenticate.Authenticate;
 import com.tianpengtech.common.model.task.Task;
 import com.tianpengtech.common.model.user.User;
 import com.tianpengtech.common.util.DateUtils;
@@ -29,6 +30,11 @@ public class MainWebController extends BaseController {
         if (record!=null){
             record.set("create_time", DateUtils.formateData(record.getDate("create_time"), DateUtils.YYMMDDHHMMSS_FORMAT));
         }
+        User user=getAttr(LoginService.loginAccountCacheName);
+        
+        sql="select * from "+Authenticate.dao.tableName()+" where user_id =? limit 1";
+        Authenticate authenticate = Authenticate.dao.findFirst(sql,user.getLong(User.ID));
+        setAttr("authenticate",authenticate);
     	setAttr("record",record);
         renderTemplate(Page.MAIN);
     }
diff --git a/src/main/java/com/tianpengtech/front/web/passport/PassportWebController.java b/src/main/java/com/tianpengtech/front/web/passport/PassportWebController.java
index 73c61906229f7238fd96e26967a102d4d1e05323..ff29592e80267edde1cbbdb5ceba75caf1280c9b 100644
--- a/src/main/java/com/tianpengtech/front/web/passport/PassportWebController.java
+++ b/src/main/java/com/tianpengtech/front/web/passport/PassportWebController.java
@@ -15,6 +15,7 @@ import com.tianpengtech.common.util.IpKit;
 import com.tianpengtech.common.util.JsonUtil;
 import com.tianpengtech.common.util.QiNiuUtil;
 import com.tianpengtech.common.util.SendSmsMsg;
+import com.tianpengtech.common.util.XxxUtil;
 import com.tianpengtech.front.web.common.constant.Page;
 import com.tianpengtech.front.web.common.controller.BaseController;
 import com.tianpengtech.front.web.common.interceptor.PassportInterceptor;
@@ -112,7 +113,7 @@ public class PassportWebController extends BaseController {
             User user=getAttr(LoginService.loginAccountCacheName);
             auth.set(Authenticate.USER_ID,user.get(User.ID));
 			srv.save(auth);
-			PushKit.pushSystemMessageNow("用户【"+user.getStr(User.MOBILE)+"】提交了"+auth.getStr(Authenticate.COMPANY_NAME)+"的认证资料");
+			PushKit.pushSystemMessageNow("用户【"+XxxUtil.hiddenMobile(user.getStr(User.MOBILE))+"】提交了"+auth.getStr(Authenticate.COMPANY_NAME)+"的认证资料");
 			renderJson(JsonUtil.printSuccess("提交认证资料成功"));
 //			render("auth_working.html");
 		} catch (ValidateException e) {
diff --git a/src/main/java/com/tianpengtech/front/web/qiniu/QiNiuController.java b/src/main/java/com/tianpengtech/front/web/qiniu/QiNiuController.java
index 3a17a66b1d630376578dbb7740351e0dee078b01..5a926f2d5fa00285fbdeb57d9795ca0769353f79 100644
--- a/src/main/java/com/tianpengtech/front/web/qiniu/QiNiuController.java
+++ b/src/main/java/com/tianpengtech/front/web/qiniu/QiNiuController.java
@@ -26,8 +26,9 @@ public class QiNiuController extends BaseController {
 
     public void upload() throws Exception {
         UploadFile upfile=getFile();
+        String category = getPara("category","pc-");
         try {
-            String upload = QiNiuUtil.upload(new FileInputStream(upfile.getFile()));
+            String upload = QiNiuUtil.upload(new FileInputStream(upfile.getFile()),category);
             upfile.getFile().delete();
             renderText(upload);
         } catch (Exception e) {
diff --git a/src/main/java/com/tianpengtech/front/web/task/TaskService.java b/src/main/java/com/tianpengtech/front/web/task/TaskService.java
index 913f078a8637d6983b7308fa3e04be4a1efc9850..25e2b2f71ba9026f8d4bd8d0122f55630c799f14 100644
--- a/src/main/java/com/tianpengtech/front/web/task/TaskService.java
+++ b/src/main/java/com/tianpengtech/front/web/task/TaskService.java
@@ -73,14 +73,17 @@ public class TaskService {
     public void save(Task task,String[] source) throws ValidateException{
         
     	int h5_type=task.getInt(Task.H5_TYPE);
-    	float price= task.getFloat(Task.TASK_PRICE);
+//    	float price= task.getFloat(Task.TASK_PRICE);
+    	float totalFee= task.getFloat(Task.TOTAL_FEE);
     	int extension_type=task.getInt(Task.EXTENSION_TYPE);
     	String sql="select * from "+Authenticate.dao.tableName()+" where "+Authenticate.USER_ID+" =?";
     	Authenticate auth = Authenticate.dao.findFirst(sql, task.getLong(Task.CREATE_USER));
     	
     	Date start = task.getDate(Task.TASK_START_TIME);
     	Date end = task.getDate(Task.TASK_END_TIME);
-    	
+    	String endStr = DateUtils.formateData(end, DateUtils.YYMMdd_FORMAT);
+    	endStr = endStr+" 23:59:59";
+    	end = DateUtils.string2Date(endStr, DateUtils.YYMMDDHHMMSS_FORMAT);
     	Date now = new Date();
     	Validator validator = new Validator();
     	int status = (auth==null)?Authenticate.STATUS_FAILURE:auth.getInt(Authenticate.STATUS);
@@ -93,12 +96,16 @@ public class TaskService {
     	validator.addRule(new NumbericMustBeGreaterEqualThan(end.getTime(),start.getTime(),"任务结束日期必须在开始日期之后"));
     	validator.addRule(new NumbericMustBeGreaterEqualThan(start.getTime(),now.getTime(),"任务开始时间必须在今天日期之后"));
     	
-    	validator.addRule(new StringMustBeRequired(price+"","任务酬劳不能为空"));
-    	validator.addRule(new NumbericMustBeGreaterEqualThan((int)price,0,"请设置任务酬劳"));
+//    	validator.addRule(new StringMustBeRequired(price+"","任务酬劳不能为空"));
+//    	validator.addRule(new NumbericMustBeGreaterEqualThan((int)price,0,"请设置任务酬劳"));
+    	validator.addRule(new StringMustBeRequired(totalFee+"","任务预算不能为空"));
+    	validator.addRule(new NumbericMustBeGreaterEqualThan((int)totalFee,0,"请设置任务预算"));
     	validator.addRule(new StringLengthBetween(task.getStr(Task.TASK_DESCRIPTION),"任务描述不能超过400字符",1,400));
     	
+    	
     	if(extension_type==Task.EXT_TYPE_ZD){
-    		validator.addRule(new NumbericMustBeLessEqualThan(task.getInt(Task.WH_NUMBER),2000,"主播数量不能超过2000个"));
+//    		validator.addRule(new NumbericMustBeLessEqualThan(task.getInt(Task.WH_NUMBER),2000,"主播数量不能超过2000个"));
+    		validator.addRule(new NumbericMustBeLessEqualThan(0,2000,"主播数量不能超过2000个"));
     	}
     	
     	if(h5_type==2){
@@ -111,7 +118,7 @@ public class TaskService {
         }else{
             task.set(Task.STATUS,Task.STATUS_APPROVING);
         }
-    	
+    	task.set(Task.TASK_END_TIME, end);
         task.save();
         if (source!=null && source.length>0){
             for (int i=0;i<source.length;i++) {
@@ -182,6 +189,13 @@ public class TaskService {
          List<TaskWh> list=TaskWh.dao.find(sql,new Object[]{taskID,id});
          return list;
     }
+    
+    
+    public static List<TaskWh>  queryFairApplyNumTask(String taskID){
+   	 	String sql = "select tw.id from "+TaskWh.dao.tableName()+" tw  where "+TaskWh.TASK_ID+ "=? and status=? and  tw."+TaskWh.DELETETAG+"="+TaskWh.DELETE_STATUS_NO;
+        List<TaskWh> list=TaskWh.dao.find(sql,new Object[]{taskID,Task.STATUS_START});
+        return list;
+   }
 
     /**
      * 点击任务链接保存
@@ -194,19 +208,28 @@ public class TaskService {
             TaskWh taskWh = getByCode(code);
 //            boolean devModel = PropKit.getBoolean("devMode");
             boolean devModel = getTaskCountMode();
+          
+            //只有当任务处于进行中,才能够进行数据统计
             
             if(taskWh==null){
             	return ;
             }
-            if (!devModel) {//假如是真实环境,则只记录真实的点击数
-                Object i = CacheKit.get(TASK_CACHE_CLICK_NAME, ip + taskWh.get(TaskWh.ID));
-                if (i != null) {//假如当前记录再有效期内,则不记录当前数据
-                	return;
+            Task task = taskDao.findById(taskWh.getLong(TaskWh.TASK_ID));
+            if(task==null){
+            	return;
+            }
+            
+            if(task.getInt(Task.STATUS)==Task.STATUS_START){
+            	if (!devModel) {//假如是真实环境,则只记录真实的点击数
+                    Object i = CacheKit.get(TASK_CACHE_CLICK_NAME, ip + taskWh.get(TaskWh.ID));
+                    if (i != null) {//假如当前记录再有效期内,则不记录当前数据
+                    	return;
+                    }
+                    updateRealClickNum(ref, ua, ip, code, taskWh);
+                }else{
+                	updateRealClickNum(ref, ua, ip, code, taskWh);
+                	updateDevClickNum(ref, ua, ip, code, taskWh,TaskCount.TYPE_DEV);
                 }
-                updateRealClickNum(ref, ua, ip, code, taskWh);
-            }else{
-            	updateRealClickNum(ref, ua, ip, code, taskWh);
-            	updateDevClickNum(ref, ua, ip, code, taskWh,TaskCount.TYPE_DEV);
             }
             
         }
@@ -263,17 +286,24 @@ public class TaskService {
             if(taskWh==null){
             	return;
             }
-            //如果是测试环境
-            if (!devModel) {
-                Object i = CacheKit.get(TASK_CACHE_CLICK_NAME, ip + taskWh.get(TaskWh.ID));
-                //判断在缓存有效期内是否点击过
-                if (i != null) {
-                    return;
+            Task task = taskDao.findById(taskWh.getLong(TaskWh.TASK_ID));
+            if(task==null){
+            	return;
+            }
+            
+            if(task.getInt(Task.STATUS)==Task.STATUS_START){
+            	//如果是测试环境
+                if (!devModel) {
+                    Object i = CacheKit.get(TASK_CACHE_CLICK_NAME, ip + taskWh.get(TaskWh.ID));
+                    //判断在缓存有效期内是否点击过
+                    if (i != null) {
+                        return;
+                    }
+                    updateRealCVS(ref, ua, ip, code, taskWh,TaskCount.TYPE_PRO);
+                }else{
+                	updateRealCVS(ref, ua, ip, code, taskWh,TaskCount.TYPE_PRO);
+                	updateDevCVS(ref, ua, ip, code, taskWh,TaskCount.TYPE_DEV);
                 }
-                updateRealCVS(ref, ua, ip, code, taskWh,TaskCount.TYPE_PRO);
-            }else{
-            	updateRealCVS(ref, ua, ip, code, taskWh,TaskCount.TYPE_PRO);
-            	updateDevCVS(ref, ua, ip, code, taskWh,TaskCount.TYPE_DEV);
             }
         }
     }
@@ -459,7 +489,8 @@ public class TaskService {
     }
 
     public Map<String,Object> isShowQrCode(Task task,long uid){
-    	double taskPrice = task.getDouble(Task.TASK_PRICE)*task.getInt(Task.WH_NUMBER);
+//    	double taskPrice = task.getDouble(Task.TASK_PRICE)*task.getInt(Task.WH_NUMBER);
+    	double taskPrice = task.getDouble(Task.TOTAL_FEE);
     	Map<String,Object> resultMap = new HashMap<String,Object>();
     	//假如任务为线下任务,则不出现付款二维码
     	if(task.getInt(Task.TASK_TYPE)==Task.TASK_TYPE_OFLINE){
@@ -514,6 +545,10 @@ public class TaskService {
     public List<Dictionary> getPriceList(){
     	return DictionaryDao.ME.readParents(Dictionary.CONST_PRICE_CODE);
     }
+    
+    public List<Dictionary> getTaskTotalPriceList(){
+    	return DictionaryDao.ME.readParents(Dictionary.CONST_TOTAL_PRICE_CODE);
+    }
 
 
     /**
diff --git a/src/main/java/com/tianpengtech/front/web/task/TaskWebController.java b/src/main/java/com/tianpengtech/front/web/task/TaskWebController.java
index 7535eae472aa6d5345478281f8af3e9f7f6a951d..f001b1652ad7060f3fb838563941bf398970f90e 100644
--- a/src/main/java/com/tianpengtech/front/web/task/TaskWebController.java
+++ b/src/main/java/com/tianpengtech/front/web/task/TaskWebController.java
@@ -90,7 +90,8 @@ public class TaskWebController extends BaseController {
 			return;
 		} else if (auth.getInt(Authenticate.STATUS) == Authenticate.STATUS_SUCCESS) {
 			setAttr("domain", QiNiuUtil.DOMAIN);
-			setAttr("priceList", service.getPriceList());
+			//setAttr("priceList", service.getPriceList());改成通过预算来发布任务
+			setAttr("totalPriceList", service.getTaskTotalPriceList());
 			render("task_add_new.html");
 			return;
 		} else if (auth.getInt(Authenticate.STATUS) == Authenticate.STATUS_APPROVING) {
@@ -157,7 +158,7 @@ public class TaskWebController extends BaseController {
 				"select REGION_ID,REGION_NAME from region where PARENT_ID=1"));
 		setAttr("platform", dictionaryDao.readParents(10055));
 		setAttr("channel",dictionaryDao.readParents(10056));
-		setAttr("prices",service.getPriceList());
+		setAttr("prices",service.getTaskTotalPriceList());
 		setAttr("feature", AppSettingDao.dao.getAppSettingByCategory(AppSetting.FANS));
 		render("task_fair_new.html");
 		
@@ -188,6 +189,7 @@ public class TaskWebController extends BaseController {
 		Ret ret = service.saveTaskWait(fairs, task);
 		if (ret.isOk()) {
 			Task temp = service.findTaskById(task);
+			temp.set(Task.WH_NUMBER, fairs.length).update();
 			setAttr("task",temp);
 			setAttr("isShowQrCode",service.isShowQrCode(temp, user.getLong(User.ID)));
 			setAttr("fairs", fairService.findByWhite(task));
@@ -313,6 +315,7 @@ public class TaskWebController extends BaseController {
 		renderTemplate("second-task-step.html");
 	}
 	
+	@Clear(PassportInterceptor.class)
 	public void viewH5(){
 		int id = getParaToInt(Task.ID,GlobalConfigConstant.DEFAULT_VALUE_ZERO);
 		setAttr("id", id);
@@ -428,7 +431,7 @@ public class TaskWebController extends BaseController {
 	
 	
 	public void ts(){
-		String task = "3104";
+		String task = "3117";
 		Task temp = service.findTaskById(task);
 		setAttr("task",temp);
 		setAttr("isShowQrCode",service.isShowQrCode(temp, 12));
@@ -453,9 +456,10 @@ public class TaskWebController extends BaseController {
 	}
 	
 	public void taskWh(){
-		String task = "3041";
+		String task = "3117";
 		Task temp = service.findTaskById(task);
 		setAttr("taskObj",temp);
+		setAttr("task", task);
 		render("task_fair_new.html");
 	}
 }
diff --git a/src/main/resources/.gitignore b/src/main/resources/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..e9eccc41ec346e2b38e396374474f4b934663bb3
--- /dev/null
+++ b/src/main/resources/.gitignore
@@ -0,0 +1 @@
+/a_little_config.txt
diff --git a/src/main/resources/a_little_config.txt b/src/main/resources/a_little_config.txt
index bfdbd6ffe7b1c7d14b172f65817f5907523ebed8..83c8b2ff2e71a304bbff7066d835f86692e831f6 100644
--- a/src/main/resources/a_little_config.txt
+++ b/src/main/resources/a_little_config.txt
@@ -1,6 +1,6 @@
-#jdbcUrl = jdbc:mysql://123.56.186.144:3306/bbt-test?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull
-#user = bbt
-#password =bbt123
+#jdbcUrl = jdbc:mysql://127.0.0.1:3306/fair?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull
+#user = root
+#password =
 #devMode = true
 
 jdbcUrl = jdbc:mysql://rm-bp12tm7y208td7cm9o.mysql.rds.aliyuncs.com:3306/yancolad?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull
diff --git a/src/main/webapp/.DS_Store b/src/main/webapp/.DS_Store
index 455f5e4a8bd3c1ea1d4614f05d197fb8c9ab2fad..1fc13c97ba39f1701cc4f76084555c508b73fa1f 100644
Binary files a/src/main/webapp/.DS_Store and b/src/main/webapp/.DS_Store differ
diff --git a/src/main/webapp/WEB-INF/view/admin/common/__side-bar.html b/src/main/webapp/WEB-INF/view/admin/common/__side-bar.html
index f5f9dba59d7c445b6eb5a7cfd0646384f97b849b..9ca87f40b5b0a8c479f5f5ad659252f2c0363501 100644
--- a/src/main/webapp/WEB-INF/view/admin/common/__side-bar.html
+++ b/src/main/webapp/WEB-INF/view/admin/common/__side-bar.html
@@ -13,13 +13,13 @@
 
 					<li><a _href="#(contextPath)/admin/task" data-title="任务管理"
 						href="javascript:void(0)">任务管理</a></li>
-
+						
 						<li><a _href="#(contextPath)/admin/taskscreenshot" data-title="任务截图管理"
 						href="javascript:void(0)">任务截图管理</a></li>
 					<li><a _href="#(contextPath)/admin/task/taskCountSetting" data-title="任务统计模式管理"
-						href="javascript:void(0)">任务统计模式管理</a></li>
+						href="javascript:void(0)">任务统计模式管理</a></li>	
 					<li><a _href="#(contextPath)/admin/moneylog" data-title="邀请注册统计列表"
-						href="javascript:void(0)">邀请注册统计</a></li>
+						href="javascript:void(0)">邀请注册统计</a></li>	
 					<li><a _href="#(contextPath)/admin/task/taskDataAnalysis" data-title="任务数据分析"
 						   href="javascript:void(0)">任务数据分析</a></li>
 				</ul>
@@ -152,6 +152,20 @@
 				</ul>
 				</dd>
 		</dl>
+		
+		<dl id="menu-article">
+			<dt>
+				<i class="Hui-iconfont">&#xe616;</i>平台服务费管理<i
+					class="Hui-iconfont menu_dropdown-arrow">&#xe6d5;</i>
+			</dt>
+			<dd>
+				<ul>
+					<li><a _href="#(contextPath)/admin/platformincome" data-title="平台服务费管理"
+						href="javascript:void(0)">平台服务费管理</a>
+						</li>
+				</ul>
+				</dd>
+		</dl>
 
 		<dl id="menu-article">
 			<dt>
diff --git a/src/main/webapp/WEB-INF/view/admin/fair/fair-form.html b/src/main/webapp/WEB-INF/view/admin/fair/fair-form.html
index a472a53178e2488a77352f3755412dfefef4cb4c..ea9a95ca200615402590b09e22db93298bf862ec 100644
--- a/src/main/webapp/WEB-INF/view/admin/fair/fair-form.html
+++ b/src/main/webapp/WEB-INF/view/admin/fair/fair-form.html
@@ -1,5 +1,5 @@
     <div class="row cl">
-        <label class="form-label col-xs-4 col-sm-3"><span class="c-red">*</span>头像:</label>
+        <label class="form-label col-xs-4 col-sm-3">头像:</label>
         <div class="formControls col-xs-8 col-sm-9">
             <div id="fileClick">选择头像</div>
             <div id="fileClick_prew">
@@ -15,7 +15,7 @@
     
     #--
     <div class="row cl">
-        <label class="form-label col-xs-4 col-sm-3"><span class="c-red">*</span>个人形象照:</label>
+        <label class="form-label col-xs-4 col-sm-3">个人形象照:</label>
         <div class="formControls col-xs-8 col-sm-9">
             <div id="personal_photo">选择照片(360*270)</div>
             <div id="personal_photo_prew">
@@ -30,7 +30,7 @@
     </div>
     --#
     <div class="row cl">
-        <label class="form-label col-xs-4 col-sm-3"><span class="c-red">*</span>昵称:</label>
+        <label class="form-label col-xs-4 col-sm-3">昵称:</label>
         <div class="formControls col-xs-8 col-sm-9">
             <input type="text" class="input-text" value="#(fair.nick_name??'')"
                    maxlength="50" placeholder="请输入昵称..." id="nick_name" name="fair.nick_name">
@@ -38,7 +38,7 @@
     </div>
     #--
     <div class="row cl">
-        <label class="form-label col-xs-4 col-sm-3"><span class="c-red">*</span>手机号:</label>
+        <label class="form-label col-xs-4 col-sm-3">手机号:</label>
         <div class="formControls col-xs-8 col-sm-9">
             <input type="text" class="input-text" value="#(fair.mobile??'')" #if(fair) readonly="readonly" #end
                    maxlength="50" placeholder="请输入手机号..." id="mobile" name="fair.mobile">
@@ -79,7 +79,7 @@
     </div>
     
     <div class="row cl">
-        <label class="form-label col-xs-4 col-sm-3"><span class="c-red">*</span>地区:</label>
+        <label class="form-label col-xs-4 col-sm-3">地区:</label>
         <div class="formControls col-xs-8 col-sm-9">
            <span class="select-box inline">
 	           		<select name="fair.province" class="select" id="province">
@@ -101,7 +101,7 @@
     </div>
     
     <div class="row cl">
-        <label class="form-label col-xs-4 col-sm-3"><span class="c-red">*</span>推广渠道:</label>
+        <label class="form-label col-xs-4 col-sm-3">推广渠道:</label>
         <div class="formControls col-xs-8 col-sm-9">
     		#for(cl : channel)
             	<input type="checkbox" value="#(cl.code)" name="fair.channel"> #(cl.name)
@@ -111,7 +111,7 @@
     </div>
     
     <div class="row cl">
-        <label class="form-label col-xs-4 col-sm-3"><span class="c-red">*</span>平台:</label>
+        <label class="form-label col-xs-4 col-sm-3">平台:</label>
         <div class="formControls col-xs-8 col-sm-9">
             #for(pf : platform)
             	<input type="checkbox" value="#(pf.code)"name="fair.platform"> #(pf.name)
@@ -122,7 +122,7 @@
     
     #--
     <div class="row cl">
-        <label class="form-label col-xs-4 col-sm-3"><span class="c-red">*</span>粉丝数(人):</label>
+        <label class="form-label col-xs-4 col-sm-3">粉丝数(人):</label>
         <div class="formControls col-xs-8 col-sm-9">
             <input type="text" class="input-text" value="#(fair.fans??'')"
                    maxlength="50" placeholder="请输入平台粉丝..." id="plat_fans" name="fair.fans">
diff --git a/src/main/webapp/WEB-INF/view/admin/fairbankno/fairbankno-form.html b/src/main/webapp/WEB-INF/view/admin/fairbankno/fairbankno-form.html
index 8e9cc5ed37fda44bafb6e47bdce54cc4b40f0603..a87943797a1f54535c653dce6017c7d96fa1a70c 100644
--- a/src/main/webapp/WEB-INF/view/admin/fairbankno/fairbankno-form.html
+++ b/src/main/webapp/WEB-INF/view/admin/fairbankno/fairbankno-form.html
@@ -1,48 +1,39 @@
     <div class="row cl">
-        <label class="form-label col-xs-4 col-sm-3"><span class="c-red">*</span>网红ID:</label>
-        <div class="formControls col-xs-8 col-sm-9">
-            <input type="text" class="input-text" value="#(fairbankno.wh_id??'')"
-                   maxlength="50" placeholder="请输入网红ID..." id="wh_id" name="fairbankno.wh_id">
-        </div>
+        <label class="form-label col-xs-4 col-sm-3"><span class="c-red">*</span>网红昵称:</label>
+        <div class="formControls col-xs-8 col-sm-9">#(fair.nick_name??'')</div>
     </div>
     <div class="row cl">
         <label class="form-label col-xs-4 col-sm-3"><span class="c-red">*</span>银行名称:</label>
         <div class="formControls col-xs-8 col-sm-9">
-            <input type="text" class="input-text" value="#(fairbankno.bank??'')"
-                   maxlength="50" placeholder="请输入银行名称..." id="bank" name="fairbankno.bank">
+            <input type="text" class="input-text" value="#(fairBankNo.bank??'')" readonly="readonly"
+                   maxlength="50" placeholder="请输入银行名称..." id="bank" name="fairBankNo.bank">
         </div>
     </div>
     <div class="row cl">
         <label class="form-label col-xs-4 col-sm-3"><span class="c-red">*</span>银行卡号:</label>
         <div class="formControls col-xs-8 col-sm-9">
-            <input type="text" class="input-text" value="#(fairbankno.bank_no??'')"
-                   maxlength="50" placeholder="请输入银行卡号..." id="bank_no" name="fairbankno.bank_no">
-        </div>
-    </div>
-    <div class="row cl">
-        <label class="form-label col-xs-4 col-sm-3"><span class="c-red">*</span>删除标识:</label>
-        <div class="formControls col-xs-8 col-sm-9">
-            <input type="text" class="input-text" value="#(fairbankno.deletetag??'')"
-                   maxlength="50" placeholder="请输入删除标识..." id="deletetag" name="fairbankno.deletetag">
+            <input type="text" class="input-text" value="#(fairBankNo.bank_no??'')" readonly="readonly"
+                   maxlength="50" placeholder="请输入银行卡号..." id="bank_no" name="fairBankNo.bank_no">
         </div>
     </div>
     <div class="row cl">
-        <label class="form-label col-xs-4 col-sm-3"><span class="c-red">*</span>创建时间:</label>
+        <label class="form-label col-xs-4 col-sm-3"><span class="c-red">*</span>真实姓名:</label>
         <div class="formControls col-xs-8 col-sm-9">
-            <input type="text" class="input-text" value="#(fairbankno.create_time??'')"
-                   maxlength="50" placeholder="请输入创建时间..." id="create_time" name="fairbankno.create_time">
+            <input type="text" class="input-text" value="#(fairBankNo.real_name??'')" readonly="readonly"
+                   maxlength="50" placeholder="请输入真实姓名..." id="real_name" name="fairBankNo.real_name">
         </div>
     </div>
+    
     <div class="row cl">
-        <label class="form-label col-xs-4 col-sm-3"><span class="c-red">*</span>真实姓名:</label>
+        <label class="form-label col-xs-4 col-sm-3"><span class="c-red">*</span>支行名称:</label>
         <div class="formControls col-xs-8 col-sm-9">
-            <input type="text" class="input-text" value="#(fairbankno.real_name??'')"
-                   maxlength="50" placeholder="请输入真实姓名..." id="real_name" name="fairbankno.real_name">
+            <input type="text" class="input-text" value="#(fairBankNo.branch??'')" 
+                   maxlength="50" placeholder="请输入支行名称..." id="real_name" name="fairBankNo.branch">
         </div>
     </div>
 <div class="row cl">
     <div class="col-xs-8 col-sm-9 col-xs-offset-4 col-sm-offset-3">
-        <input type="hidden" value="#(fairbankno.id??'')" id="id" name="fairbankno.id">
+        <input type="hidden" value="#(fairBankNo.id??'')" id="id" name="fairBankNo.id">
         <input class="btn btn-primary radius" type="submit" value="  提交  ">
     </div>
 </div>
\ No newline at end of file
diff --git a/src/main/webapp/WEB-INF/view/admin/fairbankno/fairbankno-list.html b/src/main/webapp/WEB-INF/view/admin/fairbankno/fairbankno-list.html
index 5451d3c75428911162e99b298c28a9a912db89ba..9654c21df64d81de55534c337767c54fee7a3fdd 100644
--- a/src/main/webapp/WEB-INF/view/admin/fairbankno/fairbankno-list.html
+++ b/src/main/webapp/WEB-INF/view/admin/fairbankno/fairbankno-list.html
@@ -26,9 +26,10 @@
                     { "data": "bank_no" },
                     { "data": "real_name" },
                     { "data": "create_time" },
+                    { "data": "branch" },
                 { "data": function(data){
-                    //var opt="<a href='javascript:;' onclick='edit("+data.id+")'>编辑</a>"+"|";
-                     var opt="<a href='javascript:;' onclick='showdetail("+data.id+")'>查看详情</a>";
+                    var opt="<a href='javascript:;' onclick='edit("+data.id+")'>编辑</a>"+"|";
+                     opt+="<a href='javascript:;' onclick='showdetail("+data.id+")'>查看详情</a>";
                      //opt+="<a href='javascript:;' onclick='del("+data.id+")'>删除</a>";
                     return opt;
                 }
@@ -103,6 +104,7 @@
                      <th>银行卡号</th>
                      <th>真实姓名</th>
                      <th>创建时间</th>
+                     <th>分行名称</th>
                    <th>操作</th>
                </tr>
                </thead>
diff --git a/src/main/webapp/WEB-INF/view/admin/fairwithdraw/fairwithdraw-list.html b/src/main/webapp/WEB-INF/view/admin/fairwithdraw/fairwithdraw-list.html
index d448cf6174764a9726efcef173ce9a86308bd8f0..8afaa12d4a22f27b13f0fa64ced15a00066640e7 100644
--- a/src/main/webapp/WEB-INF/view/admin/fairwithdraw/fairwithdraw-list.html
+++ b/src/main/webapp/WEB-INF/view/admin/fairwithdraw/fairwithdraw-list.html
@@ -24,9 +24,11 @@
                     { "data": "wh_id" },
                     { "data": "bank_id" },
                     { "data": "money" },
+                    { "data": "platform_fee" },
                     { "data": "create_time" },
                     { "data": "status" },
                     { "data": "balance" },
+                    { "data": "avaliable_fee" },
                     { "data": "real_name" },
                 { "data": function(data){
                     var opt="<a href='javascript:;' onclick='pass("+data.id+")'>处理成功</a>"+"|";
@@ -125,13 +127,11 @@
 			</span>
            <button name="" id="searchBtn" class="btn btn-success" type="submit"><i class="Hui-iconfont">&#xe665;</i>检索</button>
        </div>
-       #--
        <div class="cl pd-5 bg-1 bk-gray mt-20">
-		    <span class="l">
-		        <a href="javascript:;" onclick="add()" class="btn btn-primary radius">添加</a>
-		    </span>
-           <span class="r"></div>
-           --#
+       		<span style="color:red">【温馨提醒】<br/>
+       			平台服务费用会在当你将指定提现记录为【处理成功】后自动从提现金额中扣除,系统会做对应的流水记录
+       		</span>
+       </div>
        <div class="mt-20">
            <table class="table table-border table-bordered table-bg table-hover table-sort" id="fairwithdraw-list">
                <thead>
@@ -139,10 +139,12 @@
                      <th>ID</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>
diff --git a/src/main/webapp/WEB-INF/view/admin/platformincome/add-platformincome.html b/src/main/webapp/WEB-INF/view/admin/platformincome/add-platformincome.html
new file mode 100644
index 0000000000000000000000000000000000000000..fae81f97c7e154ea08c8dd2826f7d0fc53478b35
--- /dev/null
+++ b/src/main/webapp/WEB-INF/view/admin/platformincome/add-platformincome.html
@@ -0,0 +1,45 @@
+#@layout()
+<script>
+    $("#platformincome-add").validate({
+        rules:{
+                "platformincome.wh_id":{
+                    required:true
+                },
+                "platformincome.money":{
+                    required:true
+                },
+                "platformincome.status":{
+                    required:true
+                }
+        },
+        messages:{
+
+                "platformincome.wh_id":{
+                required:"请输入提现网红ID..."
+                },
+                "platformincome.money":{
+                required:"请输入平台收入..."
+                },
+                "platformincome.status":{
+                required:"请输入状态值..."
+                }
+        },
+        onkeyup:false,
+        focusCleanup:true,
+        success:"valid",
+        submitHandler:function(form){
+        var config = {
+        "url":"/admin/platformincome/doAdd",
+        data:$("#platformincome-add").serialize(),
+        "method":"POST"
+        };
+        var backendTool = new BackendTool(config);
+        backendTool.ajaxRequest();
+        }
+    });
+</script>
+#define main()
+     <form class="form form-horizontal" id="platformincome-add">
+        #include("platformincome-form.html")
+     </form>
+#end
\ No newline at end of file
diff --git a/src/main/webapp/WEB-INF/view/admin/platformincome/edit-platformincome.html b/src/main/webapp/WEB-INF/view/admin/platformincome/edit-platformincome.html
new file mode 100644
index 0000000000000000000000000000000000000000..2f3ac2c57cbdb32bc4e48bbca122075f54a8a93b
--- /dev/null
+++ b/src/main/webapp/WEB-INF/view/admin/platformincome/edit-platformincome.html
@@ -0,0 +1,45 @@
+#@layout()
+<script>
+    $("#platformincome-edit").validate({
+        rules:{
+                "platformincome.wh_id":{
+                    required:true
+                },
+                "platformincome.money":{
+                    required:true
+                },
+                "platformincome.status":{
+                    required:true
+                }
+        },
+        messages:{
+
+                "platformincome.wh_id":{
+                required:"请输入提现网红ID..."
+                },
+                "platformincome.money":{
+                required:"请输入平台收入..."
+                },
+                "platformincome.status":{
+                required:"请输入状态值..."
+                }
+        },
+        onkeyup:false,
+        focusCleanup:true,
+        success:"valid",
+        submitHandler:function(form){
+        var config = {
+        "url":"/admin/platformincome/updateById",
+        data:$("#platformincome-edit").serialize(),
+        "method":"POST"
+        };
+        var backendTool = new BackendTool(config);
+        backendTool.ajaxRequest();
+        }
+    });
+</script>
+#define main()
+    <form class="form form-horizontal" id="platformincome-edit">
+    #include("platformincome-form.html")
+    </form>
+#end
\ No newline at end of file
diff --git a/src/main/webapp/WEB-INF/view/admin/platformincome/platformincome-detail.html b/src/main/webapp/WEB-INF/view/admin/platformincome/platformincome-detail.html
new file mode 100644
index 0000000000000000000000000000000000000000..4215359bf735a47e539703975ef510114bae57c4
--- /dev/null
+++ b/src/main/webapp/WEB-INF/view/admin/platformincome/platformincome-detail.html
@@ -0,0 +1,17 @@
+#@layout()
+#define main()
+    <form class="form form-horizontal">
+		    	<div class="row cl">
+		    	<label class="form-label col-xs-4 col-sm-3">提现网红ID:</label>
+		        <div class="formControls col-xs-8 col-sm-9">#(platformincome.wh_id??'')</div>
+		        </div>
+		    	<div class="row cl">
+		    	<label class="form-label col-xs-4 col-sm-3">平台收入:</label>
+		        <div class="formControls col-xs-8 col-sm-9">#(platformincome.money??'')</div>
+		        </div>
+		    	<div class="row cl">
+		    	<label class="form-label col-xs-4 col-sm-3">状态值:</label>
+		        <div class="formControls col-xs-8 col-sm-9">#(platformincome.status??'')</div>
+		        </div>
+    </form>
+#end
\ No newline at end of file
diff --git a/src/main/webapp/WEB-INF/view/admin/platformincome/platformincome-form.html b/src/main/webapp/WEB-INF/view/admin/platformincome/platformincome-form.html
new file mode 100644
index 0000000000000000000000000000000000000000..24b4be5f6686e7abbeb1d60a3bfcfc4d7e8f9f9d
--- /dev/null
+++ b/src/main/webapp/WEB-INF/view/admin/platformincome/platformincome-form.html
@@ -0,0 +1,27 @@
+    <div class="row cl">
+        <label class="form-label col-xs-4 col-sm-3"><span class="c-red">*</span>提现网红ID:</label>
+        <div class="formControls col-xs-8 col-sm-9">
+            <input type="text" class="input-text" value="#(platformincome.wh_id??'')"
+                   maxlength="50" placeholder="请输入提现网红ID..." id="wh_id" name="platformincome.wh_id">
+        </div>
+    </div>
+    <div class="row cl">
+        <label class="form-label col-xs-4 col-sm-3"><span class="c-red">*</span>平台收入:</label>
+        <div class="formControls col-xs-8 col-sm-9">
+            <input type="text" class="input-text" value="#(platformincome.money??'')"
+                   maxlength="50" placeholder="请输入平台收入..." id="money" name="platformincome.money">
+        </div>
+    </div>
+    <div class="row cl">
+        <label class="form-label col-xs-4 col-sm-3"><span class="c-red">*</span>状态值:</label>
+        <div class="formControls col-xs-8 col-sm-9">
+            <input type="text" class="input-text" value="#(platformincome.status??'')"
+                   maxlength="50" placeholder="请输入状态值..." id="status" name="platformincome.status">
+        </div>
+    </div>
+<div class="row cl">
+    <div class="col-xs-8 col-sm-9 col-xs-offset-4 col-sm-offset-3">
+        <input type="hidden" value="#(platformincome.id??'')" id="id" name="platformincome.id">
+        <input class="btn btn-primary radius" type="submit" value="  提交  ">
+    </div>
+</div>
\ No newline at end of file
diff --git a/src/main/webapp/WEB-INF/view/admin/platformincome/platformincome-list.html b/src/main/webapp/WEB-INF/view/admin/platformincome/platformincome-list.html
new file mode 100644
index 0000000000000000000000000000000000000000..b929949c018295902482d22b29d8328727c71715
--- /dev/null
+++ b/src/main/webapp/WEB-INF/view/admin/platformincome/platformincome-list.html
@@ -0,0 +1,101 @@
+#@layout()
+
+#define js()
+    <script>
+    $(function(){
+        var _table;
+        _table =$("#platformincome-list").DataTable( {
+            aLengthMenu:[10,20,50],
+            "processing": true,
+            "serverSide": true,
+            "bLengthChange": false,
+            "bSort":false,
+            searching: false,//屏蔽datatales的查询框
+            "pagingType":   "full_numbers",
+            "ajax":{
+                "url": "/admin/platformincome/listAll",
+                "type": "post",
+                "data": function (params) {
+                        params["id"]=$("#id").val();
+                        params["wh_id"]=$("#wh_id").val();
+                        params["money"]=$("#money").val();
+                        params["status"]=$("#status").val();
+                }
+            },
+            "columns": [
+                    { "data": "id" },
+                    { "data": "wh_id_str" },
+                    { "data": "with_draw_money"},
+                    { "data": "money" },
+                    { "data": "status" }
+                /* { "data": function(data){
+                    var opt="<a href='javascript:;' onclick='edit("+data.id+")'>编辑</a>"+"|";
+                     opt+="<a href='javascript:;' onclick='showdetail("+data.id+")'>查看详情|</a>";
+                     opt+="<a href='javascript:;' onclick='del("+data.id+")'>删除</a>";
+                    return "";
+                }
+                } */
+            ]
+        } );
+        $("#searchBtn").click(function(){
+            _table.ajax.reload();
+        });
+});
+    /*编辑*/
+    function edit(id){
+        var title="编辑";
+        var url="#(contextPath)/admin/platformincome/queryById?id="+id;
+        var w="";
+        var h=510;
+        layer_show(title,url,w,h);
+    }
+    /*添加*/
+    function add(){
+        var title="添加";
+        var url="#(contextPath)/admin/platformincome/add/";
+        var w="";
+        var h=510;
+        layer_show(title,url,w,h);
+    }
+
+    /*删除*/
+    function del(id){
+        var config = {
+        "url":"#(contextPath)/admin/platformincome/deleteById?id="+id,
+        data:{}
+        };
+        var backendTool = new BackendTool(config);
+        backendTool.ajaxRequest();
+    }
+    
+    /*查看详情*/
+    function showdetail(id){
+        var title="查看详情";
+        var url="/admin/platformincome/showDetail?id="+id;
+        var w="";
+        var h=510;
+        layer_show(title,url,w,h);
+    }
+    </script>
+#end
+
+#define main()
+    #@breadcrumb(["平台服务费管理","平台服务费管理列表"])
+   <div class="page-container">
+       <div class="mt-20">
+           <table class="table table-border table-bordered table-bg table-hover table-sort" id="platformincome-list">
+               <thead>
+               <tr class="text-c">
+                     <th>ID</th>
+                     <th>提现网红ID</th>
+                     <th>提现金额(单位:元)</th>
+                     <th>平台收入(单位:元)</th>
+                     <th>状态</th>
+               </tr>
+               </thead>
+               <tbody>
+               </tbody>
+           </table>
+       </div>
+   </div>
+#end
\ No newline at end of file
diff --git a/src/main/webapp/WEB-INF/view/admin/task/task-fee.html b/src/main/webapp/WEB-INF/view/admin/task/task-fee.html
index 6c0ce850c190ee2e51df592ac67ec3e1c8755a8c..927e58fab39bf69dc763692abcbe787cd88c8ab1 100644
--- a/src/main/webapp/WEB-INF/view/admin/task/task-fee.html
+++ b/src/main/webapp/WEB-INF/view/admin/task/task-fee.html
@@ -35,9 +35,15 @@
 	        </div>
 	    </div>
 	    <div class="row cl">
-	        <label class="form-label col-xs-4 col-sm-3"><span class="c-red">*</span>任务金额</label>
+	        <label class="form-label col-xs-4 col-sm-3"><span class="c-red">*</span>任务预算</label>
 	        <div class="formControls col-xs-8 col-sm-9">
-	        	¥#(task.task_price)
+	        	¥#(totalFee??'0')
+	        </div>
+	    </div>
+	    <div class="row cl">
+	        <label class="form-label col-xs-4 col-sm-3"><span class="c-red">*</span>网红昵称</label>
+	        <div class="formControls col-xs-8 col-sm-9">
+	        	#(fair.nick_name)
 	        </div>
 	    </div>
 	    <div class="row cl">
diff --git a/src/main/webapp/WEB-INF/view/admin/task/task-list.html b/src/main/webapp/WEB-INF/view/admin/task/task-list.html
index 9e8be9bfea9ea0cbbcdc4e6beb4c15de3fbf9cde..2694eefcc88798aa57862ebdb1660809b8a80f6c 100644
--- a/src/main/webapp/WEB-INF/view/admin/task/task-list.html
+++ b/src/main/webapp/WEB-INF/view/admin/task/task-list.html
@@ -167,7 +167,7 @@
                      <th>任务标题</th>
                      <th>任务开始时间</th>
                      <th>任务结束时间</th>
-                     <th>任务酬劳</th>
+                     <th>任务预算</th>
                      <th>任务状态</th>
                      <th>推广方式</th>
                      <th>主播人数</th>
diff --git a/src/main/webapp/WEB-INF/view/admin/task/task-wh-detail.html b/src/main/webapp/WEB-INF/view/admin/task/task-wh-detail.html
index 17d9d9daaae411cc2edfea6a18d9ba63e8a83845..5eade03acfccbad74e40d7cf620d55e1f9a65366 100644
--- a/src/main/webapp/WEB-INF/view/admin/task/task-wh-detail.html
+++ b/src/main/webapp/WEB-INF/view/admin/task/task-wh-detail.html
@@ -1,5 +1,23 @@
 #@layout()
+
+#define js()
+	<script>
+			function payMoney(task_id,fair_id){
+				var title="任务结算";
+			    var url="#(contextPath)/admin/task/payMoney?task_id="+task_id+"&fair_id="+fair_id;
+			    var w="";
+			    var h=510;
+			    layer_show(title,url,w,h);
+			}
+	</script>
+#end
+
+
 #define main()
+	<div>
+		<a class="btn btn-success radius r" style="line-height:1.6em;margin:10px" href="javascript:location.replace(location.href);" title="刷新">
+            <i class="Hui-iconfont">刷新当前页</i></a>
+   </div>
     <table class="table table-border table-bordered table-bg table-hover ">
     	<tr class="text-c" role="row">
     		<th class="sorting_disabled" rowspan="1" colspan="1" >参与网红姓名</th>
@@ -7,15 +25,32 @@
     		<th class="sorting_disabled" rowspan="1" colspan="1">测试点击数</th>
     		<th class="sorting_disabled" rowspan="1" colspan="1">正式转换数</th>
     		<th class="sorting_disabled" rowspan="1" colspan="1">测试转换数</th>
+    		<th class="sorting_disabled" rowspan="1" colspan="1">结算状态</th>
+    		<th class="sorting_disabled" rowspan="1" colspan="1">
+    		操作
+    		
+    		</th>
     	</tr>
     	
     	#for(x:taskWh)
     	<tr class="text-c" role="row">
-    		<td class="sorting_disabled" rowspan="1" colspan="1" >#(x.nick_name??'')</th>
-    		<td class="sorting_disabled" rowspan="1" colspan="1">#(x.click_num)次</th>
-    		<td class="sorting_disabled" rowspan="1" colspan="1">#(x.click_dev)次</th>
-    		<td class="sorting_disabled" rowspan="1" colspan="1">#(x.cvs_num)次</th>
-    		<td class="sorting_disabled" rowspan="1" colspan="1">#(x.cvs_dev)次</th>
+    		<td class="sorting_disabled" rowspan="1" colspan="1" >#(x.nick_name??'')</td>
+    		<td class="sorting_disabled" rowspan="1" colspan="1">#(x.click_num)次</td>
+    		<td class="sorting_disabled" rowspan="1" colspan="1">#(x.click_dev)次</td>
+    		<td class="sorting_disabled" rowspan="1" colspan="1">#(x.cvs_num)次</td>
+    		<td class="sorting_disabled" rowspan="1" colspan="1">#(x.cvs_dev)次</td>
+    		<td class="sorting_disabled" rowspan="1" colspan="1">
+    			#if(x.status==5)
+    				等待结算
+    			#elseif(x.status==6)
+    				结算完成
+    			#end
+    		</td>
+    		<td class="sorting_disabled" rowspan="1" colspan="1">
+    			#if(x.status==5)
+    				<a href="javascript:;" onclick="payMoney(#(x.task_id??''),#(x.wh_id??''))">立即结算</a>
+    			#end
+    		</td>
     	</tr>
     	#end
     </table>
diff --git a/src/main/webapp/WEB-INF/view/admin/websitewh/add-websitewh.html b/src/main/webapp/WEB-INF/view/admin/websitewh/add-websitewh.html
index 9d424d974b2d3eed71083512fb82fba9dcf9c2cc..3f017eb11f6334e8be8ab7f4a7a4da45f9176c1c 100644
--- a/src/main/webapp/WEB-INF/view/admin/websitewh/add-websitewh.html
+++ b/src/main/webapp/WEB-INF/view/admin/websitewh/add-websitewh.html
@@ -50,7 +50,7 @@
             auto: true,
             duplicate:true,
             swf:  '#(contextPath)/assets/front/web/script/upload/Uploader.swf',
-            server: '#(contextPath)/admin/upload',
+            server: '#(contextPath)/admin/upload?category=site-',
             pick: {
                 id:id
             },
diff --git a/src/main/webapp/WEB-INF/view/web/main/platform.html b/src/main/webapp/WEB-INF/view/web/main/platform.html
index e0deff90a6467c59ed5f30ea9de1f1c99ba6e6bf..2a874a7dbbb6881cb4d0c0345c4c6988b7ac1523 100644
--- a/src/main/webapp/WEB-INF/view/web/main/platform.html
+++ b/src/main/webapp/WEB-INF/view/web/main/platform.html
@@ -17,7 +17,11 @@
             <i class="u-switch"></i>
             <div class="m-user">
                 <div class="u-head" data-href="#(contextPath)/passport/detail?id=#(loginAccount.id)" onclick="$de.jump(this)">
+                    #if(authenticate?? && authenticate.logo??)
+                    <div class="u-head-img" style='background-image: url("#(contextPath)#(authenticate.logo)")'></div>
+                    #else
                     <div class="u-head-img" style='background-image: url("#(contextPath)#(loginAccount.photo)")'></div>
+                    #end
                 </div>
                 <div class="u-text text-more" data-href="#(contextPath)/passport/detail?id=#(loginAccount.id)" onclick="$de.jump(this)">#(loginAccount.mobile)</div>
             </div>
diff --git a/src/main/webapp/WEB-INF/view/web/task/second-task-step.html b/src/main/webapp/WEB-INF/view/web/task/second-task-step.html
index c058f9d9d7aea43926ffc9cf423f890ba8ca338e..47bd0349f6ca3b89ca314e8933b389c76efd4a02 100644
--- a/src/main/webapp/WEB-INF/view/web/task/second-task-step.html
+++ b/src/main/webapp/WEB-INF/view/web/task/second-task-step.html
@@ -45,7 +45,8 @@
         <input type="hidden" id="h5_type" name="task.h5_type" value="2" >
         <input type="hidden" id="task_title" name="task.task_title" >
         <input type="hidden" id="task_type" name="task.task_type">
-        <input type="hidden" id="task_price" name="task.task_price">
+        <!-- <input type="hidden" id="task_price" name="task.task_price"> -->
+        <input type="hidden" id="totalFee" name="task.total_fee">
         <input type="hidden" id="task_start_time" name="task.task_start_time" >
         <input type="hidden" id="task_end_time" name="task.task_end_time" >
         <input type="hidden" id="task_description" name="task.task_description" >
@@ -95,7 +96,7 @@
                     </div>
                 </div>
             </div>
-	            --#
+	           
 	            <div class="m-row">
 		            <div class="u-row-title">人数:</div>
 		                <div class="u-row-box" >
@@ -106,7 +107,7 @@
 		                    </div>
 		            </div>
 	            </div>
-	            
+	           --#  
 	            <div class="m-row">
 	                <div class="u-row-title">表现形式:</div>
 	                <div class="u-row-box" id="bxxs">
diff --git a/src/main/webapp/WEB-INF/view/web/task/task_add_new.html b/src/main/webapp/WEB-INF/view/web/task/task_add_new.html
index 2711ed93092b0964585e0324e8fbc529bd3b6cfb..cc9a0ce76eb50aaedb801b9e25f8667bb8d35429 100644
--- a/src/main/webapp/WEB-INF/view/web/task/task_add_new.html
+++ b/src/main/webapp/WEB-INF/view/web/task/task_add_new.html
@@ -19,11 +19,12 @@
     <div class="g-info">
         <div class="u-title">任务信息</div>
         <div class="m-panel" style="border-radius: 2px">
+            #--
             <div class="m-row">
                 <div class="u-row-title"></div>
                 <div style="padding:10px;color:#62bcc0">温馨提示:假如你需要大量网红参与你的任务,请选择主播认领方式发布任务</div>
             </div>
-            
+            --#
             <div class="m-row">
                 <div class="u-row-title">任务标题:</div>
                 <div class="u-row-box">
@@ -45,6 +46,7 @@
                     </div>
                 </div>
             </div>
+            #--业务要求 去除人数选择
             <div class="m-row">
                 <div class="u-row-title">人数:</div>
                 <div class="u-row-box" >
@@ -55,21 +57,28 @@
                     </div>
                 </div>
             </div>
-            
+            --#
             
             <div class="m-row">
-                <div class="u-row-title">任务酬劳:</div>
+                <div class="u-row-title">
+                	<img class="task-price"src="#(contextPath)/assets/front/web/resources/ic_help.png" width="15"/>
+                	任务预算:
+                </div>
                 <div class="u-row-box">
                     <div class="u-row-box-input">
-                        <!--<input name="task.task_price" class="u-row-cell-input" style="flex:0;width:100px;color:#f96436;" />-->
-                        <select name="task.task_price" class="u-row-cell-input" id="task_price">
+                       <input name="task.total_fee" placeholder="请输入任务预算,最低500元" class="u-row-cell-input" id="totalFee" maxlength="15"/>
+                        #--
+                        <select name="task.total_fee" class="u-row-cell-input" id="totalFee">
                         	<option value="0">==请选择==</option>
-                            #for(x:priceList)
+                            #for(x:totalPriceList)
                             <option class="" value="#(x.code)">#(x.name)</option>
                             #end
                         </select>
+                        --#
+                        #--
                         <div  class="u-row-cell-tip">元/人 </div>
-                        <img class="task-price"src="#(contextPath)/assets/front/web/resources/ic_help.png" width="15"/>
+                        --#
+                        
                     </div>
                 </div>
             </div>
diff --git a/src/main/webapp/WEB-INF/view/web/task/task_fair_new.html b/src/main/webapp/WEB-INF/view/web/task/task_fair_new.html
index 19255eb869e9c1f672bc9e22b7613afb8751013c..cf7edd1b16a91c5940e251b4d1115400a1e0b3f6 100644
--- a/src/main/webapp/WEB-INF/view/web/task/task_fair_new.html
+++ b/src/main/webapp/WEB-INF/view/web/task/task_fair_new.html
@@ -114,7 +114,8 @@
                 <div class="u-row-box">
                     <div class="u-row-box-list">
                         <ul class="u-row-cell-list"></ul>
-                        <div class="u-row-box-num"><span class="box-num-panel">10</span>/#(taskObj.wh_number??1)<span>人</span></div>
+                        #--<div class="u-row-box-num"><span class="box-num-panel">10</span>/#(taskObj.wh_number??1)<span>人</span></div>--#
+                        <div class="u-row-box-num"><span class="box-num-panel">10</span>/10<span>人</span></div>
                         <div class="u-row-box-hide">筛选<i></i></div>
                     </div>
                 </div>
@@ -125,7 +126,8 @@
         </div>
     </div>
     <div class="g-task-choice-list">
-        <ul class="m-choice-list" data-num="#(taskObj.wh_number??1)">
+        #--<ul class="m-choice-list" data-num="#(taskObj.wh_number??1)">--#
+        <ul class="m-choice-list" data-num="10">
         </ul>
         <div class="m-choice-page" id="m_choice_page_container" style="display:flex;justify-content:center">
         	<div id="m_choice_page"></div>
diff --git a/src/main/webapp/WEB-INF/view/web/task/task_success.html b/src/main/webapp/WEB-INF/view/web/task/task_success.html
index b9a0bd65ade856f7d63ba6cf708d1be2644ba949..72ea7e7bac23583fe57e9904651825bd9bf1dc82 100644
--- a/src/main/webapp/WEB-INF/view/web/task/task_success.html
+++ b/src/main/webapp/WEB-INF/view/web/task/task_success.html
@@ -35,6 +35,7 @@
                         <div class="u-task-key">任务时间:</div>
                         <div class="u-task-value">#(task.dateString)</div>
                     </li>
+                    #--
                     <li class="m-task-cell">
                         <div class="u-task-key">任务酬劳:</div>
                         <div class="u-task-value">#(task.task_price)元/人</div>
@@ -43,6 +44,7 @@
                         <div class="u-task-key">任务人数:</div>
                         <div class="u-task-value">#(task.wh_number)人</div>
                     </li>
+                    --#
                     <li class="m-task-cell">
                         <div class="u-task-key">推广类型:</div>
                         <div class="u-task-value">#(task.type())</div>
@@ -51,9 +53,9 @@
                         <div class="u-task-key">预计花费:</div>
                         <div class="u-task-value">
                         	#if(task.extension_type==1)
-                        		#(task.wh_number*task.task_price+task.wh_number*50)元(指定主播#(task.wh_number)人,额外收取#(task.wh_number*50)元)
+                        		#(task.total_fee+task.wh_number*50)元(指定主播#(task.wh_number)人,额外收取#(task.wh_number*50)元)
                         	#else
-                        		#(task.wh_number*task.task_price)元	
+                        		#(task.total_fee)元	
                         	#end
                         </div>
                     </li>
@@ -117,7 +119,7 @@
                 <ul class="m-head-list">
                     #for(fair : fairs)
                     	<li style='width:110px'>
-                    		<a href="/h5/whAdMsg/Personinfo.html?userId=#(fair.id)" target="_blank">
+                    		<a href="/h5/whAdMsg/Personinfo.html?callbacl_pos=#(fair.id)" target="_blank">
                     		<div style="margin:10px;text-align:center">
                     			<div class="avatar" style='background: url("#(fair.photo)??") center/cover no-repeat;''></div>
                     			<div style="margin-top:5px;font;font-weight: bold">#(fair.nick_name??"")</div>
diff --git a/src/main/webapp/assets/.DS_Store b/src/main/webapp/assets/.DS_Store
index 23576507f6aba30a3348fa50c49f98477f1d233c..4a604402606ae1716cadb61482c99ee005a15282 100644
Binary files a/src/main/webapp/assets/.DS_Store and b/src/main/webapp/assets/.DS_Store differ
diff --git a/src/main/webapp/assets/front/.DS_Store b/src/main/webapp/assets/front/.DS_Store
new file mode 100644
index 0000000000000000000000000000000000000000..e6e63968fa8e32ee1d84835214227446ad45a69c
Binary files /dev/null and b/src/main/webapp/assets/front/.DS_Store differ
diff --git a/src/main/webapp/assets/front/web/.DS_Store b/src/main/webapp/assets/front/web/.DS_Store
new file mode 100644
index 0000000000000000000000000000000000000000..555d61923b7647259e280b4606c688962a752b91
Binary files /dev/null and b/src/main/webapp/assets/front/web/.DS_Store differ
diff --git a/src/main/webapp/assets/front/web/script/task-second-step.js b/src/main/webapp/assets/front/web/script/task-second-step.js
index aa55fcfa4e85dbdf66402efb522ab415c9d762d9..65b36be4d08a927e232c1d11fdca5e7f60e87555 100644
--- a/src/main/webapp/assets/front/web/script/task-second-step.js
+++ b/src/main/webapp/assets/front/web/script/task-second-step.js
@@ -130,7 +130,7 @@ function previewH5(url,fileId){
 function checkParam(){
 	var extension_type =$("#extension_type").val();
 	var h5_type = $("#h5_type").val();
-	var wh_number = $("#wh_number").val();
+//	var wh_number = $("#wh_number").val();
 	if(!extension_type){
 		layer.alert("请选择推广类型");
         return false;
@@ -142,15 +142,15 @@ function checkParam(){
 	}
 	
 	//假如指定主播,人数不能超过10个人
-	if(parseInt(wh_number)>10 && extension_type==1){
-        layer.alert("当前推广方式为指定主播模式,只能设置最多10位");
-        return false;
-    }
-	
-	if(parseInt(wh_number)>50 && extension_type==2){
-        layer.alert("当前推广方式为主播认领模式,只能设置最多50位");
-        return false;
-    }
+//	if(parseInt(wh_number)>10 && extension_type==1){
+//        layer.alert("当前推广方式为指定主播模式,只能设置最多10位");
+//        return false;
+//    }
+//	
+//	if(parseInt(wh_number)>50 && extension_type==2){
+//        layer.alert("当前推广方式为主播认领模式,只能设置最多50位");
+//        return false;
+//    }
 	
 	if(h5_type==2&&$("#uploaded").find('div').length < 1){
         layer.alert("请选择要上传的素材");
@@ -180,7 +180,8 @@ function initTaskInfo(){
 	var taskStep2 = JSON.parse(onLineTask_step2);
 	
 	if(task && taskStep2){
-		$("#wh_number").val(task.wh_number);
+//		$("#wh_number").val(task.wh_number);
+		$("#totalFee").val(task.total_fee);
 		$("#task_title").val(task.task_title);
 		$("#task_type").val(task.task_type);
 		$("#task_price").val(task.task_price);
@@ -234,7 +235,8 @@ function init(){
 		var tempStep2={
 				"extension_type":"2",
 				"h5_type":"2",
-				"wh_number":task.wh_number,
+//				"wh_number":task.wh_number,
+				"total_fee":"",
 				"web_url":"",
 				"imags":"",
 				"uploadImags":"",
@@ -329,7 +331,8 @@ function setFairInfo(){
 	if(result){
 		var extension_type =$("#extension_type").val();
 		var h5_type = $("#h5_type").val();
-		var wh_number = $("#wh_number").val();
+//		var wh_number = $("#wh_number").val();
+		var totalFee = $("#totalFee").val();
 		var web_url = $("#web_url").val();
 		var imags = $("#preview").contents().find(".advertise").html();
 		var uploadImags = $("#uploaded").html();
diff --git a/src/main/webapp/assets/front/web/script/task_fair.js b/src/main/webapp/assets/front/web/script/task_fair.js
index 9fbc067618495a59a896ee3180e59596edef36a2..276fa446f6e2d83157adc3401a28bb06c179a59b 100644
--- a/src/main/webapp/assets/front/web/script/task_fair.js
+++ b/src/main/webapp/assets/front/web/script/task_fair.js
@@ -231,8 +231,8 @@ function create(){
         return;
     }
     
-    if(fairList.length!=setNum){
-        layer.alert("请选择你设定数量的网红");
+    if(fairList.length>setNum){
+        layer.alert("指定主播,最多输入10位网红");
         return;
     }
     $("input[name='fairs']").val(fairList);
diff --git a/src/main/webapp/assets/front/web/script/task_form.js b/src/main/webapp/assets/front/web/script/task_form.js
index a2c1043e3ae95819ccf37f315ba8bcf4ecaee970..03a805a61f02cdbbc9ea86a2ac149e673dd237b4 100644
--- a/src/main/webapp/assets/front/web/script/task_form.js
+++ b/src/main/webapp/assets/front/web/script/task_form.js
@@ -21,28 +21,43 @@ function checkFirstStep(){
 	var task_title = $("#task_title").val().trim();
     var task_start_time = $("#task_start_time").val().trim();
     var task_end_time = $("#task_end_time").val().trim();
-    var task_price = $("#task_price").val().trim();
+    //var task_price = $("#task_price").val().trim();根据业务规定,暂时不需要校验当前信息
+    var totalFee = $("#totalFee").val().trim();
     var task_description = $("#task_description").val().trim();
-    var wh_number = $("#wh_number").val().trim();
+    //var wh_number = $("#wh_number").val().trim();根据业务规定,暂时不需要校验当前信息
     if(!task_title|| task_title.length > 50){
         layer.alert("请输入1-50字任务标题");
         return false;
     }
-    if(!wh_number){
-        layer.alert("请输入参与人数");
-        return false;
-    }
+//    if(!wh_number){
+//        layer.alert("请输入参与人数");
+//        return false;
+//    }
     var reg = new RegExp("^[0-9]*$");  
-    if(!reg.test(wh_number)){  
-    	layer.alert("主播人数只能是数字");
-    	return false;
-    }
-    if(wh_number<=0){
-        layer.alert("请参与人数必须大于0");
-        return false;
-    }
-    if(parseInt(task_price)<=0){
-    	layer.alert("请设置任务酬劳");
+//    if(!reg.test(wh_number)){  
+//    	layer.alert("主播人数只能是数字");
+//    	return false;
+//    }
+//    if(wh_number<=0){
+//        layer.alert("请参与人数必须大于0");
+//        return false;
+//    }
+//    if(parseInt(task_price)<=0){
+//    	layer.alert("请设置任务酬劳");
+//        return false;
+//    }
+    
+    if(totalFee==""){  
+		layer.alert("请输入任务预算");
+		return false;
+	}
+	if(!reg.test(totalFee)){  
+		layer.alert("任务预算只能是整数,如:3000");
+		return false;
+	}
+    
+    if(parseInt(totalFee)<500){
+    	layer.alert("任务预算不能低于¥500");
         return false;
     }
     
@@ -72,19 +87,21 @@ function nextStep(){
 		var task_title = $("#task_title").val().trim();
 	    var task_start_time = $("#task_start_time").val().trim();
 	    var task_end_time = $("#task_end_time").val().trim();
-	    var task_price = $("#task_price").val().trim();
+	    //var task_price = $("#task_price").val().trim();
+	    var totalFee = $("#totalFee").val().trim();
 	    var task_type = $("#taskType").val().trim();
 	    var task_description = $("#task_description").val().trim();
-	    var wh_number = $("#wh_number").val().trim();
+	    //var wh_number = $("#wh_number").val().trim();
 	    //存在本地操作下一步用的上
 	    var onLineTask = {
 	    		"task_title":task_title,
 	    		"task_start_time":task_start_time,
 	    		"task_end_time":task_end_time,
 	    		"task_type":task_type,
-	    		"task_price":task_price,
+	    		"total_fee":totalFee,
+	    		//"task_price":task_price,
 	    		"task_description":task_description,
-	    		"wh_number":wh_number
+	    		//"wh_number":wh_number
 	    }
 	    localStorage.setItem("onLineTask_step1", JSON.stringify(onLineTask));
 	    window.location.href="/platform/task/secondTaskStep"
@@ -135,8 +152,9 @@ function initFromCache(){
 		$("#task_end_time").val(taskCache.task_end_time);
 		$("#taskType").val(taskCache.task_type);
 		$("#task_description").val(taskCache.task_description);
-		$("#task_price").val(taskCache.task_price);
-		$("#wh_number").val(taskCache.wh_number);
+		//$("#task_price").val(taskCache.task_price);
+		$("#totalFee").val(taskCache.total_fee);
+		//$("#wh_number").val(taskCache.wh_number);
 		if(taskCache.task_type=="1"){
 			$("#next").on("click",function(){
 				nextStep();
diff --git a/src/main/webapp/assets/front/web_site/.DS_Store b/src/main/webapp/assets/front/web_site/.DS_Store
new file mode 100644
index 0000000000000000000000000000000000000000..db0477ff1f67d83b40089cdbe92a411233cc43cd
Binary files /dev/null and b/src/main/webapp/assets/front/web_site/.DS_Store differ
diff --git a/src/main/webapp/assets/front/web_site/imags/.DS_Store b/src/main/webapp/assets/front/web_site/imags/.DS_Store
new file mode 100644
index 0000000000000000000000000000000000000000..2f7a85c46d82cf54de46b0674571e63c2d2864a8
Binary files /dev/null and b/src/main/webapp/assets/front/web_site/imags/.DS_Store differ
diff --git a/src/main/webapp/task_template/.DS_Store b/src/main/webapp/task_template/.DS_Store
new file mode 100644
index 0000000000000000000000000000000000000000..7eca00767dcebfaca4d061488240a92c23b44ae2
Binary files /dev/null and b/src/main/webapp/task_template/.DS_Store differ
diff --git a/src/main/webapp/task_template/common/.DS_Store b/src/main/webapp/task_template/common/.DS_Store
new file mode 100644
index 0000000000000000000000000000000000000000..cbf9ce2f5606f2ec8e9da4a923b1306d7d64d602
Binary files /dev/null and b/src/main/webapp/task_template/common/.DS_Store differ