work/application/common/Model/Organization.php

88 lines
3.1 KiB
PHP
Raw Normal View History

2019-01-17 11:05:47 +08:00
<?php
namespace app\common\Model;
/**
* 组织
* Class Organization
* @package app\common\Model
*/
class Organization extends CommonModel
{
protected $append = [];
/**
* 创建组织
* @param $memberData
* @param array $data
* @return Organization
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\ModelNotFoundException
* @throws \think\exception\DbException
*/
public static function createOrganization($memberData, $data = [])
{
$defaultAdminAuthId = 3;//默认管理员权限id
$defaultMemberAuthId = 4;//默认成员权限id
if (!isset($data['name'])) {
$data['name'] = $memberData['name'] . '的个人项目';
}
$data['code'] = createUniqueCode('organization');
$data['personal'] = 1;
$data['create_time'] = nowTime();
$data['owner_code'] = $memberData['code'];
$organization = self::create($data);
$defaultAdminAuth = ProjectAuth::get($defaultAdminAuthId)->toArray();
$defaultMemberAuth = ProjectAuth::get($defaultMemberAuthId)->toArray();
unset($defaultAdminAuth['id']);
unset($defaultMemberAuth['id']);
$defaultAdminAuth['organization_code'] = $defaultMemberAuth['organization_code'] = $data['code'];
$defaultAdminAuth = ProjectAuth::create($defaultAdminAuth);
$defaultMemberAuth = ProjectAuth::create($defaultMemberAuth);
$defaultAdminAuthNode = ProjectAuthNode::where(['auth' => $defaultAdminAuthId])->select()->toArray();
$defaultMemberAuthNode = ProjectAuthNode::where(['auth' => $defaultMemberAuthId])->select()->toArray();
foreach ($defaultAdminAuthNode as &$item) {
unset($item['id']);
$item['auth'] = $defaultAdminAuth['id'];
ProjectAuthNode::create($item);
}
foreach ($defaultMemberAuthNode as &$item) {
unset($item['id']);
$item['auth'] = $defaultMemberAuth['id'];
ProjectAuthNode::create($item);
}
$memberAccountData = [
'position' => '资深工程师',
'department' => '某某公司某某某事业群某某平台部某某技术部BM',
'code' => createUniqueCode('organization'),
'member_code' => $memberData['code'],
'organization_code' => $data['code'],
'is_owner' => 1,
'status' => 1,
'create_time' => nowTime(),
'avatar' => $memberData['avatar'],
'name' => $memberData['name'],
'email' => isset($memberData['email']) ? $memberData['email'] : '',
2019-01-17 11:05:47 +08:00
];
MemberAccount::create($memberAccountData);
return $organization;
}
public function edit($code, $data)
{
if (!$code) {
throw new \Exception('请选择组织', 1);
}
$project = self::where(['code' => $code])->field('id', true)->find();
if (!$project) {
throw new \Exception('该组织不存在', 1);
}
$result = self::update($data, ['code' => $code]);
return $result;
}
}