细节优化

Signed-off-by: vilson <545522390@qq.com>
This commit is contained in:
vilson 2020-02-23 16:06:09 +08:00
parent 7cbfca500d
commit ed3303297f
8 changed files with 77 additions and 23 deletions

View File

@ -27,7 +27,7 @@ class Member extends CommonModel
'last_login_time' => Db::raw('now()'), 'last_login_time' => Db::raw('now()'),
]); ]);
$list = MemberAccount::where(['member_code' => $member['code']])->order('id asc')->select()->toArray(); $list = MemberAccount::where(['member_code' => $member['code']])->order('id asc')->select()->toArray();
$organizationList = []; $organizationList = self::getOrgList($member['code'], true);
if ($list) { if ($list) {
foreach ($list as &$item) { foreach ($list as &$item) {
$departments = []; $departments = [];
@ -40,10 +40,6 @@ class Member extends CommonModel
} }
} }
$item['department'] = $departments ? implode(' - ', $departments) : ''; $item['department'] = $departments ? implode(' - ', $departments) : '';
$organization = Organization::where(['code' => $item['organization_code']])->find();
if ($organization) {
$organizationList[] = $organization;
}
} }
} }
$member['account_id'] = $list[0]['id']; $member['account_id'] = $list[0]['id'];
@ -64,6 +60,41 @@ class Member extends CommonModel
return $loginInfo; return $loginInfo;
} }
/**
* 获取当前用户所在的组织
* @param string $memberCode
* @param bool $newest 是否取最新的值
* @return array
* @throws DataNotFoundException
* @throws DbException
* @throws ModelNotFoundException
*/
public static function getOrgList(string $memberCode, $newest = false)
{
$organizationList = [];
if (!$memberCode) {
return $organizationList;
}
$cacheKey = 'member:orgList:' . $memberCode;
if (!$newest) {
$organizationList = cache($cacheKey);
if ($organizationList) {
return $organizationList;
}
}
$list = MemberAccount::where(['member_code' => $memberCode])->order('id asc')->select()->toArray();
if ($list) {
foreach ($list as $item) {
$organization = Organization::where(['code' => $item['organization_code']])->find();
if ($organization) {
$organizationList[] = $organization;
}
}
}
cache($cacheKey, $organizationList, 3600 * 24);
return $organizationList;
}
/** /**
* @param $memberData * @param $memberData
* @return Member * @return Member
@ -176,7 +207,7 @@ class Member extends CommonModel
if (!$currentMember['dingtalk_unionid'] || !$currentMember['dingtalk_userid']) { if (!$currentMember['dingtalk_unionid'] || !$currentMember['dingtalk_userid']) {
if ($currentMember['mobile']) { if ($currentMember['mobile']) {
unset($memberData['mobile']); unset($memberData['mobile']);
}else{ } else {
$has = self::where(['mobile' => $memberData['mobile']])->find(); $has = self::where(['mobile' => $memberData['mobile']])->find();
if ($has) { if ($has) {
return error('1', '您想要绑定的手机号码已经被绑定给其他帐号,请先用该手机号码登录后进行重置,再切回当前帐号发起绑定'); return error('1', '您想要绑定的手机号码已经被绑定给其他帐号,请先用该手机号码登录后进行重置,再切回当前帐号发起绑定');
@ -184,7 +215,7 @@ class Member extends CommonModel
} }
if ($currentMember['email']) { if ($currentMember['email']) {
unset($memberData['email']); unset($memberData['email']);
}else{ } else {
$has = self::where(['email' => $memberData['email']])->find(); $has = self::where(['email' => $memberData['email']])->find();
if ($has) { if ($has) {
return error('1', '您想要绑定的邮箱已经被绑定给其他帐号,请先用该邮箱登录后进行重置,再切回当前帐号发起绑定'); return error('1', '您想要绑定的邮箱已经被绑定给其他帐号,请先用该邮箱登录后进行重置,再切回当前帐号发起绑定');

View File

@ -73,7 +73,10 @@ class MemberAccount extends CommonModel
'mobile' => $mobile, 'mobile' => $mobile,
'email' => $memberDate['email'], 'email' => $memberDate['email'],
]; ];
return MemberAccount::create($data); $result = MemberAccount::create($data);
$cacheKey = 'member:orgList:' . $memberCode;
cache($cacheKey, null);
return $result;
} }
/** /**
@ -126,6 +129,8 @@ class MemberAccount extends CommonModel
$orgCode = getCurrentOrganizationCode(); $orgCode = getCurrentOrganizationCode();
DepartmentMember::where(['account_code' => $accountCode, 'organization_code' => $orgCode])->delete(); DepartmentMember::where(['account_code' => $accountCode, 'organization_code' => $orgCode])->delete();
} }
$cacheKey = 'member:orgList:' . $memberAccount['member_code'];
cache($cacheKey, null);
Db::commit(); Db::commit();
} catch (Exception $e) { } catch (Exception $e) {
Db::rollback(); Db::rollback();

View File

@ -22,12 +22,14 @@ class Notify extends CommonModel
$formatList = []; $formatList = [];
$total = $this->where($where)->count('id'); $total = $this->where($where)->count('id');
if ($list) { if ($list) {
foreach ($types as $type) {
!isset($formatList[$type]) and $formatList[$type] = [];
!isset($totalSum[$type]) and $totalSum[$type] = 0;
$sum = $this->where($where)->where(['type' => $type])->count('id');
$totalSum[$type] = $sum;
}
foreach ($list as &$item) { foreach ($list as &$item) {
foreach ($types as $type) { foreach ($types as $type) {
!isset($formatList[$type]) and $formatList[$type] = [];
!isset($totalSum[$type]) and $totalSum[$type] = 0;
$sum = $this->where($where)->where(['type' => $type])->count('id');
$totalSum[$type] = $sum;
if ($size and count($formatList[$type]) >= $size) { if ($size and count($formatList[$type]) >= $size) {
continue; continue;
} }

View File

@ -36,7 +36,14 @@ class Project extends CommonModel
$offset = ($page - 1) * $page; $offset = ($page - 1) * $page;
$limit = $pageSize; $limit = $pageSize;
$prefix = config('database.prefix'); $prefix = config('database.prefix');
$sql = "select *,p.id as id,p.name as name,p.code as code,p.create_time as create_time from {$prefix}project as p join {$prefix}project_member as pm on p.code = pm.project_code left join {$prefix}project_collection as pc on p.code = pc.project_code where pm.member_code = '{$memberCode}' and p.organization_code = '$organizationCode' and p.deleted = {$deleted} and p.archive = {$archive} order by pc.id desc, p.id desc"; $sql = "select *,p.id as id,p.name as name,p.code as code,p.create_time as create_time from {$prefix}project as p join {$prefix}project_member as pm on p.code = pm.project_code left join {$prefix}project_collection as pc on p.code = pc.project_code where pm.member_code = '{$memberCode}' and p.organization_code = '$organizationCode'";
if ($deleted != -1) {
$sql .= " and p.deleted = {$deleted} ";
}
if ($archive != -1) {
$sql .= " and p.archive = {$archive} ";
}
$sql .= " order by pc.id desc, p.id desc";
$total = Db::query($sql); $total = Db::query($sql);
$total = count($total); $total = count($total);
$sql .= " limit {$offset},{$limit}"; $sql .= " limit {$offset},{$limit}";

View File

@ -86,7 +86,7 @@ class Login extends BasicApi
} else { } else {
!$data['password'] && $this->error('登录密码不能为空!'); !$data['password'] && $this->error('登录密码不能为空!');
!$data['account'] && $this->error('登录账号不能为空!'); !$data['account'] && $this->error('登录账号不能为空!');
$member = Member::where(['account' => $data['account']])->whereOr(['email' => $data['account']])->order('id asc')->find(); $member = Member::where(['account' => $data['account']])->whereOr(['email' => $data['account']])->whereOr(['mobile' => $data['account']])->order('id asc')->find();
} }
empty($member) && $this->error('账号或密码错误', 201); empty($member) && $this->error('账号或密码错误', 201);
$member = $member->toArray(); $member = $member->toArray();

View File

@ -2,6 +2,7 @@
namespace app\project\controller; namespace app\project\controller;
use app\common\Model\Member;
use controller\BasicApi; use controller\BasicApi;
use think\db\exception\DataNotFoundException; use think\db\exception\DataNotFoundException;
use think\db\exception\ModelNotFoundException; use think\db\exception\ModelNotFoundException;
@ -18,6 +19,12 @@ class Organization extends BasicApi
} }
} }
public function _getOrgList()
{
$list = Member::getOrgList(getCurrentMember()['code']);
$this->success('', $list);
}
/** /**
* 显示资源列表 * 显示资源列表
* *
@ -103,7 +110,7 @@ class Organization extends BasicApi
/** /**
* 删除指定资源 * 删除指定资源
* *
* @param int $id * @param int $id
* @return void * @return void
*/ */
public function delete($id = 0) public function delete($id = 0)

View File

@ -181,8 +181,10 @@ class Project extends BasicApi
*/ */
public function selfList() public function selfList()
{ {
$type = Request::post('type'); $type = Request::post('type', 0);
$archive = Request::param('archive', 0); $archive = Request::param('archive', 0);
$delete = Request::param('delete');
$organizationCode = Request::param('organizationCode', '');
$memberCode = Request::post('memberCode', ''); $memberCode = Request::post('memberCode', '');
if (!$memberCode) { if (!$memberCode) {
$member = getCurrentMember(); $member = getCurrentMember();
@ -192,11 +194,11 @@ class Project extends BasicApi
if (!$member) { if (!$member) {
$this->error("参数有误"); $this->error("参数有误");
} }
$deleted = 1; $deleted = $delete === null ? 1 : $delete;
if (!$type) { if (!$type) {
$deleted = 0; $deleted = 0;
} }
$list = $this->model->getMemberProjects($member['code'], getCurrentOrganizationCode(), $deleted, $archive, Request::post('page'), Request::post('pageSize')); $list = $this->model->getMemberProjects($member['code'], $organizationCode ?? getCurrentOrganizationCode(), $deleted, $archive, Request::post('page'), Request::post('pageSize'));
if ($list['list']) { if ($list['list']) {
foreach ($list['list'] as $key => &$item) { foreach ($list['list'] as $key => &$item) {
$item['owner_name'] = '-'; $item['owner_name'] = '-';
@ -206,9 +208,8 @@ class Project extends BasicApi
} }
$collected = ProjectCollection::where(['project_code' => $item['code'], 'member_code' => getCurrentMember()['code']])->field('id')->find(); $collected = ProjectCollection::where(['project_code' => $item['code'], 'member_code' => getCurrentMember()['code']])->field('id')->find();
$item['collected'] = $collected ? 1 : 0; $item['collected'] = $collected ? 1 : 0;
$owner = ProjectMember::where(['project_code' => $item['code'], 'is_owner' => 1])->field('member_code')->find(); $owner = ProjectMember::alias('pm')->leftJoin('member m', 'pm.member_code = m.code')->where(['pm.project_code' => $item['code'], 'is_owner' => 1])->field('member_code,name')->find();
$member = Member::where(['code' => $owner['member_code']])->field('name')->find(); $item['owner_name'] = $owner['name'];
$item['owner_name'] = $member['name'];
} }
unset($item); unset($item);
} }

View File

@ -21,6 +21,7 @@ class NodeService
{ {
cache('member_need_access_node', null); cache('member_need_access_node', null);
$member = getCurrentMember(); $member = getCurrentMember();
$member['nodes'] = [];
if (($authorize = $member['authorize'])) { if (($authorize = $member['authorize'])) {
$where = ['status' => '1']; $where = ['status' => '1'];
$authorizeIds = Db::name('ProjectAuth')->whereIn('id', explode(',', $authorize))->where($where)->column('id'); $authorizeIds = Db::name('ProjectAuth')->whereIn('id', explode(',', $authorize))->where($where)->column('id');
@ -32,7 +33,7 @@ class NodeService
$member['nodes'] = $nodes; $member['nodes'] = $nodes;
return setCurrentMember($member); return setCurrentMember($member);
} }
return false; return setCurrentMember($member);
} }
/** /**
@ -68,7 +69,7 @@ class NodeService
if (!in_array($currentNode, self::getProjectAuthNode())) { if (!in_array($currentNode, self::getProjectAuthNode())) {
return true; return true;
} }
return in_array($currentNode, (array)$member['nodes']); return in_array($currentNode, !empty($member['nodes']) ? (array)$member['nodes'] : []);
} }
return false; return false;
} }