|
|
@@ -14,6 +14,7 @@ use App\Http\Api\MdRender;
|
|
|
use App\Http\Api\AuthApi;
|
|
|
use App\Http\Api\Mq;
|
|
|
use App\Http\Controllers\ArticleController;
|
|
|
+use App\Http\Api\UserApi;
|
|
|
|
|
|
class DiscussionController extends Controller
|
|
|
{
|
|
|
@@ -25,6 +26,10 @@ class DiscussionController extends Controller
|
|
|
public function index(Request $request)
|
|
|
{
|
|
|
//
|
|
|
+ $user = AuthApi::current($request);
|
|
|
+ if($user){
|
|
|
+ $userInfo = UserApi::getByUuid($user['user_uid']);
|
|
|
+ }
|
|
|
switch ($request->get('view')) {
|
|
|
case 'question-by-topic':
|
|
|
$topic = Discussion::where('id',$request->get('id'));
|
|
|
@@ -42,10 +47,30 @@ class DiscussionController extends Controller
|
|
|
->where('parent',null);
|
|
|
break;
|
|
|
case 'question':
|
|
|
+ /**
|
|
|
+ * 禁止:
|
|
|
+ * 未注册用户看到任何人发表的discussion
|
|
|
+ * basic用户看到别人发表的discussion
|
|
|
+ */
|
|
|
+ if(!$user && $request->get('type')==='discussion'){
|
|
|
+ return $this->ok([
|
|
|
+ "rows" => [],
|
|
|
+ "count" => 0,
|
|
|
+ 'active' => 0,
|
|
|
+ 'close' => 0,
|
|
|
+ 'can_create' => false,
|
|
|
+ 'can_reply' => false,
|
|
|
+ ]);
|
|
|
+ }
|
|
|
$table = Discussion::where('res_id',$request->get('id'))
|
|
|
->where('type', $request->get('type','discussion'))
|
|
|
->where('status',$request->get('status','active'))
|
|
|
->where('parent',null);
|
|
|
+ if($request->get('type')==='discussion'){
|
|
|
+ if(isset($userInfo) && in_array('basic',$userInfo['roles'])){
|
|
|
+ $table = $table->where('editor_uid',$userInfo['id']);
|
|
|
+ }
|
|
|
+ }
|
|
|
$activeNumber = Discussion::where('res_id',$request->get('id'))
|
|
|
->where('parent',null)
|
|
|
->where('type', $request->get('type','discussion'))
|
|
|
@@ -65,7 +90,7 @@ class DiscussionController extends Controller
|
|
|
case 'res_id':
|
|
|
/**
|
|
|
* 先获取顶级节点
|
|
|
- *
|
|
|
+ * 需要确定用户身份,manager查看全部topic 普通用户只显示自己提交的topic
|
|
|
*/
|
|
|
$roots = Discussion::where('res_id',$request->get('id'))
|
|
|
->where('type', $request->get('type','discussion'))
|
|
|
@@ -85,6 +110,27 @@ class DiscussionController extends Controller
|
|
|
->where('type', $request->get('type','discussion'))
|
|
|
->where('status','close')->count();
|
|
|
break;
|
|
|
+ case 'topic-by-user':
|
|
|
+ /**
|
|
|
+ * 某用户发表的全部topic
|
|
|
+ *
|
|
|
+ */
|
|
|
+ if(!$user){
|
|
|
+ return $this->error('',403,403);
|
|
|
+ }
|
|
|
+ $table = Discussion::where('editor_uid',$user['user_uid'])
|
|
|
+ ->where('type', $request->get('type','discussion'))
|
|
|
+ ->whereIn('status',explode(',',$request->get('status','active')) )
|
|
|
+ ->where('parent',null);
|
|
|
+ $activeNumber = Discussion::where('editor_uid',$user['user_uid'])
|
|
|
+ ->where('parent',null)
|
|
|
+ ->where('type', $request->get('type','discussion'))
|
|
|
+ ->where('status','active')->count();
|
|
|
+ $closeNumber = Discussion::where('editor_uid',$user['user_uid'])
|
|
|
+ ->where('parent',null)
|
|
|
+ ->where('type', $request->get('type','discussion'))
|
|
|
+ ->where('status','close')->count();
|
|
|
+ break;
|
|
|
case 'all':
|
|
|
$table = Discussion::where('parent',null);
|
|
|
$activeNumber = Discussion::where('parent',null)
|