feat(zy): 添加圈子审核功能并优化相关页面
- 在 User 控制器中加入 Club 模型引用,用于获取俱乐部信息 - 在 Circle 控制器中添加 approve 方法,用于审核圈子帖子 - 更新圈子列表查询逻辑,支持按状态筛选 - 修改圈子添加和编辑页面,增加状态选择字段 - 更新圈子列表页面,显示帖子状态并支持状态筛选
This commit is contained in:
@@ -17,6 +17,7 @@ use app\admin\model\shopro\user\User as UserModel;
|
|||||||
use app\admin\model\shopro\order\Order as OrderModel;
|
use app\admin\model\shopro\order\Order as OrderModel;
|
||||||
use app\admin\model\shopro\user\Coupon as UserCouponModel;
|
use app\admin\model\shopro\user\Coupon as UserCouponModel;
|
||||||
use app\admin\model\shopro\order\Aftersale as AftersaleModel;
|
use app\admin\model\shopro\order\Aftersale as AftersaleModel;
|
||||||
|
use app\admin\model\zy\Club;
|
||||||
use app\admin\model\zy\Menber;
|
use app\admin\model\zy\Menber;
|
||||||
|
|
||||||
class User extends Common
|
class User extends Common
|
||||||
@@ -91,7 +92,7 @@ class User extends Common
|
|||||||
$user->hidden(['password', 'salt', 'createtime', 'updatetime', 'deletetime', 'remember_token', 'login_fail', 'login_ip', 'login_time']);
|
$user->hidden(['password', 'salt', 'createtime', 'updatetime', 'deletetime', 'remember_token', 'login_fail', 'login_ip', 'login_time']);
|
||||||
$user = $user->toArray();
|
$user = $user->toArray();
|
||||||
$user['msg_num'] = Message::where('user_id', $user['id'])->where('status', 0)->count();
|
$user['msg_num'] = Message::where('user_id', $user['id'])->where('status', 0)->count();
|
||||||
$user['club_list'] = Menber::where('user_id', $user['id'])->where('role','>', 0)->select();
|
$user['club_list'] = Menber::alias('m')->join([Club::$tableName => 'c'], 'c.id=m.club_id')->field('m.*,c.name')->where('user_id', $user['id'])->where('role', '>', 0)->select();
|
||||||
$user['club_num'] = count($user['club_list']);
|
$user['club_num'] = count($user['club_list']);
|
||||||
$user['card_num'] = 0;
|
$user['card_num'] = 0;
|
||||||
|
|
||||||
|
|||||||
@@ -44,6 +44,11 @@ class Circle extends Base
|
|||||||
'content', m.content,
|
'content', m.content,
|
||||||
'create_time', m.create_time
|
'create_time', m.create_time
|
||||||
)) AS comment")->group('c.id');
|
)) AS comment")->group('c.id');
|
||||||
|
if (isset($params['status'])) {
|
||||||
|
$query->where('c.status', $params['status']);
|
||||||
|
} else {
|
||||||
|
$query->where('c.status', 1);
|
||||||
|
}
|
||||||
if (isset($params['club_id'])) {
|
if (isset($params['club_id'])) {
|
||||||
$query->where('c.club_id', $params['club_id']);
|
$query->where('c.club_id', $params['club_id']);
|
||||||
}
|
}
|
||||||
@@ -92,7 +97,7 @@ class Circle extends Base
|
|||||||
$params['avatar'] = $user['avatar'];
|
$params['avatar'] = $user['avatar'];
|
||||||
$params['gender'] = $user['gender'];
|
$params['gender'] = $user['gender'];
|
||||||
$params['club_name'] = $club['name'];
|
$params['club_name'] = $club['name'];
|
||||||
$params['status'] = 1;
|
$params['status'] = 0;
|
||||||
Db::startTrans();
|
Db::startTrans();
|
||||||
try {
|
try {
|
||||||
$result = (new CircleModel)->allowField(true)->save($params);
|
$result = (new CircleModel)->allowField(true)->save($params);
|
||||||
@@ -174,4 +179,26 @@ class Circle extends Base
|
|||||||
}
|
}
|
||||||
$this->success('Success');
|
$this->success('Success');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function approve()
|
||||||
|
{
|
||||||
|
$params = $this->request->param();
|
||||||
|
$model = CircleModel::get($params['id'] ?? NULL);
|
||||||
|
if (empty($model)) {
|
||||||
|
$this->error(__('No rows were found'));
|
||||||
|
}
|
||||||
|
$member = Menber::get(['club_id' => $model->club_id, 'user_id' => $this->auth->id]);
|
||||||
|
if (empty($member) || $member->role < 2) {
|
||||||
|
$this->error('无权审核');
|
||||||
|
}
|
||||||
|
if ($model->status != 0) {
|
||||||
|
$this->error('已审核');
|
||||||
|
}
|
||||||
|
if ($params['status'] != -1 && $params['status'] != 1) {
|
||||||
|
$this->error('status:参数错误');
|
||||||
|
}
|
||||||
|
$model->save(['status' => $params['status']]);
|
||||||
|
|
||||||
|
$this->success('Success');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,12 +9,18 @@ return [
|
|||||||
'Club_name' => '俱乐部名称',
|
'Club_name' => '俱乐部名称',
|
||||||
'Content' => '内容',
|
'Content' => '内容',
|
||||||
'Imgs' => '图片',
|
'Imgs' => '图片',
|
||||||
|
'Status' => '状态',
|
||||||
'Create_time' => '创建时间',
|
'Create_time' => '创建时间',
|
||||||
'Update_time' => '修改时间',
|
'Update_time' => '修改时间',
|
||||||
'Club.name' => '俱乐部名称',
|
'Club.name' => '俱乐部名称',
|
||||||
'User.nickname' => '昵称',
|
'User.nickname' => '昵称',
|
||||||
|
|
||||||
|
|
||||||
'Male' => '男',
|
'Gender1' => '男',
|
||||||
'Female' => '女',
|
'Gender0' => '女',
|
||||||
|
|
||||||
|
'Status-1' => '审核不通过',
|
||||||
|
'Status0' => '待审核',
|
||||||
|
'Status1' => '审核通过',
|
||||||
|
|
||||||
];
|
];
|
||||||
|
|||||||
@@ -12,13 +12,7 @@
|
|||||||
<input id="c-user_id" data-rule="required" data-source="user/user/index" data-field="nickname" class="form-control selectpage" name="row[user_id]" type="text" value="">
|
<input id="c-user_id" data-rule="required" data-source="user/user/index" data-field="nickname" class="form-control selectpage" name="row[user_id]" type="text" value="">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<!-- <div class="form-group">
|
||||||
<label class="control-label col-xs-12 col-sm-2">{:__('Username')}:</label>
|
|
||||||
<div class="col-xs-12 col-sm-8">
|
|
||||||
<input id="c-username" data-rule="required" class="form-control" name="row[username]" type="text" value="">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="form-group">
|
|
||||||
<label class="control-label col-xs-12 col-sm-2">{:__('Avatar')}:</label>
|
<label class="control-label col-xs-12 col-sm-2">{:__('Avatar')}:</label>
|
||||||
<div class="col-xs-12 col-sm-8">
|
<div class="col-xs-12 col-sm-8">
|
||||||
<div class="input-group">
|
<div class="input-group">
|
||||||
@@ -43,11 +37,11 @@
|
|||||||
<div class="col-xs-12 col-sm-8">
|
<div class="col-xs-12 col-sm-8">
|
||||||
<input id="c-club_name" class="form-control" name="row[club_name]" type="text" value="">
|
<input id="c-club_name" class="form-control" name="row[club_name]" type="text" value="">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div> -->
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label class="control-label col-xs-12 col-sm-2">{:__('Content')}:</label>
|
<label class="control-label col-xs-12 col-sm-2">{:__('Content')}:</label>
|
||||||
<div class="col-xs-12 col-sm-8">
|
<div class="col-xs-12 col-sm-8">
|
||||||
<textarea id="c-content" class="form-control editor" rows="5" name="row[content]" cols="50">NULL</textarea>
|
<textarea id="c-content" class="form-control" rows="5" name="row[content]" cols="50">NULL</textarea>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
@@ -64,6 +58,12 @@
|
|||||||
<ul class="row list-inline faupload-preview" id="p-imgs"></ul>
|
<ul class="row list-inline faupload-preview" id="p-imgs"></ul>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="control-label col-xs-12 col-sm-2">{:__('Status')}:</label>
|
||||||
|
<div class="col-xs-12 col-sm-8">
|
||||||
|
{:build_radios('row[status]', ['-1'=>__('Status-1'),'0'=>__('Status0'), '1'=>__('Status1')],0)}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div class="form-group layer-footer">
|
<div class="form-group layer-footer">
|
||||||
<label class="control-label col-xs-12 col-sm-2"></label>
|
<label class="control-label col-xs-12 col-sm-2"></label>
|
||||||
|
|||||||
@@ -12,13 +12,7 @@
|
|||||||
<input id="c-user_id" data-rule="required" data-source="user/user/index" data-field="nickname" class="form-control selectpage" name="row[user_id]" type="text" value="{$row.user_id|htmlentities}">
|
<input id="c-user_id" data-rule="required" data-source="user/user/index" data-field="nickname" class="form-control selectpage" name="row[user_id]" type="text" value="{$row.user_id|htmlentities}">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<!-- <div class="form-group">
|
||||||
<label class="control-label col-xs-12 col-sm-2">{:__('Username')}:</label>
|
|
||||||
<div class="col-xs-12 col-sm-8">
|
|
||||||
<input id="c-username" data-rule="required" class="form-control" name="row[username]" type="text" value="{$row.username|htmlentities}">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="form-group">
|
|
||||||
<label class="control-label col-xs-12 col-sm-2">{:__('Avatar')}:</label>
|
<label class="control-label col-xs-12 col-sm-2">{:__('Avatar')}:</label>
|
||||||
<div class="col-xs-12 col-sm-8">
|
<div class="col-xs-12 col-sm-8">
|
||||||
<div class="input-group">
|
<div class="input-group">
|
||||||
@@ -43,11 +37,11 @@
|
|||||||
<div class="col-xs-12 col-sm-8">
|
<div class="col-xs-12 col-sm-8">
|
||||||
<input id="c-club_name" class="form-control" name="row[club_name]" type="text" value="{$row.club_name|htmlentities}">
|
<input id="c-club_name" class="form-control" name="row[club_name]" type="text" value="{$row.club_name|htmlentities}">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div> -->
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label class="control-label col-xs-12 col-sm-2">{:__('Content')}:</label>
|
<label class="control-label col-xs-12 col-sm-2">{:__('Content')}:</label>
|
||||||
<div class="col-xs-12 col-sm-8">
|
<div class="col-xs-12 col-sm-8">
|
||||||
<textarea id="c-content" class="form-control editor" rows="5" name="row[content]" cols="50">{$row.content|htmlentities}</textarea>
|
<textarea id="c-content" class="form-control" rows="5" name="row[content]" cols="50">{$row.content|htmlentities}</textarea>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
@@ -64,6 +58,12 @@
|
|||||||
<ul class="row list-inline faupload-preview" id="p-imgs"></ul>
|
<ul class="row list-inline faupload-preview" id="p-imgs"></ul>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="control-label col-xs-12 col-sm-2">{:__('Status')}:</label>
|
||||||
|
<div class="col-xs-12 col-sm-8">
|
||||||
|
{:build_radios('row[status]', ['-1'=>__('Status-1'),'0'=>__('Status0'), '1'=>__('Status1')],$row.status)}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div class="form-group layer-footer">
|
<div class="form-group layer-footer">
|
||||||
<label class="control-label col-xs-12 col-sm-2"></label>
|
<label class="control-label col-xs-12 col-sm-2"></label>
|
||||||
|
|||||||
@@ -29,12 +29,13 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
|
|||||||
{ checkbox: true },
|
{ checkbox: true },
|
||||||
{ field: 'id', title: __('Id') },
|
{ field: 'id', title: __('Id') },
|
||||||
// {field: 'club.name', title: __('Club.name'), operate: 'LIKE', table: table, class: 'autocontent', formatter: Table.api.formatter.content},
|
// {field: 'club.name', title: __('Club.name'), operate: 'LIKE', table: table, class: 'autocontent', formatter: Table.api.formatter.content},
|
||||||
// {field: 'user.nickname', title: __('User.nickname'), operate: 'LIKE'},
|
{field: 'content', title: __('Content')},
|
||||||
{ field: 'club_name', title: __('Club_name'), operate: 'LIKE', table: table, class: 'autocontent', formatter: Table.api.formatter.content },
|
{ field: 'club_name', title: __('Club_name'), operate: 'LIKE', table: table, class: 'autocontent', formatter: Table.api.formatter.content },
|
||||||
{ field: 'nickname', title: __('Nickname'), operate: 'LIKE', table: table, class: 'autocontent', formatter: Table.api.formatter.content },
|
{ field: 'nickname', title: __('Nickname'), operate: 'LIKE', table: table, class: 'autocontent', formatter: Table.api.formatter.content },
|
||||||
{ field: 'avatar', title: __('Avatar'), operate: 'LIKE', events: Table.api.events.image, formatter: Table.api.formatter.image },
|
{ field: 'avatar', title: __('Avatar'), operate: 'LIKE', events: Table.api.events.image, formatter: Table.api.formatter.image },
|
||||||
{ field: 'gender', title: __('Gender'), formatter: Table.api.formatter.label, searchList: { 1: __('Male'), 0: __('Female') } },
|
{ field: 'gender', title: __('Gender'), formatter: Table.api.formatter.label, searchList: { 1: __('Male'), 0: __('Female') } },
|
||||||
{ field: 'club_name', title: __('Club_name'), operate: 'LIKE', table: table, class: 'autocontent', formatter: Table.api.formatter.content },
|
{ field: 'club_name', title: __('Club_name'), operate: 'LIKE', table: table, class: 'autocontent', formatter: Table.api.formatter.content },
|
||||||
|
{ field: 'status', title: __('Status'), formatter: Table.api.formatter.label, searchList: { '-1': __('Status-1'), 0: __('Status0'), 1: __('Status1') } },
|
||||||
{ field: 'create_time', title: __('Create_time'), operate: 'RANGE', addclass: 'datetimerange', autocomplete: false },
|
{ field: 'create_time', title: __('Create_time'), operate: 'RANGE', addclass: 'datetimerange', autocomplete: false },
|
||||||
{ field: 'update_time', title: __('Update_time'), operate: 'RANGE', addclass: 'datetimerange', autocomplete: false },
|
{ field: 'update_time', title: __('Update_time'), operate: 'RANGE', addclass: 'datetimerange', autocomplete: false },
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user