From d101a2161a956186ac9b188834c2ae3896772526 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E8=83=A1=E6=89=BF=E6=B7=9E?= <644344980@qq.com>
Date: Fri, 12 Jan 2018 18:58:17 +0800
Subject: [PATCH 01/17] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E7=BB=93=E7=AE=97?=
 =?UTF-8?q?=E5=8A=9F=E8=83=BD=E4=BB=A5=E5=8F=8A=E7=9F=AD=E4=BF=A1=E6=8E=A5?=
 =?UTF-8?q?=E5=8F=A3=E9=80=9A=E7=9F=A5=E4=BF=A1=E6=81=AF?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../admin/task/TaskAdminController.java       | 20 ++++++++---
 .../com/tianpengtech/common/MyConfig.java     |  7 ++--
 .../tianpengtech/common/util/SendSmsMsg.java  | 32 +++++++++++++++++
 .../tianpengtech/common/util/push/Jpush.java  |  2 +-
 .../web/job/{TaskJob.java => TaskEndJob.java} |  4 +--
 .../front/web/job/TaskStartJob.java           | 27 ++++++++++++++
 .../WEB-INF/view/admin/task/task-fee.html     |  6 ++++
 .../view/admin/task/task-wh-detail.html       | 35 ++++++++++++++++---
 8 files changed, 118 insertions(+), 15 deletions(-)
 rename src/main/java/com/tianpengtech/front/web/job/{TaskJob.java => TaskEndJob.java} (90%)
 create mode 100644 src/main/java/com/tianpengtech/front/web/job/TaskStartJob.java

diff --git a/src/main/java/com/tianpengtech/admin/task/TaskAdminController.java b/src/main/java/com/tianpengtech/admin/task/TaskAdminController.java
index dcfd237..a3b0b98 100644
--- a/src/main/java/com/tianpengtech/admin/task/TaskAdminController.java
+++ b/src/main/java/com/tianpengtech/admin/task/TaskAdminController.java
@@ -24,6 +24,7 @@ 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;
 /**
 * 路由配置地址:add("/admin/task", TaskAdminController.class, "/admin/task");
 * 数据库映射地址:arp.addMapping(Task.dao.tableName(),Task.class);
@@ -128,28 +129,34 @@ public class TaskAdminController extends AbstractAdminController{
 			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);
+			int actualFeeInt = (int)actualFee;
+			setAttr("actualFee",actualFeeInt);
 			setAttr("click_num",click_num);
 			setAttr("task",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");
 	}
 	
 	public void accept(){
 		int task_id = getParaToInt("task_id");
+//		int task_id = 3044;
 		int fair_id = getParaToInt("fair_id");
+//		int fair_id = 88;
 		String fee = getPara("price");
 		String sql="select * from "+TaskWh.dao.tableName()+" where task_id=? and wh_id=? limit 1";
 		TaskWh taskWh = TaskWh.dao.findFirst(sql,task_id,fair_id);
 		
 		int status = taskWh.getInt(TaskWh.STATUS);
+//		int status = 5;
 		if(status==Task.STATUS_COMPLETED){
-			renderJson(JsonUtil.printError("当前任务已经被验收,请勿重复操作"));
+			renderJson(JsonUtil.printError("当前任务已经被结算验收,请勿重复操作"));
 			return;
 		}else{
 			
@@ -185,7 +192,12 @@ 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()){
+            	//发送短信
+                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/common/MyConfig.java b/src/main/java/com/tianpengtech/common/MyConfig.java
index ffc7a36..fa314c1 100644
--- a/src/main/java/com/tianpengtech/common/MyConfig.java
+++ b/src/main/java/com/tianpengtech/common/MyConfig.java
@@ -57,7 +57,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;
@@ -194,8 +195,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/util/SendSmsMsg.java b/src/main/java/com/tianpengtech/common/util/SendSmsMsg.java
index 6212df8..18042a3 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;
+    }
 
 
 
@@ -233,6 +262,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/push/Jpush.java b/src/main/java/com/tianpengtech/common/util/push/Jpush.java
index 54d5f56..ad0f154 100644
--- a/src/main/java/com/tianpengtech/common/util/push/Jpush.java
+++ b/src/main/java/com/tianpengtech/common/util/push/Jpush.java
@@ -120,6 +120,6 @@ public class Jpush {
 	
 	public static void main(String[] args) {
 		Jpush.pushCustomContentToAll("xxxxqqq!!",Jpush.PUSH_TASK);
-		Jpush.pushCustomContentToSomeOne("13262535273","你的消息····来了123ddd!23223!!",Jpush.PUSH_MSG);
+//		Jpush.pushCustomContentToSomeOne("13262535273","你的消息····来了123ddd!23223!!",Jpush.PUSH_MSG);
 	}
 }
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 5f4b992..c7d6a77 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 0000000..7edc2d1
--- /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/webapp/WEB-INF/view/admin/task/task-fee.html b/src/main/webapp/WEB-INF/view/admin/task/task-fee.html
index 6c0ce85..5c92edf 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
@@ -40,6 +40,12 @@
 	        	¥#(task.task_price)
 	        </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">
 	        <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">
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 17d9d9d..31f0614 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,4 +1,18 @@
 #@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()
     <table class="table table-border table-bordered table-bg table-hover ">
     	<tr class="text-c" role="row">
@@ -7,15 +21,26 @@
     		<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)
+    				等待结算
+    			#else if(x.status==6)
+    				结算完成
+    			#end
+    		</td>
+    		<td class="sorting_disabled" rowspan="1" colspan="1">
+    		<a href="javascript:;" onclick="payMoney(#(x.task_id??''),#(x.wh_id??''))">立即结算</a></td>
     	</tr>
     	#end
     </table>
-- 
Gitee


From d99cf47ee410bd1249bc030853c638eb1a768e05 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E8=83=A1=E6=89=BF=E6=B7=9E?= <644344980@qq.com>
Date: Fri, 12 Jan 2018 19:05:47 +0800
Subject: [PATCH 02/17] =?UTF-8?q?=E4=BF=AE=E6=AD=A3BUG=E4=BF=A1=E6=81=AF?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 src/main/webapp/WEB-INF/view/admin/task/task-wh-detail.html | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

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 31f0614..e05980c 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
@@ -35,7 +35,7 @@
     		<td class="sorting_disabled" rowspan="1" colspan="1">
     			#if(x.status==5)
     				等待结算
-    			#else if(x.status==6)
+    			#elseif(x.status==6)
     				结算完成
     			#end
     		</td>
-- 
Gitee


From 1910be64887b5ef92c149d7774f4d19eea081d19 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E8=83=A1=E6=89=BF=E6=B7=9E?= <644344980@qq.com>
Date: Sat, 13 Jan 2018 00:35:24 +0800
Subject: [PATCH 03/17] =?UTF-8?q?=E7=B4=A7=E6=80=A5=E4=BF=AE=E6=AD=A3BUG?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../passport/MobilePassportController.java    | 11 +++-
 .../passport/MobilePassportService.java       |  9 +--
 .../front/mobile/task/MobileTaskService.java  |  2 +-
 .../front/web/task/TaskService.java           | 59 +++++++++++++------
 .../view/admin/task/task-wh-detail.html       | 14 ++++-
 5 files changed, 67 insertions(+), 28 deletions(-)

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 e02d8bf..d4ff6e9 100644
--- a/src/main/java/com/tianpengtech/front/mobile/passport/MobilePassportController.java
+++ b/src/main/java/com/tianpengtech/front/mobile/passport/MobilePassportController.java
@@ -12,6 +12,7 @@ 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;
@@ -387,9 +388,13 @@ public class MobilePassportController extends BaseController{
     	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));
-    	double totalFee = (withDraw.getDouble("money")==null)?0:withDraw.getDouble("money");
+//    	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));
+    	
+    	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);
     	r.p("sort", sort);
     	r.p("yandou",yandou);
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 ffe971d..eeffba5 100644
--- a/src/main/java/com/tianpengtech/front/mobile/passport/MobilePassportService.java
+++ b/src/main/java/com/tianpengtech/front/mobile/passport/MobilePassportService.java
@@ -804,10 +804,11 @@ 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);
+		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 (log == null) {
 			r.p("all", 0);
 		} else {
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 f365847..f670673 100644
--- a/src/main/java/com/tianpengtech/front/mobile/task/MobileTaskService.java
+++ b/src/main/java/com/tianpengtech/front/mobile/task/MobileTaskService.java
@@ -292,7 +292,7 @@ public class MobileTaskService {
 			return r;
 		}
 		
-		List<TaskWh> taskWh= TaskService.queryFairTask(uid+"", taskId);
+		List<TaskWh> taskWh= TaskService.queryFairApplyNumTask(taskId);
 		//检查当前网红报名任务个数是否超过系统设定值,假如超过,则提示信息
 		Dictionary dictionary = DictionaryDao.ME.readDirecotryByCode(Dictionary.SYS_APPLY_NUM);
 		
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 913f078..4755167 100644
--- a/src/main/java/com/tianpengtech/front/web/task/TaskService.java
+++ b/src/main/java/com/tianpengtech/front/web/task/TaskService.java
@@ -182,6 +182,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 +201,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 +279,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);
             }
         }
     }
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 e05980c..5eade03 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
@@ -14,6 +14,10 @@
 
 
 #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>
@@ -22,7 +26,10 @@
     		<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)
@@ -40,7 +47,10 @@
     			#end
     		</td>
     		<td class="sorting_disabled" rowspan="1" colspan="1">
-    		<a href="javascript:;" onclick="payMoney(#(x.task_id??''),#(x.wh_id??''))">立即结算</a></td>
+    			#if(x.status==5)
+    				<a href="javascript:;" onclick="payMoney(#(x.task_id??''),#(x.wh_id??''))">立即结算</a>
+    			#end
+    		</td>
     	</tr>
     	#end
     </table>
-- 
Gitee


From 0c65a7d804b28b98bb89280fe901356ce1574393 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E8=83=A1=E6=89=BF=E6=B7=9E?= <644344980@qq.com>
Date: Sat, 13 Jan 2018 00:43:39 +0800
Subject: [PATCH 04/17] =?UTF-8?q?=E4=BF=AE=E6=AD=A3=E5=AE=A1=E6=A0=B8?=
 =?UTF-8?q?=E9=9C=80=E8=A6=81=E7=99=BB=E5=BD=95=E7=95=8C=E9=9D=A2?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../java/com/tianpengtech/front/web/task/TaskWebController.java  | 1 +
 1 file changed, 1 insertion(+)

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 7535eae..0de7a62 100644
--- a/src/main/java/com/tianpengtech/front/web/task/TaskWebController.java
+++ b/src/main/java/com/tianpengtech/front/web/task/TaskWebController.java
@@ -313,6 +313,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);
-- 
Gitee


From 8a92ee5af4d9465ec2852875e68db19639c974b2 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E8=83=A1=E6=89=BF=E6=B7=9E?= <644344980@qq.com>
Date: Sat, 13 Jan 2018 00:58:02 +0800
Subject: [PATCH 05/17] =?UTF-8?q?=E5=8E=BB=E9=99=A4=E7=BD=91=E7=BA=A2?=
 =?UTF-8?q?=E9=A1=B5=E9=9D=A2=E7=BC=96=E8=BE=91=E5=BF=85=E5=A1=AB=E9=A1=B9?=
 =?UTF-8?q?=E7=9B=AE?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../admin/fair/FairAdminServiceImpl.java      | 52 +++++++++----------
 .../WEB-INF/view/admin/fair/fair-form.html    | 16 +++---
 2 files changed, 34 insertions(+), 34 deletions(-)

diff --git a/src/main/java/com/tianpengtech/admin/fair/FairAdminServiceImpl.java b/src/main/java/com/tianpengtech/admin/fair/FairAdminServiceImpl.java
index fd328d3..8ca0763 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/webapp/WEB-INF/view/admin/fair/fair-form.html b/src/main/webapp/WEB-INF/view/admin/fair/fair-form.html
index a472a53..ea9a95c 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">
-- 
Gitee


From b325b1295fef27648fb6581c3feab01103c6d30b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E8=83=A1=E6=89=BF=E6=B7=9E?= <644344980@qq.com>
Date: Tue, 16 Jan 2018 17:50:25 +0800
Subject: [PATCH 06/17] =?UTF-8?q?=E4=BF=AE=E6=AD=A3BUG?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../fairauth/FairAuthAdminController.java     |   4 +
 .../FairWithdrawAdminController.java          |   3 +
 .../admin/task/TaskAdminController.java       |  10 +-
 .../tianpengtech/common/model/fair/Fair.java  |   1 +
 .../com/tianpengtech/common/util/XxxUtil.java |  14 +++
 .../tianpengtech/common/util/push/Jpush.java  | 115 +++++++++++++++++-
 .../mobile/login/MobileLoginController.java   |   6 +
 .../passport/MobilePassportController.java    |  32 ++++-
 .../passport/MobilePassportService.java       |  11 +-
 .../publisher/MobilePublishController.java    |   1 -
 .../mobile/task/MobileTaskController.java     |   4 +
 .../front/mobile/task/MobileTaskService.java  |  97 +++++++++++----
 12 files changed, 261 insertions(+), 37 deletions(-)

diff --git a/src/main/java/com/tianpengtech/admin/fairauth/FairAuthAdminController.java b/src/main/java/com/tianpengtech/admin/fairauth/FairAuthAdminController.java
index 0e71e4b..043022c 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;
@@ -70,6 +71,8 @@ public class FairAuthAdminController extends AbstractAdminController{
 	/**
 	 * 审核通过
 	 */
+	
+	@Before(Tx.class)
 	public void  pass(){
 		int id = getParaToInt(FairAuth.ID,0);
 		int price = getParaToInt("price",0);
@@ -93,6 +96,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/fairwithdraw/FairWithdrawAdminController.java b/src/main/java/com/tianpengtech/admin/fairwithdraw/FairWithdrawAdminController.java
index 6ac5163..103159c 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.tianpengtech.admin.AbstractAdminController;
 import com.tianpengtech.admin.IAdminOpt;
 import com.tianpengtech.admin.InitInterceptor;
@@ -66,6 +67,7 @@ public class FairWithdrawAdminController extends AbstractAdminController{
 	/**
 	 * 审核不通过
 	 */
+	@Before(Tx.class)
 	public void  unpass(){
 		FairWithdraw fairWithdraw = getModel(FairWithdraw.class);
 		String content = getPara(Opertion.CONTENT);
@@ -82,6 +84,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/task/TaskAdminController.java b/src/main/java/com/tianpengtech/admin/task/TaskAdminController.java
index a3b0b98..3126286 100644
--- a/src/main/java/com/tianpengtech/admin/task/TaskAdminController.java
+++ b/src/main/java/com/tianpengtech/admin/task/TaskAdminController.java
@@ -8,6 +8,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;
@@ -144,6 +145,9 @@ public class TaskAdminController extends AbstractAdminController{
 		renderTemplate("task-fee.html");
 	}
 	
+	
+	
+	@Before(Tx.class)
 	public void accept(){
 		int task_id = getParaToInt("task_id");
 //		int task_id = 3044;
@@ -160,7 +164,6 @@ public class TaskAdminController extends AbstractAdminController{
 			return;
 		}else{
 			
-			
 			//为当前网红增加任务相关费用信息,以及增加流水日志信息
 			Task task = Task.dao.findById(task_id);
 			Fair fair = Fair.dao.findById(fair_id);
@@ -192,11 +195,12 @@ public class TaskAdminController extends AbstractAdminController{
             ml.set(MoneyLog.MONEY,acturalFee.doubleValue());
             ml.set(MoneyLog.DESCRIPTION,"任务完成:"+task.getStr(Task.TASK_TITLE));
             ml.save();
-            if(SysConfigDao.ME.isSendTaskSMS()){
+            
+            //if(SysConfigDao.ME.isSendTaskSMS()){
             	//发送短信
                 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/common/model/fair/Fair.java b/src/main/java/com/tianpengtech/common/model/fair/Fair.java
index 070f031..dd5d790 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,7 @@ 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 int STATUS_UNAPPROVER=-1;
diff --git a/src/main/java/com/tianpengtech/common/util/XxxUtil.java b/src/main/java/com/tianpengtech/common/util/XxxUtil.java
index f42ca52..5ca47a6 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 ad0f154..7822a9c 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,29 @@ 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.pushCustomContentToAll("xxxxqqq!!",Jpush.PUSH_TASK);
 //		Jpush.pushCustomContentToSomeOne("13262535273","你的消息····来了123ddd!23223!!",Jpush.PUSH_MSG);
+		Jpush.pushMessageInfoToSomeOne("13262535273","我是服务器通知信息 我来了!!!",Jpush.PUSH_MSG);
+		//Jpush.pushMessageInfoToAll("您的快递到了,请到楼下取",Jpush.PUSH_TASK);
 	}
 }
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 83172c0..d275887 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/passport/MobilePassportController.java b/src/main/java/com/tianpengtech/front/mobile/passport/MobilePassportController.java
index d4ff6e9..14dc7c2 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;
@@ -383,11 +384,11 @@ 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));
     	
@@ -396,6 +397,27 @@ public class MobilePassportController extends BaseController{
 						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){
+    		Record record = Db.findFirst("select * from fair_total_profit where wh_id=?",user.getLong(User.ID));
+    		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,user.getLong(User.ID),id);
+    			}
+    			
+    			
+    		}else{
+    			record = new Record();
+    			record.set("profit", totalFee);
+    			record.set("wh_id", user.getLong(User.ID));
+    			Db.save("fair_total_profit", record);
+    		}
+    	}
+    	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);
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 eeffba5..476541c 100644
--- a/src/main/java/com/tianpengtech/front/mobile/passport/MobilePassportService.java
+++ b/src/main/java/com/tianpengtech/front/mobile/passport/MobilePassportService.java
@@ -809,7 +809,7 @@ public class MobilePassportService {
 						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 (log == null) {
+		if (sumlog == null) {
 			r.p("all", 0);
 		} else {
 			r.p("all", sumlog.get("money"));
@@ -877,8 +877,13 @@ public class MobilePassportService {
 		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=?";
+			int result = Db.update(sql,yue.doubleValue() - tixian,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 bd3341e..056c422 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 8651860..bde8956 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 f670673..397b119 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;
@@ -81,7 +83,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 +92,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.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 +104,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;
 	}
 
@@ -188,14 +195,18 @@ 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);
 			t.put("total", total);
-			t.put("haveAccept", queryAcceptNum(t.getLong(Task.ID), type));
+			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,21 +219,34 @@ 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.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);
 		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.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("sumCvs",0);
+			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.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);
+			double actualFee =  click_num *0.3;
+			actualFee = (actualFee>task.getDouble(Task.TASK_PRICE))?task.getDouble(Task.TASK_PRICE):actualFee;
+			int  actualFeeInt= (int)actualFee;
+			task.put("actual_price",actualFeeInt);
 		}
 		task.put("dateString", task.getDateString());
 		Authenticate auth = AuthenticateSerivce.ME.findAuthenticateByUserId(task.getInt(Task.CREATE_USER));
@@ -244,16 +268,29 @@ public class MobileTaskService {
 		task.put("acceptNum", 0);
 		// 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 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 "+ task.getInt(Task.WH_NUMBER),
 				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);
 		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);
+			double actualFee=0;
+			long click_num =f.getLong(TaskWh.CLICK_NUM);
+			actualFee =  click_num *0.3;
+			actualFee = (actualFee>task.getDouble(Task.TASK_PRICE))?task.getDouble(Task.TASK_PRICE):actualFee;
+			int actualFeeInt = (int)actualFee;
+			f.put("task_price",actualFeeInt);
 		}
 		r.p("fairs", fairses);
 		int num = (fairses.isEmpty()) ? 0 : fairses.size();
@@ -264,7 +301,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 +329,48 @@ public class MobileTaskService {
 			return r;
 		}
 		
-		List<TaskWh> taskWh= TaskService.queryFairApplyNumTask(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;
+		}
 		
+		List<TaskWh> taskWh= TaskService.queryFairApplyNumTask(taskId);
 		if(taskWh.size()>=task.getInt(Task.WH_NUMBER)){
 			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;
 	}
-- 
Gitee


From 4a0c6fc86d6563e7ca6007013f01b181dde50d84 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E8=83=A1=E6=89=BF=E6=B7=9E?= <644344980@qq.com>
Date: Wed, 17 Jan 2018 04:16:05 +0800
Subject: [PATCH 07/17] =?UTF-8?q?=E4=BF=AE=E6=AD=A3BUG=E4=BF=A1=E6=81=AF?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../com/tianpengtech/admin/AdminRoutes.java   |   2 +
 .../fairauth/FairAuthAdminServiceImpl.java    |   2 +
 .../FairWithdrawAdminController.java          |   1 +
 .../FairWithdrawAdminServiceImpl.java         |  12 +++
 .../PlatFormIncomeAdminController.java        |  60 +++++++++++
 .../PlatFormIncomeAdminServiceImpl.java       |  44 ++++++++
 .../admin/task/SendTaskSMSThread.java         |   4 +-
 .../admin/task/TaskAdminServiceImpl.java      |   3 +-
 .../com/tianpengtech/common/MyConfig.java     |   2 +
 .../common/generator/app/Generator.java       |   2 +-
 .../tianpengtech/common/model/fair/Fair.java  |   1 +
 .../model/fairwithdraw/FairWithdraw.java      |   5 +
 .../model/platformincome/PlatFormIncome.java  |  42 ++++++++
 .../tianpengtech/common/util/push/Jpush.java  |   3 +-
 .../moneylog/MobileMoenyLogService.java       |   5 +
 .../passport/MobilePassportController.java    |  13 +++
 .../passport/MobilePassportService.java       |  12 +++
 .../WEB-INF/view/admin/common/__side-bar.html |  14 +++
 .../admin/fairwithdraw/fairwithdraw-list.html |  12 +--
 .../platformincome/add-platformincome.html    |  45 ++++++++
 .../platformincome/edit-platformincome.html   |  45 ++++++++
 .../platformincome/platformincome-detail.html |  17 +++
 .../platformincome/platformincome-form.html   |  27 +++++
 .../platformincome/platformincome-list.html   | 101 ++++++++++++++++++
 24 files changed, 464 insertions(+), 10 deletions(-)
 create mode 100644 src/main/java/com/tianpengtech/admin/platformincome/PlatFormIncomeAdminController.java
 create mode 100644 src/main/java/com/tianpengtech/admin/platformincome/PlatFormIncomeAdminServiceImpl.java
 create mode 100644 src/main/java/com/tianpengtech/common/model/platformincome/PlatFormIncome.java
 create mode 100644 src/main/webapp/WEB-INF/view/admin/platformincome/add-platformincome.html
 create mode 100644 src/main/webapp/WEB-INF/view/admin/platformincome/edit-platformincome.html
 create mode 100644 src/main/webapp/WEB-INF/view/admin/platformincome/platformincome-detail.html
 create mode 100644 src/main/webapp/WEB-INF/view/admin/platformincome/platformincome-form.html
 create mode 100644 src/main/webapp/WEB-INF/view/admin/platformincome/platformincome-list.html

diff --git a/src/main/java/com/tianpengtech/admin/AdminRoutes.java b/src/main/java/com/tianpengtech/admin/AdminRoutes.java
index eb4bd68..fa5ab24 100644
--- a/src/main/java/com/tianpengtech/admin/AdminRoutes.java
+++ b/src/main/java/com/tianpengtech/admin/AdminRoutes.java
@@ -16,6 +16,7 @@ import com.tianpengtech.admin.feedback.FeedBackAdminController;
 import com.tianpengtech.admin.moneylog.MoneyLogAdminController;
 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;
@@ -57,5 +58,6 @@ 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");
 	}
 }
diff --git a/src/main/java/com/tianpengtech/admin/fairauth/FairAuthAdminServiceImpl.java b/src/main/java/com/tianpengtech/admin/fairauth/FairAuthAdminServiceImpl.java
index b91c6ed..2866e40 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/fairwithdraw/FairWithdrawAdminController.java b/src/main/java/com/tianpengtech/admin/fairwithdraw/FairWithdrawAdminController.java
index 103159c..1a35342 100644
--- a/src/main/java/com/tianpengtech/admin/fairwithdraw/FairWithdrawAdminController.java
+++ b/src/main/java/com/tianpengtech/admin/fairwithdraw/FairWithdrawAdminController.java
@@ -61,6 +61,7 @@ public class FairWithdrawAdminController extends AbstractAdminController{
 			fairWithdraw.set(FairWithdraw.BANK_ID, bankNo.getStr(FairBankNo.BANK));
 			fairWithdraw.set(FairWithdraw.WH_ID, fair.getStr(Fair.NICK_NAME));
 			fairWithdraw.set(FairWithdraw.STATUS, fairWithdraw.status());
+			fairWithdraw.put("platform_fee", fairWithdraw.platFormFee());
 		}
 	}
 	
diff --git a/src/main/java/com/tianpengtech/admin/fairwithdraw/FairWithdrawAdminServiceImpl.java b/src/main/java/com/tianpengtech/admin/fairwithdraw/FairWithdrawAdminServiceImpl.java
index d771451..0f237aa 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;
@@ -95,7 +96,18 @@ public class FairWithdrawAdminServiceImpl extends AbstractAdmin implements IAdmi
 			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).update();
+			moneyLog.set(MoneyLog.DESCRIPTION,"用户提现:金额¥"+money+",实际收益:¥"+(int)actualFee).update();
 			moneyLog.set(MoneyLog.DELETETAG,MoneyLog.STATUS_SUCCESS).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();
 		}
 		if(status==FairWithdraw.STATUS_ERROR){
 			String result = "【拒绝】你的提现申请请求,原因是:"+content;
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 0000000..bf6a101
--- /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 0000000..dbfdd8d
--- /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 c65b75c..f6349c2 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/TaskAdminServiceImpl.java b/src/main/java/com/tianpengtech/admin/task/TaskAdminServiceImpl.java
index c6d1927..d842ad7 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 fa314c1..b074f99 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;
@@ -176,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);
     }
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 37f8f90..704e05c 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/fair/Fair.java b/src/main/java/com/tianpengtech/common/model/fair/Fair.java
index dd5d790..0587ca5 100644
--- a/src/main/java/com/tianpengtech/common/model/fair/Fair.java
+++ b/src/main/java/com/tianpengtech/common/model/fair/Fair.java
@@ -65,6 +65,7 @@ public class Fair extends AbstractBaseModel<Fair> {
 	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 int STATUS_UNAPPROVER=-1;
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 ab910ff..8c90afc 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 0000000..2440bcf
--- /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/util/push/Jpush.java b/src/main/java/com/tianpengtech/common/util/push/Jpush.java
index 7822a9c..6264a86 100644
--- a/src/main/java/com/tianpengtech/common/util/push/Jpush.java
+++ b/src/main/java/com/tianpengtech/common/util/push/Jpush.java
@@ -231,6 +231,7 @@ public class Jpush {
 //		Jpush.pushCustomContentToAll("xxxxqqq!!",Jpush.PUSH_TASK);
 //		Jpush.pushCustomContentToSomeOne("13262535273","你的消息····来了123ddd!23223!!",Jpush.PUSH_MSG);
 		Jpush.pushMessageInfoToSomeOne("13262535273","我是服务器通知信息 我来了!!!",Jpush.PUSH_MSG);
-		//Jpush.pushMessageInfoToAll("您的快递到了,请到楼下取",Jpush.PUSH_TASK);
+//		Jpush.pushMessageInfoToSomeOne("13262535273","我是服务器通知信息 我来了!!!",Jpush.PUSH_TASK);
+		Jpush.pushMessageInfoToAll("您的快递到了,请到楼下取",Jpush.PUSH_TASK);
 	}
 }
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 2adf27e..0ee4ca1 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 14dc7c2..957b3bf 100644
--- a/src/main/java/com/tianpengtech/front/mobile/passport/MobilePassportController.java
+++ b/src/main/java/com/tianpengtech/front/mobile/passport/MobilePassportController.java
@@ -429,6 +429,7 @@ 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);
     }
     
@@ -464,4 +465,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 476541c..464ae46 100644
--- a/src/main/java/com/tianpengtech/front/mobile/passport/MobilePassportService.java
+++ b/src/main/java/com/tianpengtech/front/mobile/passport/MobilePassportService.java
@@ -834,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;
+	}
 
 	/**
 	 * 验证交易密码
@@ -871,9 +877,15 @@ public class MobilePassportService {
 		Fair fair = fs.findById(Integer.parseInt(uid + ""));
 		Double yue = fair.getDouble(Fair.MONEY); // 余额
 		double tixian = Double.parseDouble(money); // 提现金额
+		
+		if (tixian <20) {
+			return R.fail("提现金额必须超过¥20");
+		}
+		
 		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);
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 5ac1926..795ba2b 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
@@ -150,6 +150,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>
 		#end
 		
 		
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 4b0b1e8..f376cab 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,6 +24,7 @@
                     { "data": "wh_id" },
                     { "data": "bank_id" },
                     { "data": "money" },
+                    { "data": "platform_fee" },
                     { "data": "create_time" },
                     { "data": "status" },
                 { "data": function(data){
@@ -123,13 +124,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>
@@ -138,6 +137,7 @@
                      <th>网红昵称</th>
                      <th>所属银行</th>
                      <th>提现金额(单位:元)</th>
+                     <th>平台服务费(单位:元)</th>
                      <th>提交时间</th>
                      <th>状态</th>
                    	 <th>操作</th>
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 0000000..fae81f9
--- /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 0000000..2f3ac2c
--- /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 0000000..4215359
--- /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 0000000..24b4be5
--- /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 0000000..b929949
--- /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
-- 
Gitee


From 28d2cc8e53a6b33c9f14f33c5cf375e5823b648d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E8=83=A1=E6=89=BF=E6=B7=9E?= <644344980@qq.com>
Date: Wed, 17 Jan 2018 04:40:43 +0800
Subject: [PATCH 08/17] =?UTF-8?q?=E4=BF=AE=E6=AD=A3BUG?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../admin/fairwithdraw/FairWithdrawAdminServiceImpl.java   | 7 +++++--
 src/main/java/com/tianpengtech/common/util/push/Jpush.java | 2 +-
 2 files changed, 6 insertions(+), 3 deletions(-)

diff --git a/src/main/java/com/tianpengtech/admin/fairwithdraw/FairWithdrawAdminServiceImpl.java b/src/main/java/com/tianpengtech/admin/fairwithdraw/FairWithdrawAdminServiceImpl.java
index 0f237aa..61a896a 100644
--- a/src/main/java/com/tianpengtech/admin/fairwithdraw/FairWithdrawAdminServiceImpl.java
+++ b/src/main/java/com/tianpengtech/admin/fairwithdraw/FairWithdrawAdminServiceImpl.java
@@ -93,7 +93,6 @@ public class FairWithdrawAdminServiceImpl extends AbstractAdmin implements IAdmi
 			.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);
@@ -108,6 +107,9 @@ public class FairWithdrawAdminServiceImpl extends AbstractAdmin implements IAdmi
 			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;
@@ -115,13 +117,14 @@ 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();
+			Jpush.pushCustomContentToSomeOne(fair.getStr(Fair.MOIBILE), result, Jpush.PUSH_MSG);
+			Jpush.pushMessageInfoToSomeOne(fair.getStr(Fair.MOIBILE), result, Jpush.PUSH_MSG);
 		}
 	}
 }
\ No newline at end of file
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 6264a86..95a9546 100644
--- a/src/main/java/com/tianpengtech/common/util/push/Jpush.java
+++ b/src/main/java/com/tianpengtech/common/util/push/Jpush.java
@@ -232,6 +232,6 @@ public class Jpush {
 //		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);
+//		Jpush.pushMessageInfoToAll("您的快递到了,请到楼下取",Jpush.PUSH_TASK);
 	}
 }
-- 
Gitee


From 90a739945650b00942d4cf42e95d3e6d1bf6540f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E8=83=A1=E6=89=BF=E6=B7=9E?= <644344980@qq.com>
Date: Wed, 17 Jan 2018 04:43:52 +0800
Subject: [PATCH 09/17] =?UTF-8?q?=E4=BF=AE=E6=AD=A3BUG?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 src/.DS_Store                                 | Bin 0 -> 8196 bytes
 src/main/.DS_Store                            | Bin 0 -> 8196 bytes
 src/main/resources/.gitignore                 |   1 +
 src/main/resources/a_little_config.txt        |  16 ++++++++--------
 src/main/webapp/.DS_Store                     | Bin 8196 -> 8196 bytes
 src/main/webapp/assets/.DS_Store              | Bin 8196 -> 8196 bytes
 src/main/webapp/assets/front/.DS_Store        | Bin 0 -> 8196 bytes
 src/main/webapp/assets/front/web/.DS_Store    | Bin 0 -> 6148 bytes
 .../webapp/assets/front/web_site/.DS_Store    | Bin 0 -> 8196 bytes
 .../assets/front/web_site/imags/.DS_Store     | Bin 0 -> 8196 bytes
 src/main/webapp/task_template/.DS_Store       | Bin 0 -> 6148 bytes
 .../webapp/task_template/common/.DS_Store     | Bin 0 -> 6148 bytes
 12 files changed, 9 insertions(+), 8 deletions(-)
 create mode 100644 src/.DS_Store
 create mode 100644 src/main/.DS_Store
 create mode 100644 src/main/resources/.gitignore
 create mode 100644 src/main/webapp/assets/front/.DS_Store
 create mode 100644 src/main/webapp/assets/front/web/.DS_Store
 create mode 100644 src/main/webapp/assets/front/web_site/.DS_Store
 create mode 100644 src/main/webapp/assets/front/web_site/imags/.DS_Store
 create mode 100644 src/main/webapp/task_template/.DS_Store
 create mode 100644 src/main/webapp/task_template/common/.DS_Store

diff --git a/src/.DS_Store b/src/.DS_Store
new file mode 100644
index 0000000000000000000000000000000000000000..54b39e62de9e3a8f825e1a67ded2106f7468d9b3
GIT binary patch
literal 8196
zcmeI0O;8*~6oB7@1!g88G)Tg*`P%}ipc2BL35g+D7PLZ{7%Izuh-7wWgpt`9+?izw
zh=m@sqPgO~9z2+`ax&3_2Q4ixIcb$rW%Ocs@M5V4FJ65;JxeViT-6HGRo$<<-+Md#
z-h4Y<-2i}zoZb$g0)Rx7OSXfWdlatcbyFz`X39t+`9mu2&ZR6TMdRC>tiy>g17QZj
z41^g7GZ1Fr|BwONvw4xW*!P7tY{LwM8Q7K?;NOQBRW9R!ToKa$bWr0T0Z2w@+Aq{+
zyhAb;$ao-Egd`0W6s{zND+Wgl6z()13+&>7ToF>Z0|ti=44#a^2?hP9)9=T8bHKQe
zVH;*3%)sUh@UwdaGN6G8cJcW=HD{Tw*Vgs}mXt=y$}1#Ek(5g1QgX)0Cq2!}xd|<M
zk&gy7ZzdJ=haAUR?`x?M)5uS;+CInjG}AV+zO$(tWHLEw+PafZI5}H){ohFng(S(6
zJjLpkmO8sTTVluBms?^>-N!qq+jew$S(fUW+It2rXRa(RJ-__In<69(J_}HFSBP&F
z$EUk#D@7~h#_K^_?tGuPv?$3Ig1%D-T2^+bPt+=B#>}*1C(T7;idDH3^8gJ8v&KBd
zH=1^=T*h{%San*n(m6}>j9$y)#_pJBEO@*(;W}Bb&o`W6Eaw^*46-xljefEw*Bbsy
z=jS}rvE30P>ym7Yw~1Kf8#{ML4>mR*?l^X`cdc?)6;o=I+R=H_HB*)`oHuoEW?XaA
zhOL|S^aN$m_RMEYBP&<qsyt+C8Dov@s;b;mr>bMQl=)oF^scZ*N%Cj+?o*XXomO$q
z(Ycq-K9yu&6Wgb%7rCY{Yf!5P4i7e|%8*MjF)c8B=wU?}nx)stTv@ob9#Pa`OG_CR
z(`E6T&MrkAofo08CxglE<BB?#b}|`SvRjQU!F10lRehR2`K;!8=jRNYR&_gge1cXr
z&UL-I&etS0#+!pYF}{h^Lj!cdNf?B2&>;`kU=?1658wveg3sV<_y)d(@8Em51HZs;
z@H_kgf5P7w!E&rX39E5G9>9axjEC_EwqZM-z|+`^3GBnOcmaoS7)Njlr_sb`aTYyX
z#ua=KU&7b$ZG0Es!}swzevCKq7Jh=C;}>FSB?UYO#JJGnm((jJF}OY}8NC;YQ6lls
ze@fzyJ2`&UH4oJ8KG4|Q(th-@`1<R+>xFG#su&}m9RY_AO#uo4DnVKw-K*^13h!aU
z%vg{(E39J8w~j>{B*KG9{!nR(9+HV+hC<sEeMFL2iO{u1+hoF)l?q*_@~A|BvNECV
zR!+!-FpCInk8)ZfQd#+0eVw|eH=!sD_&-W6LT*doK7yO@6~Xos{0zSmXnzr8K!EK+
z)d#Er8?gyn39@$Vz%J~;Qy3@EIA-VYDICOcoWM!EM6k^eY_n*gjd@(aMO-52UdC7O
zD!z)>a24Mm^xpB|`%r+jj@y|6XhP!kV%+AFS=(~#X__nGxzRiv-QO7~72&D;{QvmY
z_y6~I62j=h3~ciZV5C3UpP(dcwGHsIc8uy}s=RQ!6(M~WYBpR1&^S1b`?fJM<v#I1
dt_bP7(!B3V@?W|L2>1Wsv={FGoWt!}{sA3+#h(BG

literal 0
HcmV?d00001

diff --git a/src/main/.DS_Store b/src/main/.DS_Store
new file mode 100644
index 0000000000000000000000000000000000000000..110d569ef8f1d911208d2dfd3c8f85910d7d595c
GIT binary patch
literal 8196
zcmeI1O>Epm6vyA&eA#Z3OhVc?+pkrYr~%S6U$kjy+RY}QMzl0)zSES{yEci5V~4dj
zn<fM;96*I$!#5l_P@$e^;lKd|;?fgH5Q)MCao~c00~fBm@pz+V(_8_y9?A2@^WIy}
z`}-GL;{X6AvwAy#3IGxv+_D|i-KB9qKen_;FjGbrDIZ_~7E(EPA!RwKEz#jbs6ePd
zs6ePds6eQ||3LwIXY(d)^WGQUun!do6}T@I;LnE`9o!}Yn-|u9bWrDS0mzopwBKk<
z`v5;D7T82!^TPV6^qXS$fI%t-TMQKG<d5-ivWdXvg%#<5A{{WeG6p*o^si2NF+UtI
zA#B)(3WN%5Re<l^%OM8_q(Cd$zu!tNSf=Z>wf%sRlG3vB3Q1BVrBb;#H0$JsJk86x
zNiB1MpABl>Y$_NJJC3z6)>5OUk(*|9eU9yErfp>WWK%aNWNOT`btji}vbOH}zcVBp
zk|ay=G^<}(>Fn-oi5+cUZHcXPAM2oD+mY2(S*mYp?-{r>e|dT3`PCQR6lG!XXn^XX
zGT$n$QFqf;idM-JHWhEVi+$qbMI=)w{&t~wS=pgJQKy_9H`9(iWG)-itlFj82k3M#
zV=PjgV`<0A&fD%Zt4V8CI%{d3(Q8>e*d6zbC6A9LT_@x9`GM1nWnJUEL2>4y(NEEo
zTFZaw+=6F1wmWKMT(a>*o2W^?zH?XfK)m@-$I%nL>y=g2OsQ4s#uiQ2Oj*WA&eXlx
z3C&F#wr<)plcc8Yna`L;My|m%dDzzGjdfO4UAennRmZa_^SP|)U1o7f@@Mz#Rh227
zR&mzRd6v#Tm1N%&+pDS<xTh~;P_G9G4>qaFuuC;DEeL$*VMQ69qua_{S){feR@4zo
zOBoi^WpSO(E=3(%6s55zgURk=iaMTl=I3e2ZVk2s(>*6u^=W?PGn(t2TQF=|)ve(2
zNm|te_x0*JUy~G1GzU5{{z7ShM(BbQFbET%6XaK64PJ*2;5yud&){qL2EK*w;Cr|Y
zzrb(sJNyBE!rxem<ye6d*5E$ej|Z?B58+{K!*)E5r?3~3*oSBEJPzXsj^Z@Vpo!1o
z9D2Bld3+IH!q@O^d>7xt_wgEjj5qKmeuAIl7h-9V0;U7vywKy9G%BVs_>>kIyBm#B
zqVeE=O5=|^If6B{57h12A8&4HKk`^&;}#a(v`t*yiIUHc0K^BU0EU2-Ky8TbQTA<z
z_z0n9EJ>UfR<Z6!$D)lAA;Kj8RB4JHl!;@8!rK&mM3PuU_*$cFGNH>#gs)S1R3b=O
znecWi$7RBpl?rc<a!MjvS^0WHy}G+MsVEHiUzL0ZcH2Vt5!`^U2)Li%XZV$1`-?yW
zf~*QvAF@V_V-vO#Xzkd6UD$&sF+s3#)Xw5lIEWKCiBouyfSV=Y=FmbLbGU@dxI*B)
zjIZDod=;<a8oojJz2gJ;p@3@xxzh#MgvD#c$Sn?KY|F7{Xug2y=9KX4-cg`Ll%n$e
z|Kr<#|G#$%4l4;22o>0(0G9R-^(Se1yGK6XYscugL<es?E-$Q~LY==IC+ly=$!`3^
kkj60z<vEGK=7pshYXAC&fbjkA>+WkGzW+D0xZei<0P5$>0{{R3

literal 0
HcmV?d00001

diff --git a/src/main/resources/.gitignore b/src/main/resources/.gitignore
new file mode 100644
index 0000000..e9eccc4
--- /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 bfdbd6f..8eb5046 100644
--- a/src/main/resources/a_little_config.txt
+++ b/src/main/resources/a_little_config.txt
@@ -1,13 +1,13 @@
-#jdbcUrl = jdbc:mysql://123.56.186.144:3306/bbt-test?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull
-#user = bbt
-#password =bbt123
-#devMode = true
-
-jdbcUrl = jdbc:mysql://rm-bp12tm7y208td7cm9o.mysql.rds.aliyuncs.com:3306/yancolad?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull
-user = adtest
-password =ad--Test
+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
+#user = adtest
+#password =ad--Test
+#devMode = true
+
 ##这个路径请定位到项目中的view文件夹所在的文件夹的路径(WEB-INF/view)
 codeBaseTemplatePath=/Users/tianpengtech/git/fair/src/main/webapp/WEB-INF/view
 
diff --git a/src/main/webapp/.DS_Store b/src/main/webapp/.DS_Store
index 455f5e4a8bd3c1ea1d4614f05d197fb8c9ab2fad..1fc13c97ba39f1701cc4f76084555c508b73fa1f 100644
GIT binary patch
delta 112
zcmZp1XmOa}&&a+pU^hP_`(z%0Ka32UIR!0QRd^Xn7!nzZ8L}DTfvi-9T!sRM9H0o0
col=~fla!yI!?>|<A>(Ft32QbYRnKDt09W1}b^rhX

delta 38
ucmZp1XmOa}&&akhU^hP_+hiVrKa7l<IR!0QH<lb_+{`Xv&9<@R5F-HRCkx*I

diff --git a/src/main/webapp/assets/.DS_Store b/src/main/webapp/assets/.DS_Store
index 23576507f6aba30a3348fa50c49f98477f1d233c..4a604402606ae1716cadb61482c99ee005a15282 100644
GIT binary patch
delta 14
VcmZp1XmQxUBFM<FnN{#V9{?cR1SJ3f

delta 14
VcmZp1XmQxUBFM<NnN{#V9{?cX1SS9g

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
GIT binary patch
literal 8196
zcmeI1O>Epm6vy97($teS%_QW**|e}Cgd`=De9(Nfq-;JK5@>1ZCQX_aHr}<<SU7fA
zdpBRCq`;Aa1QY=W5aNJnxNztJAt6ps!3Cj6r3WquIB?<00ReA3-q1Fi3kRyI9?A2@
z^WIy}{Qa{>;{^ch&**IcDgY>S2+Ma+m8S^5I5w4npr@EDQa+@tq~lnkH*b6p9-2^r
zP=Qc^P=Qc^P=Q;h0Ik`gC|j)i(i_&H0-*wTqypmo5T!%dSYTJB^<N!S`C9<8MbzyV
zYID&b8x3qMu&dINhYHG6vN9EeEd$DQ>W>C-vB0iME7Jjk%?Aco#$d;R{?+OCqkcGG
zOxmyx6$lmBtbo|N7s5OkkksAl_wRleB)|m|JTQ{;?p)Gxk`#U=IcJ%!*V=j&3kr+2
z6>nFR5~ZZH<mvc~GavUfFXQ%W>C@uuxaQ3ygZ3zW8rW!S$&;orpWu}Pj_qltZKVBV
zQ#UB&%(!Xm&V0X<v31w~ow#%;3R75u*DNo0ba%8wyV_P-qRZVq?bK}TTv=gCO+#Dn
z$kgoO((>~w=iZjH#o&zrWjD?K9XeO!)c>95G^rpyVu++oPRq>>ND&IsIT3!yiNM$n
zb*S>O;RNRy*EnHVnrCK>LCrJV1TS+*jggdNA5R-un)!Iju`;tZdCF6omC8`C(Pvq4
zbIEWgJY&HVtx4BOdjo#pgh{!gFTpEB{;@gFbZqyek#@;4wzjh>a!-BJgY8|9^sSff
zD&wqzRgPy(*GyW**u1HGGp95+W!SoDpPeK%ZO@!GjWjFAi)_@^W{q{etE{xTMpY*=
zN%Ogk=`HelMe%#<cB|}+P9r?(=psw!mlfuFqPtb~wD1h14XX7Z;l2iyjk+{it_6Y3
zdl?&jmToI|nM~dH5L3r2EooR>XYx874>NT<E2qSt2s*oam^zViW@l;0ZaKCD-MxoY
z^%-&HBbw_Sn=@=0)s^7#{WPjm!q=zkVoXYXtV!Pc`dF)MaIxOhLJJ&%A((^|*aX5W
zZ~<P0ci}@=gHPde_zJ#;Z{S<_4z9sZ@H6}ZzryeEC;SC}BOt>nti~FQVgoi}6E<Tz
zc3}@5z=Jr5kK++MicjJ=CQ!p9rqIF+F5n_A;Y;{BzKIv{Eqot8#!I+{pWtQuLXNB;
zhwF$u&(-)Pwek@eJeCFH`G|}Vk&U;6$ZI<VhUFD^RaV_y-_+99c`&wd8*jRCH?Va*
zPCi2t5+9x%91>W9wKh`6_H2du7~y6tD1sTjecg|aM($Mz6R!BDtRd3Kh-Hq_+Yos`
zQFwv$?TfTB!j~6HUkBT-5U6~c^melYj8Nu9(%Z`(Rft$#yk1+QR`>NY#z8z;EDw5H
zg7*Pjg3k!L@8K%^NWlF@u>C=x6(jdSi(nn@!TSleX55P{xF0*Qn}8Fz9mXLX#;5QE
zj^Y?WH$~8;P{(O>a1PVx5`5?I1w4;0;>&meUn2zH@F9Fp0=9wOa1J<W@uPg$W#ehv
za_qC@%i(%sT6lIFC{QTJsEYmn;jO>_-v%=YhZrglD)3(wz@owUU_WJV^)45C?I;~n
zbciD2R;Be*sPebtWc}?p*^NH{sU4+IkrNB-s<hNY<$wPW5U&5>`tOr>XIK9K)?V6?

literal 0
HcmV?d00001

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
GIT binary patch
literal 6148
zcmeHKI|>3p3{6x-u(7n9D|mxJ^aNf&)J6~#KmAso%cJ@7L0DEB!A4#nc{7>3S@sp1
zjfm*{wwsAeL}Uavl)Htl*|~YgdYMrm9Cw`Ly1Q%-o8$4&seYd@?ockWm9y->;J?3>
zSt>vUr~nn90#x9W0@izBqj4Z36`%rC;H7|l9}3*CCN_co=|J!i060L}4QrnzfW;EP
zn%D#)1Jj@agQ_`VXwZ=_SyvOAz@Urf@S*u+%?U;Q>A1gmxo8b!qyki+tw2Av6YKv=
z_=owwP2!FUP=UWvKnIJ}VvbkJ-r9LN>$L^GhFi@8Zicl}5WF1&y&Yp??Re@%QCDn@
X^P1QMIvshZ1Nk#xy3nY=uN8O#MZ^`c

literal 0
HcmV?d00001

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
GIT binary patch
literal 8196
zcmeI1O;8+F5P-Y+otXr9APK|fZ;O=*Dj_UjLSjgk1+7pfh6?|LNM?5?Ffz>G&g?D$
zvCxB-nk)Y6!GkF)Clft*(9-gflU6BJMlY5JFP3`n;?;ihW+^s=t6Ists(Jn1>+YG?
zJs&gM0{~z$tH%LU0Fdb5lI@`GE{*H?v89y+E9E4S`~lol-d#vpPHKy7xDaL_%s`ld
zFau!*!VLUBGC=Qa-lT2b`$8M`VFtns+?N^P&xa@-TqXj!Dy0ADpw2G=NS4vE-)KyA
zfbSCxWFnBOLi(<BPEkEz;EF+sfx?~iQEpB$5y({`g*%{d2Mn%^L4|_;)yXgFn*%0<
z4ErzxVFtElfY<KjV8T3TFjG{&-%2f5rt7u0|9~Z>W#tu>lB7sVm2z=t*2xcfnwNEx
zTIK?u4Qk$ODi{wtj<qq?QlqAkpJw%aj_qltZDf3BQ#Z(DYRt5CC!ch(w(k1p84?Of
zk|lYXH7qZ8c6YW$kH%M8qs!gLI%wE_WMxH`8k*xh1DEEnEG<8`^8A}3C=4D9P;*C+
zZxu&)S$ESZ+9NmL6u9N)`oxEel1w4++l9boWrzAiy>fcoOgr|FxnxYU8kgc8py^=7
z$We@AX~)XW+wL^0O>0&<YiXX*Ygydb9ruhykB=r@C*$?`hSQ8?UE{n#c4p4#Cu?%8
z<7Yaz;F*r?jv5)4WGvAx;*qcK+!Z+xYdO?$^hED^Rdo$h>XiDioave=%NWU<x;Hza
zxoN}JO?zgNGHH9}Wz)#WwYVk^+uFRb&Z=vwb~mW%cs6A|n>D>FEG9|*>Ylx-GNscl
z&N@2x(%Gky>}#TXRrLbb^kod{^}yl5W>pz>DJG@`h7UcgD8qAfOPMPR*S5ooI$~)l
z!(zHDuG872sAD-18hbKW>^`Qb<7sDpp0@1PVr#J6b5d2G=2t$Wx!$=2!=_!`3ND|d
zT}^OZudeewNwGvrkSE4pC5_MoU2p;hVFGl>!&O*=*Wm-W4maU5_!_=}Z{a)m9&W=g
z@EiONf54ycH<n=qR-%NpxDWT^0c^oTco^F;j>qv7_F@wI@C=^EVI09xoW>b6@fn;$
z4_9y%U%(gfHGCW2#rN=iyoMj+4ZMk;;OF>-*jh;e(E%|p^!O!>idhUkqLqx@jl~GD
zc<?`E@yDGUz}mV8>UZsrwY0{MJeJtFfp^@pBC0ln<kKVY@UbaiAy6eu8zXy^ecJ&(
zLZBIo5~qb#uKU)}NRvc>Fv*`P&5?sLQOr<in<I}%5-Sn9wn)27;IdMo>r@_<2vJrp
zwB5>anIL9mLffO9l89ASvEJCA?(R)03IqN(C2xXmTjV~18}Jq3_7nUJzY=PH5oSP$
zRio-7)`T%^#x}w%jvd&AJ$Momgc=9!EIx&UIDwNmg%=68S;B1&EwnL@i@1c#gxyQ{
zGQNVZ;#FM3HweCWeEdEXXl(#@x`3LHc&!+?+)&209D9aV3y2mwgtL1w1EnG;mDm4|
zZ~y)OUJN~qDa=5afgl4|)<4vrq{(&<e_m@x>9|A(Z`^KGNZ*AzzZ@s&m*XTi{$WVt
kD4BAfL?Bm%q!nua`iB7eVWEWY|Dqq9;rri5@xJQ*0lTrtr2qf`

literal 0
HcmV?d00001

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
GIT binary patch
literal 8196
zcmeI1!EVz)5QhIPt*}#7N>7xVk6b`1aN}Y{<-max4**UY0wRq|nus2A;T?Dd-i$jB
zQ2v=+RqJ?H>ZwA_th77UdVbID=drCx0Jzcm{1i9=P_T;~9&$)DIWN7}_QK3lT1P!F
zdpB<<<9R#o`PzgLFak!v2p9n)@P82CH(Oef`R@C(HW~pVu#*Jj{ZO%st%KcotFI0Y
zS_07Sb6OjZSqG@53bqb*<E=`0O<z5@Aa$X{a9+;ymAKQ^!EU_uayT!C3z1!@P@G1m
zu2Ofn+FKiqfDz~uklOtKr+9%&EIReOJV<ZYpWSFv=>cA5Jb(8*U!^_Wlb+}6jOWiS
z&mkI&(PE7i`xTz!f-_&a?&Rv--!1*&mOiQ4YqnGa#%vg4fhm^hNXqF~#OVkVu5-b4
zHazmHO-6%oi<QT!Tr$>2#+6;l{-(57>DbCMzCwY|N+q*aCsbqq5;MkFVxG$a<(O7v
zvOyW96`8CMg06@Nmb&kA?)*Bx?~Y;^DTLij39d*lOTMEoNkH;zN}E&&xsGBG6mx1a
zPmr+dXbNgtuB}bS5ON*=<J%m+V?HR!>xkrIy~1TWp5&j4y$5(t3QK(Bo^lz)C%B_2
z`R@3l`94iYQF3vV65ln?<^HBw3%6Kt#Qb0L?p*LLuP|cI+*c(SD+l<&C=;%*p(+_o
znf-~F@e#3R1RgknM}B`NQvbir|Nj5LDcJUmz-|+8`)41{Mr06b>mCiMwJY{d?9#+<
t<E=_KXgN-+<v8u_ABH@x=qj2z*p0WGVY~Mq0y1@uv+uv&4;yxaz&{rHbiDuo

literal 0
HcmV?d00001

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
GIT binary patch
literal 6148
zcmeHKI}XAy47C9vB$kehxdJzc5S)MuAYcSKAofn2i=*-U89;>%2GDcmyu|TK)i=bo
zi0I<7pNljiGJzY))rP*=zIo3E8Brh{XS8zKpLd6C+a7w^uLH&%%MQ#Vo(H~d(5L_v
zpaN8Y3Q&QME0862GX40;Jdg@dfnQg^?uP<5tchKqUmX~{1ptl^cEj9z31G1RuqJka
zh`=<cz@Tcj7#eiMOXk(YE->h#*?efeS+he?e>=`Eo-SGgIZ^>C@T|ZvmW|c_75q*A
z|4ibF3Q&Q+Qb0$`^>Tqv%G%odIIFb<zJXiL4Q__HQ!scr26{Qh!piZ?lOnI!9Q!q~
U3v@c-P6zU5z;vNefp05t2c9Vvp8x;=

literal 0
HcmV?d00001

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
GIT binary patch
literal 6148
zcmeH~O>P1)427Qyl`3_^l4Uj=pf`vRJpmWsSEv#d3&cK0=h^Xwq3dddo+anSPCP%~
zVloC`%iG}#m;v~pyJF$Pz>M)be(;MePB<Q}`}6K{IeQv!xz__aukpB^%MuX~0TB=Z
z5fFh95r{*a=l|!3o=J})0wORD0{(p{bk~~Ny2hu2L$m<YDbrz`M=wDwo}kv$)|DBW
zW%poNYSD&xKFX;j_tn(awU@)P`LMjRc^5;oUJfe^XjVfsh=2$T2uylB^Yj0k{#XA$
zC{ZW^BJg4aY`R*nmVBu^Tc2Lf^P9~2ywRz#ox{UV00TdY=kzeH7oSjTYU|1jO+NyG
KL4yeVD}g&<yc2E!

literal 0
HcmV?d00001

-- 
Gitee


From b018a7c41820958c3d948edafae986b5c165f813 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E8=83=A1=E6=89=BF=E6=B7=9E?= <644344980@qq.com>
Date: Wed, 17 Jan 2018 04:58:04 +0800
Subject: [PATCH 10/17] =?UTF-8?q?=E4=BF=AE=E6=AD=A3=E6=95=B0=E6=8D=AE?=
 =?UTF-8?q?=E5=BA=93=E8=BF=9E=E6=8E=A5=E9=85=8D=E7=BD=AE=E6=96=87=E4=BB=B6?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 src/main/resources/a_little_config.txt | 16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)

diff --git a/src/main/resources/a_little_config.txt b/src/main/resources/a_little_config.txt
index 8eb5046..83c8b2f 100644
--- a/src/main/resources/a_little_config.txt
+++ b/src/main/resources/a_little_config.txt
@@ -1,13 +1,13 @@
-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
-#user = adtest
-#password =ad--Test
+#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
+user = adtest
+password =ad--Test
+devMode = true
+
 ##这个路径请定位到项目中的view文件夹所在的文件夹的路径(WEB-INF/view)
 codeBaseTemplatePath=/Users/tianpengtech/git/fair/src/main/webapp/WEB-INF/view
 
-- 
Gitee


From a4b45097dc56c892dcaab075648da3fc0be2cf2b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E8=83=A1=E6=89=BF=E6=B7=9E?= <644344980@qq.com>
Date: Wed, 17 Jan 2018 05:05:22 +0800
Subject: [PATCH 11/17] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E7=9F=AD=E4=BF=A1?=
 =?UTF-8?q?=E9=80=9A=E7=9F=A5=E8=AE=BE=E5=AE=9A=E5=88=A4=E6=96=AD?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../com/tianpengtech/admin/task/TaskAdminController.java    | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/src/main/java/com/tianpengtech/admin/task/TaskAdminController.java b/src/main/java/com/tianpengtech/admin/task/TaskAdminController.java
index 3126286..d0b325e 100644
--- a/src/main/java/com/tianpengtech/admin/task/TaskAdminController.java
+++ b/src/main/java/com/tianpengtech/admin/task/TaskAdminController.java
@@ -198,8 +198,12 @@ public class TaskAdminController extends AbstractAdminController{
             
             //if(SysConfigDao.ME.isSendTaskSMS()){
             	//发送短信
-                SendSmsMsg.sendPayFeeInfo(fair.getStr(Fair.MOIBILE),task.getStr(Task.TASK_TITLE),
+             
+            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;
-- 
Gitee


From eadd1774520ad10cba85a9b449ae7a3fb3a2611c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E8=83=A1=E6=89=BF=E6=B7=9E?= <644344980@qq.com>
Date: Wed, 17 Jan 2018 05:31:59 +0800
Subject: [PATCH 12/17] =?UTF-8?q?=E6=89=93=E5=BC=80=E7=83=AD=E6=9B=B4?=
 =?UTF-8?q?=E6=96=B0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../tianpengtech/front/mobile/login/MobileLoginController.java  | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

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 d275887..48a9004 100644
--- a/src/main/java/com/tianpengtech/front/mobile/login/MobileLoginController.java
+++ b/src/main/java/com/tianpengtech/front/mobile/login/MobileLoginController.java
@@ -213,7 +213,7 @@ public class MobileLoginController extends BaseController {
     
     public void upateVersion(){
     	R r = R.ok();
-    	r.put("showUpdate", false);
+    	r.put("showUpdate", true);
     	r.put("showInvite", false);
     	renderJson(r);
     }
-- 
Gitee


From d75774e6955bbe398ab8d4c05cbe467c06bc5e4d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E8=83=A1=E6=89=BF=E6=B7=9E?= <644344980@qq.com>
Date: Thu, 18 Jan 2018 07:41:07 +0800
Subject: [PATCH 13/17] =?UTF-8?q?=E4=BF=AE=E6=AD=A3BUG?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../fairbankno/FairBankNoAdminController.java |  3 ++
 .../common/model/fairbankno/FairBankNo.java   |  1 +
 .../tianpengtech/common/util/push/Jpush.java  |  2 +-
 .../mobile/bankno/MobileBanknoController.java |  1 +
 .../mobile/bankno/MobileBanknoService.java    | 27 +++++++++++---
 .../passport/MobilePassportController.java    |  1 +
 .../front/mobile/task/MobileTaskService.java  | 13 ++++---
 .../admin/fairbankno/fairbankno-form.html     | 37 +++++++------------
 .../admin/fairbankno/fairbankno-list.html     |  6 ++-
 9 files changed, 54 insertions(+), 37 deletions(-)

diff --git a/src/main/java/com/tianpengtech/admin/fairbankno/FairBankNoAdminController.java b/src/main/java/com/tianpengtech/admin/fairbankno/FairBankNoAdminController.java
index ce6897f..05e3498 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/common/model/fairbankno/FairBankNo.java b/src/main/java/com/tianpengtech/common/model/fairbankno/FairBankNo.java
index a41a6dd..4e8d28e 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/util/push/Jpush.java b/src/main/java/com/tianpengtech/common/util/push/Jpush.java
index 95a9546..8bad6e9 100644
--- a/src/main/java/com/tianpengtech/common/util/push/Jpush.java
+++ b/src/main/java/com/tianpengtech/common/util/push/Jpush.java
@@ -29,7 +29,7 @@ public class Jpush {
 	public final static String PUSH_MSG="msg";
 	
 	public final static int LIVE_TIME=1*1000*60*10;
-	public final static boolean PRO_ENV=false;
+	public final static boolean PRO_ENV=true;
 	
 	
 	public static void pushCustomContentToSomeOne(String alias,String ALERT,String type){
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 9b582eb..048c45f 100644
--- a/src/main/java/com/tianpengtech/front/mobile/bankno/MobileBanknoController.java
+++ b/src/main/java/com/tianpengtech/front/mobile/bankno/MobileBanknoController.java
@@ -29,6 +29,7 @@ public class MobileBanknoController extends BaseController {
         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);
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 7dc4a42..eca03b0 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);
@@ -64,10 +71,10 @@ public class MobileBanknoService {
      * @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 +135,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/passport/MobilePassportController.java b/src/main/java/com/tianpengtech/front/mobile/passport/MobilePassportController.java
index 957b3bf..159e85b 100644
--- a/src/main/java/com/tianpengtech/front/mobile/passport/MobilePassportController.java
+++ b/src/main/java/com/tianpengtech/front/mobile/passport/MobilePassportController.java
@@ -323,6 +323,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不能为空"));
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 397b119..2e04403 100644
--- a/src/main/java/com/tianpengtech/front/mobile/task/MobileTaskService.java
+++ b/src/main/java/com/tianpengtech/front/mobile/task/MobileTaskService.java
@@ -54,11 +54,12 @@ public class MobileTaskService {
 				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);
 
@@ -67,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());
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 8e9cc5e..5684a30 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 5451d3c..9654c21 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>
-- 
Gitee


From 7f130d512991fdf4b9d638ecc8a8e4ae16aeec12 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E8=83=A1=E6=89=BF=E6=B7=9E?= <644344980@qq.com>
Date: Thu, 18 Jan 2018 08:04:02 +0800
Subject: [PATCH 14/17] =?UTF-8?q?=E4=BF=AE=E6=AD=A3=E6=96=87=E6=A1=88?=
 =?UTF-8?q?=E4=BF=A1=E6=81=AF?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../webapp/WEB-INF/view/admin/fairbankno/fairbankno-form.html   | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

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 5684a30..a879437 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
@@ -28,7 +28,7 @@
         <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.branch??'')" 
-                   maxlength="50" placeholder="请输入真实姓名..." id="real_name" name="fairBankNo.branch">
+                   maxlength="50" placeholder="请输入支行名称..." id="real_name" name="fairBankNo.branch">
         </div>
     </div>
 <div class="row cl">
-- 
Gitee


From c7e7240611d7ea845224e63a832ed9543b9bea89 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E8=83=A1=E6=89=BF=E6=B7=9E?= <644344980@qq.com>
Date: Sun, 21 Jan 2018 00:57:35 +0800
Subject: [PATCH 15/17] =?UTF-8?q?=E4=BF=AE=E6=AD=A3=E6=95=B4=E6=94=B9?=
 =?UTF-8?q?=E6=84=8F=E8=A7=81?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../admin/task/TaskAdminController.java       | 15 ++---
 .../common/model/dictionary/Dictionary.java   |  3 +-
 .../tianpengtech/common/model/task/Task.java  |  1 +
 .../pay/weixin/controller/PayController.java  |  3 +-
 .../tianpengtech/common/util/push/Jpush.java  |  4 +-
 .../mobile/bankno/MobileBanknoController.java | 47 ++++++++++++-
 .../mobile/bankno/MobileBanknoService.java    | 40 +++++++++++
 .../mobile/login/MobileLoginController.java   |  2 +-
 .../front/mobile/task/MobileTaskService.java  | 67 ++++++++++---------
 .../mobile/task/TaskCalculateService.java     | 33 +++++++++
 .../front/web/fair/FairWebController.java     |  2 +-
 .../front/web/task/TaskService.java           | 26 +++++--
 .../front/web/task/TaskWebController.java     | 11 +--
 .../WEB-INF/view/admin/task/task-fee.html     |  4 +-
 .../WEB-INF/view/admin/task/task-list.html    |  2 +-
 .../view/web/task/second-task-step.html       |  7 +-
 .../WEB-INF/view/web/task/task_add_new.html   | 11 +--
 .../WEB-INF/view/web/task/task_fair_new.html  |  6 +-
 .../WEB-INF/view/web/task/task_success.html   |  8 ++-
 .../front/web/script/task-second-step.js      | 29 ++++----
 .../assets/front/web/script/task_fair.js      |  4 +-
 .../assets/front/web/script/task_form.js      | 54 ++++++++-------
 22 files changed, 269 insertions(+), 110 deletions(-)
 create mode 100644 src/main/java/com/tianpengtech/front/mobile/task/TaskCalculateService.java

diff --git a/src/main/java/com/tianpengtech/admin/task/TaskAdminController.java b/src/main/java/com/tianpengtech/admin/task/TaskAdminController.java
index d0b325e..afa97ae 100644
--- a/src/main/java/com/tianpengtech/admin/task/TaskAdminController.java
+++ b/src/main/java/com/tianpengtech/admin/task/TaskAdminController.java
@@ -26,6 +26,7 @@ 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);
@@ -108,6 +109,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));
 	}
 
 	
@@ -128,12 +130,10 @@ 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;
-			int actualFeeInt = (int)actualFee;
-			setAttr("actualFee",actualFeeInt);
+			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",(int)actualFee);
@@ -150,15 +150,12 @@ public class TaskAdminController extends AbstractAdminController{
 	@Before(Tx.class)
 	public void accept(){
 		int task_id = getParaToInt("task_id");
-//		int task_id = 3044;
 		int fair_id = getParaToInt("fair_id");
-//		int fair_id = 88;
 		String fee = getPara("price");
 		String sql="select * from "+TaskWh.dao.tableName()+" where task_id=? and wh_id=? limit 1";
 		TaskWh taskWh = TaskWh.dao.findFirst(sql,task_id,fair_id);
 		
 		int status = taskWh.getInt(TaskWh.STATUS);
-//		int status = 5;
 		if(status==Task.STATUS_COMPLETED){
 			renderJson(JsonUtil.printError("当前任务已经被结算验收,请勿重复操作"));
 			return;
@@ -168,11 +165,11 @@ public class TaskAdminController extends AbstractAdminController{
 			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;
 			}
 			
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 11926e7..d3daae1 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/task/Task.java b/src/main/java/com/tianpengtech/common/model/task/Task.java
index ea6b1be..2522bc4 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 0891f35..81066dc 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/push/Jpush.java b/src/main/java/com/tianpengtech/common/util/push/Jpush.java
index 8bad6e9..681558d 100644
--- a/src/main/java/com/tianpengtech/common/util/push/Jpush.java
+++ b/src/main/java/com/tianpengtech/common/util/push/Jpush.java
@@ -230,8 +230,8 @@ public class Jpush {
 	public static void main(String[] args) {
 //		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.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 048c45f..bc066b9 100644
--- a/src/main/java/com/tianpengtech/front/mobile/bankno/MobileBanknoController.java
+++ b/src/main/java/com/tianpengtech/front/mobile/bankno/MobileBanknoController.java
@@ -23,7 +23,7 @@ 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"));
@@ -66,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 eca03b0..834045e 100644
--- a/src/main/java/com/tianpengtech/front/mobile/bankno/MobileBanknoService.java
+++ b/src/main/java/com/tianpengtech/front/mobile/bankno/MobileBanknoService.java
@@ -65,6 +65,46 @@ 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
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 48a9004..d275887 100644
--- a/src/main/java/com/tianpengtech/front/mobile/login/MobileLoginController.java
+++ b/src/main/java/com/tianpengtech/front/mobile/login/MobileLoginController.java
@@ -213,7 +213,7 @@ public class MobileLoginController extends BaseController {
     
     public void upateVersion(){
     	R r = R.ok();
-    	r.put("showUpdate", true);
+    	r.put("showUpdate", false);
     	r.put("showInvite", false);
     	renderJson(r);
     }
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 2e04403..614a9cc 100644
--- a/src/main/java/com/tianpengtech/front/mobile/task/MobileTaskService.java
+++ b/src/main/java/com/tianpengtech/front/mobile/task/MobileTaskService.java
@@ -50,7 +50,7 @@ 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(
@@ -93,7 +93,7 @@ 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));
 		});
@@ -116,7 +116,7 @@ public class MobileTaskService {
 			num = Db.queryLong(sql, taskId);
 		}
 		
-		num = (num>limitNum)?limitNum:num;
+		//num = (num>limitNum)?limitNum:num;
 		return num;
 	}
 
@@ -144,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);
@@ -200,8 +200,9 @@ 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);
+			int total = (type == Task.EXT_TYPE_RL) ? 200 : t.getInt(Task.WH_NUMBER);
 			t.put("total", total);
+			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);
@@ -220,35 +221,37 @@ public class MobileTaskService {
 
 	public R getTask(long id, long uid) {
 		StringBuffer sql = new StringBuffer(
-				"select 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 "
+				"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.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 "
+					"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("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);
-			double actualFee =  click_num *0.3;
-			actualFee = (actualFee>task.getDouble(Task.TASK_PRICE))?task.getDouble(Task.TASK_PRICE):actualFee;
-			int  actualFeeInt= (int)actualFee;
-			task.put("actual_price",actualFeeInt);
+			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);
@@ -258,20 +261,20 @@ 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,wt.wh_id from %s wt "
+				"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 "+ task.getInt(Task.WH_NUMBER),
+				+ "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);
 		List<Fair> fairses = fairDao.find(fairs, id);
@@ -286,12 +289,15 @@ public class MobileTaskService {
 			String photo = ((f.getStr(Fair.PHOTO).equals("/upload/avatar/x.jpg")) ? defaultAvatar
 					: f.getStr(Fair.PHOTO));
 			f.set(Fair.PHOTO, photo);
-			double actualFee=0;
 			long click_num =f.getLong(TaskWh.CLICK_NUM);
-			actualFee =  click_num *0.3;
-			actualFee = (actualFee>task.getDouble(Task.TASK_PRICE))?task.getDouble(Task.TASK_PRICE):actualFee;
-			int actualFeeInt = (int)actualFee;
-			f.put("task_price",actualFeeInt);
+			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();
@@ -360,8 +366,9 @@ public class MobileTaskService {
 			return r;
 		}
 		
+		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()>=task.getInt(Task.WH_NUMBER)){
+		if(taskWh.size()>=wh_num){
 			r = R.fail("报名人数已经够了,感谢你的关注");
 			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 0000000..89c82e5
--- /dev/null
+++ b/src/main/java/com/tianpengtech/front/mobile/task/TaskCalculateService.java
@@ -0,0 +1,33 @@
+package com.tianpengtech.front.mobile.task;
+
+import com.tianpengtech.common.model.task.Task;
+
+/**
+ * 任务费用计算相关类
+ * @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;
+	}
+}
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 2a6fba9..f6fc3e1 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/task/TaskService.java b/src/main/java/com/tianpengtech/front/web/task/TaskService.java
index 4755167..25e2b2f 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++) {
@@ -482,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){
@@ -537,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 0de7a62..f001b16 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));
@@ -429,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));
@@ -454,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/webapp/WEB-INF/view/admin/task/task-fee.html b/src/main/webapp/WEB-INF/view/admin/task/task-fee.html
index 5c92edf..927e58f 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,9 @@
 	        </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">
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 d8a6ae6..2d69067 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
@@ -150,7 +150,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/web/task/second-task-step.html b/src/main/webapp/WEB-INF/view/web/task/second-task-step.html
index c058f9d..47bd034 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 2711ed9..e825dd4 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
@@ -45,6 +45,7 @@
                     </div>
                 </div>
             </div>
+            #--业务要求 去除人数选择
             <div class="m-row">
                 <div class="u-row-title">人数:</div>
                 <div class="u-row-box" >
@@ -55,20 +56,22 @@
                     </div>
                 </div>
             </div>
-            
+            --#
             
             <div class="m-row">
-                <div class="u-row-title">任务酬劳:</div>
+                <div class="u-row-title">任务预算:</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">
+                        <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>
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 19255eb..cf7edd1 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 b9a0bd6..72ea7e7 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/front/web/script/task-second-step.js b/src/main/webapp/assets/front/web/script/task-second-step.js
index aa55fcf..65b36be 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 9fbc067..276fa44 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 a2c1043..02fc703 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,33 @@ 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;
-    }
-    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(!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("请设置任务酬劳");
+//        return false;
+//    }
+    if(parseInt(totalFee)<=0){
+    	layer.alert("请设置任务预算");
         return false;
     }
     
@@ -72,19 +77,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 +142,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();
-- 
Gitee


From 981110a8e2d47de1bd45ce93aad9e27715846d08 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E8=83=A1=E6=89=BF=E6=B7=9E?= <644344980@qq.com>
Date: Sun, 21 Jan 2018 02:00:41 +0800
Subject: [PATCH 16/17] =?UTF-8?q?=E6=89=93=E5=BC=80=E7=83=AD=E6=9B=B4?=
 =?UTF-8?q?=E6=96=B0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../tianpengtech/front/mobile/login/MobileLoginController.java  | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

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 d275887..48a9004 100644
--- a/src/main/java/com/tianpengtech/front/mobile/login/MobileLoginController.java
+++ b/src/main/java/com/tianpengtech/front/mobile/login/MobileLoginController.java
@@ -213,7 +213,7 @@ public class MobileLoginController extends BaseController {
     
     public void upateVersion(){
     	R r = R.ok();
-    	r.put("showUpdate", false);
+    	r.put("showUpdate", true);
     	r.put("showInvite", false);
     	renderJson(r);
     }
-- 
Gitee


From ae3cd783fbddec494fe659c5194162f20de7c581 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E8=83=A1=E6=89=BF=E6=B7=9E?= <644344980@qq.com>
Date: Mon, 22 Jan 2018 17:08:31 +0800
Subject: [PATCH 17/17] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=BB=8A=E6=97=A5?=
 =?UTF-8?q?=E6=8F=90=E5=87=BA=E7=9A=84=E7=BB=86=E8=8A=82=E9=97=AE=E9=A2=98?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../admin/AdminCommonController.java          |  3 +-
 .../FairWithdrawAdminController.java          |  1 +
 .../FairWithdrawAdminServiceImpl.java         | 35 ++++++++++++++++---
 .../admin/task/TaskAdminController.java       |  2 ++
 .../tianpengtech/common/model/fair/Fair.java  |  1 +
 .../tianpengtech/common/util/QiNiuUtil.java   |  7 ++--
 .../tianpengtech/common/util/push/Jpush.java  |  2 +-
 .../mobile/login/MobileLoginController.java   |  2 +-
 .../passport/MobilePassportController.java    | 19 +++-------
 .../passport/MobilePassportService.java       | 13 ++++---
 .../front/mobile/task/MobileTaskService.java  |  2 +-
 .../mobile/task/TaskCalculateService.java     | 25 +++++++++++++
 .../front/web/main/MainWebController.java     |  6 ++++
 .../web/passport/PassportWebController.java   |  3 +-
 .../front/web/qiniu/QiNiuController.java      |  3 +-
 .../admin/fairwithdraw/fairwithdraw-list.html |  8 +++--
 .../view/admin/websitewh/add-websitewh.html   |  2 +-
 .../WEB-INF/view/web/main/platform.html       |  4 +++
 .../WEB-INF/view/web/task/task_add_new.html   | 14 +++++---
 .../assets/front/web/script/task_form.js      | 16 +++++++--
 20 files changed, 126 insertions(+), 42 deletions(-)

diff --git a/src/main/java/com/tianpengtech/admin/AdminCommonController.java b/src/main/java/com/tianpengtech/admin/AdminCommonController.java
index 7533eab..92243ad 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/fairwithdraw/FairWithdrawAdminController.java b/src/main/java/com/tianpengtech/admin/fairwithdraw/FairWithdrawAdminController.java
index 3db8e99..1ff45ee 100644
--- a/src/main/java/com/tianpengtech/admin/fairwithdraw/FairWithdrawAdminController.java
+++ b/src/main/java/com/tianpengtech/admin/fairwithdraw/FairWithdrawAdminController.java
@@ -66,6 +66,7 @@ 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());
diff --git a/src/main/java/com/tianpengtech/admin/fairwithdraw/FairWithdrawAdminServiceImpl.java b/src/main/java/com/tianpengtech/admin/fairwithdraw/FairWithdrawAdminServiceImpl.java
index 32f2af1..a0ad080 100644
--- a/src/main/java/com/tianpengtech/admin/fairwithdraw/FairWithdrawAdminServiceImpl.java
+++ b/src/main/java/com/tianpengtech/admin/fairwithdraw/FairWithdrawAdminServiceImpl.java
@@ -87,6 +87,9 @@ 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)
@@ -97,10 +100,21 @@ public class FairWithdrawAdminServiceImpl extends AbstractAdmin implements IAdmi
 			MoneyLog moneyLog = MoneyLog.dao.findFirst(sql,id);
 			double money = moneyLog.getDouble(MoneyLog.MONEY);
 			double actualFee= money-temp.platFormFee();
-			moneyLog.set(MoneyLog.MONEY,(int)actualFee).update();
-			moneyLog.set(MoneyLog.DESCRIPTION,"用户提现:金额¥"+money+",实际收益:¥"+(int)actualFee).update();
+			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());
@@ -121,8 +135,21 @@ public class FairWithdrawAdminServiceImpl extends AbstractAdmin implements IAdmi
 			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/task/TaskAdminController.java b/src/main/java/com/tianpengtech/admin/task/TaskAdminController.java
index afa97ae..a10e14b 100644
--- a/src/main/java/com/tianpengtech/admin/task/TaskAdminController.java
+++ b/src/main/java/com/tianpengtech/admin/task/TaskAdminController.java
@@ -193,6 +193,8 @@ public class TaskAdminController extends AbstractAdminController{
             ml.set(MoneyLog.DESCRIPTION,"任务完成:"+task.getStr(Task.TASK_TITLE));
             ml.save();
             
+            //同步收益表信息
+            
             //if(SysConfigDao.ME.isSendTaskSMS()){
             	//发送短信
              
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 0587ca5..235f335 100644
--- a/src/main/java/com/tianpengtech/common/model/fair/Fair.java
+++ b/src/main/java/com/tianpengtech/common/model/fair/Fair.java
@@ -66,6 +66,7 @@ public class Fair extends AbstractBaseModel<Fair> {
 	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/util/QiNiuUtil.java b/src/main/java/com/tianpengtech/common/util/QiNiuUtil.java
index a0f06ab..ea72126 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/push/Jpush.java b/src/main/java/com/tianpengtech/common/util/push/Jpush.java
index 681558d..5690aae 100644
--- a/src/main/java/com/tianpengtech/common/util/push/Jpush.java
+++ b/src/main/java/com/tianpengtech/common/util/push/Jpush.java
@@ -29,7 +29,7 @@ public class Jpush {
 	public final static String PUSH_MSG="msg";
 	
 	public final static int LIVE_TIME=1*1000*60*10;
-	public final static boolean PRO_ENV=true;
+	public final static boolean PRO_ENV=false;
 	
 	
 	public static void pushCustomContentToSomeOne(String alias,String ALERT,String type){
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 48a9004..d275887 100644
--- a/src/main/java/com/tianpengtech/front/mobile/login/MobileLoginController.java
+++ b/src/main/java/com/tianpengtech/front/mobile/login/MobileLoginController.java
@@ -213,7 +213,7 @@ public class MobileLoginController extends BaseController {
     
     public void upateVersion(){
     	R r = R.ok();
-    	r.put("showUpdate", true);
+    	r.put("showUpdate", false);
     	r.put("showInvite", false);
     	renderJson(r);
     }
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 159e85b..0bdf156 100644
--- a/src/main/java/com/tianpengtech/front/mobile/passport/MobilePassportController.java
+++ b/src/main/java/com/tianpengtech/front/mobile/passport/MobilePassportController.java
@@ -19,6 +19,7 @@ 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;
@@ -401,20 +402,7 @@ public class MobilePassportController extends BaseController{
     	
     	//检测所有登录用户的收益信息,并且存入数据表中分析
     	if(totalFee>=0){
-    		Record record = Db.findFirst("select * from fair_total_profit where wh_id=?",user.getLong(User.ID));
-    		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,user.getLong(User.ID),id);
-    			}
-    			
-    			
-    		}else{
-    			record = new Record();
-    			record.set("profit", totalFee);
-    			record.set("wh_id", user.getLong(User.ID));
-    			Db.save("fair_total_profit", record);
-    		}
+    		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);
@@ -436,8 +424,9 @@ public class MobilePassportController extends BaseController{
     
     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);
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 464ae46..5558789 100644
--- a/src/main/java/com/tianpengtech/front/mobile/passport/MobilePassportService.java
+++ b/src/main/java/com/tianpengtech/front/mobile/passport/MobilePassportService.java
@@ -878,8 +878,8 @@ public class MobilePassportService {
 		Double yue = fair.getDouble(Fair.MONEY); // 余额
 		double tixian = Double.parseDouble(money); // 提现金额
 		
-		if (tixian <20) {
-			return R.fail("提现金额必须超过¥20");
+		if (tixian <50) {
+			return R.fail("提现金额必须超过¥50");
 		}
 		
 		if (yue == null || tixian > yue.doubleValue()) {
@@ -893,8 +893,13 @@ public class MobilePassportService {
 			int version = fair.getInt(Fair.VERSION);
 			//增加并发时候的乐观锁校验,以免产生重复的提交信息
 			int netxtVersion = version+1;
-			String sql = "update "+Fair.dao.tableName()+" set "+Fair.MONEY+"=?,version=? where id=? and version=?";
-			int result = Db.update(sql,yue.doubleValue() - tixian,netxtVersion,uid,version);
+			//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);
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 614a9cc..c44e0b1 100644
--- a/src/main/java/com/tianpengtech/front/mobile/task/MobileTaskService.java
+++ b/src/main/java/com/tianpengtech/front/mobile/task/MobileTaskService.java
@@ -276,7 +276,7 @@ public class MobileTaskService {
 				+ "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++) {
 			//假如包含自己,则剔除自己再列表中的位置
diff --git a/src/main/java/com/tianpengtech/front/mobile/task/TaskCalculateService.java b/src/main/java/com/tianpengtech/front/mobile/task/TaskCalculateService.java
index 89c82e5..eb69296 100644
--- a/src/main/java/com/tianpengtech/front/mobile/task/TaskCalculateService.java
+++ b/src/main/java/com/tianpengtech/front/mobile/task/TaskCalculateService.java
@@ -1,6 +1,9 @@
 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;
 
 /**
  * 任务费用计算相关类
@@ -30,4 +33,26 @@ public class TaskCalculateService {
 		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/main/MainWebController.java b/src/main/java/com/tianpengtech/front/web/main/MainWebController.java
index e0e24f5..40cb0c6 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 73c6190..ff29592 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 3a17a66..5a926f2 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/webapp/WEB-INF/view/admin/fairwithdraw/fairwithdraw-list.html b/src/main/webapp/WEB-INF/view/admin/fairwithdraw/fairwithdraw-list.html
index 2e39aac..8afaa12 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
@@ -28,6 +28,7 @@
                     { "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>"+"|";
@@ -138,11 +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>
                    	 <th>操作</th>
                </tr>
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 9d424d9..3f017eb 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 e0deff9..2a874a7 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/task_add_new.html b/src/main/webapp/WEB-INF/view/web/task/task_add_new.html
index e825dd4..cc9a0ce 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">
@@ -59,20 +60,25 @@
             --#
             
             <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;" />-->
+                       <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: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/assets/front/web/script/task_form.js b/src/main/webapp/assets/front/web/script/task_form.js
index 02fc703..03a805a 100644
--- a/src/main/webapp/assets/front/web/script/task_form.js
+++ b/src/main/webapp/assets/front/web/script/task_form.js
@@ -33,7 +33,7 @@ function checkFirstStep(){
 //        layer.alert("请输入参与人数");
 //        return false;
 //    }
-//    var reg = new RegExp("^[0-9]*$");  
+    var reg = new RegExp("^[0-9]*$");  
 //    if(!reg.test(wh_number)){  
 //    	layer.alert("主播人数只能是数字");
 //    	return false;
@@ -46,8 +46,18 @@ function checkFirstStep(){
 //    	layer.alert("请设置任务酬劳");
 //        return false;
 //    }
-    if(parseInt(totalFee)<=0){
-    	layer.alert("请设置任务预算");
+    
+    if(totalFee==""){  
+		layer.alert("请输入任务预算");
+		return false;
+	}
+	if(!reg.test(totalFee)){  
+		layer.alert("任务预算只能是整数,如:3000");
+		return false;
+	}
+    
+    if(parseInt(totalFee)<500){
+    	layer.alert("任务预算不能低于¥500");
         return false;
     }
     
-- 
Gitee