dever %!s(int64=7) %!d(string=hai) anos
pai
achega
d820be5b17

+ 3 - 2
config/base.php

@@ -109,6 +109,9 @@ $config['template'] = array
 		# 用户邀请码
 		'user/group_code' => 'ad',
 
+		# 用户消息
+		'user/msg' => 'msgs',
+
 		# 任务列表页
 		'task/list' => 'tasks',
 		# 任务详情页
@@ -123,8 +126,6 @@ $config['template'] = array
 		# 帮助列表页
 		'help/list'	=> 'help',
 		'help/view' => 'help-article',
-
-		# 剩余我的消息(需要接入消息系统)、修改资料
 	),
 	
 );

+ 17 - 11
main/assets/mobile/js/config.js

@@ -1,5 +1,12 @@
 //定义一些常用的方法,这是dever框架中自带的常用方法,必须引入jquery
 
+if ($('#input').length) {
+	var submit_value = $('#input').val();
+	var submit_input = eval('(' + submit_value + ')');
+} else {
+	var submit_input = {};
+}
+
 //更新用户信息
 function updateUser(url)
 {
@@ -29,7 +36,7 @@ Dever.modal.Init();
 
 //定义金币页的弹窗
 var layer = new Dever.Modal();
-layer.html = '<section class="layer show" style="display:none;"><section class="layer-cont convert-result"><img src="'+config.assets+'mobile/images/f936ea19.giftbox.png" alt=""><h3>兑现成功</h3><dl><dt>本次兑现12金币</dt><dd><p>兑现途径:微信</p><p>申请兑现时间:2018-05-21 15:08<br> 兑现完成时间:2018-05-21 15:08</p></dd><dd><a href="#" class="button">确定</a></dd></dl></section></section>';
+layer.html = '<section class="layer show" style="display:none;"><section class="layer-cont convert-result"><img src="'+config.assets+'mobile/images/f936ea19.giftbox.png" alt=""><h3>兑现成功</h3><dl><dt>本次兑现12金币</dt><dd><p>兑现途径:微信</p><p>申请兑现时间:2018-05-21 15:08<br> 兑现完成时间:2018-05-21 15:08</p></dd><dd><a href="javascript:;" class="button">确定</a></dd></dl></section></section>';
 layer.box = '.show';
 layer.title = '.show h3';
 layer.content = '.show dl';
@@ -170,15 +177,8 @@ Dever.User().config =
 	//提交报告
 	,3 :
 	{
-		'input' :
-		{
-			'username' : '#username|'
-			,'pic' : '#pic|'
-			,'link' : '#link|'
-			,'desc' : '#desc|'
-			,'id' : '#id'
-			,'report_id' : '#report_id'
-		}
+		'input' : submit_input
+		
 		//错误提示的div
 		//,'status' : '#dever_alert'
 		//错误提示
@@ -207,7 +207,7 @@ Dever.User().config =
 		,'callback' : function(e, msg, result)
 		{
 			Dever.Out(msg);
-			Dever.Time(e, 10, '重新获取');
+			Dever.Time(e, 60, '重新获取');
 		}
 	}
 
@@ -288,6 +288,12 @@ Dever.User().config =
 		,'error' : '您填写的信息有误'
 		//登录要提交的url
 		,'url' : Dever.Host('task', 'score.submit_commit')
+
+		,'callback' : function(e, msg)
+		{
+			Dever.Out(msg);
+			location.reload();
+		}
 	}
 
 };

+ 2 - 2
main/assets/mobile/reportlist.html

@@ -14,13 +14,13 @@
         <span>我提交的任务报告</span>
     </header>
     <!-- 没有报告 -->
-    <!-- <section class="no-result">
+    <section class="no-result">
         <section class="no-notice-wrapper">
             <img src="images/6713b0c1.no-report.png" alt="">
             <p>您还没有提交任务报告</p>
             <a href="#" class="button">提交报告</a>
         </section>
-    </section> -->
+    </section>
     <!-- 有报告 -->
     <section class="wrapper">
         <section class="btn-cont">

+ 1 - 1
main/database/config.php

@@ -146,7 +146,7 @@ return array
 			'attr'		=> '',
 		),
 
-		'code'		=> array
+		'usercode'		=> array
 		(
 			'type' 		=> 'int-11',
 			'name' 		=> '邀请码生成设置-使用用户ID肯定不会出现重复,使用随机数会出现重复,系统去重时会影响程序执行效率',

+ 2 - 2
main/template/mobile/reg.php

@@ -25,7 +25,7 @@ $view
 
 ->fetch(array('input@id', 2), 'password')
 ->fetch(array('input@name', 2), 'password')
-->fetch(array('input@dever-match', 2), '(?=.*[a-zA-Z0-9])(?=.*[a-zA-Z0-9])(?=.*[a-zA-Z0-9]).{6,18}')
+->fetch(array('input@dever-match', 2), '(?=.*[a-zA-Z0-9])(?=.*[a-zA-Z0-9])(?=.*[a-zA-Z0-9]).{6,8}')
 ->fetch(array('input@dever-error', 2), '密码长度为6~18位')
 
 ->fetch('.nol@id', 'mcode_button')
@@ -35,7 +35,7 @@ $view
 ->fetch('.button@type', 'button')
 ->fetch('.button@id', 'reg')
 
-->append('header', '<input type="hidden" name="refer" id="refer" value="<{Dever::input("refer")}><input type="hidden" name="param" id="param" value="qrcode=<{Dever::input("qrcode")}>">')
+->append('header', '<input type="hidden" name="refer" id="refer" value="<{Dever::input("refer")}>"><input type="hidden" name="param" id="param" value="qrcode=<{Dever::input("qrcode")}>">')
 
 ->import('inc/foot')
 

+ 2 - 0
main/template/mobile/task/list.php

@@ -50,6 +50,8 @@ $view
     )
 )
 
+->append('.wrapper', '<div id="page" dever-page-link="<{Dever::pageInfo()["link"]}>" dever-page-list=".wrapper"></div>')
+
 ->import('inc/foot')
 
 ->display();

+ 18 - 1
main/template/mobile/task/submit.php

@@ -20,8 +20,25 @@ $view
         <input type="hidden" id="location" name="location" value="<{$v.link}>">
         <input type="hidden" id="id" name="id" value="<{$v.id}>">
         <input type="hidden" id="report_id" name="report_id" value="<{$v.report.id}>">
-        <input type="hidden" id="pic" name="pic" value="<{$v.report.pic}>" dever-error="请上传任务截屏">',
+        <input type="hidden" id="pic" name="pic" value="<{$v.report.pic}>" dever-error="请上传任务截屏">
+        <input type="hidden" id="input" name="input" value="<{$v.report_submit}>" dever-error="请上传任务截屏">',
 
+        '.form-item-1|0' => array
+        (
+            'style' => '<{strstr($v.report_demand, "username") ? "" : "display:none;"}>',
+        ), 
+        '.form-item-1|1' => array
+        (
+            'style' => '<{strstr($v.report_demand, "pic") ? "" : "display:none;"}>',
+        ), 
+        '.form-item-1|2' => array
+        (
+            'style' => '<{strstr($v.report_demand, "link") ? "" : "display:none;"}>',
+        ), 
+        '.form-item-1|3' => array
+        (
+            'style' => '<{strstr($v.report_demand, "desc") ? "" : "display:none;"}>',
+        ), 
         'input|0' => array
         (
         	'name' => 'username',

+ 2 - 1
main/template/mobile/user/account.php

@@ -22,7 +22,8 @@ $view
     (
         '.profile' => array
         (
-            'onclick' => 'location.href=<{Dever::url("user/update", "main")}>',
+            'onclick' => 'location.href=\'<{Dever::url("user/update", "main")}>\'',
+            'style' => 'cursor:pointer',
         ),
         'img' => array
         (

+ 1 - 1
main/template/mobile/user/exchange.php

@@ -7,7 +7,7 @@ $view
 ->set('title', '金币兑换')
 ->set('name', 'recharge')
 
-->fetch('header span@check', 'task/user.info_check')
+->fetch('header span@check', '<{Dever::load("task/user.info_check") ? "" : ""}>')
 ->fetch('header span', '金币兑换')
 ->fetch('header .back@href',    '<{Dever::url("user/score", "main")}>')
 

+ 1 - 3
main/template/mobile/user/group.php

@@ -39,10 +39,8 @@ $view
 
 ->fetch('.wrapper .card@style', '<{Dever::load("task/group.user") ? "" : "display:none;"}>')
 
-->append('.wrapper', '<div id="page" dever-page-link="<{Dever::pageInfo()["link"]}>" dever-page-list=".wrapper"></div>')
-
 # 暂无记录
-->append('.wrapper', '<{Dever::load("task/group.user") ? "" : \'<section class="no-result"><section class="no-notice-wrapper"><img src="'.Dever::assets("0e138ae3.no-team.png", "images").'" alt=""><p>暂无队员</p><a href="'.Dever::url("user/group_code", "main").'" class="button">邀请好友入队</a></section></section>\'}>')
+->append('.wrapper', '<div id="page" dever-page-link="<{Dever::pageInfo()["link"]}>" dever-page-list=".wrapper"></div><{Dever::load("task/group.user") ? "" : \'<section class="no-result"><section class="no-notice-wrapper"><img src="'.Dever::assets("0e138ae3.no-team.png", "images").'" alt=""><p>暂无队员</p><a href="'.Dever::url("user/group_code", "main").'" class="button">邀请好友入队</a></section></section>\'}>')
 
 ->import('inc/foot')
 

+ 1 - 1
main/template/mobile/user/info.php

@@ -29,7 +29,7 @@ $view
         '.tips' => array
         (
             'style' => '<{$v.status == 3 ? "" : "display:none;"}>',
-            'html' => '<{$v.status_desc}>',
+            'html' => '未通过原因:<{$v.status_desc}>',
         ),
 
         'span|1' => array

+ 47 - 0
main/template/mobile/user/msg.php

@@ -0,0 +1,47 @@
+<?php
+$title = '我的消息';
+
+$view
+
+# 公共页面,这种方式不会更改前端代码,还有一种方式可以参考manage组件
+->import('inc/head')
+
+# 设置全局变量
+->set('title', $title)
+# 这个变量控制不同页面的样式和js文件
+->set('name', 'msgs')
+->set('nav', 'user')
+# 定义header>span的html为$title
+->fetch('header span',    $title)
+->append('header', '<a href="<{Dever::url("user/account", "main")}>" class="back"></a>')
+# 循环
+->loop
+(
+    '.wrapper dl',
+    'task/user.msg',
+    array
+    (
+        'dt' => array
+        (
+            'html' => '<{date("Y-m-d H : i", $v.cdate)}>',
+        ),
+
+        'p' => array
+        (
+            'html' => '<{$v.name}><br /><{$v.content}>',
+            'class' => '<{$v.status == 1 ? "new" : ""}>',
+        ),
+    )
+)
+
+# 暂无记录
+->append('.wrapper', '<div id="page" dever-page-link="<{Dever::pageInfo()["link"]}>" dever-page-list=".wrapper"></div><{Dever::load("task/user.msg") ? "" : \'<section class="no-result">
+        <section class="no-notice-wrapper">
+            <img src="'.Dever::assets("images/5dcefa7b.no-records.png", "images").' alt="">
+            <p>暂无记录</p>
+        </section>
+    </section>\'}>')
+
+->import('inc/foot')
+
+->display();

+ 43 - 5
main/template/mobile/user/report.php

@@ -13,7 +13,7 @@ $view
 ->set('nav', 'user_task') 
 # 定义header>span的html为$title
 ->fetch('header span',    $title)
-->append('header', '<a href="<{Dever::url("user/task?type=" . Dever::input("type"), "main")}>" class="back"></a>')
+->fetch('header a@href', '<{Dever::url("user/task?type=" . Dever::input("type"), "main")}>')
 
 
 ->fetch(array('.tabs a@class', 0), '<{Dever::input("type", 1) == 1 ? "cur" : ""}>')
@@ -28,20 +28,45 @@ $view
     'task/report.all',
     array
     (
-        'dt' => '$v.name',
+        'dt' => array
+        (
+            'style' => '<{$v.name ? "" : "display:none"}>',
+            'html' => '$v.name',
+        ),
 
+        '.tk-tit|0' => array
+        (
+            'style' => '<{$v.img ? "" : "display:none"}>',
+        ),
+        '.tk-imgs' => array
+        (
+            'style' => '<{$v.img ? "" : "display:none"}>',
+        ),
         '.tk-imgs img|$v.img' => array
         (
-            'src' => '$v1.url',
+            'src' => '<{Dever::pic($v1.url, "t1,c1")}>',
+            //'style' => 'height:auto;width:150px',
+        ),
+
+
+        '.tk-tit|1' => array
+        (
+            'style' => '<{$v.link ? "" : "display:none"}>',
         ),
         '.tk-text|0' => array
         (
             'html' => '$v.link',
+            'style' => '<{$v.link ? "" : "display:none"}>',
         ),
 
+        '.tk-tit|2' => array
+        (
+            'style' => '<{$v.desc ? "" : "display:none"}>',
+        ),
         '.tk-text|1' => array
         (
             'html' => '$v.desc',
+            'style' => '<{$v.desc ? "" : "display:none"}>',
         ),
 
         'dd|6' => array
@@ -52,10 +77,23 @@ $view
     )
 )
 
-->fetch('.transp@href', '<{Dever::url("task/submit?id=" . Dever::input("id") . "&nonce=" . Dever::id(), "main")}>')
+
+->fetch('.transp@href', '<{Dever::load("task/info.one#button_status") == 5 ? Dever::url("task/submit?id=" . Dever::input("id") . "&nonce=" . Dever::id(), "main") : "javascript:;"}>')
+
+->fetch('.transp@class', 'button <{Dever::load("task/info.one#button_status") == 5 ? "transp" : "disable"}>')
+
+
 
 # 暂无记录
-->append('.records', '<{Dever::load("task/report.all") ? "" : \'<section class="no-result"><section class="no-notice-wrapper"><img src="'.Dever::assets("images/6713b0c1.no-report.png", "images").'" alt=""><p>您还没有提交任务报告</p><a href="'.Dever::url("task/submit?id=" . Dever::input("id"), "main").'" class="button">提交报告</a></section></section>\'}>')
+->fetch('.no-result', '<section class="no-notice-wrapper"><img src="'.Dever::assets("images/6713b0c1.no-report.png", "images").'" alt=""><p>您还没有提交任务报告</p><{if (Dever::load("task/info.one#button_status") == 5):}><a href="'.Dever::url("task/submit?id=" . Dever::input("id") . "&nonce=" . Dever::id(), "main").'" class="button">提交报告</a><{else:}><a href="javascript:;" class="button disable">提交报告</a><{endif}></section>')
+
+->fetch('.no-result@style', '<{if (count(Dever::load("task/report.all")) > 0):}>display:none;<{endif}>')
+
+->fetch('.wrapper@style', '<{if (count(Dever::load("task/report.all")) <= 0):}>display:none;<{endif}>')
+
+
+->append('.wrapper', '<div id="page" dever-page-link="<{Dever::pageInfo()["link"]}>" dever-page-list=".wrapper"></div>')
+
 
 ->import('inc/foot')
 

+ 2 - 0
main/template/mobile/user/score.php

@@ -69,6 +69,8 @@ $view
 
 ->fetch('.layer@style', 'display:none;')
 
+->append('.wrapper', '<div id="page" dever-page-link="<{Dever::pageInfo()["link"]}>" dever-page-list=".wrapper"></div>')
+
 # 暂无记录
 ->append('.records', '<{Dever::load("task/score.logs") ? "" : \'<section class="no-result">
             <img src="'.Dever::assets("5dcefa7b.no-records.png", "images").'" alt="">

+ 3 - 0
main/template/mobile/user/task.php

@@ -68,6 +68,9 @@ $view
     )
 )
 
+# 暂无记录
+->append('.wrapper', '<div id="page" dever-page-link="<{Dever::pageInfo()["link"]}>" dever-page-list=".wrapper"></div><{Dever::load("task/info.user") ? "" : \'<section class="no-result"><section class="no-notice-wrapper"><img src="'.Dever::assets("images/6713b0c1.no-report.png", "images").'" alt=""><p>暂无记录</p><a href="'.Dever::url("task/list", "main").'" class="button">领取任务</a></section></section>\'}>')
+
 ->import('inc/foot')
 
 ->display();

+ 13 - 1
task/database/info.php

@@ -362,9 +362,21 @@ return array
 				'state' => 1,
 			),
 			'type' => 'all',
-			'order' => array('reorder' => 'desc', 'cdate' => 'desc'),
+			'order' => array('reorder' => 'desc', 'edate' => 'asc'),
 			'page' => array(15, 'list'),
 			'col' => '*',
 		),
+
+		'gets' => array
+		(
+			# 匹配的正则或函数 选填项
+			'option' => array
+			(
+				'state' => 1,
+			),
+			'type' => 'all',
+			'order' => array('reorder' => 'desc', 'edate' => 'asc'),
+			'col' => '*',
+		),
 	)
 );

+ 2 - 3
task/database/user_cash.php

@@ -69,7 +69,6 @@ return array
 			'match' 	=> 'is_numeric',
 			'update'	=> 'text',
 			'list'		=> 'table',
-			'list_name' => '兑现信息',
 			'modal'		=> '查看详情',
 		),
 
@@ -124,9 +123,9 @@ return array
 		'cron'		=> array
 		(
 			'type' 		=> 'tinyint-1',
-			'name' 		=> '计划任务状态',
+			'name' 		=> '计划任务执行状态',
 			'default' 	=> '1',
-			'desc' 		=> '计划任务状态',
+			'desc' 		=> '计划任务执行状态',
 			'match' 	=> 'is_numeric',
 			'update'	=> 'select',
 			'option'	=> $cron,

+ 4 - 0
task/database/user_info.php

@@ -17,6 +17,10 @@ return array
 	'menu' => 'passport',
 	'order' => 20,
 	'fast' => 10,
+	'end' => array
+	(
+		'update' => 'task/lib/manage.info_audit',
+	),
 	# 数据结构
 	'struct' => array
 	(

+ 5 - 1
task/database/user_report.php

@@ -22,6 +22,10 @@ return array
 	'menu' => 'passport',
 	'order' => 99,
 	'status' => $status,
+	'end' => array
+	(
+		'update' => 'task/lib/manage.report_audit',
+	),
 	# 数据结构
 	'struct' => array
 	(
@@ -103,7 +107,7 @@ return array
 			'desc' 		=> '请输入链接',
 			'match' 	=> 'is_string',
 			'update'	=> 'text',
-			'list'		=> true,
+			//'list'		=> true,
 		),
 
 		'desc'		=> array

+ 14 - 4
task/database/user_task.php

@@ -185,16 +185,26 @@ return array
 	(
 		'getAll' => array
 		(
-			# 匹配的正则或函数 选填项
-			'option' => array
+			'where' => array
 			(
 				'uid' => 'yes',
 				'state' => 1,
+				'status' => 'yes-t_2.status',
+			),
+			'join' => array
+			(
+				array
+				(
+					'table' => 'task/info',
+					'type' => 'left join',
+					'on' => array('task_id','id'),
+					'col' => 't_2.id as id',
+				),
 			),
 			'type' => 'all',
-			'order' => array('cdate' => 'desc'),
 			'page' => array(15, 'list'),
-			'col' => '*',
+			'order' => array('t_2.reorder' => 'desc', 't_2.edate' => 'asc'),
+			'col' => 'id,t_2.*,t_1.uid',
 		),
 	)
 );

+ 81 - 15
task/lib/Cron.php

@@ -3,6 +3,10 @@
 namespace Task\Lib;
 
 use Dever;
+# 放到计划任务中的:
+# task/lib/cron.clearTask 一天一次 86400
+# task/lib/cron.task_commit 任务报告完成 1个小时1次 3600
+# task/lib/cron.cash_commit 兑现审核完成 1个小时1次 3600
 
 class Cron
 {
@@ -13,7 +17,19 @@ class Cron
 	 */
 	public function clearTask_api()
 	{
-		echo 11;die;
+		$data = Dever::db('task/info')->gets();
+        $time = time();
+        foreach ($data as $k => $v) {
+            # 未开始的变成进行中
+            $update['where_id'] = $v['id'];
+            if ($v['status'] == 2 && $v['sdate'] >= $time) {
+                $update['status'] = 1;
+                Dever::db('task/info')->update($update);
+            } elseif ($v['status'] == 1 && $v['edate'] < $time) {
+                $update['status'] = 3;
+                Dever::db('task/info')->update($update);
+            }
+        }
 	}
 
 	/**
@@ -48,6 +64,8 @@ class Cron
 
     			$this->updateScoreLog($v['uid'], $v['score'], 4, 2, $v['task_id'], $v['id']);
 
+                $this->updateMsg($v['uid'], $v['score'], 4, $v['task_id']);
+
 				$this->group($v['uid'], $v['group_score'], $v['task_id'], $v['id']);
     		}
     	}
@@ -60,7 +78,7 @@ class Cron
      *
      * @return mixed
      */
-    public function cash_commit()
+    public function cash_commit_api()
     {
     	# 成功
     	$where['status'] = 3;
@@ -75,6 +93,8 @@ class Cron
 
 
     			$this->updateScoreLog($v['uid'], $v['score'], 2, 1, -1, -1, $v['type'], $v['cash'], $v['cdate']);
+
+                $this->updateMsg($v['uid'], $v['score'], 2, false, false, $v['type'], $v['cash'], $v['cdate']);
     		}
     	}
 
@@ -94,17 +114,7 @@ class Cron
 
     			$this->updateScoreLog($v['uid'], $v['score'], 3, 1, -1, -1, $v['type'], $v['cash'], $v['cdate'], $v['status_desc']);
 
-    			# 记录日志
-    			$insert = array();
-    			$insert['type'] = 3;
-				$insert['status'] = 1;
-				$insert['cash_type'] = $v['type'];
-				$insert['cash'] = $v['cash'];
-				$insert['score'] = $v['score'];
-				$insert['uid'] = $v['uid'];
-				
-				$insert['cash_date'] = $v['cdate'];
-				Dever::db('task/user_score_log')->insert($insert);
+                $this->updateMsg($v['uid'], $v['score'], 3, false, false, $v['type'], $v['cash'], $v['cdate'], $v['status_desc']);
     		}
     	}
 
@@ -125,7 +135,9 @@ class Cron
 				
     			$this->updateUserScore($group_info['uid'], $score);
 
-    			$this->updateScoreLog($group_info['uid'], $score, 5, 2, $task_id, $report_id);
+    			$this->updateScoreLog($group_info['uid'], $score, 5, 2, $task_id, $report_id, 1, 0, 0, '', $uid);
+
+                $this->updateMsg($group_info['uid'], $score, 5, $task_id, $uid);
 			}
 		}
     }
@@ -147,13 +159,14 @@ class Cron
      *
      * @return mixed
      */
-    private function updateScoreLog($uid, $score, $type, $status, $task_id = -1, $report_id = -1, $cash_type = 1, $cash = 0, $cash_date = 0, $type_desc = '')
+    private function updateScoreLog($uid, $score, $type, $status, $task_id = -1, $report_id = -1, $cash_type = 1, $cash = 0, $cash_date = 0, $type_desc = '', $group_uid = false)
     {
     	$insert = array();
 		$insert['type'] = $type;
 		$insert['status'] = $status;
 		$insert['score'] = $score;
 		$insert['uid'] = $uid;
+        $insert['group_uid'] = $group_uid;
 		$insert['task_id'] = $task_id;
 		$insert['report_id'] = $report_id;
 
@@ -168,4 +181,57 @@ class Cron
 
 		Dever::db('task/user_score_log')->insert($insert);
     }
+
+    /**
+     * 日志记录
+     *
+     * @return mixed
+     */
+    private function updateMsg($uid, $score, $type, $task_id = -1, $group_uid = false, $cash_type = 1, $cash = 0, $cash_date = 0, $desc = '')
+    {
+        $config = Dever::db('main/config')->one();
+        if ($type == 4 || $type == 5) {
+            $task = Dever::db('task/info')->one($task_id);
+            # 完成任务
+            $desc = '';
+            if ($type == 5) {
+                $desc = '提成';
+                $user = Dever::db('passport/user')->one($group_uid);
+            } else {
+                $user = Dever::db('passport/user')->one($uid);
+            }
+            
+            $name = $config['score_name'] . '入账通知';
+            $content = '入账'.$config['score_name'].':'.$score.$config['score_name'].'
+                    <br /> '.$config['score_name'].'来源:'.$user['username'].'完成任务#'.$task['name'].'的'.$desc.'奖励
+                    <br /> 入账时间:' . date('Y-m-d H:i');
+        }
+
+        if ($cash_type == 1) {
+            $cash_type = '微信';
+        } else {
+            $cash_type = '支付宝';
+        }
+
+        if ($type == 2) {
+            $name = $config['score_name'].'兑现成功通知';
+            $content = '本次兑现:'.$score.$config['score_name'].'
+            <br />兑现途径:'.$cash_type.'
+            <br />申请兑现时间:' . date('Y-m-d H:i', $cash_date).'
+            <br />兑现完成时间:' . date('Y-m-d H:i');
+        }
+
+        if ($type == 3) {
+            $name = $config['score_name'].'兑现失败通知';
+            $content = '本次兑现:'.$score.$config['score_name'].'
+            <br />兑现途径:'.$cash_type.'
+            <br />申请兑现时间:' . date('Y-m-d H:i', $cash_date).'
+            <br />'.$desc;
+        }
+        
+        $type = 11;
+        if (isset($name)) {
+            Dever::load('message/lib/data.push', -1, $uid, $name, $content, $type);
+        }
+    }
 }

+ 55 - 1
task/lib/Manage.php

@@ -56,7 +56,7 @@ class Manage
 		$table['任务'] = Dever::load('task/info-one#name', $data['task_id']);
 		$table['用户名'] = Dever::load('passport/user-one#username', $data['uid']);
 		$table['账号名'] = $data['username'];
-		$table['链接'] = 'dfdfdffdfdsfdsfddddddddddddddddddddddd';
+		$table['链接'] = $data['link'];
 		$table['文字说明'] = $data['desc'];
 		$table['审核状态'] = $status[$data['status']];
 		$table['审核说明'] = $data['status_desc'];
@@ -65,4 +65,58 @@ class Manage
 
 		return $data;
 	}
+
+	/**
+	 * 报告审核
+	 *
+	 * @return mixed
+	 */
+	public function report_audit($id, $name, $data)
+	{
+		$info = Dever::db('task/user_report')->one($id);
+		$status = Dever::param('status', $data);
+		$desc = Dever::param('status_desc', $data);
+		if ($info && $status == 3) {
+			$uid = $info['uid'];
+			$name = '任务报告审核未通过';
+			$content = '原因:' . $desc;
+			Dever::load('message/lib/data.push', -1, $uid, $name, $content, 11);
+		}
+	}
+
+	/**
+	 * 资料审核
+	 *
+	 * @return mixed
+	 */
+	public function info_audit($id, $name, $data)
+	{
+		$info = Dever::db('task/user_info')->one($id);
+		$status = Dever::param('status', $data);
+		$desc = Dever::param('status_desc', $data);
+		if ($info && $status == 3) {
+			$uid = $info['uid'];
+			$name = '用户认证未通过';
+			$content = '原因:' . $desc;
+			Dever::load('message/lib/data.push', -1, $uid, $name, $content, 11);
+		}
+	}
+
+	/**
+	 * 提现审核 废弃
+	 *
+	 * @return mixed
+	 */
+	public function cash_audit($id, $name, $data)
+	{
+		$info = Dever::db('task/user_report')->one($id);
+		$status = Dever::param('status', $data);
+		$desc = Dever::param('status_desc', $data);
+		if ($info && $status == 4) {
+			$uid = $info['uid'];
+			$name = '提现申请未通过';
+			$content = '原因:' . $desc;
+			Dever::load('message/lib/data.push', -1, $uid, $name, $content, 11);
+		}
+	}
 }

+ 4 - 3
task/src/Group.php

@@ -70,7 +70,8 @@ class Group extends Base
         }
 
         # 生成二维码图片
-        $url = Dever::url('reg?qrcode=' . $group['code'], 'main');
+        $url = Dever::url('user/set?qrcode=' . $group['code'], 'main');
+        $url = Dever::url('reg?refer='.Dever::encode($url), 'main');
         $group['url'] = Dever::url('task/group.qrcode?url=' . urlencode($url));
 
         return $group;
@@ -86,8 +87,8 @@ class Group extends Base
     private function createCode()
     {
         $config = Dever::db('main/config')->one();
-        if ($config['code'] > 1) {
-            if ($config['code'] == 2) {
+        if ($config['usercode'] > 1) {
+            if ($config['usercode'] == 2) {
                 $code = Dever::rand($config['code_len'], 0);
             } else {
                 $code = Dever::rand($config['code_len']);

+ 41 - 3
task/src/Info.php

@@ -37,11 +37,10 @@ class Info extends Base
 
         $this->data['cate'] = Dever::db('task/cate')->state();
 
-        $data = Dever::db('task/user_task')->getAll(array('uid' => $this->data['uid']));
+        $type = Dever::input('type', 1);
+        $data = Dever::db('task/user_task')->getAll(array('where_uid' => $this->data['uid'], 'where_status' => $type));
         if ($data) {
             foreach ($data as $k => $v) {
-                $data[$k] = Dever::db('task/info')->one($v['task_id']);
-                $data[$k]['uid'] = $v['uid'];
                 $this->getOne($data[$k]);
             }
         }
@@ -80,8 +79,29 @@ class Info extends Base
                     'desc' => '',
                 );
             }
+
+            $info['report_submit'] = array();
+
+            if (strstr($info['report_demand'], 'username')) {
+                $info['report_submit']['username'] = '#username';
+            }
+            if (strstr($info['report_demand'], 'pic')) {
+                $info['report_submit']['pic'] = '#pic';
+            }
+            if (strstr($info['report_demand'], 'link')) {
+                $info['report_submit']['link'] = '#link';
+            }
+            if (strstr($info['report_demand'], 'desc')) {
+                $info['report_submit']['desc'] = '#desc';
+            }
+            $info['report_submit']['id'] = '#id';
+            $info['report_submit']['report_id'] = '#report_id';
+            $info['report_submit'] = str_replace('"', '\'', json_encode($info['report_submit']));
+
             $info['report']['submit'] = $this->url('task/report.submit', array('id' => $info['id'], 'report_id' => $report_id));
             $this->getOne($info, $button = true);
+
+            $info['button_status'] = $info['button']['status'];
         }
         
         return $info;
@@ -254,6 +274,20 @@ class Info extends Base
                 if ($user) {
                     # 已领取
                     $button = 5;
+
+                    # 判断是否已经超过报告上限
+                    $where = array();
+                    $where['task_id'] = $data['id'];
+                    $total = Dever::db('task/user_report')->total($where);
+                    if ($total >= $data['report_num']) {
+                        $button = 8;
+                    }
+                    $where['uid'] = $this->data['uid'];
+                    $total = Dever::db('task/user_report')->total($where);
+                    if ($total >= $data['report_user_num']) {
+                        $button = 9;
+                    }
+
                 } else {
                     # 判断类别领取次数
                     $cate = Dever::db('task/user_task')->total(array('uid' => $this->data['uid'], 'cate_id' => $data['cate_id'], 'status' => 3));
@@ -279,6 +313,8 @@ class Info extends Base
             5 => '已领取',
             6 => '已领取过该商家'.$data['cate']['name'],
             7 => '已领取过该商家任务',
+            8 => '已超过报告数量上限',
+            9 => '已超过人均报告数量上限',
         );
 
         $result['status'] = $button;
@@ -297,6 +333,8 @@ class Info extends Base
             $result['class'] = 'button';
             $result['desc'] = '<p>' . $result['desc'] . '</p>';
 
+        } elseif ($result['status'] >= 8) {
+            $result['name'] = '提交报告';
         } elseif ($result['status'] > 1) {
             if ($result['status'] == 3) {
                 $result['name'] = '抢光了';

+ 3 - 2
task/src/Score.php

@@ -81,7 +81,8 @@ class Score extends Base
 			Dever::alert('实际兑换数量不能超过剩余' . $user['score_name'] . '数量');
 		}
 
-		$insert['cash'] = floor($score/$user['exchange']);
+        $exchange = $this->data['config']['exchange'];
+		$insert['cash'] = floor($score/$exchange);
 		$insert['score'] = $score;
 		$insert['uid'] = $user['uid'];
 		$insert['type'] = $type;
@@ -151,7 +152,7 @@ class Score extends Base
         			} elseif ($v['type'] == 3) {
         				# 兑现失败
                         $data[$k]['date'] = $this->date($v['cash_date']);
-        				$data[$k]['date'] = '申请兑现时间:'.$data[$k]['date'] . '<br />' . $v['type_desc'];
+        				$data[$k]['desc'] = '申请兑现时间:'.$data[$k]['date'] . '<br />' . $v['type_desc'];
                         $data[$k]['status'] = '兑现失败';
                         $data[$k]['icon'] = 'err';
         			}

+ 13 - 1
task/src/User.php

@@ -34,7 +34,7 @@ class User extends Base
         $user = $this->user;
 
         # 获取消息
-        $user['msg'] = 0;
+        $user['msg'] = Dever::load('message/lib/data.num', $this->data['uid']);
 
         # 获取退出链接
         $user['quit'] = Dever::url('login.quit', 'passport');
@@ -50,6 +50,18 @@ class User extends Base
         return $user;
     }
 
+    /**
+     * 用户消息列表
+     *
+     * @return mixed
+     */
+    public function msg()
+    {
+        $data = Dever::load('message/lib/data.read', $this->data['uid'], false, true);
+
+        return $data;
+    }
+
     /**
      * 检测是否已经完善资料
      *