diff --git a/README.md b/README.md index 2a55c157..a746008a 100644 --- a/README.md +++ b/README.md @@ -18,27 +18,33 @@ PS:**系统后台已禁止提交并隐藏私人配置** - 后台框架:[phalcon 3.4.5](https://phalcon.io) - 前端框架:[layui 2.5.6](https://layui.com), [layim 3.9.5](https://www.layui.com/layim)(已授权) +- 全文检索:[xunsearch 1.4.9](http://www.xunsearch.com) - 即时通讯:[workerman 3.5.22](https://workerman.net) - 其它依赖:[php7.3](https://php.net), [mysql5.7](https://mysql.com), [redis5.0](https://redis.io) #### 使用协议 -虽然尝试了解开源协议,但是似乎不得要领,干脆用自己的协议吧,算不算开源我也不很清楚。 +虽然尝试了解过开源协议,但是理解的模棱两可,干脆用自己的协议吧,算不算开源我也不很清楚。 1. 本系统属于强业务类型,非通用类库框架,不适合再次衍生发布。 2. 在保留我们版权标识的前提下,用户可以修改以满足自己的需求,可以用于商业用途。 3. 有限社区支持,用户对自己的行为负责。 +#### 安装指南 + +- [运行环境搭建](https://gitee.com/koogua/course-tencent-cloud-docker) +- [腾讯服务配置](https://gitee.com/koogua/course-tencent-cloud-docker/wikis/腾讯服务配置) + #### 会推出商业服务吗? - 如果不符合您对“开源”的认知,请移步其它同类产品,毕竟同类“免费”产品也很多。 - 如果“开源”版本不能满足您的需求,或者您更希望有更好的支持,商业服务是不错的选择。 -我们目前提供的服务: +我们为用户提供的服务包括: -- 安装服务 -- 会员服务 -- 定制服务 +- 系统安装 +- 系统定制 +- 企业会员 #### 会有阿里云版吗? @@ -50,11 +56,9 @@ PS:**系统后台已禁止提交并隐藏私人配置** #### 通过这个项目能学到什么? -把所有代码看完,希望对你有启发。把各个环节跑通,会引出很多知识。 - -1. 项目规划,phalcon实战,缓存,JWT,websocket即时通讯 -2. docker操作,docker服务编排 -3. git,linux,php,mysql,redis,nginx ... +1. 项目规划,phalcon实战,缓存,JWT,即时通讯,全文检索 +2. docker操作,docker服务编排,supervisor,devOps +3. git,linux,php,mysql,redis,nginx #### 开发计划 diff --git a/app/Http/Admin/Views/im/group/list.volt b/app/Http/Admin/Views/im/group/list.volt index 1998f9dc..d304bba3 100644 --- a/app/Http/Admin/Views/im/group/list.volt +++ b/app/Http/Admin/Views/im/group/list.volt @@ -49,13 +49,14 @@ {% for item in pager.items %} + {% set preview_url = url({'for':'desktop.group.show','id':item.id}) %} {% set edit_url = url({'for':'admin.group.edit','id':item.id}) %} {% set update_url = url({'for':'admin.group.update','id':item.id}) %} {% set delete_url = url({'for':'admin.group.delete','id':item.id}) %} {% set restore_url = url({'for':'admin.group.restore','id':item.id}) %} {{ item.id }} - {{ item.name }} {{ type_info(item.type) }} + {{ item.name }} {{ type_info(item.type) }} {{ owner_info(item.owner) }} {{ item.user_count }} @@ -63,6 +64,7 @@
diff --git a/app/Http/Desktop/Controllers/ImSummaryController.php b/app/Http/Desktop/Controllers/ImSummaryController.php deleted file mode 100644 index 04a7967d..00000000 --- a/app/Http/Desktop/Controllers/ImSummaryController.php +++ /dev/null @@ -1,35 +0,0 @@ -seo->prependTitle('群组'); - } - - /** - * @Get("/active/users", name="desktop.im.active_users") - */ - public function activeUsersAction() - { - $this->seo->prependTitle('群组'); - } - - /** - * @Get("/online/users", name="desktop.im.online_users") - */ - public function onlineUsersAction() - { - $this->seo->prependTitle('群组'); - } - -} diff --git a/app/Http/Desktop/Services/ImGroup.php b/app/Http/Desktop/Services/ImGroup.php index f1002be8..57e2dfdf 100644 --- a/app/Http/Desktop/Services/ImGroup.php +++ b/app/Http/Desktop/Services/ImGroup.php @@ -7,6 +7,7 @@ use App\Builders\ImGroupUserList as ImGroupUserListBuilder; use App\Caches\ImGroupActiveUserList as ImGroupActiveUserListCache; use App\Library\Paginator\Query as PagerQuery; use App\Models\ImGroup as ImGroupModel; +use App\Models\ImUser as ImUserModel; use App\Repos\ImGroup as ImGroupRepo; use App\Repos\ImGroupUser as ImGroupUserRepo; use App\Repos\User as UserRepo; @@ -138,11 +139,17 @@ class ImGroup extends Service $group = $validator->checkGroup($groupId); + $user = $validator->checkUser($userId); + $validator->checkOwner($loginUser->id, $group->owner_id); $groupUser = $validator->checkGroupUser($groupId, $userId); $groupUser->delete(); + + $this->decrGroupUserCount($group); + + $this->decrUserGroupCount($user); } protected function handleGroupUsers($pager) @@ -207,4 +214,20 @@ class ImGroup extends Service return $pager; } + protected function decrGroupUserCount(ImGroupModel $group) + { + if ($group->user_count > 0) { + $group->user_count -= 1; + $group->update(); + } + } + + protected function decrUserGroupCount(ImUserModel $user) + { + if ($user->group_count > 0) { + $user->group_count -= 1; + $user->update(); + } + } + } diff --git a/app/Http/Desktop/Services/ImGroupTrait.php b/app/Http/Desktop/Services/ImGroupTrait.php index 789a0f4c..60cdd3c9 100644 --- a/app/Http/Desktop/Services/ImGroupTrait.php +++ b/app/Http/Desktop/Services/ImGroupTrait.php @@ -45,7 +45,7 @@ Trait ImGroupTrait $validator = new ImNoticeValidator(); - $notice = $validator->checkNotice($noticeId, 'system'); + $notice = $validator->checkNotice($noticeId); if ($notice->item_type != ImNoticeModel::TYPE_GROUP_REQUEST) { return; diff --git a/app/Http/Desktop/Views/im/notice.volt b/app/Http/Desktop/Views/im/notice.volt index 171be13c..8e25d410 100644 --- a/app/Http/Desktop/Views/im/notice.volt +++ b/app/Http/Desktop/Views/im/notice.volt @@ -5,7 +5,7 @@ {% set sender = item_info.sender %} {% set sender_url = url({'for':'desktop.user.show','id':sender.id}) %} - {% if item_type == '1' %} + {% if item_type == 1 %} {% set group = item_info.group %} {% set remark = item_info.remark ? '附言:' ~ item_info.remark : '' %}
  • @@ -26,7 +26,7 @@ {% endif %}

  • - {% elseif item_type == '2' %} + {% elseif item_type == 2 %}
  • 系统: @@ -34,7 +34,7 @@ 接受了你的好友申请{{ item.create_time|time_ago }}

  • - {% elseif item_type == '3' %} + {% elseif item_type == 3 %}
  • 系统: @@ -42,7 +42,7 @@ 拒绝了你的好友申请{{ item.create_time|time_ago }}

  • - {% elseif item_type == '4' %} + {% elseif item_type == 4 %} {% set remark = item_info.remark ? '附言:' ~ item_info.remark : '' %}
  • {{ sender.name }} @@ -62,7 +62,7 @@ {% endif %}

  • - {% elseif item_type == '5' %} + {% elseif item_type == 5 %}
  • 系统: @@ -70,7 +70,7 @@ 接受了你的入群申请{{ item.create_time|time_ago }}

  • - {% elseif item_type == '6' %} + {% elseif item_type == 6 %}
  • 系统: diff --git a/app/Models/ImNotice.php b/app/Models/ImNotice.php index 64d6fb37..612224b1 100644 --- a/app/Models/ImNotice.php +++ b/app/Models/ImNotice.php @@ -17,6 +17,13 @@ class ImNotice extends Model const TYPE_GROUP_ACCEPTED = 5; // 入群被接受 const TYPE_GROUP_REFUSED = 6; // 入群被拒绝 + /** + * 请求状态 + */ + const REQUEST_PENDING = 'pending'; // 待定 + const REQUEST_ACCEPTED = 'accepted'; // 接受 + const REQUEST_REFUSED = 'refused'; // 拒绝 + /** * 主键编号 * diff --git a/app/Services/Frontend/Im/ImFriendDelete.php b/app/Services/Frontend/Im/ImFriendDelete.php deleted file mode 100644 index 6ad4ecc3..00000000 --- a/app/Services/Frontend/Im/ImFriendDelete.php +++ /dev/null @@ -1,24 +0,0 @@ -getLoginUser(); - - $validator = new ImFriendUserValidator(); - - $friend = $validator->checkFriend($id); - - $friendUser = $validator->checkFriendUser($user->id, $friend->id); - - $friendUser->delete(); - } - -} diff --git a/app/Services/Frontend/Im/ImGroupDelete.php b/app/Services/Frontend/Im/ImGroupDelete.php deleted file mode 100644 index 74e7712d..00000000 --- a/app/Services/Frontend/Im/ImGroupDelete.php +++ /dev/null @@ -1,44 +0,0 @@ -getLoginUser(); - - $validator = new ImGroupUserValidator(); - - $group = $validator->checkGroup($id); - - $groupUser = $validator->checkGroupUser($group->id, $user->id); - - $groupUser->delete(); - - $this->decrGroupUserCount($group); - } - - protected function decrGroupUserCount(ImGroupModel $group) - { - if ($group->user_count > 0) { - $group->user_count -= 1; - $group->update(); - } - } - - protected function decrUserGroupCount(ImUserModel $user) - { - if ($user->group_count > 0) { - $user->group_count -= 1; - $user->update(); - } - } - -} diff --git a/app/Services/Frontend/Im/ImGroupUserDelete.php b/app/Services/Frontend/Im/ImGroupUserDelete.php deleted file mode 100644 index 9087534d..00000000 --- a/app/Services/Frontend/Im/ImGroupUserDelete.php +++ /dev/null @@ -1,52 +0,0 @@ -request->getPost(); - - $loginUser = $this->getLoginUser(); - - $validator = new ImGroupUserValidator(); - - $group = $validator->checkGroup($post['group_id']); - - $user = $validator->checkUser($post['user_id']); - - $validator->checkOwner($group->owner_id, $loginUser->id); - - $groupUser = $validator->checkGroupUser($group->id, $user->id); - - $groupUser->delete(); - - $this->decrGroupUserCount($group); - - $this->decrUserGroupCount($user); - } - - protected function decrGroupUserCount(ImGroupModel $group) - { - if ($group->user_count > 0) { - $group->user_count -= 1; - $group->update(); - } - } - - protected function decrUserGroupCount(ImUserModel $user) - { - if ($user->group_count > 0) { - $user->group_count -= 1; - $user->update(); - } - } - -}