feat(zy): 添加俱乐部功能和用户消息功能
- 新增俱乐部相关接口和功能,包括创建俱乐部、申请加入俱乐部、邀请加入俱乐部等 - 添加用户消息功能,包括发送消息、查看消息等 - 优化了部分代码结构,提高了可维护性 - 更新了文档,添加了新的接口说明
This commit is contained in:
@@ -2,14 +2,18 @@
|
||||
|
||||
namespace addons\shopro\controller\zy;
|
||||
|
||||
use think\Db;
|
||||
use think\Exception;
|
||||
use app\admin\model\User;
|
||||
use app\admin\model\zy\Menber;
|
||||
use think\exception\PDOException;
|
||||
use app\admin\model\zy\link\Apply;
|
||||
use app\admin\model\zy\link\Message;
|
||||
use app\admin\model\zy\game\Activity;
|
||||
use think\exception\ValidateException;
|
||||
|
||||
class Club extends Base
|
||||
{
|
||||
|
||||
// protected $noNeedLogin = ['index'];
|
||||
protected $noNeedLogin = ['*'];
|
||||
protected $noNeedRight = ['*'];
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
$this->model = new \app\admin\model\zy\Club;
|
||||
@@ -25,6 +29,223 @@ class Club extends Base
|
||||
}
|
||||
$res = $model->select();
|
||||
|
||||
$this->success('获取成功', $res);
|
||||
$this->success('Success', $res);
|
||||
}
|
||||
|
||||
public function add()
|
||||
{
|
||||
$result = false;
|
||||
$params = $this->request->param();
|
||||
Db::startTrans();
|
||||
try {
|
||||
$params['president'] = $this->user->id;
|
||||
$result = $this->model->allowField(true)->save($params);
|
||||
$menber = new Menber;
|
||||
$menber->allowField(true)->save([
|
||||
'club_id' => $this->model->id,
|
||||
'user_id' => $this->user->id,
|
||||
'role' => 3
|
||||
]);
|
||||
Db::commit();
|
||||
} catch (ValidateException | PDOException | Exception $e) {
|
||||
Db::rollback();
|
||||
$this->error($e->getMessage());
|
||||
}
|
||||
if ($result === false) {
|
||||
$this->error(__('No rows were inserted'));
|
||||
}
|
||||
$this->success('Success', $result);
|
||||
}
|
||||
|
||||
// 获取俱乐部成员
|
||||
public function menber()
|
||||
{
|
||||
$params = $this->request->param();
|
||||
$query = Db::table(Menber::$tableName)->alias('m')
|
||||
->join([User::$tableName => 'u'], 'u.id = m.user_id')
|
||||
->field('m.*,u.avatar,u.gender,u.nickname');
|
||||
if (empty($params['id'])) {
|
||||
return $this->error('参数错误');
|
||||
}
|
||||
$query->where('club_id', $params['id']);
|
||||
if (isset($params['role'])) {
|
||||
$query->where('role', 'IN', explode(',', $params['role']));
|
||||
} else {
|
||||
$query->where('role', '>', 0);
|
||||
}
|
||||
$res = $query->select();
|
||||
|
||||
$this->success('Success', $res);
|
||||
}
|
||||
|
||||
// 获取俱乐部活动
|
||||
public function activity()
|
||||
{
|
||||
$params = $this->request->param();
|
||||
$query = Db::table(Activity::$tableName)
|
||||
->where('pid', 0) //主活动
|
||||
->field('');
|
||||
if (isset($params['club_id'])) {
|
||||
$query->where('club_id', $params['club_id']);
|
||||
}
|
||||
if (isset($params['week'])) {
|
||||
$query->where('week', $params['week']);
|
||||
}
|
||||
$res = $query->select();
|
||||
|
||||
$this->success('Success', $res);
|
||||
}
|
||||
|
||||
// 申请加入俱乐部
|
||||
public function apply()
|
||||
{
|
||||
$params = $this->request->param();
|
||||
$club = $this->model->get($params['club_id']);
|
||||
if (empty($club)) {
|
||||
return $this->error('俱乐部不存在');
|
||||
}
|
||||
if ($club['join_type'] > 1) {
|
||||
$this->error('该俱乐部不允许申请');
|
||||
}
|
||||
if (!empty(Menber::get(['club_id' => $params['club_id'], 'user_id' => $this->user->id]))) {
|
||||
$this->error('您已经是俱乐部成员,无需重复申请');
|
||||
}
|
||||
if ($club['join_type'] == 0) {
|
||||
(new Menber)->allowField(true)->save([
|
||||
'club_id' => $params['club_id'],
|
||||
'user_id' => $this->user->id,
|
||||
'role' => 1
|
||||
]);
|
||||
$this->success('加入成功');
|
||||
}
|
||||
(new Apply)->allowField(true)->save([ // 记录申请
|
||||
'type' => 1,
|
||||
'user_id' => $this->user->id,
|
||||
'target_id' => $params['club_id'],
|
||||
'content' => json_encode(['reason' => $params['reason'] ?? '']),
|
||||
'reason' => $params['reason'],
|
||||
'status' => 1
|
||||
]);
|
||||
(new Message())->allowField(true)->save([ // 消息通知
|
||||
'type' => 3,
|
||||
'name' => $club->name,
|
||||
'avatar' => $club->logo,
|
||||
'from_id' => $this->user->id,
|
||||
'target_id' => $params['club_id'],
|
||||
'content' => json_encode([
|
||||
'topic' => '俱乐部加入申请',
|
||||
'俱乐部名称' => $club->name,
|
||||
'申请人' => $this->user->nickname,
|
||||
'申请时间' => date('Y-m-d H:i:s'),
|
||||
'reason' => $params['reason'] ?? ''
|
||||
])
|
||||
]);
|
||||
$this->success('已申请,请等候审核');
|
||||
}
|
||||
//join_type 0:'开放加入,无需审核',1:'开放申请,审核加入',2:'会员邀请,无需审核',3:'会员邀请,审核加入',4:'仅管理员邀请,无需审核'
|
||||
|
||||
// 邀请加入俱乐部
|
||||
public function invite()
|
||||
{
|
||||
$params = $this->request->param();
|
||||
$club = $this->model->get($params['club_id']);
|
||||
if (empty($club)) {
|
||||
return $this->error('俱乐部不存在');
|
||||
}
|
||||
$menber = Menber::where('club_id', $params['club_id'])
|
||||
->where('user_id', $this->user->id)
|
||||
->where('role', '>', 0)->find();
|
||||
if (empty($menber)) {
|
||||
$this->error('您无权邀请加入俱乐部');
|
||||
}
|
||||
$user = User::get($params['user_id']);
|
||||
if (empty($user)) {
|
||||
return $this->error('用户不存在');
|
||||
}
|
||||
if ($menber['role'] > 1 || $club['join_type'] == 0 || $club['join_type'] == 2) { // 管理员或者开放加入
|
||||
(new Menber)->allowField(true)->save([
|
||||
'club_id' => $club->id,
|
||||
'user_id' => $user->id,
|
||||
'role' => 1
|
||||
]);
|
||||
$this->success('邀请加入成功');
|
||||
}
|
||||
(new Apply)->allowField(true)->save([ // 记录申请
|
||||
'type' => 1,
|
||||
'user_id' => $user->id,
|
||||
'target_id' => $club->id,
|
||||
'content' => json_encode(['reason' => $params['reason'] ?? '']),
|
||||
'reason' => $params['reason'],
|
||||
'status' => 1
|
||||
]);
|
||||
(new Message())->allowField(true)->save([ // 消息通知
|
||||
'type' => 3,
|
||||
'name' => $club->name,
|
||||
'avatar' => $club->logo,
|
||||
'from_id' => $this->user->id,
|
||||
'target_id' => $params['club_id'],
|
||||
'content' => json_encode([
|
||||
'topic' => '俱乐部加入申请',
|
||||
'俱乐部名称' => $club->name,
|
||||
'申请人' => $this->user->nickname,
|
||||
'申请时间' => date('Y-m-d H:i:s'),
|
||||
'reason' => $params['reason'] ?? ''
|
||||
])
|
||||
]);
|
||||
$this->success('已邀请,请等候审核');
|
||||
}
|
||||
|
||||
// 获取申请列表
|
||||
public function applyList()
|
||||
{
|
||||
$params = $this->request->param();
|
||||
$club = $this->model->get($params['club_id']);
|
||||
if (empty($club)) {
|
||||
return $this->error('俱乐部不存在');
|
||||
}
|
||||
$menber = Menber::where('club_id', $params['club_id'])
|
||||
->where('user_id', $this->user->id)
|
||||
->where('role', '>', 1)->find();
|
||||
if (empty($menber)) {
|
||||
$this->error('您无权处理申请');
|
||||
}
|
||||
$query = Apply::where('type', 1)->where('target_id', $params['club_id']);
|
||||
if (isset($params['status'])) {
|
||||
$query->where('status', $params['status']);
|
||||
}
|
||||
$applyList = $query->select();
|
||||
$this->success('Success', $applyList);
|
||||
}
|
||||
|
||||
// 处理申请
|
||||
public function handle()
|
||||
{
|
||||
$params = $this->request->param();
|
||||
$apply = Apply::get($params['apply_id']);
|
||||
$menber = Menber::where('club_id', $apply['target_id'])
|
||||
->where('user_id', $this->user->id)
|
||||
->where('role', '>', 1)->find();
|
||||
if (empty($menber)) {
|
||||
$this->error('您无权处理申请');
|
||||
}
|
||||
if (empty($apply)) {
|
||||
return $this->error('申请记录不存在');
|
||||
}
|
||||
if ($apply['status'] != 1) {
|
||||
return $this->error('该申请已处理');
|
||||
}
|
||||
if ($params['status'] == 2) {
|
||||
(new Menber)->allowField(true)->save([
|
||||
'club_id' => $apply['target_id'],
|
||||
'user_id' => $apply['user_id'],
|
||||
'role' => 1
|
||||
]);
|
||||
}
|
||||
$apply->save([
|
||||
'status' => $params['status'],
|
||||
'reply' => $params['reply'] ?? ''
|
||||
]);
|
||||
|
||||
$this->success('处理成功');
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user