diff --git a/application/common/Model/DepartmentMember.php b/application/common/Model/DepartmentMember.php index 3f80c11..d2f4df0 100644 --- a/application/common/Model/DepartmentMember.php +++ b/application/common/Model/DepartmentMember.php @@ -14,9 +14,9 @@ class DepartmentMember extends CommonModel /** * @param $accountCode - * @param string $departmentCode - * @param int $isOwner - * @param int $isPrincipal + * @param string $departmentCode 部门code + * @param int $isOwner 是否拥有者 + * @param int $isPrincipal 是否负责人 * @return DepartmentMember|MemberAccount * @throws \think\db\exception\DataNotFoundException * @throws \think\db\exception\ModelNotFoundException @@ -51,33 +51,12 @@ class DepartmentMember extends CommonModel } return $result; } else { - $hasJoined = MemberAccount::where(['member_code' => $accountCode, 'organization_code' => $orgCode])->find(); - if ($hasJoined) { - throw new \Exception('已加入该组织', 3); + try { + $result = MemberAccount::inviteMember($accountCode, $orgCode); + } catch (\Exception $e) { + throw new \Exception($e->getMessage(), 3); } - $memberDate = Member::where(['code' => $accountCode])->find(); - if (!$memberDate) { - throw new \Exception('该用户不存在', 4); - } - $auth = ProjectAuth::where(['organization_code' => $orgCode, 'is_default' => 1])->field('id')->find(); - $authId = ''; - if ($auth) { - $authId = $auth['id'];//权限id - } - $data = [ - 'position' => '资深工程师', - 'department' => '某某公司-某某某事业群-某某平台部-某某技术部', - 'code' => createUniqueCode('memberAccount'), - 'member_code' => $accountCode, - 'organization_code' => $orgCode, - 'is_owner' => 0, - 'authorize' => $authId, - 'status' => 1, - 'create_time' => nowTime(), - 'name' => $memberDate['name'], - 'email' => $memberDate['email'], - ]; - return MemberAccount::create($data); + return $result; } } diff --git a/application/common/Model/InviteLink.php b/application/common/Model/InviteLink.php index e086e7b..b42bd81 100644 --- a/application/common/Model/InviteLink.php +++ b/application/common/Model/InviteLink.php @@ -36,19 +36,26 @@ class InviteLink extends CommonModel switch ($inviteType) { case 'project': $source = Project::where(['code' => $sourceCode])->find(); + break; + case 'organization': + $source = Organization::where(['code' => $sourceCode])->find(); } if (!$source) { throw new \Exception('该资源不存在', 1); } - $fileData = [ - 'code' => createUniqueCode('inviteLink'), - 'create_by' => $memberCode, - 'invite_type' => $inviteType, - 'source_code' => $sourceCode, - 'create_time' => nowTime(), - 'over_time' => Date('Y-m-d H:i:s', strtotime(nowTime()) + 3600 * 24), - ]; - $result = self::create($fileData); + if (!$inviteLink) { + $fileData = [ + 'code' => createUniqueCode('inviteLink'), + 'create_by' => $memberCode, + 'invite_type' => $inviteType, + 'source_code' => $sourceCode, + 'create_time' => nowTime(), + 'over_time' => Date('Y-m-d H:i:s', strtotime(nowTime()) + 3600 * 24), + ]; + $result = self::create($fileData); + }else{ + $result = $inviteLink; + } return $result; } @@ -63,6 +70,13 @@ class InviteLink extends CommonModel if ($linkDetail) { $link['name'] = $linkDetail['name']; } + break; + case 'organization': + $link['name'] = ''; + $linkDetail = Organization::where(['code' => $link['source_code']])->field('id', true)->find(); + if ($linkDetail) { + $link['name'] = $linkDetail['name']; + } } $link['member'] = Member::where(['code' => $link['create_by']])->field('id', true)->find(); $link['sourceDetail'] = $linkDetail; diff --git a/application/common/Model/MemberAccount.php b/application/common/Model/MemberAccount.php index 8e041f6..dec5147 100644 --- a/application/common/Model/MemberAccount.php +++ b/application/common/Model/MemberAccount.php @@ -25,6 +25,46 @@ class MemberAccount extends CommonModel return $list; } + /** + * 邀请成员 + * @param $memberCode + * @param $organizationCode + * @return MemberAccount + * @throws \think\db\exception\DataNotFoundException + * @throws \think\db\exception\ModelNotFoundException + * @throws \think\exception\DbException + */ + public static function inviteMember($memberCode, $organizationCode) + { + $hasJoined = MemberAccount::where(['member_code' => $memberCode, 'organization_code' => $organizationCode])->find(); + if ($hasJoined) { + throw new \Exception('已加入该组织', 3); + } + $memberDate = Member::where(['code' => $memberCode])->find(); + if (!$memberDate) { + throw new \Exception('该用户不存在', 4); + } + $auth = ProjectAuth::where(['organization_code' => $organizationCode, 'is_default' => 1])->field('id')->find(); + $authId = ''; + if ($auth) { + $authId = $auth['id'];//权限id + } + $data = [ + 'position' => '资深工程师', + 'department' => '某某公司-某某某事业群-某某平台部-某某技术部', + 'code' => createUniqueCode('memberAccount'), + 'member_code' => $memberCode, + 'organization_code' => $organizationCode, + 'is_owner' => 0, + 'authorize' => $authId, + 'status' => 1, + 'create_time' => nowTime(), + 'name' => $memberDate['name'], + 'email' => $memberDate['email'], + ]; + return MemberAccount::create($data); + } + /** * @param File $file * @return array|bool diff --git a/application/project/controller/Account.php b/application/project/controller/Account.php index 4d45f94..9742645 100644 --- a/application/project/controller/Account.php +++ b/application/project/controller/Account.php @@ -3,6 +3,7 @@ namespace app\project\controller; use app\common\Model\Member; +use app\common\Model\MemberAccount; use app\common\Model\SystemConfig; use controller\BasicApi; use service\FileService; @@ -21,7 +22,7 @@ class Account extends BasicApi { parent::__construct(); if (!$this->model) { - $this->model = new \app\common\Model\MemberAccount(); + $this->model = new MemberAccount(); } } @@ -68,7 +69,7 @@ class Account extends BasicApi list($start, $end) = explode('~', $params['date']); $where[] = ['last_login_time', 'between', ["{$start} 00:00:00", "{$end} 23:59:59"]]; } - $list = $this->model->_list($where,'id asc'); + $list = $this->model->_list($where, 'id asc'); if ($list['list']) { foreach ($list['list'] as &$item) { $memberInfo = Member::where(['code' => $item['member_code']])->field('id', true)->find(); @@ -114,6 +115,30 @@ class Account extends BasicApi $this->error("操作失败,请稍候再试!"); } + /** + * 通过邀请连接邀请成员 + */ + public function _joinByInviteLink() + { + $inviteCode = Request::param('inviteCode'); + $inviteLink = \app\common\Model\InviteLink::where(['code' => $inviteCode])->find(); + if (!$inviteLink || nowTime() >= $inviteLink['over_time']) { + $this->error('该链接已失效'); + } + if ($inviteLink['invite_type'] == 'organization') { + $organization = \app\common\Model\Organization::where(['code' => $inviteLink['source_code']])->find(); + if (!$organization) { + $this->error('该组织不存在'); + } + try { + MemberAccount::inviteMember(getCurrentMember()['code'], $organization['code']); + } catch (\Exception $e) { + $this->error($e->getMessage()); + } + } + $this->success(''); + } + /** * 账户添加 * @return array|string diff --git a/application/project/controller/DepartmentMember.php b/application/project/controller/DepartmentMember.php index 4e04042..47348cc 100644 --- a/application/project/controller/DepartmentMember.php +++ b/application/project/controller/DepartmentMember.php @@ -106,6 +106,7 @@ class DepartmentMember extends BasicApi $this->success('', array_values($tempList));//数组下标重置 } + /** * 邀请成员 */