401, 'msg' => '未授权', 'data' => []]); } return json([ 'code' => 0, 'msg' => 'ok', 'data' => [ 'nickname' => $u['nickname'], 'avatarUrl' => $u['avatar'], 'bio' => $u['bio'], 'gender' => (int) $u['gender'], 'phone' => trim((string) ($u['phone'] ?? '')), ], ]); } public function save() { $u = AuthContext::mpUser(); if (!$u) { return json(['code' => 401, 'msg' => '未授权', 'data' => []]); } $nickname = trim((string) $this->request->param('nickname', '')); $avatar = trim((string) $this->request->param('avatarUrl', '')); $bio = trim((string) $this->request->param('bio', '')); $gender = $this->request->param('gender', 0); if ($nickname !== '' && mb_strlen($nickname) > 32) { return json(['code' => 400, 'msg' => '昵称过长', 'data' => []]); } if (mb_strlen($bio) > 200) { return json(['code' => 400, 'msg' => '简介过长', 'data' => []]); } $data = ['update_time' => date('Y-m-d H:i:s')]; if ($nickname !== '') { $data['nickname'] = $nickname; } if ($this->request->has('avatarUrl')) { $data['avatar'] = $avatar; } if ($this->request->has('bio')) { $data['bio'] = $bio; } if ($this->request->has('gender')) { $data['gender'] = (int) $gender; } Db::name('mp_user')->where('id', $u['id'])->update($data); return json(['code' => 0, 'msg' => '已保存', 'data' => []]); } public function myWorks() { $u = AuthContext::mpUser(); if (!$u) { return json(['code' => 401, 'msg' => '未授权', 'data' => []]); } $rows = Db::name('work') ->where('user_id', (int) $u['id']) ->order('id', 'desc') ->select() ->toArray(); $list = []; foreach ($rows as $w) { $st = strtolower(trim((string) ($w['status'] ?? ''))); $apiSt = match ($st) { 'approved' => 'approved', 'rejected' => 'rejected', default => 'pending', }; $list[] = [ 'id' => (int) $w['id'], 'imageUrl' => $w['cover_image'], 'title' => $w['title'], 'likes' => (int) $w['likes_count'], 'status' => $apiSt, 'rejectReason' => $st === 'rejected' ? trim((string) ($w['reject_reason'] ?? '')) : '', 'publishedAt' => $w['publish_date'] ?: date('Y-m-d', strtotime((string) $w['create_time'])), ]; } return json(['code' => 0, 'msg' => 'ok', 'data' => ['list' => $list]]); } public function stats() { $u = AuthContext::mpUser(); if (!$u) { return json(['code' => 401, 'msg' => '未授权', 'data' => []]); } $uid = (int) $u['id']; $photos = Db::name('work')->where('user_id', $uid)->count(); $likes = (int) Db::name('work')->where('user_id', $uid)->where('status', 'approved')->sum('likes_count'); return json([ 'code' => 0, 'msg' => 'ok', 'data' => [ 'photos' => $photos, 'likes' => $likes, ], ]); } }