diff --git a/.gitignore b/.gitignore index bf6d78e4..aff1e894 100644 --- a/.gitignore +++ b/.gitignore @@ -6,6 +6,7 @@ /config/xs.user.ini /config/alipay/*.crt /config/wxpay/*.pem +/db/migrations/schema.php /public/robots.txt /public/sitemap.xml /public/h5 diff --git a/CHANGELOG.md b/CHANGELOG.md index 26b077a2..2d08a790 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,24 @@ +### [v1.2.6](https://gitee.com/koogua/course-tencent-cloud/releases/v1.2.6)(2021-02-20) + +### 新增 + +- 积分兑换机制 +- 课程增加原价属性 +- gitee提交webhooks自动化部署脚本 + +### 更新 + +- course和chapter数据迁移文件中遗漏了recourse_count字段 +- app/Caches/TopicCourseList不存在 +- Model文件属性定义默认值 +- 隐藏非付费课程的咨询服务 +- 教学中心教师直播推流按钮无反应 +- 用户中心部分样式调整 +- 播放器清晰度标签和实际的清晰度不对应 +- CNZZ统计代码会显示出站长统计图标 +- 自动安装后访问站点500错误 +- 自动更新脚本可更新css和js版本号 + ### [v1.2.5](https://gitee.com/koogua/course-tencent-cloud/releases/v1.2.5)(2021-01-20) ### 新增 diff --git a/app/Caches/MaxPointGiftId.php b/app/Caches/MaxPointGiftId.php new file mode 100644 index 00000000..6c85c10a --- /dev/null +++ b/app/Caches/MaxPointGiftId.php @@ -0,0 +1,29 @@ +lifetime; + } + + public function getKey($id = null) + { + return 'max_point_gift_id'; + } + + public function getContent($id = null) + { + $gift = PointGiftModel::findFirst(['order' => 'id DESC']); + + return $gift->id ?? 0; + } + +} diff --git a/app/Caches/PointGift.php b/app/Caches/PointGift.php new file mode 100644 index 00000000..6a027a71 --- /dev/null +++ b/app/Caches/PointGift.php @@ -0,0 +1,31 @@ +lifetime; + } + + public function getKey($id = null) + { + return "point_gift:{$id}"; + } + + public function getContent($id = null) + { + $giftRepo = new PointGiftRepo(); + + $gift = $giftRepo->findById($id); + + return $gift ?: null; + } + +} diff --git a/app/Caches/PointHotGiftList.php b/app/Caches/PointHotGiftList.php new file mode 100644 index 00000000..30ae8aa6 --- /dev/null +++ b/app/Caches/PointHotGiftList.php @@ -0,0 +1,79 @@ +limit = $limit; + } + + public function getLifetime() + { + return $this->lifetime; + } + + public function getKey($id = null) + { + return 'point_hot_gift_list'; + } + + public function getContent($id = null) + { + $gifts = $this->findGifts($this->limit); + + if (count($gifts) == 0) { + return []; + } + + $result = []; + + foreach ($gifts as $gift) { + $result[] = [ + 'id' => $gift->id, + 'name' => $gift->name, + 'cover' => $gift->cover, + 'details' => $gift->details, + 'type' => $gift->type, + 'point' => $gift->point, + 'redeem_count' => $gift->redeem_count, + ]; + } + + return $result; + } + + /** + * @param int $limit + * @return ResultsetInterface|Resultset|PointGiftModel[] + */ + protected function findGifts($limit = 5) + { + return PointGiftModel::query() + ->where('published = 1') + ->orderBy('redeem_count DESC') + ->limit($limit) + ->execute(); + } + +} diff --git a/app/Console/Tasks/CleanLogTask.php b/app/Console/Tasks/CleanLogTask.php index 725dfa6c..e198d702 100644 --- a/app/Console/Tasks/CleanLogTask.php +++ b/app/Console/Tasks/CleanLogTask.php @@ -25,6 +25,7 @@ class CleanLogTask extends Task $this->cleanWxpayLog(); $this->cleanOrderLog(); $this->cleanRefundLog(); + $this->cleanPointLog(); $this->cleanNoticeLog(); $this->cleanOtherLog(); } @@ -221,6 +222,18 @@ class CleanLogTask extends Task $this->whitelist[] = $type; } + /** + * 清理积分日志 + */ + protected function cleanPointLog() + { + $type = 'point'; + + $this->cleanLog($type, 7); + + $this->whitelist[] = $type; + } + /** * 清理通知日志 */ diff --git a/app/Console/Tasks/CloseTradeTask.php b/app/Console/Tasks/CloseTradeTask.php index 3918d40c..efe84b3a 100644 --- a/app/Console/Tasks/CloseTradeTask.php +++ b/app/Console/Tasks/CloseTradeTask.php @@ -48,7 +48,7 @@ class CloseTradeTask extends Task */ if ($alipayTrade->trade_status == 'TRADE_SUCCESS') { - $this->eventsManager->fire('pay:afterPay', $this, $trade); + $this->eventsManager->fire('Trade:afterPay', $this, $trade); $allowClosed = false; @@ -85,7 +85,7 @@ class CloseTradeTask extends Task */ if ($wxpayTrade->trade_state == 'SUCCESS') { - $this->eventsManager->fire('pay:afterPay', $this, $trade); + $this->eventsManager->fire('Trade:afterPay', $this, $trade); $allowClosed = false; diff --git a/app/Console/Tasks/DeliverTask.php b/app/Console/Tasks/DeliverTask.php index 874401a4..d41a22b7 100644 --- a/app/Console/Tasks/DeliverTask.php +++ b/app/Console/Tasks/DeliverTask.php @@ -13,6 +13,7 @@ use App\Repos\ImGroupUser as ImGroupUserRepo; use App\Repos\Order as OrderRepo; use App\Repos\User as UserRepo; use App\Services\Logic\Notice\OrderFinish as OrderFinishNotice; +use App\Services\Logic\Point\PointHistory as PointHistoryService; use Phalcon\Mvc\Model; use Phalcon\Mvc\Model\Resultset; use Phalcon\Mvc\Model\ResultsetInterface; @@ -36,17 +37,20 @@ class DeliverTask extends Task foreach ($tasks as $task) { - /** - * @var array $itemInfo - */ - $itemInfo = $task->item_info; + $orderId = $task->item_info['order']['id'] ?? 0; - $order = $orderRepo->findById($itemInfo['order']['id']); + $order = $orderRepo->findById($orderId); - if (!$order) continue; + if (!$order) { + $task->status = TaskModel::STATUS_FAILED; + $task->update(); + continue; + } try { + $this->db->begin(); + switch ($order->item_type) { case OrderModel::ITEM_COURSE: $this->handleCourseOrder($order); @@ -59,14 +63,24 @@ class DeliverTask extends Task break; } - $this->finishOrder($order); + $order->status = OrderModel::STATUS_FINISHED; + + if ($order->update() === false) { + throw new \RuntimeException('Update Order Status Failed'); + } $task->status = TaskModel::STATUS_FINISHED; - $task->update(); + if ($task->update() === false) { + throw new \RuntimeException('Update Task Status Failed'); + } + + $this->db->commit(); } catch (\Exception $e) { + $this->db->rollback(); + $task->try_count += 1; $task->priority += 1; @@ -76,14 +90,16 @@ class DeliverTask extends Task $task->update(); - $logger->info('Order Process Exception ' . kg_json_encode([ - 'code' => $e->getCode(), + $logger->error('Order Process Exception ' . kg_json_encode([ + 'file' => $e->getFile(), + 'line' => $e->getLine(), 'message' => $e->getMessage(), 'task' => $task->toArray(), ])); } if ($task->status == TaskModel::STATUS_FINISHED) { + $this->handleOrderConsumePoint($order); $this->handleOrderFinishNotice($order); } elseif ($task->status == TaskModel::STATUS_FAILED) { $this->handleOrderRefund($order); @@ -91,20 +107,8 @@ class DeliverTask extends Task } } - protected function finishOrder(OrderModel $order) - { - $order->status = OrderModel::STATUS_FINISHED; - - if ($order->update() === false) { - throw new \RuntimeException('Finish Order Failed'); - } - } - protected function handleCourseOrder(OrderModel $order) { - /** - * @var array $itemInfo - */ $itemInfo = $order->item_info; $courseUser = new CourseUserModel(); @@ -127,23 +131,21 @@ class DeliverTask extends Task $groupUser = $groupUserRepo->findGroupUser($group->id, $order->owner_id); - if ($groupUser) return; + if (!$groupUser) { - $groupUser = new ImGroupUserModel(); + $groupUser = new ImGroupUserModel(); - $groupUser->group_id = $group->id; - $groupUser->user_id = $order->owner_id; + $groupUser->group_id = $group->id; + $groupUser->user_id = $order->owner_id; - if ($groupUser->create() === false) { - throw new \RuntimeException('Create Group User Failed'); + if ($groupUser->create() === false) { + throw new \RuntimeException('Create Group User Failed'); + } } } protected function handlePackageOrder(OrderModel $order) { - /** - * @var array $itemInfo - */ $itemInfo = $order->item_info; foreach ($itemInfo['courses'] as $course) { @@ -168,24 +170,24 @@ class DeliverTask extends Task $groupUser = $groupUserRepo->findGroupUser($group->id, $order->owner_id); - if ($groupUser) continue; + if (!$groupUser) { - $groupUser = new ImGroupUserModel(); + $groupUser = new ImGroupUserModel(); - $groupUser->group_id = $group->id; - $groupUser->user_id = $order->owner_id; + $groupUser->group_id = $group->id; + $groupUser->user_id = $order->owner_id; - if ($groupUser->create() === false) { - throw new \RuntimeException('Create Group User Failed'); + if ($groupUser->create() === false) { + throw new \RuntimeException('Create Group User Failed'); + } + + continue; } } } protected function handleVipOrder(OrderModel $order) { - /** - * @var array $itemInfo - */ $itemInfo = $order->item_info; $userRepo = new UserRepo(); @@ -199,6 +201,13 @@ class DeliverTask extends Task } } + protected function handleOrderConsumePoint(OrderModel $order) + { + $service = new PointHistoryService(); + + $service->handleOrderConsume($order); + } + protected function handleOrderFinishNotice(OrderModel $order) { $notice = new OrderFinishNotice(); diff --git a/app/Console/Tasks/NoticeTask.php b/app/Console/Tasks/NoticeTask.php index b736b80c..7d17318d 100644 --- a/app/Console/Tasks/NoticeTask.php +++ b/app/Console/Tasks/NoticeTask.php @@ -66,7 +66,6 @@ class NoticeTask extends Task $logger->info('Notice Process Exception ' . kg_json_encode([ 'file' => $e->getFile(), 'line' => $e->getLine(), - 'code' => $e->getCode(), 'message' => $e->getMessage(), 'task' => $task->toArray(), ])); diff --git a/app/Console/Tasks/PointGiftDeliverTask.php b/app/Console/Tasks/PointGiftDeliverTask.php new file mode 100644 index 00000000..0f8baac9 --- /dev/null +++ b/app/Console/Tasks/PointGiftDeliverTask.php @@ -0,0 +1,209 @@ +getLogger('point'); + + $tasks = $this->findTasks(30); + + if ($tasks->count() == 0) { + return; + } + + $redeemRepo = new PointRedeemRepo(); + + foreach ($tasks as $task) { + + $redeemId = $task->item_info['point_redeem']['id'] ?? 0; + + $redeem = $redeemRepo->findById($redeemId); + + if (!$redeem) { + $task->status = TaskModel::STATUS_FAILED; + $task->update(); + break; + } + + try { + + $this->db->begin(); + + switch ($redeem->gift_type) { + case PointGiftModel::TYPE_COURSE: + $this->handleCourseRedeem($redeem); + break; + case PointGiftModel::TYPE_GOODS: + $this->handleGoodsRedeem($redeem); + break; + case PointGiftModel::TYPE_CASH: + $this->handleCashRedeem($redeem); + break; + } + + $task->status = TaskModel::STATUS_FINISHED; + + if ($task->update() === false) { + throw new \RuntimeException('Update Task Status Failed'); + } + + $this->db->commit(); + + } catch (\Exception $e) { + + $this->db->rollback(); + + $task->try_count += 1; + $task->priority += 1; + + if ($task->try_count > self::TRY_COUNT) { + $task->status = TaskModel::STATUS_FAILED; + } + + $task->update(); + + $logger->error('Point Gift Deliver Exception ' . kg_json_encode([ + 'file' => $e->getFile(), + 'line' => $e->getLine(), + 'message' => $e->getMessage(), + 'task' => $task->toArray(), + ])); + } + + if ($task->status == TaskModel::STATUS_FAILED) { + $this->handlePointRefund($redeem); + } + } + } + + protected function handleCourseRedeem(PointRedeemModel $redeem) + { + $giftRepo = new PointGiftRepo(); + + $gift = $giftRepo->findById($redeem->gift_id); + + if (!$gift) { + throw new \RuntimeException('Gift Not Found'); + } + + $courseRepo = new CourseRepo(); + + $course = $courseRepo->findById($gift->attrs['id']); + + if (!$course) { + throw new \RuntimeException('Course Not Found'); + } + + $groupRepo = new ImGroupRepo(); + + $group = $groupRepo->findByCourseId($course->id); + + if (!$group) { + throw new \RuntimeException('Im Group Not Found'); + } + + $courseUserRepo = new CourseUserRepo(); + + $courseUser = $courseUserRepo->findCourseUser($course->id, $redeem->user_id); + + if (!$courseUser) { + + $courseUser = new CourseUserModel(); + + $courseUser->user_id = $redeem->user_id; + $courseUser->course_id = $course->id; + $courseUser->expiry_time = strtotime("+{$course->study_expiry} months"); + $courseUser->role_type = CourseUserModel::ROLE_STUDENT; + $courseUser->source_type = CourseUserModel::SOURCE_POINT_REDEEM; + + if ($courseUser->create() === false) { + throw new \RuntimeException('Create Course User Failed'); + } + } + + $groupUserRepo = new ImGroupUserRepo(); + + $groupUser = $groupUserRepo->findGroupUser($group->id, $redeem->user_id); + + if (!$groupUser) { + + $groupUser = new ImGroupUserModel(); + + $groupUser->group_id = $group->id; + $groupUser->user_id = $redeem->user_id; + + if ($groupUser->create() === false) { + throw new \RuntimeException('Create Group User Failed'); + } + } + + $redeem->status = PointRedeemModel::STATUS_FINISHED; + + if ($redeem->update() === false) { + throw new \RuntimeException('Update Redeem Status Failed'); + } + } + + protected function handleGoodsRedeem(PointRedeemModel $redeem) + { + + } + + protected function handleCashRedeem(PointRedeemModel $redeem) + { + + } + + protected function handlePointRefund(PointRedeemModel $redeem) + { + $service = new PointHistoryService(); + + $service->handlePointRefund($redeem); + } + + protected function handleRedeemFinishNotice(PointRedeemModel $redeem) + { + + } + + /** + * @param int $limit + * @return ResultsetInterface|Resultset|TaskModel[] + */ + protected function findTasks($limit = 30) + { + $itemType = TaskModel::TYPE_POINT_GIFT_DELIVER; + $status = TaskModel::STATUS_PENDING; + $createTime = strtotime('-3 days'); + + return TaskModel::query() + ->where('item_type = :item_type:', ['item_type' => $itemType]) + ->andWhere('status = :status:', ['status' => $status]) + ->andWhere('create_time > :create_time:', ['create_time' => $createTime]) + ->orderBy('priority ASC') + ->limit($limit) + ->execute(); + } + +} diff --git a/app/Console/Tasks/RefundTask.php b/app/Console/Tasks/RefundTask.php index 7529c242..41e04a51 100644 --- a/app/Console/Tasks/RefundTask.php +++ b/app/Console/Tasks/RefundTask.php @@ -41,9 +41,6 @@ class RefundTask extends Task foreach ($tasks as $task) { - /** - * @var array $itemInfo - */ $itemInfo = $task->item_info; $refund = $refundRepo->findById($itemInfo['refund']['id']); @@ -51,13 +48,8 @@ class RefundTask extends Task $order = $orderRepo->findById($itemInfo['refund']['order_id']); if (!$refund || !$trade || !$order) { - continue; - } - - /** - * 退款存在延迟,给取消退款调解机会 - */ - if (isset($itemInfo['deadline']) && $itemInfo['deadline'] > time()) { + $task->status = TaskModel::STATUS_FAILED; + $task->update(); continue; } @@ -111,7 +103,8 @@ class RefundTask extends Task $task->update(); $logger->info('Refund Task Exception ' . kg_json_encode([ - 'code' => $e->getCode(), + 'file' => $e->getFile(), + 'line' => $e->getLine(), 'message' => $e->getMessage(), 'task' => $task->toArray(), ])); @@ -148,7 +141,7 @@ class RefundTask extends Task } if (!$response) { - throw new \RuntimeException('Pay Refund Failed'); + throw new \RuntimeException('Trade Refund Failed'); } } @@ -208,9 +201,6 @@ class RefundTask extends Task { $courseUserRepo = new CourseUserRepo(); - /** - * @var array $itemInfo - */ $itemInfo = $order->item_info; foreach ($itemInfo['courses'] as $course) { @@ -239,9 +229,6 @@ class RefundTask extends Task $user = $userRepo->findById($order->owner_id); - /** - * @var array $itemInfo - */ $itemInfo = $order->item_info; $diffTime = "-{$itemInfo['vip']['expiry']} months"; diff --git a/app/Console/Tasks/SyncLearningTask.php b/app/Console/Tasks/SyncLearningTask.php index af1f41aa..2ba7a0e8 100644 --- a/app/Console/Tasks/SyncLearningTask.php +++ b/app/Console/Tasks/SyncLearningTask.php @@ -2,6 +2,7 @@ namespace App\Console\Tasks; +use App\Models\ChapterUser as ChapterUserModel; use App\Models\Course as CourseModel; use App\Models\Learning as LearningModel; use App\Repos\Chapter as ChapterRepo; @@ -9,7 +10,8 @@ use App\Repos\ChapterUser as ChapterUserRepo; use App\Repos\Course as CourseRepo; use App\Repos\CourseUser as CourseUserRepo; use App\Repos\Learning as LearningRepo; -use App\Services\Sync\Learning as LearningSync; +use App\Services\Logic\Point\PointHistory as PointHistoryService; +use App\Services\Sync\Learning as LearningSyncService; class SyncLearningTask extends Task { @@ -18,7 +20,7 @@ class SyncLearningTask extends Task { $redis = $this->getRedis(); - $sync = new LearningSync(); + $sync = new LearningSyncService(); $syncKey = $sync->getSyncKey(); @@ -120,7 +122,10 @@ class SyncLearningTask extends Task $chapterUser->update(); if ($chapterUser->consumed == 1) { + $this->updateCourseUser($learning); + + $this->handleStudyPoint($chapterUser); } } @@ -174,4 +179,14 @@ class SyncLearningTask extends Task $courseUser->update(); } + /** + * @param ChapterUserModel $chapterUser + */ + protected function handleStudyPoint(ChapterUserModel $chapterUser) + { + $service = new PointHistoryService(); + + $service->handleChapterStudy($chapterUser); + } + } diff --git a/app/Http/Admin/Controllers/Controller.php b/app/Http/Admin/Controllers/Controller.php index 058bfa77..724497a0 100644 --- a/app/Http/Admin/Controllers/Controller.php +++ b/app/Http/Admin/Controllers/Controller.php @@ -26,8 +26,6 @@ class Controller extends \Phalcon\Mvc\Controller $this->checkCsrfToken(); } - $this->checkRateLimit(); - $this->authInfo = $this->getAuthInfo(); if (!$this->authInfo) { diff --git a/app/Http/Admin/Controllers/PointGiftController.php b/app/Http/Admin/Controllers/PointGiftController.php new file mode 100644 index 00000000..1135eb9d --- /dev/null +++ b/app/Http/Admin/Controllers/PointGiftController.php @@ -0,0 +1,136 @@ +getGifts(); + + $this->view->pick('point/gift/list'); + + $this->view->setVar('pager', $pager); + } + + /** + * @Get("/search", name="admin.point_gift.search") + */ + public function searchAction() + { + $this->view->pick('point/gift/search'); + } + + /** + * @Get("/add", name="admin.point_gift.add") + */ + public function addAction() + { + $this->view->pick('point/gift/add'); + } + + /** + * @Get("/{id:[0-9]+}/edit", name="admin.point_gift.edit") + */ + public function editAction($id) + { + $giftService = new PointGiftService(); + + $gift = $giftService->getGift($id); + + $this->view->pick('point/gift/edit'); + + $this->view->setVar('gift', $gift); + } + + /** + * @Post("/create", name="admin.point_gift.create") + */ + public function createAction() + { + $giftService = new PointGiftService(); + + $gift = $giftService->createGift(); + + $location = $this->url->get([ + 'for' => 'admin.point_gift.edit', + 'id' => $gift->id, + ]); + + $content = [ + 'location' => $location, + 'msg' => '添加礼品成功', + ]; + + return $this->jsonSuccess($content); + } + + /** + * @Post("/{id:[0-9]+}/update", name="admin.point_gift.update") + */ + public function updateAction($id) + { + $giftService = new PointGiftService(); + + $giftService->updateGift($id); + + $location = $this->url->get(['for' => 'admin.point_gift.list']); + + $content = [ + 'location' => $location, + 'msg' => '更新礼品成功', + ]; + + return $this->jsonSuccess($content); + } + + /** + * @Post("/{id:[0-9]+}/delete", name="admin.point_gift.delete") + */ + public function deleteAction($id) + { + $giftService = new PointGiftService(); + + $giftService->deleteGift($id); + + $location = $this->request->getHTTPReferer(); + + $content = [ + 'location' => $location, + 'msg' => '删除礼品成功', + ]; + + return $this->jsonSuccess($content); + } + + /** + * @Post("/{id:[0-9]+}/restore", name="admin.point_gift.restore") + */ + public function restoreAction($id) + { + $giftService = new PointGiftService(); + + $giftService->restoreGift($id); + + $location = $this->request->getHTTPReferer(); + + $content = [ + 'location' => $location, + 'msg' => '还原礼品成功', + ]; + + return $this->jsonSuccess($content); + } + +} diff --git a/app/Http/Admin/Controllers/PointRedeemController.php b/app/Http/Admin/Controllers/PointRedeemController.php new file mode 100644 index 00000000..707403d3 --- /dev/null +++ b/app/Http/Admin/Controllers/PointRedeemController.php @@ -0,0 +1,47 @@ +view->pick('point/redeem/search'); + } + + /** + * @Get("/list", name="admin.point_redeem.list") + */ + public function listAction() + { + $redeemService = new PointRedeemService(); + + $pager = $redeemService->getRedeems(); + + $this->view->pick('point/redeem/list'); + + $this->view->setVar('pager', $pager); + } + + /** + * @Post("/{id:[0-9]+}/deliver", name="admin.point_redeem.deliver") + */ + public function deliverAction($id) + { + $redeemService = new PointRedeemService(); + + $redeemService->deliver($id); + + return $this->jsonSuccess(['msg' => '发货成功']); + } + +} diff --git a/app/Http/Admin/Controllers/SettingController.php b/app/Http/Admin/Controllers/SettingController.php index 7d949a67..76cff636 100644 --- a/app/Http/Admin/Controllers/SettingController.php +++ b/app/Http/Admin/Controllers/SettingController.php @@ -50,7 +50,7 @@ class SettingController extends Controller $data = $this->request->getPost(); - $settingService->updateStorageSettings($section, $data); + $settingService->updateSettings($section, $data); return $this->jsonSuccess(['msg' => '更新配置成功']); @@ -248,6 +248,31 @@ class SettingController extends Controller } } + /** + * @Route("/point", name="admin.setting.point") + */ + public function pointAction() + { + $section = 'point'; + + $settingService = new SettingService(); + + if ($this->request->isPost()) { + + $data = $this->request->getPost(); + + $settingService->updatePointSettings($section, $data); + + return $this->jsonSuccess(['msg' => '更新配置成功']); + + } else { + + $point = $settingService->getSettings($section); + + $this->view->setVar('point', $point); + } + } + /** * @Route("/vip", name="admin.setting.vip") */ diff --git a/app/Http/Admin/Services/AuthNode.php b/app/Http/Admin/Services/AuthNode.php index 77104b1d..20dedbb5 100644 --- a/app/Http/Admin/Services/AuthNode.php +++ b/app/Http/Admin/Services/AuthNode.php @@ -476,6 +476,43 @@ class AuthNode extends Service ], ], ], + [ + 'id' => '2-8', + 'title' => '积分商城', + 'type' => 'menu', + 'children' => [ + [ + 'id' => '2-8-2', + 'title' => '礼品列表', + 'type' => 'menu', + 'route' => 'admin.point_gift.list', + ], + [ + 'id' => '2-8-1', + 'title' => '兑换记录', + 'type' => 'menu', + 'route' => 'admin.point_redeem.list', + ], + [ + 'id' => '2-8-3', + 'title' => '添加礼品', + 'type' => 'button', + 'route' => 'admin.point_gift.add', + ], + [ + 'id' => '2-8-4', + 'title' => '编辑礼品', + 'type' => 'button', + 'route' => 'admin.point_gift.edit', + ], + [ + 'id' => '2-8-5', + 'title' => '删除礼品', + 'type' => 'button', + 'route' => 'admin.point_gift.delete', + ], + ], + ], ], ]; } @@ -763,6 +800,12 @@ class AuthNode extends Service 'type' => 'menu', 'route' => 'admin.setting.wechat_oa', ], + [ + 'id' => '5-1-14', + 'title' => '积分设置', + 'type' => 'menu', + 'route' => 'admin.setting.point', + ], ], ], ], diff --git a/app/Http/Admin/Services/PointGift.php b/app/Http/Admin/Services/PointGift.php new file mode 100644 index 00000000..b87211fe --- /dev/null +++ b/app/Http/Admin/Services/PointGift.php @@ -0,0 +1,163 @@ +getParams(); + + $params['deleted'] = $params['deleted'] ?? 0; + + $sort = $pagerQuery->getSort(); + $page = $pagerQuery->getPage(); + $limit = $pagerQuery->getLimit(); + + $giftRepo = new PointGiftRepo(); + + return $giftRepo->paginate($params, $sort, $page, $limit); + } + + public function getGift($id) + { + return $this->findOrFail($id); + } + + public function createGift() + { + $post = $this->request->getPost(); + + $validator = new PointGiftValidator(); + + $post['type'] = $validator->checkType($post['type']); + + $gift = new PointGiftModel(); + + switch ($post['type']) { + case PointGiftModel::TYPE_COURSE: + $gift = $this->createCourseGift($post); + break; + case PointGiftModel::TYPE_GOODS: + $gift = $this->createCommodityGift($post); + break; + } + + return $gift; + } + + public function updateGift($id) + { + $gift = $this->findOrFail($id); + + $post = $this->request->getPost(); + + $validator = new PointGiftValidator(); + + $data = []; + + if (isset($post['cover'])) { + $data['cover'] = $validator->checkCover($post['cover']); + } + + if (isset($post['name'])) { + $data['name'] = $validator->checkName($post['name']); + } + + if (isset($post['details'])) { + $data['details'] = $validator->checkDetails($post['details']); + } + + if (isset($post['attrs'])) { + $data['attrs'] = $validator->checkAttrs($gift, $post['attrs']); + } + + if (isset($post['point'])) { + $data['point'] = $validator->checkPoint($post['point']); + } + + if (isset($post['stock'])) { + $data['stock'] = $validator->checkStock($post['stock']); + } + + if (isset($post['redeem_limit'])) { + $data['redeem_limit'] = $validator->checkRedeemLimit($post['redeem_limit']); + } + + if (isset($post['published'])) { + $data['published'] = $validator->checkPublishStatus($post['published']); + } + + $gift->update($data); + + return $gift; + } + + public function deleteGift($id) + { + $gift = $this->findOrFail($id); + + $gift->deleted = 1; + + $gift->update(); + + return $gift; + } + + public function restoreGift($id) + { + $gift = $this->findOrFail($id); + + $gift->deleted = 0; + + $gift->update(); + + return $gift; + } + + protected function createCourseGift($post) + { + $validator = new PointGiftValidator(); + + $course = $validator->checkCourse($post['course_id']); + + $gift = new PointGiftModel(); + + $gift->type = PointGiftModel::TYPE_COURSE; + $gift->name = $course->title; + + $gift->create(); + + return $gift; + } + + protected function createCommodityGift($post) + { + $validator = new PointGiftValidator(); + + $gift = new PointGiftModel(); + + $gift->type = PointGiftModel::TYPE_GOODS; + $gift->name = $validator->checkName($post['name']); + + $gift->create(); + + return $gift; + } + + protected function findOrFail($id) + { + $validator = new PointGiftValidator(); + + return $validator->checkGift($id); + } + +} diff --git a/app/Http/Admin/Services/PointRedeem.php b/app/Http/Admin/Services/PointRedeem.php new file mode 100644 index 00000000..f3812807 --- /dev/null +++ b/app/Http/Admin/Services/PointRedeem.php @@ -0,0 +1,58 @@ +getParams(); + + $params['deleted'] = $params['deleted'] ?? 0; + + $sort = $pagerQuery->getSort(); + $page = $pagerQuery->getPage(); + $limit = $pagerQuery->getLimit(); + + $redeemRepo = new PointRedeemRepo(); + + return $redeemRepo->paginate($params, $sort, $page, $limit); + } + + public function getRedeem($id) + { + return $this->findOrFail($id); + } + + public function deliver($id) + { + $redeem = $this->findOrFail($id); + + if ($redeem->gift_type != PointGiftModel::TYPE_GOODS) { + return $redeem; + } + + $redeem->status = PointRedeemModel::STATUS_FINISHED; + + $redeem->update(); + + return $redeem; + } + + protected function findOrFail($id) + { + $validator = new PointRedeemValidator(); + + return $validator->checkRedeem($id); + } + +} diff --git a/app/Http/Admin/Services/Refund.php b/app/Http/Admin/Services/Refund.php index e0df2bc9..89efeb70 100644 --- a/app/Http/Admin/Services/Refund.php +++ b/app/Http/Admin/Services/Refund.php @@ -103,9 +103,17 @@ class Refund extends Service $task = new TaskModel(); + $itemInfo = [ + 'refund' => [ + 'id' => $refund->id, + 'order_id' => $refund->order_id, + 'trade_id' => $refund->trade_id, + ], + ]; + $task->item_id = $refund->id; $task->item_type = TaskModel::TYPE_REFUND; - $task->item_info = ['refund' => $refund->toArray()]; + $task->item_info = $itemInfo; $task->priority = TaskModel::PRIORITY_HIGH; $task->status = TaskModel::STATUS_PENDING; diff --git a/app/Http/Admin/Services/Session.php b/app/Http/Admin/Services/Session.php index fae5222b..bd64ad6e 100644 --- a/app/Http/Admin/Services/Session.php +++ b/app/Http/Admin/Services/Session.php @@ -2,9 +2,7 @@ namespace App\Http\Admin\Services; -use App\Models\User as UserModel; use App\Services\Auth\Admin as AdminAuth; -use App\Services\Logic\Notice\AccountLogin as AccountLoginNoticeService; use App\Validators\Account as AccountValidator; use App\Validators\Captcha as CaptchaValidator; @@ -47,21 +45,18 @@ class Session extends Service $captchaValidator->checkCode($post['ticket'], $post['rand']); } - $this->handleLoginNotice($user); - $this->auth->saveAuthInfo($user); + + $this->eventsManager->fire('Account:afterLogin', $this, $user); } public function logout() { + $user = $this->getLoginUser(); + $this->auth->clearAuthInfo(); - } - protected function handleLoginNotice(UserModel $user) - { - $service = new AccountLoginNoticeService(); - - $service->createTask($user); + $this->eventsManager->fire('Account:afterLogout', $this, $user); } } diff --git a/app/Http/Admin/Services/Setting.php b/app/Http/Admin/Services/Setting.php index 87e2b6a4..c076eb4e 100644 --- a/app/Http/Admin/Services/Setting.php +++ b/app/Http/Admin/Services/Setting.php @@ -181,6 +181,19 @@ class Setting extends Service $this->updateSettings($section, $settings); } + public function updatePointSettings($section, $settings) + { + if (isset($settings['event_rule'])) { + $settings['event_rule'] = kg_json_encode($settings['event_rule']); + } + + if (isset($settings['consume_rule'])) { + $settings['consume_rule'] = kg_json_encode($settings['consume_rule']); + } + + $this->updateSettings($section, $settings); + } + public function updateVipSettings($items) { $vipRepo = new VipRepo(); diff --git a/app/Http/Admin/Services/Topic.php b/app/Http/Admin/Services/Topic.php index ac8289bf..7b0f2544 100644 --- a/app/Http/Admin/Services/Topic.php +++ b/app/Http/Admin/Services/Topic.php @@ -3,7 +3,6 @@ namespace App\Http\Admin\Services; use App\Caches\Topic as TopicCache; -use App\Caches\TopicCourseList as TopicCourseListCache; use App\Library\Paginator\Query as PagerQuery; use App\Models\CourseTopic as CourseTopicModel; use App\Models\Topic as TopicModel; @@ -66,8 +65,8 @@ class Topic extends Service $data = []; - if (isset($post['name'])) { - $data['name'] = $validator->checkName($post['name']); + if (isset($post['title'])) { + $data['title'] = $validator->checkTitle($post['title']); } if (isset($post['summary'])) { @@ -194,10 +193,6 @@ class Topic extends Service $cache = new TopicCache(); $cache->rebuild($topic->id); - - $cache = new TopicCourseListCache(); - - $cache->rebuild($topic->id); } protected function findOrFail($id) diff --git a/app/Http/Admin/Views/macros/point.volt b/app/Http/Admin/Views/macros/point.volt new file mode 100644 index 00000000..8b2d6093 --- /dev/null +++ b/app/Http/Admin/Views/macros/point.volt @@ -0,0 +1,61 @@ +{%- macro redeem_status_info(value) %} + {% if value == 1 %} + 处理中 + {% elseif value == 2 %} + 已完成 + {% elseif value == 3 %} + 已失败 + {% endif %} +{%- endmacro %} + +{%- macro gift_type_info(value) %} + {% if value == 1 %} + 课程 + {% elseif value == 2 %} + 商品 + {% elseif value == 3 %} + 现金 + {% endif %} +{%- endmacro %} + +{%- macro event_type_info(value) %} + {% if value == 1 %} + 订单消费 + {% elseif value == 2 %} + 积分兑换 + {% elseif value == 3 %} + 积分退款 + {% elseif value == 4 %} + 帐号注册 + {% elseif value == 5 %} + 站点访问 + {% elseif value == 6 %} + 课时学习 + {% elseif value == 7 %} + 课程评价 + {% elseif value == 8 %} + 微聊讨论 + {% endif %} +{%- endmacro %} + +{%- macro event_detail_info(history) %} + {% set event_info = history.event_info %} + {% if history.event_type == 1 %} +

{{ event_info.order.subject }}

+ {% elseif history.event_type == 2 %} +

{{ event_info.point_redeem.gift_name }}

+ {% elseif history.event_type == 3 %} + {{ event_info.point_redeem.gift_name }} + {% elseif history.event_type == 4 %} + N/A + {% elseif history.event_type == 5 %} + N/A + {% elseif history.event_type == 6 %} +

课程:{{ event_info.course.title }}

+

章节:{{ event_info.chapter.title }}

+ {% elseif history.event_type == 7 %} +

{{ event_info.course.title }}

+ {% elseif history.event_type == 8 %} + N/A + {% endif %} +{%- endmacro %} \ No newline at end of file diff --git a/app/Http/Admin/Views/point/gift/add.volt b/app/Http/Admin/Views/point/gift/add.volt new file mode 100644 index 00000000..f4ea046a --- /dev/null +++ b/app/Http/Admin/Views/point/gift/add.volt @@ -0,0 +1,62 @@ +{% extends 'templates/main.volt' %} + +{% block content %} + +
+
+ 添加礼品 +
+
+ +
+ + +
+
+ + +
+ +
+ + +
+
+
+ +{% endblock %} + +{% block inline_js %} + + + +{% endblock %} \ No newline at end of file diff --git a/app/Http/Admin/Views/point/gift/edit.volt b/app/Http/Admin/Views/point/gift/edit.volt new file mode 100644 index 00000000..9e43021f --- /dev/null +++ b/app/Http/Admin/Views/point/gift/edit.volt @@ -0,0 +1,27 @@ +{% extends 'templates/main.volt' %} + +{% block content %} + + {% set update_url = url({'for':'admin.point_gift.update','id':gift.id}) %} + + {% if gift.type == 1 %} + {{ partial('point/gift/edit_course') }} + {% elseif gift.type == 2 %} + {{ partial('point/gift/edit_goods') }} + {% endif %} + +{% endblock %} + +{% block link_css %} + + {{ css_link('https://cdn.jsdelivr.net/npm/vditor/dist/index.css', false) }} + +{% endblock %} + +{% block include_js %} + + {{ js_include('https://cdn.jsdelivr.net/npm/vditor/dist/index.min.js', false) }} + {{ js_include('admin/js/cover.upload.js') }} + {{ js_include('admin/js/vditor.js') }} + +{% endblock %} \ No newline at end of file diff --git a/app/Http/Admin/Views/point/gift/edit_course.volt b/app/Http/Admin/Views/point/gift/edit_course.volt new file mode 100644 index 00000000..e6c7fcd6 --- /dev/null +++ b/app/Http/Admin/Views/point/gift/edit_course.volt @@ -0,0 +1,34 @@ +
+
+ 编辑礼品 +
+
+ +
+ +
+
+
+ +
{{ gift.name }}
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ + +
+
+
\ No newline at end of file diff --git a/app/Http/Admin/Views/point/gift/edit_goods.volt b/app/Http/Admin/Views/point/gift/edit_goods.volt new file mode 100644 index 00000000..ecfbc919 --- /dev/null +++ b/app/Http/Admin/Views/point/gift/edit_goods.volt @@ -0,0 +1,59 @@ +
+
+ 编辑礼品 +
+
+ +
+ + +
+
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ + +
+
+
\ No newline at end of file diff --git a/app/Http/Admin/Views/point/gift/list.volt b/app/Http/Admin/Views/point/gift/list.volt new file mode 100644 index 00000000..eba95255 --- /dev/null +++ b/app/Http/Admin/Views/point/gift/list.volt @@ -0,0 +1,87 @@ +{% extends 'templates/main.volt' %} + +{% block content %} + + {{ partial('macros/point') }} + + {% set add_url = url({'for':'admin.point_gift.add'}) %} + {% set search_url = url({'for':'admin.point_gift.search'}) %} + +
+
+ + 礼品管理 + +
+
+ + 添加礼品 + + + 搜索礼品 + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + {% for item in pager.items %} + {% set redeem_url = url({'for':'admin.point_redeem.list'},{'gift_id':item.id}) %} + {% set preview_url = url({'for':'home.point_gift.show','id':item.id}) %} + {% set edit_url = url({'for':'admin.point_gift.edit','id':item.id}) %} + {% set update_url = url({'for':'admin.point_gift.update','id':item.id}) %} + {% set delete_url = url({'for':'admin.point_gift.delete','id':item.id}) %} + {% set restore_url = url({'for':'admin.point_gift.restore','id':item.id}) %} + + + + + + + + + + + {% endfor %} + +
编号物品名称所需积分库存数量兑换限额兑换人次发布操作
{{ item.id }}{{ item.name }} {{ gift_type_info(item.type) }}{{ item.point }}{{ item.stock }}{{ item.redeem_limit }}{{ item.redeem_count }} +
+ + +
+
+ + {{ partial('partials/pager') }} + +{% endblock %} \ No newline at end of file diff --git a/app/Http/Admin/Views/point/gift/search.volt b/app/Http/Admin/Views/point/gift/search.volt new file mode 100644 index 00000000..5663aca4 --- /dev/null +++ b/app/Http/Admin/Views/point/gift/search.volt @@ -0,0 +1,51 @@ +{% extends 'templates/main.volt' %} + +{% block content %} + +
+
+ 搜索礼品 +
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +{% endblock %} \ No newline at end of file diff --git a/app/Http/Admin/Views/point/redeem/list.volt b/app/Http/Admin/Views/point/redeem/list.volt new file mode 100644 index 00000000..c86b4b1b --- /dev/null +++ b/app/Http/Admin/Views/point/redeem/list.volt @@ -0,0 +1,100 @@ +{% extends 'templates/main.volt' %} + +{% block content %} + + {{ partial('macros/point') }} + + {% set search_url = url({'for':'admin.point_redeem.search'}) %} + +
+
+ + 兑换记录 + +
+
+ + 搜索兑换 + +
+
+ + + + + + + + + + + + + + + + + + + + {% for item in pager.items %} + {% set user_filter_url = url({'for':'admin.point_redeem.list'},{'user_id':item.user_id}) %} + {% set deliver_url = url({'for':'admin.point_redeem.deliver','id':item.id}) %} + {% set gift_url = url({'for':'home.point_gift.show','id':item.gift_id}) %} + + + + + + + + {% endfor %} + +
物品名称消耗积分兑换状态兑换时间操作
+

{{ item.gift_name }}({{ item.gift_id }}){{ gift_type_info(item.gift_type) }}

+

用户名称:{{ item.user_name }} ({{ item.user_id }}) 联系方式: + +

+
{{ item.gift_point }}{{ redeem_status_info(item.status) }}{{ date('Y-m-d H:i',item.create_time) }} + {% if item.gift_type == 2 %} + + {% else %} + N/A + {% endif %} +
+ + {{ partial('partials/pager') }} + +{% endblock %} + +{% block inline_js %} + + + +{% endblock %} + +{% block include_js %} + + {{ js_include('admin/js/contact.js') }} + +{% endblock %} \ No newline at end of file diff --git a/app/Http/Admin/Views/point/redeem/search.volt b/app/Http/Admin/Views/point/redeem/search.volt new file mode 100644 index 00000000..49a91340 --- /dev/null +++ b/app/Http/Admin/Views/point/redeem/search.volt @@ -0,0 +1,46 @@ +{% extends 'templates/main.volt' %} + +{% block content %} + +
+
+ 搜索兑换 +
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ + + +
+
+
+ +
+ + + +
+
+
+ +
+ + +
+
+
+ +{% endblock %} \ No newline at end of file diff --git a/app/Http/Admin/Views/setting/point.volt b/app/Http/Admin/Views/setting/point.volt new file mode 100644 index 00000000..e3fd8ed8 --- /dev/null +++ b/app/Http/Admin/Views/setting/point.volt @@ -0,0 +1,112 @@ +{% extends 'templates/main.volt' %} + +{% block content %} + + {% set consume_rule = point.consume_rule|json_decode %} + {% set event_rule = point.event_rule|json_decode %} + +
+
+ 积分设置 +
+
+ +
+ + +
+
+
+ 消费奖励规则 +
+
+ +
+ + +
+
+
+ +
+ +
+
奖励积分 = 消费金额 X 奖励倍率
+
+
+ 行为奖励规则 +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
行为类型奖励积分每日上限启用规则
帐号注册N/A + + +
站点访问N/A + + +
课程评价N/A + + +
课时学习N/A + + +
微聊讨论N/A + + +
+
+
+ +
+ + +
+
+
+ +{% endblock %} \ No newline at end of file diff --git a/app/Http/Admin/Views/student/list.volt b/app/Http/Admin/Views/student/list.volt index bc673b7b..16d92f20 100644 --- a/app/Http/Admin/Views/student/list.volt +++ b/app/Http/Admin/Views/student/list.volt @@ -6,9 +6,15 @@ {% if value == 1 %} 免费 {% elseif value == 2 %} - 付费 + 付费 {% elseif value == 3 %} 导入 + {% elseif value == 4 %} + 会员 + {% elseif value == 5 %} + 积分 + {% elseif value == 6 %} + 抽奖 {% endif %} {%- endmacro %} @@ -58,8 +64,8 @@ {{ source_type_info(item.source_type) }} -

开始:{{ date('Y-m-d H:i:s',item.create_time) }}

-

结束:{{ date('Y-m-d H:i:s',item.expiry_time) }}

+

开始:{{ date('Y-m-d H:i',item.create_time) }}

+

结束:{{ date('Y-m-d H:i',item.expiry_time) }}

diff --git a/app/Http/Api/Controllers/Controller.php b/app/Http/Api/Controllers/Controller.php index d33b4eeb..12d00f18 100644 --- a/app/Http/Api/Controllers/Controller.php +++ b/app/Http/Api/Controllers/Controller.php @@ -2,7 +2,8 @@ namespace App\Http\Api\Controllers; -use App\Services\Auth\Api as AppAuth; +use App\Models\User as UserModel; +use App\Services\Auth\Api as ApiAuth; use App\Traits\Response as ResponseTrait; use App\Traits\Security as SecurityTrait; use Phalcon\Mvc\Dispatcher; @@ -10,6 +11,11 @@ use Phalcon\Mvc\Dispatcher; class Controller extends \Phalcon\Mvc\Controller { + /** + * @var UserModel + */ + protected $authUser; + use ResponseTrait; use SecurityTrait; @@ -19,17 +25,22 @@ class Controller extends \Phalcon\Mvc\Controller $this->setCors(); } - if (!$this->request->isOptions()) { - $this->checkRateLimit(); - } + $this->checkRateLimit(); return true; } + public function initialize() + { + $this->authUser = $this->getAuthUser(); + + $this->eventsManager->fire('Site:afterView', $this, $this->authUser); + } + protected function getAuthUser() { /** - * @var AppAuth $auth + * @var ApiAuth $auth */ $auth = $this->getDI()->get('auth'); diff --git a/app/Http/Api/Services/Account.php b/app/Http/Api/Services/Account.php index 9ce43137..bbe4cc90 100644 --- a/app/Http/Api/Services/Account.php +++ b/app/Http/Api/Services/Account.php @@ -2,11 +2,9 @@ namespace App\Http\Api\Services; -use App\Models\User as UserModel; use App\Repos\User as UserRepo; use App\Services\Auth\Api as AuthService; use App\Services\Logic\Account\Register as RegisterService; -use App\Services\Logic\Notice\AccountLogin as AccountLoginNoticeService; use App\Validators\Account as AccountValidator; class Account extends Service @@ -32,7 +30,11 @@ class Account extends Service $user = $userRepo->findById($account->id); - return $this->auth->saveAuthInfo($user); + $token = $this->auth->saveAuthInfo($user); + + $this->eventsManager->fire('Account:afterRegister', $this, $user); + + return $token; } public function loginByPassword() @@ -52,9 +54,11 @@ class Account extends Service $user = $validator->checkUserLogin($post['account'], $post['password']); - $this->handleLoginNotice($user); + $token = $this->auth->saveAuthInfo($user); - return $this->auth->saveAuthInfo($user); + $this->eventsManager->fire('Account:afterLogin', $this, $user); + + return $token; } public function loginByVerify() @@ -74,21 +78,20 @@ class Account extends Service $user = $validator->checkVerifyLogin($post['account'], $post['verify_code']); - $this->handleLoginNotice($user); + $token = $this->auth->saveAuthInfo($user); - return $this->auth->saveAuthInfo($user); + $this->eventsManager->fire('Account:afterLogin', $this, $user); + + return $token; } public function logout() { + $user = $this->getLoginUser(); + $this->auth->clearAuthInfo(); - } - protected function handleLoginNotice(UserModel $user) - { - $service = new AccountLoginNoticeService(); - - $service->createTask($user); + $this->eventsManager->fire('Account:afterLogout', $this, $user); } } diff --git a/app/Http/Home/Controllers/ChapterController.php b/app/Http/Home/Controllers/ChapterController.php index 4cc0cc3c..b23e6454 100644 --- a/app/Http/Home/Controllers/ChapterController.php +++ b/app/Http/Home/Controllers/ChapterController.php @@ -9,6 +9,7 @@ use App\Services\Logic\Chapter\ChapterLike as ChapterLikeService; use App\Services\Logic\Chapter\DanmuList as ChapterDanmuListService; use App\Services\Logic\Chapter\Learning as ChapterLearningService; use App\Services\Logic\Chapter\ResourceList as ChapterResourceListService; +use App\Services\Logic\Course\BasicInfo as CourseInfoService; use App\Services\Logic\Course\ChapterList as CourseChapterListService; /** @@ -50,20 +51,24 @@ class ChapterController extends Controller $chapter = $service->handle($id); + $service = new CourseInfoService(); + + $course = $service->handle($chapter['course']['id']); + $owned = $chapter['me']['owned'] ?? false; if (!$owned) { $this->response->redirect([ 'for' => 'home.course.show', - 'id' => $chapter['course']['id'], + 'id' => $course['id'], ]); } $service = new CourseChapterListService(); - $catalog = $service->handle($chapter['course']['id']); + $catalog = $service->handle($course['id']); - $this->seo->prependTitle(['章节', $chapter['title'], $chapter['course']['title']]); + $this->seo->prependTitle(['章节', $chapter['title'], $course['title']]); if (!empty($chapter['summary'])) { $this->seo->setDescription($chapter['summary']); @@ -83,6 +88,7 @@ class ChapterController extends Controller } } + $this->view->setVar('course', $course); $this->view->setVar('chapter', $chapter); $this->view->setVar('catalog', $catalog); } diff --git a/app/Http/Home/Controllers/Controller.php b/app/Http/Home/Controllers/Controller.php index df84d9d2..301b0191 100644 --- a/app/Http/Home/Controllers/Controller.php +++ b/app/Http/Home/Controllers/Controller.php @@ -66,17 +66,15 @@ class Controller extends \Phalcon\Mvc\Controller $this->checkCsrfToken(); } - $config = $this->getConfig(); - - if ($config->path('throttle.enabled')) { - $this->checkRateLimit(); - } + $this->checkRateLimit(); return true; } public function initialize() { + $this->eventsManager->fire('Site:afterView', $this, $this->authUser); + $this->seo = $this->getSeo(); $this->navs = $this->getNavs(); $this->appInfo = $this->getAppInfo(); diff --git a/app/Http/Home/Controllers/PointGiftController.php b/app/Http/Home/Controllers/PointGiftController.php new file mode 100644 index 00000000..6fab4cdc --- /dev/null +++ b/app/Http/Home/Controllers/PointGiftController.php @@ -0,0 +1,103 @@ +authUser->id == 0) { + $this->response->redirect(['for' => 'home.account.login']); + return false; + } + + return true; + } + + /** + * @Get("/list", name="home.point_gift.list") + */ + public function listAction() + { + $this->seo->prependTitle('积分兑换'); + + $this->view->pick('point/gift/list'); + } + + /** + * @Get("/pager", name="home.point_gift.pager") + */ + public function pagerAction() + { + $service = new GiftListService(); + + $pager = $service->handle(); + + $pager->target = 'gift-list'; + + $this->view->setRenderLevel(View::LEVEL_ACTION_VIEW); + $this->view->pick('point/gift/pager'); + $this->view->setVar('pager', $pager); + } + + /** + * @Get("/{id:[0-9]+}", name="home.point_gift.show") + */ + public function showAction($id) + { + $service = new GiftInfoService(); + + $gift = $service->handle($id); + + $hotGifts = $this->getHotGifts(); + $userBalance = $this->getUserBalance(); + + $this->seo->prependTitle(['积分兑换', $gift['name']]); + + $this->view->pick('point/gift/show'); + $this->view->setVar('gift', $gift); + $this->view->setVar('hot_gifts', $hotGifts); + $this->view->setVar('user_balance', $userBalance); + } + + /** + * @Post("/redeem", name="home.point_gift.redeem") + */ + public function redeemAction() + { + $service = new GiftRedeemService(); + + $service->handle(); + + return $this->jsonSuccess(['msg' => '兑换成功']); + } + + protected function getHotGifts() + { + $service = new HotGiftListService(); + + return $service->handle(); + } + + protected function getUserBalance() + { + $service = new BalanceInfoService(); + + return $service->handle(); + } + +} diff --git a/app/Http/Home/Controllers/PointRedeemController.php b/app/Http/Home/Controllers/PointRedeemController.php new file mode 100644 index 00000000..37b99430 --- /dev/null +++ b/app/Http/Home/Controllers/PointRedeemController.php @@ -0,0 +1,25 @@ +handle(); + + return $this->jsonSuccess(['msg' => '兑换成功']); + } + +} diff --git a/app/Http/Home/Controllers/UserConsoleController.php b/app/Http/Home/Controllers/UserConsoleController.php index 12ed2de5..16f22f8f 100644 --- a/app/Http/Home/Controllers/UserConsoleController.php +++ b/app/Http/Home/Controllers/UserConsoleController.php @@ -8,11 +8,15 @@ use App\Services\Logic\User\Console\AccountInfo as AccountInfoService; use App\Services\Logic\User\Console\ConnectDelete as ConnectDeleteService; use App\Services\Logic\User\Console\ConnectList as ConnectListService; use App\Services\Logic\User\Console\ConsultList as ConsultListService; +use App\Services\Logic\User\Console\ContactInfo as ContactInfoService; +use App\Services\Logic\User\Console\ContactUpdate as ContactUpdateService; use App\Services\Logic\User\Console\CourseList as CourseListService; use App\Services\Logic\User\Console\FavoriteList as FavoriteListService; use App\Services\Logic\User\Console\FriendList as FriendListService; use App\Services\Logic\User\Console\GroupList as GroupListService; use App\Services\Logic\User\Console\OrderList as OrderListService; +use App\Services\Logic\User\Console\PointHistory as PointHistoryService; +use App\Services\Logic\User\Console\PointRedeemList as PointRedeemListService; use App\Services\Logic\User\Console\ProfileInfo as ProfileInfoService; use App\Services\Logic\User\Console\ProfileUpdate as ProfileUpdateService; use App\Services\Logic\User\Console\RefundList as RefundListService; @@ -67,6 +71,19 @@ class UserConsoleController extends Controller $this->view->setVar('user', $user); } + /** + * @Get("/contact", name="home.uc.contact") + */ + public function contactAction() + { + $service = new ContactInfoService(); + + $contact = $service->handle(); + + $this->view->pick('user/console/contact'); + $this->view->setVar('contact', $contact); + } + /** * @Get("/account", name="home.uc.account") */ @@ -182,6 +199,32 @@ class UserConsoleController extends Controller $this->view->setVar('pager', $pager); } + /** + * @Get("/point/history", name="home.uc.point_history") + */ + public function pointHistoryAction() + { + $service = new PointHistoryService(); + + $pager = $service->handle(); + + $this->view->pick('user/console/point_history'); + $this->view->setVar('pager', $pager); + } + + /** + * @Get("/point/redeems", name="home.uc.point_redeems") + */ + public function pointRedeemsAction() + { + $service = new PointRedeemListService(); + + $pager = $service->handle(); + + $this->view->pick('user/console/point_redeems'); + $this->view->setVar('pager', $pager); + } + /** * @Get("/friends", name="home.uc.friends") */ @@ -249,6 +292,20 @@ class UserConsoleController extends Controller return $this->jsonSuccess($content); } + /** + * @Post("/contact/update", name="home.uc.update_contact") + */ + public function updateContactAction() + { + $service = new ContactUpdateService(); + + $service->handle(); + + $content = ['msg' => '更新收货信息成功']; + + return $this->jsonSuccess($content); + } + /** * @Post("/connect/{id:[0-9]+}/delete", name="home.uc.unconnect") */ diff --git a/app/Http/Home/Services/Account.php b/app/Http/Home/Services/Account.php index 7f7fb06f..da22f703 100644 --- a/app/Http/Home/Services/Account.php +++ b/app/Http/Home/Services/Account.php @@ -2,11 +2,9 @@ namespace App\Http\Home\Services; -use App\Models\User as UserModel; use App\Repos\User as UserRepo; use App\Services\Auth\Home as AuthService; use App\Services\Logic\Account\Register as RegisterService; -use App\Services\Logic\Notice\AccountLogin as AccountLoginNoticeService; use App\Validators\Account as AccountValidator; use App\Validators\Captcha as CaptchaValidator; @@ -35,6 +33,8 @@ class Account extends Service $this->auth->saveAuthInfo($user); + $this->eventsManager->fire('Account:afterRegister', $this, $user); + return $user; } @@ -50,9 +50,9 @@ class Account extends Service $validator->checkCode($post['ticket'], $post['rand']); - $this->handleLoginNotice($user); - $this->auth->saveAuthInfo($user); + + $this->eventsManager->fire('Account:afterLogin', $this, $user); } public function loginByVerify() @@ -63,21 +63,18 @@ class Account extends Service $user = $validator->checkVerifyLogin($post['account'], $post['verify_code']); - $this->handleLoginNotice($user); - $this->auth->saveAuthInfo($user); + + $this->eventsManager->fire('Account:afterLogin', $this, $user); } public function logout() { + $user = $this->getLoginUser(); + $this->auth->clearAuthInfo(); - } - protected function handleLoginNotice(UserModel $user) - { - $service = new AccountLoginNoticeService(); - - $service->createTask($user); + $this->eventsManager->fire('Account:afterLogout', $this, $user); } } diff --git a/app/Http/Home/Services/ImMessageTrait.php b/app/Http/Home/Services/ImMessageTrait.php index c0d99dbe..5a4842bb 100644 --- a/app/Http/Home/Services/ImMessageTrait.php +++ b/app/Http/Home/Services/ImMessageTrait.php @@ -98,6 +98,8 @@ Trait ImMessageTrait Gateway::$registerAddress = $this->getRegisterAddress(); + $imMessage = new ImMessageModel(); + if ($to['type'] == 'friend') { $validator = new ImFriendUserValidator(); @@ -106,9 +108,9 @@ Trait ImMessageTrait $online = Gateway::isUidOnline($to['id']); - $messageModel = new ImMessageModel(); + $imMessage = new ImMessageModel(); - $messageModel->create([ + $imMessage->create([ 'sender_id' => $from['id'], 'receiver_id' => $to['id'], 'receiver_type' => ImMessageModel::TYPE_FRIEND, @@ -136,9 +138,9 @@ Trait ImMessageTrait $relation = $validator->checkGroupUser($group->id, $user->id); - $messageModel = new ImMessageModel(); + $imMessage = new ImMessageModel(); - $messageModel->create([ + $imMessage->create([ 'sender_id' => $from['id'], 'receiver_id' => $to['id'], 'receiver_type' => ImMessageModel::TYPE_GROUP, @@ -162,6 +164,8 @@ Trait ImMessageTrait Gateway::sendToGroup($groupName, $content, $excludeClientId); } + + $this->eventsManager->fire('ImMessage:afterCreate', $this, $imMessage); } public function sendCsMessage($from, $to) diff --git a/app/Http/Home/Views/chapter/read.volt b/app/Http/Home/Views/chapter/read.volt index b40eebb8..ee858df5 100644 --- a/app/Http/Home/Views/chapter/read.volt +++ b/app/Http/Home/Views/chapter/read.volt @@ -18,7 +18,9 @@ {{ chapter.user_count }} - + {% if course.market_price > 0 %} + + {% endif %} {% if chapter.resource_count > 0 and chapter.me.owned == 1 %} {% endif %} diff --git a/app/Http/Home/Views/chapter/vod.volt b/app/Http/Home/Views/chapter/vod.volt index ae448a92..4e10cb46 100644 --- a/app/Http/Home/Views/chapter/vod.volt +++ b/app/Http/Home/Views/chapter/vod.volt @@ -19,7 +19,9 @@
+ +{% endblock %} \ No newline at end of file diff --git a/app/Http/Home/Views/user/console/point_redeems.volt b/app/Http/Home/Views/user/console/point_redeems.volt new file mode 100644 index 00000000..bb7c3a41 --- /dev/null +++ b/app/Http/Home/Views/user/console/point_redeems.volt @@ -0,0 +1,48 @@ +{% extends 'templates/main.volt' %} + +{% block content %} + + {{ partial('macros/point') }} + +
+
{{ partial('user/console/menu') }}
+
+
+
+ 兑换记录 +
+ {% if pager.total_pages > 0 %} + + + + + + + + + + + + + + + + + {% for item in pager.items %} + {% set gift_url = url({'for':'home.point_gift.show','id':item.gift.id}) %} + + + + + + + {% endfor %} + +
物品名称消耗积分兑换状态兑换时间
{{ item.gift.name }} {{ gift_type_info(item.gift.type) }}{{ item.gift.point }}{{ redeem_status_info(item.status) }}{{ date('Y-m-d H:i',item.create_time) }}
+ {{ partial('partials/pager') }} + {% endif %} +
+
+
+ +{% endblock %} \ No newline at end of file diff --git a/app/Http/Home/Views/user/console/refunds.volt b/app/Http/Home/Views/user/console/refunds.volt index 78c3be06..429477da 100644 --- a/app/Http/Home/Views/user/console/refunds.volt +++ b/app/Http/Home/Views/user/console/refunds.volt @@ -10,36 +10,38 @@
{{ partial('user/console/menu') }}
-
- 我的退款 - {% for key,value in status_types %} - {% set class = (status == key) ? 'layui-btn layui-btn-xs' : 'none' %} - {% set url = (key == 'all') ? url({'for':'home.uc.refunds'}) : url({'for':'home.uc.refunds'},{'status':key}) %} - {{ value }} - {% endfor %} -
- {% if pager.total_pages > 0 %} -
- {% for item in pager.items %} - {% set refund_info_url = url({'for':'home.refund.info'},{'sn':item.sn}) %} -
-
- 编号:{{ item.sn }} - 时间:{{ date('Y-m-d H:i:s',item.create_time) }} -
-
-
{{ item.subject }}
-
{{ '¥%0.2f'|format(item.amount) }}
-
{{ refund_status(item.status) }}
-
- -
-
-
+
+
+ 我的退款 + {% for key,value in status_types %} + {% set class = (status == key) ? 'layui-btn layui-btn-xs' : 'none' %} + {% set url = (key == 'all') ? url({'for':'home.uc.refunds'}) : url({'for':'home.uc.refunds'},{'status':key}) %} + {{ value }} {% endfor %}
- {{ partial('partials/pager') }} - {% endif %} + {% if pager.total_pages > 0 %} +
+ {% for item in pager.items %} + {% set refund_info_url = url({'for':'home.refund.info'},{'sn':item.sn}) %} +
+
+ 编号:{{ item.sn }} + 时间:{{ date('Y-m-d H:i:s',item.create_time) }} +
+
+
{{ item.subject }}
+
{{ '¥%0.2f'|format(item.amount) }}
+
{{ refund_status(item.status) }}
+
+ +
+
+
+ {% endfor %} +
+ {{ partial('partials/pager') }} + {% endif %} +
diff --git a/app/Library/AppInfo.php b/app/Library/AppInfo.php index 8283f49c..cfce4822 100644 --- a/app/Library/AppInfo.php +++ b/app/Library/AppInfo.php @@ -11,11 +11,13 @@ class AppInfo protected $link = 'https://koogua.com'; - protected $version = '1.2.5'; + protected $version = '1.2.6'; public function __get($name) { - return $this->{$name} ?? null; + if (isset($this->{$name})) { + return $this->{$name}; + } } } \ No newline at end of file diff --git a/app/Library/Cache/Backend/Redis.php b/app/Library/Cache/Backend/Redis.php index 57422183..fba3a91a 100644 --- a/app/Library/Cache/Backend/Redis.php +++ b/app/Library/Cache/Backend/Redis.php @@ -186,6 +186,23 @@ class Redis extends \Phalcon\Cache\Backend\Redis return (bool)$redis->exists($lastKey); } + /** + * @param string $keyName + * @return int|bool + */ + public function ttl($keyName = null) + { + $redis = $this->getRedis(); + + if ($keyName === null) { + $lastKey = $this->_lastKey; + } else { + $lastKey = $this->getKeyName($keyName); + } + + return $redis->ttl($lastKey); + } + /** * {@inheritdoc} * diff --git a/app/Library/Utils/Lock.php b/app/Library/Utils/Lock.php index f3fb6be4..be5c7cca 100644 --- a/app/Library/Utils/Lock.php +++ b/app/Library/Utils/Lock.php @@ -16,7 +16,7 @@ class Lock */ public static function addLock($itemId, $expire = 600) { - if (!$itemId || $expire <= 0) { + if (empty($itemId) || $expire <= 0) { return false; } @@ -43,7 +43,7 @@ class Lock */ public static function releaseLock($itemId, $lockId) { - if (!$itemId || !$lockId) { + if (empty($itemId) || empty($lockId)) { return false; } @@ -73,7 +73,7 @@ class Lock public static function getLockKey($itemId) { - return sprintf('kg_lock:%s', $itemId); + return sprintf('_LOCK_:%s', $itemId); } } \ No newline at end of file diff --git a/app/Listeners/Account.php b/app/Listeners/Account.php new file mode 100644 index 00000000..c7e710a2 --- /dev/null +++ b/app/Listeners/Account.php @@ -0,0 +1,42 @@ +handleRegisterPoint($user); + } + + public function afterLogin(PhEvent $event, $source, UserModel $user) + { + $this->handleLoginNotice($user); + } + + public function afterLogout(PhEvent $event, $source, UserModel $user) + { + + } + + protected function handleRegisterPoint(UserModel $user) + { + $service = new PointHistoryService(); + + $service->handleAccountRegister($user); + } + + protected function handleLoginNotice(UserModel $user) + { + $service = new AccountLoginNoticeService(); + + $service->createTask($user); + } + +} \ No newline at end of file diff --git a/app/Listeners/ImMessage.php b/app/Listeners/ImMessage.php new file mode 100644 index 00000000..f5196b8f --- /dev/null +++ b/app/Listeners/ImMessage.php @@ -0,0 +1,40 @@ +handleDiscussPoint($message); + } + + protected function handleDiscussPoint(ImMessageModel $message) + { + $todayDate = date('Ymd'); + + $keyName = sprintf('im_discuss:%s:%s', $message->sender_id, $todayDate); + + $cache = $this->getCache(); + + $content = $cache->get($keyName); + + if ($content) return; + + $service = new PointHistoryService(); + + $service->handleImDiscuss($message); + + $tomorrow = strtotime($todayDate) + 86400; + + $lifetime = $tomorrow - time(); + + $cache->save($keyName, 1, $lifetime); + } + +} \ No newline at end of file diff --git a/app/Listeners/Listener.php b/app/Listeners/Listener.php index 9e066d1a..39e5c5c1 100644 --- a/app/Listeners/Listener.php +++ b/app/Listeners/Listener.php @@ -8,6 +8,28 @@ use Phalcon\Mvc\User\Plugin as UserPlugin; class Listener extends UserPlugin { + public function getConfig() + { + $appService = new AppService(); + + return $appService->getConfig(); + } + + + public function getCache() + { + $appService = new AppService(); + + return $appService->getCache(); + } + + public function getRedis() + { + $appService = new AppService(); + + return $appService->getRedis(); + } + public function getLogger($channel = null) { $appService = new AppService(); diff --git a/app/Listeners/Review.php b/app/Listeners/Review.php new file mode 100644 index 00000000..e88ccfc7 --- /dev/null +++ b/app/Listeners/Review.php @@ -0,0 +1,24 @@ +handleReviewPoint($review); + } + + protected function handleReviewPoint(ReviewModel $review) + { + $service = new PointHistoryService(); + + $service->handleCourseReview($review); + } + +} \ No newline at end of file diff --git a/app/Listeners/Site.php b/app/Listeners/Site.php new file mode 100644 index 00000000..1841332a --- /dev/null +++ b/app/Listeners/Site.php @@ -0,0 +1,118 @@ +id > 0) { + + $this->handleOnline($user); + + $this->handleVisitPoint($user); + + /** + * 更新会重置afterFetch,重新执行 + */ + $user->afterFetch(); + } + } + + protected function handleOnline(UserModel $user) + { + $now = time(); + + if ($now - $user->active_time < 900) { + return; + } + + $itemId = "user_online:{$user->id}"; + + $clientType = $this->getClientType(); + $clientIp = $this->getClientIp(); + + $lockId = LockUtil::addLock($itemId); + + if ($lockId === false) return; + + $user->active_time = $now; + + $user->update(); + + $onlineRepo = new OnlineRepo(); + + $records = $onlineRepo->findByUserDate($user->id, date('Ymd')); + + if ($records->count() > 0) { + $online = null; + foreach ($records as $record) { + $case1 = $record->client_type == $clientType; + $case2 = $record->client_ip == $clientIp; + if ($case1 && $case2) { + $online = $record; + break; + } + } + if ($online) { + $online->active_time = $now; + $online->update(); + } else { + $this->createOnline($user->id, $clientType, $clientIp); + } + } else { + $this->createOnline($user->id, $clientType, $clientIp); + } + + LockUtil::releaseLock($itemId, $lockId); + } + + protected function createOnline($userId, $clientType, $clientIp) + { + $online = new OnlineModel(); + + $online->user_id = $userId; + $online->client_type = $clientType; + $online->client_ip = $clientIp; + $online->active_time = time(); + + $online->create(); + + return $online; + } + + protected function handleVisitPoint(UserModel $user) + { + $todayDate = date('Ymd'); + + $keyName = sprintf('site_visit:%s:%s', $user->id, $todayDate); + + $cache = $this->getCache(); + + $content = $cache->get($keyName); + + if ($content) return; + + $service = new PointHistoryService(); + + $service->handleSiteVisit($user); + + $tomorrow = strtotime($todayDate) + 86400; + + $lifetime = $tomorrow - time(); + + $cache->save($keyName, 1, $lifetime); + } + +} \ No newline at end of file diff --git a/app/Listeners/Pay.php b/app/Listeners/Trade.php similarity index 87% rename from app/Listeners/Pay.php rename to app/Listeners/Trade.php index ac5b7d88..70207596 100644 --- a/app/Listeners/Pay.php +++ b/app/Listeners/Trade.php @@ -9,7 +9,7 @@ use App\Repos\Order as OrderRepo; use Phalcon\Events\Event as PhEvent; use Phalcon\Logger\Adapter\File as FileLogger; -class Pay extends Listener +class Trade extends Listener { /** @@ -73,12 +73,6 @@ class Pay extends Listener 'message' => $e->getMessage(), ])); - $this->logger->debug('After Pay Event Info ' . kg_json_encode([ - 'event' => $event->getType(), - 'source' => get_class($source), - 'data' => kg_json_encode($trade), - ])); - throw new \RuntimeException('sys.trans_rollback'); } } diff --git a/app/Listeners/User.php b/app/Listeners/User.php deleted file mode 100644 index 16ae1453..00000000 --- a/app/Listeners/User.php +++ /dev/null @@ -1,77 +0,0 @@ -id}"; - - $lockId = LockUtil::addLock($itemId); - - $now = time(); - $clientType = $this->getClientType(); - $clientIp = $this->getClientIp(); - - if ($now - $user->active_time > 600) { - - $user->active_time = $now; - - $user->update(); - - $onlineRepo = new OnlineRepo(); - - $records = $onlineRepo->findByUserDate($user->id, date('Y-m-d')); - - if ($records->count() > 0) { - - $online = null; - - foreach ($records as $record) { - if ($record->client_type == $clientType && $record->client_ip == $clientIp) { - $online = $record; - break; - } - } - - if ($online) { - $online->active_time = $now; - $online->update(); - } else { - $this->createOnline($user->id, $clientType, $clientIp); - } - - } else { - $this->createOnline($user->id, $clientType, $clientIp); - } - } - - LockUtil::releaseLock($itemId, $lockId); - } - - protected function createOnline($userId, $clientType, $clientIp) - { - $online = new OnlineModel(); - - $online->user_id = $userId; - $online->client_type = $clientType; - $online->client_ip = $clientIp; - $online->active_time = time(); - - $online->create(); - - return $online; - } - -} \ No newline at end of file diff --git a/app/Listeners/UserDailyCounter.php b/app/Listeners/UserDailyCounter.php index 88cee653..10d66f14 100644 --- a/app/Listeners/UserDailyCounter.php +++ b/app/Listeners/UserDailyCounter.php @@ -4,7 +4,7 @@ namespace App\Listeners; use App\Caches\UserDailyCounter as CacheUserDailyCounter; use App\Models\User as UserModel; -use Phalcon\Events\Event; +use Phalcon\Events\Event as PhEvent; class UserDailyCounter extends Listener { @@ -16,42 +16,42 @@ class UserDailyCounter extends Listener $this->counter = new CacheUserDailyCounter(); } - public function incrFavoriteCount(Event $event, $source, UserModel $user) + public function incrFavoriteCount(PhEvent $event, $source, UserModel $user) { $this->counter->hIncrBy($user->id, 'favorite_count'); } - public function incrDanmuCount(Event $event, $source, UserModel $user) + public function incrDanmuCount(PhEvent $event, $source, UserModel $user) { $this->counter->hIncrBy($user->id, 'danmu_count'); } - public function incrConsultCount(Event $event, $source, UserModel $user) + public function incrConsultCount(PhEvent $event, $source, UserModel $user) { $this->counter->hIncrBy($user->id, 'consult_count'); } - public function incrReviewCount(Event $event, $source, UserModel $user) + public function incrReviewCount(PhEvent $event, $source, UserModel $user) { $this->counter->hIncrBy($user->id, 'review_count'); } - public function incrOrderCount(Event $event, $source, UserModel $user) + public function incrOrderCount(PhEvent $event, $source, UserModel $user) { $this->counter->hIncrBy($user->id, 'order_count'); } - public function incrConsultLikeCount(Event $event, $source, UserModel $user) + public function incrConsultLikeCount(PhEvent $event, $source, UserModel $user) { $this->counter->hIncrBy($user->id, 'consult_like_count'); } - public function incrChapterLikeCount(Event $event, $source, UserModel $user) + public function incrChapterLikeCount(PhEvent $event, $source, UserModel $user) { $this->counter->hIncrBy($user->id, 'chapter_like_count'); } - public function incrReviewLikeCount(Event $event, $source, UserModel $user) + public function incrReviewLikeCount(PhEvent $event, $source, UserModel $user) { $this->counter->hIncrBy($user->id, 'review_like_count'); } diff --git a/app/Models/Account.php b/app/Models/Account.php index 74664d38..553e82b9 100644 --- a/app/Models/Account.php +++ b/app/Models/Account.php @@ -12,56 +12,56 @@ class Account extends Model * * @var int */ - public $id; + public $id = 0; /** * 邮箱 * * @var string */ - public $email; + public $email = ''; /** * 手机 * * @var string */ - public $phone; + public $phone = ''; /** * 密码 * * @var string */ - public $password; + public $password = ''; /** * 密盐 * * @var string */ - public $salt; + public $salt = ''; /** * 删除标识 * * @var int */ - public $deleted; + public $deleted = 0; /** * 创建时间 * * @var int */ - public $create_time; + public $create_time = 0; /** * 更新时间 * * @var int */ - public $update_time; + public $update_time = 0; public function getSource(): string { @@ -90,4 +90,4 @@ class Account extends Model $this->update_time = time(); } -} +} \ No newline at end of file diff --git a/app/Models/Area.php b/app/Models/Area.php index 9eeb2d70..9f9efc76 100644 --- a/app/Models/Area.php +++ b/app/Models/Area.php @@ -17,32 +17,32 @@ class Area extends Model * * @var int */ - public $id; + public $id = 0; /** * 类型 * * @var int */ - public $type; + public $type = 0; /** * 编码 * * @var string */ - public $code; + public $code = ''; /** * 名称 * * @var string */ - public $name; + public $name = ''; public function getSource(): string { return 'kg_area'; } -} +} \ No newline at end of file diff --git a/app/Models/Audit.php b/app/Models/Audit.php index a9b4cb36..11389810 100644 --- a/app/Models/Audit.php +++ b/app/Models/Audit.php @@ -10,49 +10,49 @@ class Audit extends Model * * @var int */ - public $id; + public $id = 0; /** * 用户编号 * * @var int */ - public $user_id; + public $user_id = 0; /** * 用户名称 * - * @var int + * @var string */ - public $user_name; + public $user_name = ''; /** * 用户IP * - * @var int + * @var string */ - public $user_ip; + public $user_ip = ''; /** * 请求路由 * * @var string */ - public $req_route; + public $req_route = ''; /** * 请求路径 * * @var string */ - public $req_path; + public $req_path = ''; /** * 请求参数 * - * @var string + * @var array|string */ - public $req_data; + public $req_data = ''; /** * 创建时间 @@ -68,8 +68,6 @@ class Audit extends Model public function beforeCreate() { - $this->create_time = time(); - if (is_array($this->req_data) && !empty($this->req_data)) { foreach ($this->req_data as $key => $value) { if (!is_scalar($value)) { @@ -83,6 +81,8 @@ class Audit extends Model } else { $this->req_data = ''; } + + $this->create_time = time(); } -} +} \ No newline at end of file diff --git a/app/Models/Category.php b/app/Models/Category.php index b0052b16..c172ae83 100644 --- a/app/Models/Category.php +++ b/app/Models/Category.php @@ -19,84 +19,84 @@ class Category extends Model * * @var int */ - public $id; + public $id = 0; /** * 上级编号 * * @var int */ - public $parent_id; + public $parent_id = 0; /** * 层级 * * @var int */ - public $level; + public $level = 0; /** * 类型 * * @var int */ - public $type; + public $type = 0; /** * 名称 * * @var string */ - public $name; + public $name = ''; /** * 路径 * * @var string */ - public $path; + public $path = ''; /** * 优先级 * * @var int */ - public $priority; + public $priority = 0; /** * 发布标识 * * @var int */ - public $published; + public $published = 0; /** * 删除标识 * * @var int */ - public $deleted; + public $deleted = 0; /** * 节点数 * * @var int */ - public $child_count; + public $child_count = 0; /** * 创建时间 * * @var int */ - public $create_time; + public $create_time = 0; /** * 更新时间 * * @var int */ - public $update_time; + public $update_time = 0; public function getSource(): string { @@ -144,4 +144,4 @@ class Category extends Model ]; } -} +} \ No newline at end of file diff --git a/app/Models/Chapter.php b/app/Models/Chapter.php index 01611874..0c39954e 100644 --- a/app/Models/Chapter.php +++ b/app/Models/Chapter.php @@ -60,126 +60,126 @@ class Chapter extends Model * * @var int */ - public $id; + public $id = 0; /** * 父级编号 * * @var int */ - public $parent_id; + public $parent_id = 0; /** * 课程编号 * * @var int */ - public $course_id; + public $course_id = 0; /** * 标题 * * @var string */ - public $title; + public $title = ''; /** * 摘要 * * @var string */ - public $summary; + public $summary = ''; /** * 优先级 * * @var int */ - public $priority; + public $priority = 0; /** * 免费标识 * * @var int */ - public $free; + public $free = 0; /** * 模式类型 * * @var int */ - public $model; + public $model = 0; /** * 扩展属性 * * @var string|array */ - public $attrs; + public $attrs = ''; /** * 发布标识 * * @var int */ - public $published; + public $published = 0; /** * 删除标识 * * @var int */ - public $deleted; + public $deleted = 0; /** * 资源数 * * @var int */ - public $resource_count; + public $resource_count = 0; /** * 课时数 * * @var int */ - public $lesson_count; + public $lesson_count = 0; /** * 学员数 * * @var int */ - public $user_count; + public $user_count = 0; /** * 咨询数 * * @var int */ - public $consult_count; + public $consult_count = 0; /** * 点赞数 * * @var int */ - public $like_count; + public $like_count = 0; /** * 创建时间 * * @var int */ - public $create_time; + public $create_time = 0; /** * 更新时间 * * @var int */ - public $update_time; + public $update_time = 0; public function getSource(): string { @@ -205,22 +205,18 @@ class Chapter extends Model $this->model = $course->model; if ($this->parent_id > 0) { - - $attrs = []; - - switch ($course->model) { - case Course::MODEL_VOD: - $attrs = $this->_vod_attrs; - break; - case Course::MODEL_LIVE: - $attrs = $this->_live_attrs; - break; - case Course::MODEL_READ: - $attrs = $this->_read_attrs; - break; + if (empty($this->attrs)) { + if ($this->model == Course::MODEL_VOD) { + $this->attrs = $this->_vod_attrs; + } elseif ($this->model == Course::MODEL_LIVE) { + $this->attrs = $this->_live_attrs; + } elseif ($this->model == Course::MODEL_READ) { + $this->attrs = $this->_read_attrs; + } + } + if (is_array($this->attrs) && !empty($this->attrs)) { + $this->attrs = kg_json_encode($this->attrs); } - - $this->attrs = kg_json_encode($attrs); } $this->create_time = time(); @@ -253,4 +249,4 @@ class Chapter extends Model } } -} +} \ No newline at end of file diff --git a/app/Models/ChapterLike.php b/app/Models/ChapterLike.php index 7ee6d671..0421eee1 100644 --- a/app/Models/ChapterLike.php +++ b/app/Models/ChapterLike.php @@ -12,42 +12,42 @@ class ChapterLike extends Model * * @var int */ - public $id; + public $id = 0; /** * 章节编号 * * @var int */ - public $chapter_id; + public $chapter_id = 0; /** * 用户编号 * * @var int */ - public $user_id; + public $user_id = 0; /** * 删除标识 * * @var int */ - public $deleted; + public $deleted = 0; /** * 创建时间 * * @var int */ - public $create_time; + public $create_time = 0; /** * 更新时间 * * @var int */ - public $update_time; + public $update_time = 0; public function getSource(): string { @@ -76,4 +76,4 @@ class ChapterLike extends Model $this->update_time = time(); } -} +} \ No newline at end of file diff --git a/app/Models/ChapterLive.php b/app/Models/ChapterLive.php index b31a2203..41c94474 100644 --- a/app/Models/ChapterLive.php +++ b/app/Models/ChapterLive.php @@ -17,63 +17,63 @@ class ChapterLive extends Model * * @var int */ - public $id; + public $id = 0; /** * 课程编号 * * @var int */ - public $course_id; + public $course_id = 0; /** * 章节编号 * * @var int */ - public $chapter_id; + public $chapter_id = 0; /** * 开始时间 * * @var int */ - public $start_time; + public $start_time = 0; /** * 结束时间 * * @var int */ - public $end_time; + public $end_time = 0; /** * 用户限额 * * @var int */ - public $user_limit; + public $user_limit = 0; /** * 直播状态 * * @var int */ - public $status; + public $status = 0; /** * 创建时间 * * @var int */ - public $create_time; + public $create_time = 0; /** * 更新时间 * * @var int */ - public $update_time; + public $update_time = 0; public function getSource(): string { @@ -102,4 +102,4 @@ class ChapterLive extends Model return str_replace('chapter_', '', $streamName); } -} +} \ No newline at end of file diff --git a/app/Models/ChapterRead.php b/app/Models/ChapterRead.php index 2f20ee40..3dd8ffa2 100644 --- a/app/Models/ChapterRead.php +++ b/app/Models/ChapterRead.php @@ -10,42 +10,42 @@ class ChapterRead extends Model * * @var int */ - public $id; + public $id = 0; /** * 课程编号 * * @var int */ - public $course_id; + public $course_id = 0; /** * 章节编号 * * @var int */ - public $chapter_id; + public $chapter_id = 0; /** * 内容 * * @var string */ - public $content; + public $content = ''; /** * 创建时间 * * @var int */ - public $create_time; + public $create_time = 0; /** * 更新时间 * * @var int */ - public $update_time; + public $update_time = 0; public function getSource(): string { @@ -55,13 +55,6 @@ class ChapterRead extends Model public function beforeCreate() { $this->create_time = time(); - - /** - * text类型不能自动填充默认值 - */ - if (is_null($this->content)) { - $this->content = ''; - } } public function beforeUpdate() @@ -69,4 +62,4 @@ class ChapterRead extends Model $this->update_time = time(); } -} +} \ No newline at end of file diff --git a/app/Models/ChapterUser.php b/app/Models/ChapterUser.php index 911c1d5c..b3afebe0 100644 --- a/app/Models/ChapterUser.php +++ b/app/Models/ChapterUser.php @@ -12,84 +12,84 @@ class ChapterUser extends Model * * @var int */ - public $id; + public $id = 0; /** * 课程编号 * * @var int */ - public $course_id; + public $course_id = 0; /** * 章节编号 * * @var int */ - public $chapter_id; + public $chapter_id = 0; /** * 用户编号 * * @var int */ - public $user_id; + public $user_id = 0; /** * 计划编号 * * @var int */ - public $plan_id; + public $plan_id = 0; /** - * 学习时长 + * 学习时长(秒) * * @var int */ - public $duration; + public $duration = 0; /** - * 播放位置 + * 播放位置(秒) * * @var int */ - public $position; + public $position = 0; /** - * 学习进度 + * 学习进度(%) * * @var int */ - public $progress; + public $progress = 0; /** * 消费标识 * * @var int */ - public $consumed; + public $consumed = 0; /** * 删除标识 * * @var int */ - public $deleted; + public $deleted = 0; /** * 创建时间 * * @var int */ - public $create_time; + public $create_time = 0; /** * 更新时间 * * @var int */ - public $update_time; + public $update_time = 0; public function getSource(): string { @@ -118,4 +118,4 @@ class ChapterUser extends Model $this->update_time = time(); } -} +} \ No newline at end of file diff --git a/app/Models/ChapterVod.php b/app/Models/ChapterVod.php index f06ad558..52b21b8a 100644 --- a/app/Models/ChapterVod.php +++ b/app/Models/ChapterVod.php @@ -12,49 +12,49 @@ class ChapterVod extends Model * * @var int */ - public $id; + public $id = 0; /** * 课程编号 * * @var int */ - public $course_id; + public $course_id = 0; /** * 章节编号 * * @var int */ - public $chapter_id; + public $chapter_id = 0; /** * 文件编号 * * @var string */ - public $file_id; + public $file_id = ''; /** * 文件转码 * - * @var string + * @var array|string */ - public $file_transcode; + public $file_transcode = ''; /** * 创建时间 * * @var int */ - public $create_time; + public $create_time = 0; /** * 更新时间 * * @var int */ - public $update_time; + public $update_time = 0; public function getSource(): string { @@ -104,4 +104,4 @@ class ChapterVod extends Model return $transcode; } -} +} \ No newline at end of file diff --git a/app/Models/Connect.php b/app/Models/Connect.php index 4266e805..c5aa5cbd 100644 --- a/app/Models/Connect.php +++ b/app/Models/Connect.php @@ -16,63 +16,63 @@ class Connect extends Model * * @var int */ - public $id; + public $id = 0; /** * 用户编号 * * @var int */ - public $user_id; + public $user_id = 0; /** * 开放ID * * @var string */ - public $open_id; + public $open_id = ''; /** * 开放名称 * * @var string */ - public $open_name; + public $open_name = ''; /** * 开放头像 * * @var string */ - public $open_avatar; + public $open_avatar = ''; /** * 提供商 * * @var int */ - public $provider; + public $provider = 0; /** * 删除标识 * * @var int */ - public $deleted; + public $deleted = 0; /** * 创建时间 * * @var int */ - public $create_time; + public $create_time = 0; /** * 更新时间 * * @var int */ - public $update_time; + public $update_time = 0; public function getSource(): string { @@ -101,4 +101,4 @@ class Connect extends Model $this->update_time = time(); } -} +} \ No newline at end of file diff --git a/app/Models/Consult.php b/app/Models/Consult.php index 31ea904d..ee24fea3 100644 --- a/app/Models/Consult.php +++ b/app/Models/Consult.php @@ -19,112 +19,112 @@ class Consult extends Model * * @var int */ - public $id; + public $id = 0; /** * 课程编号 * * @var int */ - public $course_id; + public $course_id = 0; /** * 章节编号 * * @var int */ - public $chapter_id; + public $chapter_id = 0; /** * 提主编号 * * @var int */ - public $owner_id; + public $owner_id = 0; /** * 答主编号 * * @var int */ - public $replier_id; + public $replier_id = 0; /** * 提问 * * @var string */ - public $question; + public $question = ''; /** * 回答 * * @var string */ - public $answer; + public $answer = ''; /** * 评分 * * @var int */ - public $rating; + public $rating = 0; /** * 优先级 * * @var int */ - public $priority; + public $priority = 0; /** * 私密标识 * * @var int */ - public $private; + public $private = 0; /** * 发布标识 * * @var int */ - public $published; + public $published = 0; /** * 删除标识 * * @var int */ - public $deleted; + public $deleted = 0; /** * 赞成数 * * @var int */ - public $like_count; + public $like_count = 0; /** * 回复时间 * * @var int */ - public $reply_time; + public $reply_time = 0; /** * 创建时间 * * @var int */ - public $create_time; + public $create_time = 0; /** * 更新时间 * * @var int */ - public $update_time; + public $update_time = 0; public function getSource(): string { @@ -157,4 +157,4 @@ class Consult extends Model $this->update_time = time(); } -} +} \ No newline at end of file diff --git a/app/Models/ConsultLike.php b/app/Models/ConsultLike.php index efa4d3d5..b88af738 100644 --- a/app/Models/ConsultLike.php +++ b/app/Models/ConsultLike.php @@ -12,42 +12,42 @@ class ConsultLike extends Model * * @var int */ - public $id; + public $id = 0; /** * 咨询编号 * * @var int */ - public $consult_id; + public $consult_id = 0; /** * 用户编号 * * @var int */ - public $user_id; + public $user_id = 0; /** * 删除标识 * * @var int */ - public $deleted; + public $deleted = 0; /** * 创建时间 * * @var int */ - public $create_time; + public $create_time = 0; /** * 更新时间 * * @var int */ - public $update_time; + public $update_time = 0; public function getSource(): string { @@ -76,4 +76,4 @@ class ConsultLike extends Model $this->update_time = time(); } -} +} \ No newline at end of file diff --git a/app/Models/Course.php b/app/Models/Course.php index f8420cc7..71285d02 100644 --- a/app/Models/Course.php +++ b/app/Models/Course.php @@ -52,56 +52,56 @@ class Course extends Model * * @var int */ - public $id; + public $id = 0; /** * 标题 * * @var string */ - public $title; + public $title = ''; /** * 封面 * * @var string */ - public $cover; + public $cover = ''; /** * 简介 * * @var string */ - public $summary; + public $summary = ''; /** * 关键字 * * @var string */ - public $keywords; + public $keywords = ''; /** * 详情 * * @var string */ - public $details; + public $details = ''; /** * 主分类编号 * * @var int */ - public $category_id; + public $category_id = 0; /** * 主教师编号 * * @var int */ - public $teacher_id; + public $teacher_id = 0; /** * 原始价格 @@ -115,147 +115,147 @@ class Course extends Model * * @var float */ - public $market_price; + public $market_price = 0.00; /** * 会员价格 * * @var float */ - public $vip_price; + public $vip_price = 0.00; /** * 学习期限(月) * * @var int */ - public $study_expiry; + public $study_expiry = 0; /** * 退款期限(天) * * @var int */ - public $refund_expiry; + public $refund_expiry = 0; /** * 用户评价 * * @var float */ - public $rating; + public $rating = 0.00; /** * 综合得分 * * @var float */ - public $score; + public $score = 0.00; /** * 模式类型 * * @var int */ - public $model; + public $model = 0; /** * 难度级别 * * @var int */ - public $level; + public $level = 0; /** * 扩展属性 * * @var string|array */ - public $attrs; + public $attrs = ''; /** * 推荐标识 * * @var int */ - public $featured; + public $featured = 0; /** * 发布标识 * * @var int */ - public $published; + public $published = 0; /** * 删除标识 * * @var int */ - public $deleted; + public $deleted = 0; /** * 资源数 * * @var int */ - public $resource_count; + public $resource_count = 0; /** * 学员数 * * @var int */ - public $user_count; + public $user_count = 0; /** * 课时数 * * @var int */ - public $lesson_count; + public $lesson_count = 0; /** * 套餐数 * * @var int */ - public $package_count; + public $package_count = 0; /** * 咨询数 * * @var int */ - public $consult_count; + public $consult_count = 0; /** * 评价数 * * @var int */ - public $review_count; + public $review_count = 0; /** * 收藏数 * * @var int */ - public $favorite_count; + public $favorite_count = 0; /** * 创建时间 * * @var int */ - public $create_time; + public $create_time = 0; /** * 更新时间 * * @var int */ - public $update_time; + public $update_time = 0; public function getSource(): string { @@ -278,18 +278,18 @@ class Course extends Model public function beforeCreate() { - $attrs = []; + if (empty($this->attrs)) { + if ($this->model == self::MODEL_VOD) { + $this->attrs = $this->_vod_attrs; + } elseif ($this->model == self::MODEL_LIVE) { + $this->attrs = $this->_live_attrs; + } elseif ($this->model == self::MODEL_READ) { + $this->attrs = $this->_read_attrs; + } + } - switch ($this->model) { - case Course::MODEL_VOD: - $attrs = $this->_vod_attrs; - break; - case Course::MODEL_LIVE: - $attrs = $this->_live_attrs; - break; - case Course::MODEL_READ: - $attrs = $this->_read_attrs; - break; + if (is_array($this->attrs) && !empty($this->attrs)) { + $this->attrs = kg_json_encode($this->attrs); } if (empty($this->cover)) { @@ -298,17 +298,6 @@ class Course extends Model $this->cover = self::getCoverPath($this->cover); } - /** - * text类型不会自动填充默认值 - */ - if (is_null($this->details)) { - $this->details = ''; - } - - if (!empty($attrs)) { - $this->attrs = kg_json_encode($attrs); - } - $this->create_time = time(); } @@ -427,4 +416,4 @@ class Course extends Model ]; } -} +} \ No newline at end of file diff --git a/app/Models/CourseCategory.php b/app/Models/CourseCategory.php index 32eec7c6..ca820542 100644 --- a/app/Models/CourseCategory.php +++ b/app/Models/CourseCategory.php @@ -10,28 +10,28 @@ class CourseCategory extends Model * * @var int */ - public $id; + public $id = 0; /** * 课程编号 * * @var int */ - public $course_id; + public $course_id = 0; /** * 分类编号 * * @var int */ - public $category_id; + public $category_id = 0; /** * 创建时间 * * @var int */ - public $create_time; + public $create_time = 0; public function getSource(): string { @@ -43,4 +43,4 @@ class CourseCategory extends Model $this->create_time = time(); } -} +} \ No newline at end of file diff --git a/app/Models/CourseFavorite.php b/app/Models/CourseFavorite.php index eda06128..8801f8f2 100644 --- a/app/Models/CourseFavorite.php +++ b/app/Models/CourseFavorite.php @@ -12,42 +12,42 @@ class CourseFavorite extends Model * * @var int */ - public $id; + public $id = 0; /** * 课程编号 * * @var int */ - public $course_id; + public $course_id = 0; /** * 用户编号 * * @var int */ - public $user_id; + public $user_id = 0; /** * 删除标识 * * @var int */ - public $deleted; + public $deleted = 0; /** * 创建时间 * * @var int */ - public $create_time; + public $create_time = 0; /** * 更新时间 * * @var int */ - public $update_time; + public $update_time = 0; public function getSource(): string { @@ -76,4 +76,4 @@ class CourseFavorite extends Model $this->update_time = time(); } -} +} \ No newline at end of file diff --git a/app/Models/CoursePackage.php b/app/Models/CoursePackage.php index 1ea23a98..1ae4f7d1 100644 --- a/app/Models/CoursePackage.php +++ b/app/Models/CoursePackage.php @@ -10,28 +10,28 @@ class CoursePackage extends Model * * @var int */ - public $id; + public $id = 0; /** * 课程编号 * * @var int */ - public $course_id; + public $course_id = 0; /** * 套餐编号 * * @var int */ - public $package_id; + public $package_id = 0; /** * 创建时间 * * @var int */ - public $create_time; + public $create_time = 0; public function getSource(): string { @@ -43,4 +43,4 @@ class CoursePackage extends Model $this->create_time = time(); } -} +} \ No newline at end of file diff --git a/app/Models/CourseRating.php b/app/Models/CourseRating.php index 170be4ef..a124f798 100644 --- a/app/Models/CourseRating.php +++ b/app/Models/CourseRating.php @@ -10,49 +10,49 @@ class CourseRating extends Model * * @var int */ - public $course_id; + public $course_id = 0; /** * 综合评分 * * @var float */ - public $rating; + public $rating = 0.00; /** * 维度1评分 * * @var float */ - public $rating1; + public $rating1 = 0.00; /** * 维度2评分 * * @var float */ - public $rating2; + public $rating2 = 0.00; /** * 维度3评分 * * @var float */ - public $rating3; + public $rating3 = 0.00; /** * 创建时间 * * @var int */ - public $create_time; + public $create_time = 0; /** * 更新时间 * * @var int */ - public $update_time; + public $update_time = 0; public function getSource(): string { @@ -69,4 +69,4 @@ class CourseRating extends Model $this->update_time = time(); } -} +} \ No newline at end of file diff --git a/app/Models/CourseRelated.php b/app/Models/CourseRelated.php index 4c593320..31c07801 100644 --- a/app/Models/CourseRelated.php +++ b/app/Models/CourseRelated.php @@ -10,28 +10,28 @@ class CourseRelated extends Model * * @var int */ - public $id; + public $id = 0; /** * 课程编号 * * @var int */ - public $course_id; + public $course_id = 0; /** * 相关编号 * * @var int */ - public $related_id; + public $related_id = 0; /** * 创建时间 * * @var int */ - public $create_time; + public $create_time = 0; public function getSource(): string { @@ -43,4 +43,4 @@ class CourseRelated extends Model $this->create_time = time(); } -} +} \ No newline at end of file diff --git a/app/Models/CourseTopic.php b/app/Models/CourseTopic.php index 083c1aef..3e3d04cc 100644 --- a/app/Models/CourseTopic.php +++ b/app/Models/CourseTopic.php @@ -10,28 +10,28 @@ class CourseTopic extends Model * * @var int */ - public $id; + public $id = 0; /** * 课程编号 * * @var int */ - public $course_id; + public $course_id = 0; /** * 话题编号 * * @var int */ - public $topic_id; + public $topic_id = 0; /** * 创建时间 * * @var int */ - public $create_time; + public $create_time = 0; public function getSource(): string { @@ -43,4 +43,4 @@ class CourseTopic extends Model $this->create_time = time(); } -} +} \ No newline at end of file diff --git a/app/Models/CourseUser.php b/app/Models/CourseUser.php index 09f316d4..f31c2995 100644 --- a/app/Models/CourseUser.php +++ b/app/Models/CourseUser.php @@ -20,97 +20,99 @@ class CourseUser extends Model const SOURCE_CHARGE = 2; // 付费 const SOURCE_VIP = 3; // 会员 const SOURCE_IMPORT = 4; // 导入 + const SOURCE_POINT_REDEEM = 5; // 积分兑换 + const SOURCE_LUCKY_REDEEM = 6; // 抽奖兑换 /** * 主键编号 * * @var int */ - public $id; + public $id = 0; /** * 课程编号 * * @var int */ - public $course_id; + public $course_id = 0; /** * 用户编号 * * @var int */ - public $user_id; + public $user_id = 0; /** * 计划编号 * * @var int */ - public $plan_id; + public $plan_id = 0; /** * 角色类型 * * @var int */ - public $role_type; + public $role_type = 0; /** * 来源类型 * * @var int */ - public $source_type; + public $source_type = 0; /** * 过期时间 * * @var int */ - public $expiry_time; + public $expiry_time = 0; /** - * 学习时长 + * 学习时长(秒) * * @var int */ - public $duration; + public $duration = 0; /** - * 学习进度 + * 学习进度(%) * * @var int */ - public $progress; + public $progress = 0; /** * 评价标识 * * @var int */ - public $reviewed; + public $reviewed = 0; /** * 删除标识 * * @var int */ - public $deleted; + public $deleted = 0; /** * 创建时间 * * @var int */ - public $create_time; + public $create_time = 0; /** * 更新时间 * * @var int */ - public $update_time; + public $update_time = 0; public function getSource(): string { @@ -156,7 +158,9 @@ class CourseUser extends Model self::SOURCE_CHARGE => '付费', self::SOURCE_VIP => '会员', self::SOURCE_IMPORT => '导入', + self::SOURCE_POINT_REDEEM => '积分兑换', + self::SOURCE_LUCKY_REDEEM => '抽奖兑换', ]; } -} +} \ No newline at end of file diff --git a/app/Models/Danmu.php b/app/Models/Danmu.php index 78c2e612..56196005 100644 --- a/app/Models/Danmu.php +++ b/app/Models/Danmu.php @@ -34,91 +34,91 @@ class Danmu extends Model * * @var int */ - public $id; + public $id = 0; /** * 课程编号 * * @var int */ - public $course_id; + public $course_id = 0; /** * 章节编号 * * @var int */ - public $chapter_id; + public $chapter_id = 0; /** * 用户编号 * * @var int */ - public $owner_id; + public $owner_id = 0; /** * 内容 * * @var string */ - public $text; + public $text = ''; /** * 颜色 * * @var string */ - public $color; + public $color = 'white'; /** * 字号 * * @var int */ - public $size; + public $size = 0; /** * 位置 * * @var int */ - public $position; + public $position = 0; /** * 时间轴 * * @var int */ - public $time; + public $time = 0; /** * 发布标识 * * @var int */ - public $published; + public $published = 1; /** * 删除标识 * * @var int */ - public $deleted; + public $deleted = 0; /** * 创建时间 * * @var int */ - public $create_time; + public $create_time = 0; /** * 更新时间 * * @var int */ - public $update_time; + public $update_time = 0; public function getSource(): string { @@ -199,4 +199,4 @@ class Danmu extends Model return $keys[$index]; } -} +} \ No newline at end of file diff --git a/app/Models/Help.php b/app/Models/Help.php index aab1153b..403cc349 100644 --- a/app/Models/Help.php +++ b/app/Models/Help.php @@ -13,63 +13,63 @@ class Help extends Model * * @var int */ - public $id; + public $id = 0; /** * 分类编号 * * @var int */ - public $category_id; + public $category_id = 0; /** * 标题 * * @var string */ - public $title; + public $title = ''; /** * 内容 * * @var string */ - public $content; + public $content = ''; /** * 优先级 * * @var int */ - public $priority; + public $priority = 0; /** * 发布标识 * * @var int */ - public $published; + public $published = 0; /** * 删除标识 * * @var int */ - public $deleted; + public $deleted = 0; /** * 创建时间 * * @var int */ - public $create_time; + public $create_time = 0; /** * 更新时间 * * @var int */ - public $update_time; + public $update_time = 0; public function getSource(): string { @@ -90,13 +90,6 @@ class Help extends Model public function beforeCreate() { - /** - * text类型不会自动填充默认值 - */ - if (is_null($this->content)) { - $this->content = ''; - } - $this->create_time = time(); } @@ -116,4 +109,4 @@ class Help extends Model $cache->rebuild(); } -} +} \ No newline at end of file diff --git a/app/Models/ImFriendGroup.php b/app/Models/ImFriendGroup.php index d51af955..7af9caca 100644 --- a/app/Models/ImFriendGroup.php +++ b/app/Models/ImFriendGroup.php @@ -12,49 +12,49 @@ class ImFriendGroup extends Model * * @var int */ - public $id; + public $id = 0; /** * 名称 * * @var string */ - public $name; + public $name = ''; /** * 优先级 * * @var int */ - public $priority; + public $priority = 0; /** * 状态 * * @var int */ - public $deleted; + public $deleted = 0; /** * 成员数 * * @var int */ - public $user_count; + public $user_count = 0; /** * 创建时间 * * @var int */ - public $create_time; + public $create_time = 0; /** * 更新时间 * * @var int */ - public $update_time; + public $update_time = 0; public function getSource(): string { @@ -83,5 +83,4 @@ class ImFriendGroup extends Model $this->update_time = time(); } -} - +} \ No newline at end of file diff --git a/app/Models/ImFriendUser.php b/app/Models/ImFriendUser.php index b2d169a6..b8f6d18f 100644 --- a/app/Models/ImFriendUser.php +++ b/app/Models/ImFriendUser.php @@ -10,49 +10,49 @@ class ImFriendUser extends Model * * @var int */ - public $id; + public $id = 0; /** * 用户编号 * * @var int */ - public $user_id; + public $user_id = 0; /** * 好友编号 * * @var int */ - public $friend_id; + public $friend_id = 0; /** * 分组编号 * * @var int */ - public $group_id; + public $group_id = 0; /** * 消息数量 * * @var int */ - public $msg_count; + public $msg_count = 0; /** * 创建时间 * * @var int */ - public $create_time; + public $create_time = 0; /** * 更新时间 * * @var int */ - public $update_time; + public $update_time = 0; public function getSource(): string { @@ -69,4 +69,4 @@ class ImFriendUser extends Model $this->update_time = time(); } -} +} \ No newline at end of file diff --git a/app/Models/ImGroup.php b/app/Models/ImGroup.php index ec899cd0..c18fa829 100644 --- a/app/Models/ImGroup.php +++ b/app/Models/ImGroup.php @@ -22,91 +22,91 @@ class ImGroup extends Model * * @var int */ - public $id; + public $id = 0; /** * 群主编号 * * @var int */ - public $owner_id; + public $owner_id = 0; /** * 课程编号 * * @var int */ - public $course_id; + public $course_id = 0; /** * 群组类型 * * @var int */ - public $type; + public $type = 0; /** * 名称 * * @var string */ - public $name; + public $name = ''; /** * 图标 * * @var string */ - public $avatar; + public $avatar = ''; /** * 简介 * * @var string */ - public $about; + public $about = ''; /** * 发布状态 * * @var int */ - public $published; + public $published = 0; /** * 删除状态 * * @var int */ - public $deleted; + public $deleted = 0; /** * 成员数 * * @var int */ - public $user_count; + public $user_count = 0; /** * 消息数 * * @var int */ - public $msg_count; + public $msg_count = 0; /** * 创建时间 * * @var int */ - public $create_time; + public $create_time = 0; /** * 更新时间 * * @var int */ - public $update_time; + public $update_time = 0; public function getSource(): string { @@ -186,5 +186,4 @@ class ImGroup extends Model ]; } -} - +} \ No newline at end of file diff --git a/app/Models/ImGroupUser.php b/app/Models/ImGroupUser.php index c5483884..0131532a 100644 --- a/app/Models/ImGroupUser.php +++ b/app/Models/ImGroupUser.php @@ -10,42 +10,42 @@ class ImGroupUser extends Model * * @var int */ - public $id; + public $id = 0; /** * 群组编号 * * @var int */ - public $group_id; + public $group_id = 0; /** * 用户编号 * * @var int */ - public $user_id; + public $user_id = 0; /** * 优先级 * * @var int */ - public $priority; + public $priority = 0; /** * 创建时间 * * @var int */ - public $create_time; + public $create_time = 0; /** * 更新时间 * * @var int */ - public $update_time; + public $update_time = 0; public function getSource(): string { @@ -62,5 +62,4 @@ class ImGroupUser extends Model $this->update_time = time(); } -} - +} \ No newline at end of file diff --git a/app/Models/ImMessage.php b/app/Models/ImMessage.php index 92dbd568..fcef59d0 100644 --- a/app/Models/ImMessage.php +++ b/app/Models/ImMessage.php @@ -18,70 +18,70 @@ class ImMessage extends Model * * @var int */ - public $id; + public $id = 0; /** * 对话编号 * * @var string */ - public $chat_id; + public $chat_id = ''; /** * 发送方编号 * * @var int */ - public $sender_id; + public $sender_id = 0; /** * 接收方编号 * * @var int */ - public $receiver_id; + public $receiver_id = 0; /** * 接收方类型 * * @var int */ - public $receiver_type; + public $receiver_type = 0; /** * 内容 * * @var string */ - public $content; + public $content = ''; /** * 阅读标识 * * @var int */ - public $viewed; + public $viewed = 0; /** * 删除标识 * * @var int */ - public $deleted; + public $deleted = 0; /** * 创建时间 * * @var int */ - public $create_time; + public $create_time = 0; /** * 更新时间 * * @var int */ - public $update_time; + public $update_time = 0; public function getSource(): string { @@ -123,4 +123,4 @@ class ImMessage extends Model return implode('-', $list); } -} +} \ No newline at end of file diff --git a/app/Models/ImNotice.php b/app/Models/ImNotice.php index 612224b1..73fe6bfd 100644 --- a/app/Models/ImNotice.php +++ b/app/Models/ImNotice.php @@ -29,70 +29,70 @@ class ImNotice extends Model * * @var int */ - public $id; + public $id = 0; /** * 发送方编号 * * @var int */ - public $sender_id; + public $sender_id = 0; /** * 接收方编号 * * @var int */ - public $receiver_id; + public $receiver_id = 0; /** * 条目类型 * * @var int */ - public $item_type; + public $item_type = 0; /** * 条目内容 * * @var string */ - public $item_info; + public $item_info = ''; /** * 优先级 * * @var int */ - public $priority; + public $priority = 0; /** * 阅读标识 * * @var int */ - public $viewed; + public $viewed = 0; /** * 删除标识 * * @var int */ - public $deleted; + public $deleted = 0; /** * 创建时间 * * @var int */ - public $create_time; + public $create_time = 0; /** * 更新时间 * * @var int */ - public $update_time; + public $update_time = 0; public function getSource(): string { @@ -136,4 +136,4 @@ class ImNotice extends Model } } -} +} \ No newline at end of file diff --git a/app/Models/ImUser.php b/app/Models/ImUser.php index b70cfde7..8a7bf9dc 100644 --- a/app/Models/ImUser.php +++ b/app/Models/ImUser.php @@ -21,77 +21,77 @@ class ImUser extends Model * * @var int */ - public $id; + public $id = 0; /** * 名称 * * @var string */ - public $name; + public $name = ''; /** * 头像 * * @var string */ - public $avatar; + public $avatar = ''; /** * 签名 * * @var string */ - public $sign; + public $sign = ''; /** * 皮肤 * * @var string */ - public $skin; + public $skin = ''; /** * 状态 * * @var string */ - public $status; + public $status = 'none'; /** * 删除标识 * * @var int */ - public $deleted; + public $deleted = 0; /** * 好友数 * * @var int */ - public $friend_count; + public $friend_count = 0; /** * 群组数 * * @var int */ - public $group_count; + public $group_count = 0; /** * 创建时间 * * @var int */ - public $create_time; + public $create_time = 0; /** * 更新时间 * * @var int */ - public $update_time; + public $update_time = 0; public function getSource(): string { @@ -146,4 +146,4 @@ class ImUser extends Model return $url; } -} +} \ No newline at end of file diff --git a/app/Models/Learning.php b/app/Models/Learning.php index 09391062..a84c32de 100644 --- a/app/Models/Learning.php +++ b/app/Models/Learning.php @@ -10,98 +10,98 @@ class Learning extends Model * * @var int */ - public $id; + public $id = 0; /** * 请求编号 * * @var string */ - public $request_id; + public $request_id = ''; /** * 课程编号 * * @var int */ - public $course_id; + public $course_id = 0; /** * 章节编号 * * @var int */ - public $chapter_id; + public $chapter_id = 0; /** * 用户编号 * * @var int */ - public $user_id; + public $user_id = 0; /** * 计划编号 * * @var int */ - public $plan_id; + public $plan_id = 0; /** - * 持续时长 + * 持续时长(秒) * * @var int */ - public $duration; + public $duration = 0; /** - * 播放位置 + * 播放位置(秒) * * @var int */ - public $position; + public $position = 0; /** * 删除标识 * * @var int */ - public $deleted; + public $deleted = 0; /** * 客户端类型 * * @var int */ - public $client_type; + public $client_type = 0; /** * 客户端IP * * @var string */ - public $client_ip; + public $client_ip = ''; /** * 活跃时间 * * @var int */ - public $active_time; + public $active_time = 0; /** * 创建时间 * * @var int */ - public $create_time; + public $create_time = 0; /** * 更新时间 * * @var int */ - public $update_time; + public $update_time = 0; public function getSource(): string { @@ -118,4 +118,4 @@ class Learning extends Model $this->update_time = time(); } -} +} \ No newline at end of file diff --git a/app/Models/Nav.php b/app/Models/Nav.php index f8b98ae5..5370784f 100644 --- a/app/Models/Nav.php +++ b/app/Models/Nav.php @@ -24,98 +24,98 @@ class Nav extends Model * * @var int */ - public $id; + public $id = 0; /** * 上级编号 * * @var int */ - public $parent_id; + public $parent_id = 0; /** * 层级 * * @var int */ - public $level; + public $level = 0; /** * 名称 * * @var string */ - public $name; + public $name = ''; /** * 路径 * * @var string */ - public $path; + public $path = ''; /** * 打开方式 * * @var string */ - public $target; + public $target = ''; /** * 链接地址 * * @var string */ - public $url; + public $url = ''; /** * 位置 * * @var int */ - public $position; + public $position = 1; /** * 优先级 * * @var int */ - public $priority; + public $priority = 0; /** * 发布标识 * * @var int */ - public $published; + public $published = 0; /** * 删除标识 * * @var int */ - public $deleted; + public $deleted = 0; /** * 节点数 * * @var int */ - public $child_count; + public $child_count = 0; /** * 创建时间 * * @var int */ - public $create_time; + public $create_time = 0; /** * 更新时间 * * @var int */ - public $update_time; + public $update_time = 0; public function getSource(): string { @@ -164,4 +164,4 @@ class Nav extends Model ]; } -} +} \ No newline at end of file diff --git a/app/Models/Online.php b/app/Models/Online.php index e00c62a2..9780740f 100644 --- a/app/Models/Online.php +++ b/app/Models/Online.php @@ -10,49 +10,49 @@ class Online extends Model * * @var int */ - public $id; + public $id = 0; /** * 用户编号 * * @var int */ - public $user_id; + public $user_id = 0; /** * 客户端类型 * * @var int */ - public $client_type; + public $client_type = 0; /** * 客户端IP * * @var string */ - public $client_ip; + public $client_ip = ''; /** * 活跃时间 * * @var int */ - public $active_time; + public $active_time = 0; /** * 创建时间 * * @var int */ - public $create_time; + public $create_time = 0; /** * 更新时间 * * @var int */ - public $update_time; + public $update_time = 0; public function getSource(): string { @@ -69,4 +69,4 @@ class Online extends Model $this->update_time = time(); } -} +} \ No newline at end of file diff --git a/app/Models/Order.php b/app/Models/Order.php index 22924000..8a82513b 100644 --- a/app/Models/Order.php +++ b/app/Models/Order.php @@ -30,98 +30,98 @@ class Order extends Model * * @var int */ - public $id; + public $id = 0; /** * 序号 * * @var string */ - public $sn; + public $sn = ''; /** * 主题 * * @var string */ - public $subject; + public $subject = ''; /** * 金额 * * @var float */ - public $amount; + public $amount = 0.00; /** * 用户编号 * * @var int */ - public $owner_id; + public $owner_id = 0; /** * 条目编号 * * @var int */ - public $item_id; + public $item_id = 0; /** * 条目类型 * * @var int */ - public $item_type; + public $item_type = 0; /** * 条目信息 * * @var string|array */ - public $item_info; + public $item_info = ''; /** * 终端类型 * * @var int */ - public $client_type; + public $client_type = 0; /** * 终端IP * * @var string */ - public $client_ip; + public $client_ip = ''; /** * 状态类型 * * @var int */ - public $status; + public $status = self::STATUS_PENDING; /** * 删除标识 * * @var int */ - public $deleted; + public $deleted = 0; /** * 创建时间 * * @var int */ - public $create_time; + public $create_time = 0; /** * 更新时间 * * @var int */ - public $update_time; + public $update_time = 0; public function getSource(): string { @@ -144,8 +144,6 @@ class Order extends Model public function beforeCreate() { - $this->status = self::STATUS_PENDING; - $this->sn = date('YmdHis') . rand(1000, 9999); if (is_array($this->item_info) && !empty($this->item_info)) { @@ -205,4 +203,4 @@ class Order extends Model ]; } -} +} \ No newline at end of file diff --git a/app/Models/OrderStatus.php b/app/Models/OrderStatus.php index 2f38f6ec..85b528be 100644 --- a/app/Models/OrderStatus.php +++ b/app/Models/OrderStatus.php @@ -10,28 +10,28 @@ class OrderStatus extends Model * * @var int */ - public $id; + public $id = 0; /** * 订单编号 * * @var int */ - public $order_id; + public $order_id = 0; /** * 状态类型 * * @var int */ - public $status; + public $status = 0; /** * 创建时间 * * @var int */ - public $create_time; + public $create_time = 0; public function getSource(): string { @@ -43,4 +43,4 @@ class OrderStatus extends Model $this->create_time = time(); } -} +} \ No newline at end of file diff --git a/app/Models/Package.php b/app/Models/Package.php index 583a3c0a..ff5ba3f5 100644 --- a/app/Models/Package.php +++ b/app/Models/Package.php @@ -13,70 +13,70 @@ class Package extends Model * * @var int */ - public $id; + public $id = 0; /** * 标题 * * @var string */ - public $title; + public $title = ''; /** * 简介 * * @var string */ - public $summary; + public $summary = ''; /** * 优惠价格 * * @var float */ - public $market_price; + public $market_price = 0.00; /** * 会员价格 * * @var float */ - public $vip_price; + public $vip_price = 0.00; /** * 课程数量 * * @var int */ - public $course_count; + public $course_count = 0; /** * 发布标识 * * @var int */ - public $published; + public $published = 0; /** * 删除标识 * * @var int */ - public $deleted; + public $deleted = 0; /** * 创建时间 * * @var int */ - public $create_time; + public $create_time = 0; /** * 更新时间 * * @var int */ - public $update_time; + public $update_time = 0; public function getSource(): string { @@ -122,4 +122,4 @@ class Package extends Model $this->vip_price = (float)$this->vip_price; } -} +} \ No newline at end of file diff --git a/app/Models/Page.php b/app/Models/Page.php index aed492e1..8b18ed14 100644 --- a/app/Models/Page.php +++ b/app/Models/Page.php @@ -13,49 +13,49 @@ class Page extends Model * * @var int */ - public $id; + public $id = 0; /** * 标题 * * @var string */ - public $title; + public $title = ''; /** * 内容 * * @var string */ - public $content; + public $content = ''; /** * 发布标识 * * @var int */ - public $published; + public $published = 0; /** * 删除标识 * * @var int */ - public $deleted; + public $deleted = 0; /** * 创建时间 * * @var int */ - public $create_time; + public $create_time = 0; /** * 更新时间 * * @var int */ - public $update_time; + public $update_time = 0; public function getSource(): string { @@ -76,13 +76,6 @@ class Page extends Model public function beforeCreate() { - /** - * text类型不会自动填充默认值 - */ - if (is_null($this->content)) { - $this->content = ''; - } - $this->create_time = time(); } @@ -102,4 +95,4 @@ class Page extends Model $cache->rebuild(); } -} +} \ No newline at end of file diff --git a/app/Models/PointGift.php b/app/Models/PointGift.php new file mode 100644 index 00000000..f1c8bddf --- /dev/null +++ b/app/Models/PointGift.php @@ -0,0 +1,241 @@ + 0, + 'title' => '', + 'price' => 0, + ]; + + /** + * 商品扩展属性 + * + * @var array + */ + protected $_goods_attrs = [ + 'source' => '', + 'price' => 0, + 'url' => '', + ]; + + /** + * 现金扩展属性 + * + * @var array + */ + protected $_cash_attrs = ['amount' => 0]; + + /** + * 主键编号 + * + * @var int + */ + public $id = 0; + + /** + * 名称 + * + * @var string + */ + public $name = ''; + + /** + * 封面 + * + * @var string + */ + public $cover = ''; + + /** + * 详情 + * + * @var string + */ + public $details = ''; + + /** + * 属性 + * + * @var string|array + */ + public $attrs = []; + + /** + * 类型 + * + * @var int + */ + public $type = 0; + + /** + * 库存 + * + * @var int + */ + public $stock = 0; + + /** + * 所需积分 + * + * @var int + */ + public $point = 0; + + /** + * 发布标识 + * + * @var int + */ + public $published = 0; + + /** + * 删除标识 + * + * @var int + */ + public $deleted = 0; + + /** + * 兑换限额 + * + * @var int + */ + public $redeem_limit = 1; + + /** + * 兑换数量 + * + * @var int + */ + public $redeem_count = 0; + + /** + * 创建时间 + * + * @var int + */ + public $create_time = 0; + + /** + * 更新时间 + * + * @var int + */ + public $update_time = 0; + + public function getSource(): string + { + return 'kg_point_gift'; + } + + public function initialize() + { + parent::initialize(); + + $this->addBehavior( + new SoftDelete([ + 'field' => 'deleted', + 'value' => 1, + ]) + ); + } + + public function beforeCreate() + { + if (empty($this->attrs)) { + if ($this->type == self::TYPE_COURSE) { + $this->attrs = $this->_course_attrs; + } elseif ($this->type == self::TYPE_GOODS) { + $this->attrs = $this->_goods_attrs; + } elseif ($this->type == self::TYPE_CASH) { + $this->attrs = $this->_cash_attrs; + } + } + + if (is_array($this->attrs) && !empty($this->attrs)) { + $this->attrs = kg_json_encode($this->attrs); + } + + if (empty($this->cover)) { + $this->cover = kg_default_cover_path(); + } elseif (Text::startsWith($this->cover, 'http')) { + $this->cover = self::getCoverPath($this->cover); + } + + $this->create_time = time(); + } + + public function beforeUpdate() + { + if (Text::startsWith($this->cover, 'http')) { + $this->cover = self::getCoverPath($this->cover); + } + + if (is_array($this->attrs) && !empty($this->attrs)) { + $this->attrs = kg_json_encode($this->attrs); + } + + if ($this->deleted == 1) { + $this->published = 0; + } + + $this->update_time = time(); + } + + public function afterCreate() + { + $cache = new MaxPointGiftIdCache(); + + $cache->rebuild(); + } + + public function afterFetch() + { + if (!Text::startsWith($this->cover, 'http')) { + $this->cover = kg_cos_cover_url($this->cover); + } + + if (is_string($this->attrs) && !empty($this->attrs)) { + $this->attrs = json_decode($this->attrs, true); + } + } + + public static function getCoverPath($url) + { + if (Text::startsWith($url, 'http')) { + return parse_url($url, PHP_URL_PATH); + } + + return $url; + } + + public static function types() + { + return [ + self::TYPE_COURSE => '课程', + self::TYPE_GOODS => '商品', + self::TYPE_CASH => '现金', + ]; + } + +} \ No newline at end of file diff --git a/app/Models/PointHistory.php b/app/Models/PointHistory.php new file mode 100644 index 00000000..0b6919c9 --- /dev/null +++ b/app/Models/PointHistory.php @@ -0,0 +1,144 @@ +addBehavior( + new SoftDelete([ + 'field' => 'deleted', + 'value' => 1, + ]) + ); + } + + public function beforeCreate() + { + if (is_array($this->event_info) && !empty($this->event_info)) { + $this->event_info = kg_json_encode($this->event_info); + } + + $this->create_time = time(); + } + + public function beforeUpdate() + { + $this->update_time = time(); + } + + public function afterFetch() + { + if (is_string($this->event_info) && !empty($this->event_info)) { + $this->event_info = json_decode($this->event_info, true); + } + } + + public static function eventTypes() + { + return [ + self::EVENT_ORDER_CONSUME => '订单消费', + self::EVENT_POINT_REDEEM => '积分兑换', + self::EVENT_POINT_REFUND => '积分退款', + self::EVENT_ACCOUNT_REGISTER => '用户注册', + self::EVENT_SITE_VISIT => '用户登录', + self::EVENT_CHAPTER_STUDY => '课时学习', + self::EVENT_COURSE_REVIEW => '课程评价', + self::EVENT_IM_DISCUSS => '微聊讨论', + ]; + } + +} \ No newline at end of file diff --git a/app/Models/PointRedeem.php b/app/Models/PointRedeem.php new file mode 100644 index 00000000..ddabb505 --- /dev/null +++ b/app/Models/PointRedeem.php @@ -0,0 +1,130 @@ +status = self::STATUS_PENDING; + + $this->create_time = time(); + } + + public function beforeUpdate() + { + $this->update_time = time(); + } + +} \ No newline at end of file diff --git a/app/Models/Refund.php b/app/Models/Refund.php index f893bd2c..7872846a 100644 --- a/app/Models/Refund.php +++ b/app/Models/Refund.php @@ -22,91 +22,91 @@ class Refund extends Model * * @var int */ - public $id; + public $id = 0; /** * 用户编号 * * @var int */ - public $owner_id; + public $owner_id = 0; /** * 订单编号 * * @var int */ - public $order_id; + public $order_id = 0; /** * 交易编号 * * @var int */ - public $trade_id; + public $trade_id = 0; /** * 序号 * * @var string */ - public $sn; + public $sn = ''; /** * 主题 * * @var string */ - public $subject; + public $subject = ''; /** * 金额 * * @var float */ - public $amount; + public $amount = 0.00; /** * 状态类型 * * @var int */ - public $status; + public $status = self::STATUS_PENDING; /** * 删除标识 * * @var int */ - public $deleted; + public $deleted = 0; /** * 申请备注 * * @var string */ - public $apply_note; + public $apply_note = ''; /** * 审核备注 * * @var string */ - public $review_note; + public $review_note = ''; /** * 创建时间 * * @var int */ - public $create_time; + public $create_time = 0; /** * 更新时间 * * @var int */ - public $update_time; + public $update_time = 0; public function getSource(): string { @@ -166,4 +166,4 @@ class Refund extends Model ]; } -} +} \ No newline at end of file diff --git a/app/Models/RefundStatus.php b/app/Models/RefundStatus.php index 5b57d592..e0130076 100644 --- a/app/Models/RefundStatus.php +++ b/app/Models/RefundStatus.php @@ -10,28 +10,28 @@ class RefundStatus extends Model * * @var int */ - public $id; + public $id = 0; /** * 退款编号 * * @var int */ - public $refund_id; + public $refund_id = 0; /** * 状态类型 * * @var int */ - public $status; + public $status = 0; /** * 创建时间 * * @var int */ - public $create_time; + public $create_time = 0; public function getSource(): string { @@ -43,4 +43,4 @@ class RefundStatus extends Model $this->create_time = time(); } -} +} \ No newline at end of file diff --git a/app/Models/Resource.php b/app/Models/Resource.php index 15245d50..77b58e29 100644 --- a/app/Models/Resource.php +++ b/app/Models/Resource.php @@ -10,42 +10,42 @@ class Resource extends Model * * @var int */ - public $id; + public $id = 0; /** * 课程编号 * * @var int */ - public $course_id; + public $course_id = 0; /** * 章节编号 * * @var int */ - public $chapter_id; + public $chapter_id = 0; /** * 上传编号 * * @var int */ - public $upload_id; + public $upload_id = 0; /** * 创建时间 * * @var int */ - public $create_time; + public $create_time = 0; /** * 更新时间 * * @var int */ - public $update_time; + public $update_time = 0; public function getSource(): string { @@ -62,4 +62,4 @@ class Resource extends Model $this->update_time = time(); } -} +} \ No newline at end of file diff --git a/app/Models/Review.php b/app/Models/Review.php index 5d6b6e4f..6e6f2a68 100644 --- a/app/Models/Review.php +++ b/app/Models/Review.php @@ -12,105 +12,105 @@ class Review extends Model * * @var int */ - public $id; + public $id = 0; /** * 课程编号 * * @var int */ - public $course_id; + public $course_id = 0; /** * 用户编号 * * @var int */ - public $owner_id; + public $owner_id = 0; /** * 评价内容 * * @var string */ - public $content; + public $content = ''; /** * 回复内容 * * @var string */ - public $reply; + public $reply = ''; /** * 综合评分 * * @var float */ - public $rating; + public $rating = 0.00; /** * 维度1评分 * * @var float */ - public $rating1; + public $rating1 = 0.00; /** * 维度2评分 * * @var float */ - public $rating2; + public $rating2 = 0.00; /** * 维度3评分 * * @var float */ - public $rating3; + public $rating3 = 0.00; /** * 匿名标识 * * @var int */ - public $anonymous; + public $anonymous = 0; /** * 发布标识 * * @var int */ - public $published; + public $published = 0; /** * 删除标识 * * @var int */ - public $deleted; + public $deleted = 0; /** * 点赞数量 * * @var int */ - public $like_count; + public $like_count = 0; /** * 创建时间 * * @var int */ - public $create_time; + public $create_time = 0; /** * 更新时间 * * @var int */ - public $update_time; + public $update_time = 0; public function getSource(): string { @@ -154,4 +154,4 @@ class Review extends Model return round($sumRating / 3, 2); } -} +} \ No newline at end of file diff --git a/app/Models/ReviewLike.php b/app/Models/ReviewLike.php index bfd03e72..96b09b09 100644 --- a/app/Models/ReviewLike.php +++ b/app/Models/ReviewLike.php @@ -12,42 +12,42 @@ class ReviewLike extends Model * * @var int */ - public $id; + public $id = 0; /** * 评价编号 * * @var int */ - public $review_id; + public $review_id = 0; /** * 用户编号 * * @var int */ - public $user_id; + public $user_id = 0; /** * 删除标识 * * @var int */ - public $deleted; + public $deleted = 0; /** * 创建时间 * * @var int */ - public $create_time; + public $create_time = 0; /** * 更新时间 * * @var int */ - public $update_time; + public $update_time = 0; public function getSource(): string { @@ -76,4 +76,4 @@ class ReviewLike extends Model $this->update_time = time(); } -} +} \ No newline at end of file diff --git a/app/Models/Reward.php b/app/Models/Reward.php index 017a0258..dc6d9ffa 100644 --- a/app/Models/Reward.php +++ b/app/Models/Reward.php @@ -12,42 +12,42 @@ class Reward extends Model * * @var int */ - public $id; + public $id = 0; /** * 标题 * * @var string */ - public $title; + public $title = ''; /** * 价格 * * @var float */ - public $price; + public $price = 0.00; /** * 删除标识 * * @var int */ - public $deleted; + public $deleted = 0; /** * 创建时间 * * @var int */ - public $create_time; + public $create_time = 0; /** * 更新时间 * * @var int */ - public $update_time; + public $update_time = 0; public function getSource(): string { @@ -81,4 +81,4 @@ class Reward extends Model $this->price = (float)$this->price; } -} +} \ No newline at end of file diff --git a/app/Models/Role.php b/app/Models/Role.php index a30b573b..7f0287e6 100644 --- a/app/Models/Role.php +++ b/app/Models/Role.php @@ -26,63 +26,63 @@ class Role extends Model * * @var int */ - public $id; + public $id = 0; /** * 类型 * - * @var string + * @var int */ - public $type; + public $type = self::TYPE_CUSTOM; /** * 名称 * * @var string */ - public $name; + public $name = ''; /** * 简介 * * @var string */ - public $summary; + public $summary = ''; /** * 权限路由 * - * @var string + * @var array|string */ - public $routes; + public $routes = ''; /** * 删除标识 * * @var int */ - public $deleted; + public $deleted = 0; /** * 成员数 * * @var int */ - public $user_count; + public $user_count = 0; /** * 创建时间 * * @var int */ - public $create_time; + public $create_time = 0; /** * 更新时间 * * @var int */ - public $update_time; + public $update_time = 0; public function getSource(): string { @@ -105,8 +105,6 @@ class Role extends Model { if (is_array($this->routes) && !empty($this->routes)) { $this->routes = kg_json_encode($this->routes); - } else { - $this->routes = ''; } $this->create_time = time(); @@ -146,4 +144,4 @@ class Role extends Model ]; } -} +} \ No newline at end of file diff --git a/app/Models/Setting.php b/app/Models/Setting.php index a4bd5f01..edc89b87 100644 --- a/app/Models/Setting.php +++ b/app/Models/Setting.php @@ -10,32 +10,32 @@ class Setting extends Model * * @var int */ - public $id; + public $id = 0; /** * 配置块 * * @var string */ - public $section; + public $section = ''; /** * 配置键 * * @var string */ - public $item_key; + public $item_key = ''; /** * 配置值 * * @var string */ - public $item_value; + public $item_value = ''; public function getSource(): string { return 'kg_setting'; } -} +} \ No newline at end of file diff --git a/app/Models/Slide.php b/app/Models/Slide.php index d5675fff..4d72b708 100644 --- a/app/Models/Slide.php +++ b/app/Models/Slide.php @@ -20,84 +20,84 @@ class Slide extends Model * * @var int */ - public $id; + public $id = 0; /** * 标题 * * @var string */ - public $title; + public $title = ''; /** * 封面 * * @var string */ - public $cover; + public $cover = ''; /** * 摘要 * * @var string */ - public $summary; + public $summary = ''; /** * 内容 * * @var string */ - public $content; + public $content = ''; /** * 平台 * * @var int */ - public $platform; + public $platform = 0; /** * 目标 * * @var int */ - public $target; + public $target = 0; /** * 优先级 * * @var int */ - public $priority; + public $priority = 0; /** * 发布标识 * * @var int */ - public $published; + public $published = 0; /** * 删除标识 * * @var int */ - public $deleted; + public $deleted = 0; /** * 创建时间 * * @var int */ - public $create_time; + public $create_time = 0; /** * 更新时间 * * @var int */ - public $update_time; + public $update_time = 0; public function getSource(): string { @@ -165,4 +165,4 @@ class Slide extends Model ]; } -} +} \ No newline at end of file diff --git a/app/Models/Task.php b/app/Models/Task.php index dd85bb59..77839de6 100644 --- a/app/Models/Task.php +++ b/app/Models/Task.php @@ -10,6 +10,8 @@ class Task extends Model */ const TYPE_DELIVER = 1; // 发货 const TYPE_REFUND = 2; // 退款 + const TYPE_POINT_GIFT_DELIVER = 3; // 积分礼品派发 + const TYPE_LUCKY_GIFT_DELIVER = 4; // 抽奖礼品派发 const TYPE_NOTICE_ACCOUNT_LOGIN = 11; // 帐号登录通知 const TYPE_NOTICE_LIVE_BEGIN = 12; // 直播开始通知 @@ -37,63 +39,63 @@ class Task extends Model * * @var int */ - public $id; + public $id = 0; /** * 条目编号 * * @var int */ - public $item_id; + public $item_id = 0; /** * 条目类型 * * @var int */ - public $item_type; + public $item_type = 0; /** * 条目内容 * * @var string|array */ - public $item_info; + public $item_info = ''; /** * 优先级 * * @var int */ - public $priority; + public $priority = self::PRIORITY_LOW; /** * 状态标识 * * @var int */ - public $status; + public $status = self::STATUS_PENDING; /** * 重试次数 * * @var int */ - public $try_count; + public $try_count = 0; /** * 创建时间 * * @var int */ - public $create_time; + public $create_time = 0; /** * 更新时间 * * @var int */ - public $update_time; + public $update_time = 0; public function getSource(): string { @@ -102,8 +104,6 @@ class Task extends Model public function beforeCreate() { - $this->status = self::STATUS_PENDING; - if (is_array($this->item_info) && !empty($this->item_info)) { $this->item_info = kg_json_encode($this->item_info); } @@ -127,4 +127,4 @@ class Task extends Model } } -} +} \ No newline at end of file diff --git a/app/Models/Topic.php b/app/Models/Topic.php index f4776907..6b5794b5 100644 --- a/app/Models/Topic.php +++ b/app/Models/Topic.php @@ -13,56 +13,56 @@ class Topic extends Model * * @var int */ - public $id; + public $id = 0; /** * 标题 * * @var string */ - public $title; + public $title = ''; /** * 简介 * * @var string */ - public $summary; + public $summary = ''; /** * 课程数量 * * @var int */ - public $course_count; + public $course_count = 0; /** * 发布标识 * * @var int */ - public $published; + public $published = 0; /** * 删除标识 * * @var int */ - public $deleted; + public $deleted = 0; /** * 创建时间 * * @var int */ - public $create_time; + public $create_time = 0; /** * 更新时间 * * @var int */ - public $update_time; + public $update_time = 0; public function getSource(): string { @@ -102,4 +102,4 @@ class Topic extends Model $cache->rebuild(); } -} +} \ No newline at end of file diff --git a/app/Models/Trade.php b/app/Models/Trade.php index 0a3d24bf..25b43045 100644 --- a/app/Models/Trade.php +++ b/app/Models/Trade.php @@ -26,84 +26,84 @@ class Trade extends Model * * @var int */ - public $id; + public $id = 0; /** * 用户编号 * * @var int */ - public $owner_id; + public $owner_id = 0; /** * 订单编号 * * @var int */ - public $order_id; + public $order_id = 0; /** * 商户流水号 * * @var string */ - public $sn; + public $sn = ''; /** * 主题 * * @var string */ - public $subject; + public $subject = ''; /** * 金额 * * @var float */ - public $amount; + public $amount = 0.00; /** * 平台类型 * * @var int */ - public $channel; + public $channel = 0; /** * 平台流水号 * * @var string */ - public $channel_sn; + public $channel_sn = ''; /** * 状态类型 * * @var int */ - public $status; + public $status = self::STATUS_PENDING; /** * 删除标识 * * @var int */ - public $deleted; + public $deleted = 0; /** * 创建时间 * * @var int */ - public $create_time; + public $create_time = 0; /** * 更新时间 * * @var int */ - public $update_time; + public $update_time = 0; public function getSource(): string { @@ -126,8 +126,6 @@ class Trade extends Model public function beforeCreate() { - $this->status = self::STATUS_PENDING; - $this->sn = date('YmdHis') . rand(1000, 9999); $this->create_time = time(); @@ -171,4 +169,4 @@ class Trade extends Model ]; } -} +} \ No newline at end of file diff --git a/app/Models/TradeStatus.php b/app/Models/TradeStatus.php index 9b1a2f5a..175d095c 100644 --- a/app/Models/TradeStatus.php +++ b/app/Models/TradeStatus.php @@ -10,28 +10,28 @@ class TradeStatus extends Model * * @var int */ - public $id; + public $id = 0; /** * 交易编号 * * @var int */ - public $trade_id; + public $trade_id = 0; /** * 状态类型 * * @var int */ - public $status; + public $status = 0; /** * 创建时间 * * @var int */ - public $create_time; + public $create_time = 0; public function getSource(): string { @@ -43,4 +43,4 @@ class TradeStatus extends Model $this->create_time = time(); } -} +} \ No newline at end of file diff --git a/app/Models/Upload.php b/app/Models/Upload.php index c6e717f8..ed86f76e 100644 --- a/app/Models/Upload.php +++ b/app/Models/Upload.php @@ -23,70 +23,70 @@ class Upload extends Model * * @var int */ - public $id; + public $id = 0; /** * 名称 * * @var string */ - public $name; + public $name = ''; /** * 路径 * * @var string */ - public $path; + public $path = ''; /** * mime * * @var string */ - public $mime; + public $mime = ''; /** * md5 * * @var string */ - public $md5; + public $md5 = ''; /** - * 大小 + * 大小(字节) * * @var int */ - public $size; + public $size = 0; /** * 类型 * * @var int */ - public $type; + public $type = 0; /** * 删除标识 * * @var int */ - public $deleted; + public $deleted = 0; /** * 创建时间 * * @var int */ - public $create_time; + public $create_time = 0; /** * 更新时间 * * @var int */ - public $update_time; + public $update_time = 0; public function getSource(): string { @@ -122,4 +122,4 @@ class Upload extends Model $cache->rebuild(); } -} +} \ No newline at end of file diff --git a/app/Models/User.php b/app/Models/User.php index 4e007a8d..f4d7703c 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -3,6 +3,7 @@ namespace App\Models; use App\Caches\MaxUserId as MaxUserIdCache; +use App\Caches\User as UserCache; use App\Services\Sync\UserIndex as UserIndexSync; use Phalcon\Mvc\Model\Behavior\SoftDelete; use Phalcon\Text; @@ -216,6 +217,10 @@ class User extends Model 'avatar' => $this->avatar, ]); } + + $userCache = new UserCache(); + + $userCache->rebuild($this->id); } public function afterFetch() @@ -251,4 +256,4 @@ class User extends Model ]; } -} +} \ No newline at end of file diff --git a/app/Models/UserBalance.php b/app/Models/UserBalance.php new file mode 100644 index 00000000..8ab1334f --- /dev/null +++ b/app/Models/UserBalance.php @@ -0,0 +1,79 @@ +addBehavior( + new SoftDelete([ + 'field' => 'deleted', + 'value' => 1, + ]) + ); + } + + public function beforeCreate() + { + $this->create_time = time(); + } + + public function beforeSave() + { + $this->update_time = time(); + } + +} \ No newline at end of file diff --git a/app/Models/UserContact.php b/app/Models/UserContact.php new file mode 100644 index 00000000..790df7ca --- /dev/null +++ b/app/Models/UserContact.php @@ -0,0 +1,117 @@ +addBehavior( + new SoftDelete([ + 'field' => 'deleted', + 'value' => 1, + ]) + ); + } + + public function beforeSave() + { + if (empty($this->create_time)) { + $this->create_time = time(); + } + + $this->update_time = time(); + } + + public function fullAddress() + { + return implode(' ', [ + $this->add_province, + $this->add_city, + $this->add_county, + $this->add_other, + ]); + } + +} \ No newline at end of file diff --git a/app/Models/UserSession.php b/app/Models/UserSession.php index 1e50498e..31fd144b 100644 --- a/app/Models/UserSession.php +++ b/app/Models/UserSession.php @@ -12,56 +12,56 @@ class UserSession extends Model * * @var int */ - public $id; + public $id = 0; /** * 用户编号 * * @var int */ - public $user_id; + public $user_id = 0; /** * 会话编号 * * @var string */ - public $session_id; + public $session_id = ''; /** * 终端类型 * * @var int */ - public $client_type; + public $client_type = 0; /** * 终端IP * * @var string */ - public $client_ip; + public $client_ip = ''; /** * 删除标识 * * @var int */ - public $deleted; + public $deleted = 0; /** * 创建时间 * * @var int */ - public $create_time; + public $create_time = 0; /** * 更新时间 * * @var int */ - public $update_time; + public $update_time = 0; public function getSource(): string { @@ -90,4 +90,4 @@ class UserSession extends Model $this->update_time = time(); } -} +} \ No newline at end of file diff --git a/app/Models/UserToken.php b/app/Models/UserToken.php index 8a1ee4d3..a3f6f642 100644 --- a/app/Models/UserToken.php +++ b/app/Models/UserToken.php @@ -12,56 +12,56 @@ class UserToken extends Model * * @var int */ - public $id; + public $id = 0; /** * 用户编号 * * @var int */ - public $user_id; + public $user_id = 0; /** * 令牌 * * @var string */ - public $token; + public $token = ''; /** * 终端类型 * * @var int */ - public $client_type; + public $client_type = 0; /** * 终端IP * * @var string */ - public $client_ip; + public $client_ip = ''; /** * 删除标识 * * @var int */ - public $deleted; + public $deleted = 0; /** * 创建时间 * * @var int */ - public $create_time; + public $create_time = 0; /** * 更新时间 * * @var int */ - public $update_time; + public $update_time = 0; public function getSource(): string { @@ -90,4 +90,4 @@ class UserToken extends Model $this->update_time = time(); } -} +} \ No newline at end of file diff --git a/app/Models/Vip.php b/app/Models/Vip.php index 26453113..b6a8446e 100644 --- a/app/Models/Vip.php +++ b/app/Models/Vip.php @@ -12,49 +12,49 @@ class Vip extends Model * * @var int */ - public $id; + public $id = 0; /** * 标题 * * @var string */ - public $title; + public $title = ''; /** * 期限(天) * * @var int */ - public $expiry; + public $expiry = 0; /** * 价格 * * @var float */ - public $price; + public $price = 0.00; /** * 删除标识 * * @var int */ - public $deleted; + public $deleted = 0; /** * 创建时间 * * @var int */ - public $create_time; + public $create_time = 0; /** * 更新时间 * * @var int */ - public $update_time; + public $update_time = 0; public function getSource(): string { @@ -88,4 +88,4 @@ class Vip extends Model $this->price = (float)$this->price; } -} +} \ No newline at end of file diff --git a/app/Models/WechatSubscribe.php b/app/Models/WechatSubscribe.php index e1633caa..0e2efe98 100644 --- a/app/Models/WechatSubscribe.php +++ b/app/Models/WechatSubscribe.php @@ -12,42 +12,42 @@ class WechatSubscribe extends Model * * @var int */ - public $id; + public $id = 0; /** * 用户编号 * * @var int */ - public $user_id; + public $user_id = 0; /** * 开放ID * * @var string */ - public $open_id; + public $open_id = ''; /** * 删除标识 * * @var int */ - public $deleted; + public $deleted = 0; /** * 创建时间 * * @var int */ - public $create_time; + public $create_time = 0; /** * 更新时间 * * @var int */ - public $update_time; + public $update_time = 0; public function getSource(): string { @@ -76,4 +76,4 @@ class WechatSubscribe extends Model $this->update_time = time(); } -} +} \ No newline at end of file diff --git a/app/Repos/PointGift.php b/app/Repos/PointGift.php new file mode 100644 index 00000000..406ce516 --- /dev/null +++ b/app/Repos/PointGift.php @@ -0,0 +1,87 @@ +modelsManager->createBuilder(); + + $builder->from(PointGiftModel::class); + + $builder->where('1 = 1'); + + if (!empty($where['id'])) { + $builder->andWhere('id = :id:', ['id' => $where['id']]); + } + + if (!empty($where['type'])) { + $builder->andWhere('type = :type:', ['type' => $where['type']]); + } + + if (!empty($where['name'])) { + $builder->andWhere('name LIKE :name:', ['name' => "%{$where['name']}%"]); + } + + if (isset($where['published'])) { + $builder->andWhere('published = :published:', ['published' => $where['published']]); + } + + if (isset($where['deleted'])) { + $builder->andWhere('deleted = :deleted:', ['deleted' => $where['deleted']]); + } + + switch ($sort) { + case 'popular': + $orderBy = 'redeem_count DESC'; + break; + default: + $orderBy = 'id DESC'; + break; + } + + $builder->orderBy($orderBy); + + $pager = new PagerQueryBuilder([ + 'builder' => $builder, + 'page' => $page, + 'limit' => $limit, + ]); + + return $pager->paginate(); + } + + /** + * @param int $id + * @return PointGiftModel|Model|bool + */ + public function findById($id) + { + return PointGiftModel::findFirst([ + 'conditions' => 'id = :id:', + 'bind' => ['id' => $id], + ]); + } + + /** + * @param array $ids + * @param string|array $columns + * @return ResultsetInterface|Resultset|PointGiftModel[] + */ + public function findByIds($ids, $columns = '*') + { + return PointGiftModel::query() + ->columns($columns) + ->inWhere('id', $ids) + ->execute(); + } + +} diff --git a/app/Repos/PointHistory.php b/app/Repos/PointHistory.php new file mode 100644 index 00000000..234425ca --- /dev/null +++ b/app/Repos/PointHistory.php @@ -0,0 +1,105 @@ +modelsManager->createBuilder(); + + $builder->from(PointHistoryModel::class); + + $builder->where('1 = 1'); + + if (!empty($where['user_id'])) { + $builder->andWhere('user_id = :user_id:', ['user_id' => $where['user_id']]); + } + + if (!empty($where['event_id'])) { + $builder->andWhere('event_id = :event_id:', ['event_id' => $where['event_id']]); + } + + if (!empty($where['event_type'])) { + $builder->andWhere('event_type = :event_type:', ['event_type' => $where['event_type']]); + } + + switch ($sort) { + default: + $orderBy = 'id DESC'; + break; + } + + $builder->orderBy($orderBy); + + $pager = new PagerQueryBuilder([ + 'builder' => $builder, + 'page' => $page, + 'limit' => $limit, + ]); + + return $pager->paginate(); + } + + /** + * @param int $eventId + * @param int $eventType + * @return PointHistoryModel|Model|bool + */ + public function findEventHistory($eventId, $eventType) + { + return PointHistoryModel::findFirst([ + 'conditions' => 'event_id = ?1 AND event_type = ?2', + 'bind' => [1 => $eventId, 2 => $eventType], + ]); + } + + /** + * @param int $eventId + * @param int $eventType + * @param string $date + * @return PointHistoryModel|Model|bool + */ + public function findDailyEventHistory($eventId, $eventType, $date) + { + $createTime = strtotime($date); + + return PointHistoryModel::findFirst([ + 'conditions' => 'event_id = ?1 AND event_type = ?2 AND create_time > ?3', + 'bind' => [1 => $eventId, 2 => $eventType, 3 => $createTime], + ]); + } + + /** + * @param int $id + * @return PointHistoryModel|Model|bool + */ + public function findById($id) + { + return PointHistoryModel::findFirst([ + 'conditions' => 'id = :id:', + 'bind' => ['id' => $id], + ]); + } + + /** + * @param array $ids + * @param string|array $columns + * @return ResultsetInterface|Resultset|PointHistoryModel[] + */ + public function findByIds($ids, $columns = '*') + { + return PointHistoryModel::query() + ->columns($columns) + ->inWhere('id', $ids) + ->execute(); + } + +} diff --git a/app/Repos/PointRedeem.php b/app/Repos/PointRedeem.php new file mode 100644 index 00000000..b5f4a877 --- /dev/null +++ b/app/Repos/PointRedeem.php @@ -0,0 +1,73 @@ +modelsManager->createBuilder(); + + $builder->from(PointRedeemModel::class); + + $builder->where('1 = 1'); + + if (!empty($where['user_id'])) { + $builder->andWhere('user_id = :user_id:', ['user_id' => $where['user_id']]); + } + + if (!empty($where['gift_id'])) { + $builder->andWhere('gift_id = :gift_id:', ['gift_id' => $where['gift_id']]); + } + + if (!empty($where['gift_type'])) { + $builder->andWhere('gift_type = :gift_type:', ['gift_type' => $where['gift_type']]); + } + + if (!empty($where['status'])) { + $builder->andWhere('status = :status:', ['status' => $where['status']]); + } + + switch ($sort) { + default: + $orderBy = 'id DESC'; + break; + } + + $builder->orderBy($orderBy); + + $pager = new PagerQueryBuilder([ + 'builder' => $builder, + 'page' => $page, + 'limit' => $limit, + ]); + + return $pager->paginate(); + } + + /** + * @param int $id + * @return PointRedeemModel|Model|bool + */ + public function findById($id) + { + return PointRedeemModel::findFirst([ + 'conditions' => 'id = :id:', + 'bind' => ['id' => $id], + ]); + } + + public function countUserGiftRedeems($userId, $giftId) + { + return (int)PointRedeemModel::count([ + 'conditions' => 'user_id = :user_id: AND gift_id = :gift_id:', + 'bind' => ['user_id' => $userId, 'gift_id' => $giftId], + ]); + } + +} diff --git a/app/Repos/User.php b/app/Repos/User.php index 1c2e1c78..c8c2a9a8 100644 --- a/app/Repos/User.php +++ b/app/Repos/User.php @@ -7,6 +7,8 @@ use App\Models\CourseFavorite as CourseFavoriteModel; use App\Models\CourseUser as CourseUserModel; use App\Models\ImUser as ImUserModel; use App\Models\User as UserModel; +use App\Models\UserBalance as UserBalanceModel; +use App\Models\UserContact as UserContactModel; use Phalcon\Mvc\Model; use Phalcon\Mvc\Model\Resultset; use Phalcon\Mvc\Model\ResultsetInterface; @@ -104,6 +106,30 @@ class User extends Repository ->execute(); } + /** + * @param int $userId + * @return UserBalanceModel|Model + */ + public function findUserBalance($userId) + { + return UserBalanceModel::findFirst([ + 'conditions' => 'user_id = :user_id:', + 'bind' => ['user_id' => $userId], + ]); + } + + /** + * @param int $userId + * @return UserContactModel|Model + */ + public function findUserContact($userId) + { + return UserContactModel::findFirst([ + 'conditions' => 'user_id = :user_id:', + 'bind' => ['user_id' => $userId], + ]); + } + /** * @param int $id * @return ImUserModel|Model|bool diff --git a/app/Services/ChapterVod.php b/app/Services/ChapterVod.php index 89d6d292..4d070c95 100644 --- a/app/Services/ChapterVod.php +++ b/app/Services/ChapterVod.php @@ -3,6 +3,7 @@ namespace App\Services; use App\Repos\Chapter as ChapterRepo; +use App\Services\Vod as VodService; class ChapterVod extends Service { @@ -17,17 +18,12 @@ class ChapterVod extends Service return []; } - /** - * @var array $transcode - */ - $transcode = $vod->file_transcode; - - $vod = new Vod(); + $vodService = new VodService(); $result = []; - foreach ($transcode as $key => $file) { - $file['url'] = $vod->getPlayUrl($file['url']); + foreach ($vod->file_transcode as $key => $file) { + $file['url'] = $vodService->getPlayUrl($file['url']); $type = $this->getDefinitionType($file['height']); $result[$type] = $file; } @@ -41,12 +37,9 @@ class ChapterVod extends Service $vodTemplates = $this->getVodTemplates(); - /** - * 腾讯云播放器只支持[od|hd|sd],遇到fd替换为od - */ foreach ($vodTemplates as $key => $template) { if ($height >= $template['height']) { - return $key == 'fd' ? $default : $key; + return $key; } } @@ -54,14 +47,14 @@ class ChapterVod extends Service } /** - * @return array + * 腾讯云播放器只支持[od|hd|sd],实际转码速率[hd|sd|fd],重新映射清晰度 */ protected function getVodTemplates() { return [ - 'hd' => ['height' => 720, 'rate' => 1800], - 'sd' => ['height' => 540, 'rate' => 1000], - 'fd' => ['height' => 360, 'rate' => 400], + 'od' => ['height' => 720, 'rate' => 1800], + 'hd' => ['height' => 540, 'rate' => 1000], + 'sd' => ['height' => 360, 'rate' => 400], ]; } diff --git a/app/Services/Logic/Chapter/BasicInfo.php b/app/Services/Logic/Chapter/BasicInfo.php index 65e88b25..8c571f8c 100644 --- a/app/Services/Logic/Chapter/BasicInfo.php +++ b/app/Services/Logic/Chapter/BasicInfo.php @@ -112,6 +112,8 @@ class BasicInfo extends Service $read = $chapterRepo->findChapterRead($chapter->id); + $read->content = kg_parse_markdown($read->content); + return [ 'id' => $chapter->id, 'title' => $chapter->title, diff --git a/app/Services/Logic/Chapter/ChapterLike.php b/app/Services/Logic/Chapter/ChapterLike.php index d917e83c..d564dd89 100644 --- a/app/Services/Logic/Chapter/ChapterLike.php +++ b/app/Services/Logic/Chapter/ChapterLike.php @@ -77,7 +77,7 @@ class ChapterLike extends Service protected function incrUserDailyChapterLikeCount(UserModel $user) { - $this->eventsManager->fire('userDailyCounter:incrChapterLikeCount', $this, $user); + $this->eventsManager->fire('UserDailyCounter:incrChapterLikeCount', $this, $user); } } diff --git a/app/Services/Logic/Consult/ConsultCreate.php b/app/Services/Logic/Consult/ConsultCreate.php index 7f21287d..369fd19a 100644 --- a/app/Services/Logic/Consult/ConsultCreate.php +++ b/app/Services/Logic/Consult/ConsultCreate.php @@ -147,7 +147,7 @@ class ConsultCreate extends Service protected function incrUserDailyConsultCount(UserModel $user) { - $this->eventsManager->fire('userDailyCounter:incrConsultCount', $this, $user); + $this->eventsManager->fire('UserDailyCounter:incrConsultCount', $this, $user); } } diff --git a/app/Services/Logic/Consult/ConsultLike.php b/app/Services/Logic/Consult/ConsultLike.php index c49adeef..e1c06fb8 100644 --- a/app/Services/Logic/Consult/ConsultLike.php +++ b/app/Services/Logic/Consult/ConsultLike.php @@ -78,7 +78,7 @@ class ConsultLike extends Service protected function incrUserDailyConsultLikeCount(UserModel $user) { - $this->eventsManager->fire('userDailyCounter:incrConsultLikeCount', $this, $user); + $this->eventsManager->fire('UserDailyCounter:incrConsultLikeCount', $this, $user); } } diff --git a/app/Services/Logic/Danmu/DanmuCreate.php b/app/Services/Logic/Danmu/DanmuCreate.php index 35fe1b26..47288358 100644 --- a/app/Services/Logic/Danmu/DanmuCreate.php +++ b/app/Services/Logic/Danmu/DanmuCreate.php @@ -53,7 +53,7 @@ class DanmuCreate extends Service protected function incrUserDailyDanmuCount(UserModel $user) { - $this->eventsManager->fire('userDailyCounter:incrDanmuCount', $this, $user); + $this->eventsManager->fire('UserDailyCounter:incrDanmuCount', $this, $user); } } diff --git a/app/Services/Logic/Notice/PointRedeemFinish.php b/app/Services/Logic/Notice/PointRedeemFinish.php new file mode 100644 index 00000000..2c88e21e --- /dev/null +++ b/app/Services/Logic/Notice/PointRedeemFinish.php @@ -0,0 +1,78 @@ +item_info['order']['id']; + + $orderRepo = new OrderRepo(); + + $order = $orderRepo->findById($orderId); + + $userRepo = new UserRepo(); + + $user = $userRepo->findById($order->owner_id); + + $params = [ + 'user' => [ + 'id' => $user->id, + 'name' => $user->name, + ], + 'order' => [ + 'sn' => $order->sn, + 'subject' => $order->subject, + 'amount' => $order->amount, + 'create_time' => $order->create_time, + 'update_time' => $order->update_time, + ], + ]; + + $subscribeRepo = new WechatSubscribeRepo(); + + $subscribe = $subscribeRepo->findByUserId($order->owner_id); + + if ($subscribe && $subscribe->deleted == 0) { + + $notice = new WechatOrderFinishNotice(); + + return $notice->handle($subscribe, $params); + + } else { + + $notice = new SmsOrderFinishNotice(); + + return $notice->handle($user, $params); + } + } + + public function createTask(OrderModel $order) + { + $task = new TaskModel(); + + $itemInfo = [ + 'order' => ['id' => $order->id], + ]; + + $task->item_id = $order->id; + $task->item_info = $itemInfo; + $task->item_type = TaskModel::TYPE_NOTICE_ORDER_FINISH; + $task->priority = TaskModel::PRIORITY_HIGH; + $task->status = TaskModel::STATUS_PENDING; + + $task->create(); + } + +} diff --git a/app/Services/Logic/Order/OrderCreate.php b/app/Services/Logic/Order/OrderCreate.php index b829b21e..d03ed8d5 100644 --- a/app/Services/Logic/Order/OrderCreate.php +++ b/app/Services/Logic/Order/OrderCreate.php @@ -221,7 +221,7 @@ class OrderCreate extends Service protected function incrUserDailyOrderCount(UserModel $user) { - $this->eventsManager->fire('userDailyCounter:incrOrderCount', $this, $user); + $this->eventsManager->fire('UserDailyCounter:incrOrderCount', $this, $user); } } diff --git a/app/Services/Logic/Point/GiftInfo.php b/app/Services/Logic/Point/GiftInfo.php new file mode 100644 index 00000000..4cb7caf8 --- /dev/null +++ b/app/Services/Logic/Point/GiftInfo.php @@ -0,0 +1,53 @@ +checkGift($id); + + if ($gift->type == PointGift::TYPE_COURSE) { + $gift = $this->getCourseGift($gift); + } + + $gift->details = kg_parse_markdown($gift->details); + + return [ + 'id' => $gift->id, + 'name' => $gift->name, + 'cover' => $gift->cover, + 'details' => $gift->details, + 'attrs' => $gift->attrs, + 'type' => $gift->type, + 'stock' => $gift->stock, + 'point' => $gift->point, + 'redeem_limit' => $gift->redeem_limit, + 'redeem_count' => $gift->redeem_count, + ]; + } + + protected function getCourseGift(PointGift $gift) + { + $courseId = $gift->attrs['id'] ?? 0; + + $course = $this->checkCourse($courseId); + + $gift->name = $course->title; + $gift->cover = $course->cover; + $gift->details = $course->details; + + return $gift; + } + +} diff --git a/app/Services/Logic/Point/GiftList.php b/app/Services/Logic/Point/GiftList.php new file mode 100644 index 00000000..d3a7b16b --- /dev/null +++ b/app/Services/Logic/Point/GiftList.php @@ -0,0 +1,61 @@ +getParams(); + + $params['published'] = 1; + + $sort = $pagerQuery->getSort(); + $page = $pagerQuery->getPage(); + $limit = $pagerQuery->getLimit(); + + $giftRepo = new PointGiftRepo(); + + $pager = $giftRepo->paginate($params, $sort, $page, $limit); + + return $this->handleGifts($pager); + } + + protected function handleGifts($pager) + { + if ($pager->total_items == 0) { + return $pager; + } + + $baseUrl = kg_cos_url(); + + $items = []; + + foreach ($pager->items->toArray() as $gift) { + + $gift['cover'] = $baseUrl . $gift['cover']; + + $items[] = [ + 'id' => $gift['id'], + 'name' => $gift['name'], + 'cover' => $gift['cover'], + 'details' => $gift['details'], + 'type' => $gift['type'], + 'point' => $gift['point'], + 'redeem_count' => $gift['redeem_count'], + ]; + } + + $pager->items = $items; + + return $pager; + } + +} diff --git a/app/Services/Logic/Point/HotGiftList.php b/app/Services/Logic/Point/HotGiftList.php new file mode 100644 index 00000000..0564722b --- /dev/null +++ b/app/Services/Logic/Point/HotGiftList.php @@ -0,0 +1,20 @@ +setLimit(5); + + return $cache->get() ?: []; + } + +} diff --git a/app/Services/Logic/Point/PointHistory.php b/app/Services/Logic/Point/PointHistory.php new file mode 100644 index 00000000..ef6641fd --- /dev/null +++ b/app/Services/Logic/Point/PointHistory.php @@ -0,0 +1,440 @@ +getSettings('point'); + + $pointEnabled = $setting['enabled'] ?? 0; + + if ($pointEnabled == 0) return; + + $ruleEnabled = $setting['consume_rule']['enabled'] ?? 0; + + if ($ruleEnabled == 0) return; + + $ruleRate = $setting['consume_rule']['rate'] ?? 0; + + if ($ruleRate <= 0) return; + + $eventId = $order->id; + $eventType = PointHistoryModel::EVENT_ORDER_CONSUME; + $eventPoint = $ruleRate * $order->amount; + + $historyRepo = new PointHistoryRepo(); + + $history = $historyRepo->findEventHistory($eventId, $eventType); + + if ($history) return; + + $userRepo = new UserRepo(); + + $user = $userRepo->findById($order->owner_id); + + $eventInfo = [ + 'order' => [ + 'sn' => $order->sn, + 'subject' => $order->subject, + 'amount' => $order->amount, + ] + ]; + + $history = new PointHistoryModel(); + + $history->user_id = $user->id; + $history->user_name = $user->name; + $history->event_id = $eventId; + $history->event_type = $eventType; + $history->event_point = $eventPoint; + $history->event_info = $eventInfo; + + $this->handlePointHistory($history); + } + + public function handlePointRedeem(PointRedeemModel $redeem) + { + $setting = $this->getSettings('point'); + + $pointEnabled = $setting['enabled'] ?? 0; + + if ($pointEnabled == 0) return; + + $eventId = $redeem->id; + $eventType = PointHistoryModel::EVENT_POINT_REDEEM; + $eventPoint = 0 - $redeem->gift_point; + + $historyRepo = new PointHistoryRepo(); + + $history = $historyRepo->findEventHistory($eventId, $eventType); + + if ($history) return; + + $userRepo = new UserRepo(); + + $user = $userRepo->findById($redeem->user_id); + + $eventInfo = [ + 'point_redeem' => [ + 'id' => $redeem->id, + 'gift_id' => $redeem->gift_id, + 'gift_name' => $redeem->gift_name, + 'gift_type' => $redeem->gift_type, + 'gift_point' => $redeem->gift_point, + ] + ]; + + $history = new PointHistoryModel(); + + $history->user_id = $user->id; + $history->user_name = $user->name; + $history->event_id = $eventId; + $history->event_type = $eventType; + $history->event_point = $eventPoint; + $history->event_info = $eventInfo; + + $this->handlePointHistory($history); + } + + public function handlePointRefund(PointRedeemModel $redeem) + { + $eventId = $redeem->id; + $eventType = PointHistoryModel::EVENT_POINT_REFUND; + $eventPoint = $redeem->gift_point; + + $historyRepo = new PointHistoryRepo(); + + $history = $historyRepo->findEventHistory($eventId, $eventType); + + if ($history) return; + + $userRepo = new UserRepo(); + + $user = $userRepo->findById($redeem->user_id); + + $eventInfo = [ + 'point_redeem' => [ + 'id' => $redeem->id, + 'gift_id' => $redeem->gift_id, + 'gift_name' => $redeem->gift_name, + 'gift_type' => $redeem->gift_type, + 'gift_point' => $redeem->gift_point, + ] + ]; + + $history = new PointHistoryModel(); + + $history->user_id = $user->id; + $history->user_name = $user->name; + $history->event_id = $eventId; + $history->event_type = $eventType; + $history->event_point = $eventPoint; + $history->event_info = $eventInfo; + + $this->handlePointHistory($history); + } + + public function handleSiteVisit(UserModel $user) + { + $setting = $this->getSettings('point'); + + $pointEnabled = $setting['enabled'] ?? 0; + + if ($pointEnabled == 0) return; + + $eventRule = json_decode($setting['event_rule'], true); + + $eventEnabled = $eventRule['site_visit']['enabled'] ?? 0; + + if ($eventEnabled == 0) return; + + $eventPoint = $eventRule['site_visit']['point'] ?? 0; + + if ($eventPoint <= 0) return; + + $eventId = $user->id; + $eventType = PointHistoryModel::EVENT_SITE_VISIT; + $eventInfo = '每日访问'; + + $historyRepo = new PointHistoryRepo(); + + $history = $historyRepo->findDailyEventHistory($eventId, $eventType, date('Ymd')); + + if ($history) return; + + $history = new PointHistoryModel(); + + $history->user_id = $user->id; + $history->user_name = $user->name; + $history->event_id = $eventId; + $history->event_type = $eventType; + $history->event_point = $eventPoint; + $history->event_info = $eventInfo; + + $this->handlePointHistory($history); + } + + public function handleAccountRegister(UserModel $user) + { + $setting = $this->getSettings('point'); + + $pointEnabled = $setting['enabled'] ?? 0; + + if ($pointEnabled == 0) return; + + $eventRule = json_decode($setting['event_rule'], true); + + $eventEnabled = $eventRule['account_register']['enabled'] ?? 0; + + if ($eventEnabled == 0) return; + + $eventPoint = $eventRule['account_register']['point'] ?? 0; + + if ($eventPoint <= 0) return; + + $eventId = $user->id; + $eventType = PointHistoryModel::EVENT_ACCOUNT_REGISTER; + $eventInfo = '帐号注册'; + + $historyRepo = new PointHistoryRepo(); + + $history = $historyRepo->findDailyEventHistory($eventId, $eventType, date('Ymd')); + + if ($history) return; + + $history = new PointHistoryModel(); + + $history->user_id = $user->id; + $history->user_name = $user->name; + $history->event_id = $user->id; + $history->event_type = $eventType; + $history->event_point = $eventPoint; + $history->event_info = $eventInfo; + + $this->handlePointHistory($history); + } + + public function handleChapterStudy(ChapterUserModel $chapterUser) + { + $setting = $this->getSettings('point'); + + $pointEnabled = $setting['enabled'] ?? 0; + + if ($pointEnabled == 0) return; + + $eventRule = json_decode($setting['event_rule'], true); + + $eventEnabled = $eventRule['chapter_study']['enabled'] ?? 0; + + if ($eventEnabled == 0) return; + + $eventPoint = $eventRule['chapter_study']['point'] ?? 0; + + if ($eventPoint <= 0) return; + + $eventId = $chapterUser->id; + $eventType = PointHistoryModel::EVENT_CHAPTER_STUDY; + + $historyRepo = new PointHistoryRepo(); + + $history = $historyRepo->findEventHistory($eventId, $eventType); + + if ($history) return; + + $userRepo = new UserRepo(); + + $user = $userRepo->findById($chapterUser->user_id); + + $courseRepo = new CourseRepo(); + + $course = $courseRepo->findById($chapterUser->course_id); + + $chapterRepo = new ChapterRepo(); + + $chapter = $chapterRepo->findById($chapterUser->chapter_id); + + $eventInfo = [ + 'course' => [ + 'id' => $course->id, + 'title' => $course->title, + ], + 'chapter' => [ + 'id' => $chapter->id, + 'title' => $chapter->title, + ] + ]; + + $history = new PointHistoryModel(); + + $history->user_id = $user->id; + $history->user_name = $user->name; + $history->event_id = $eventId; + $history->event_type = $eventType; + $history->event_info = $eventInfo; + $history->event_point = $eventPoint; + + $this->handlePointHistory($history); + } + + public function handleCourseReview(ReviewModel $review) + { + $setting = $this->getSettings('point'); + + $pointEnabled = $setting['enabled'] ?? 0; + + if ($pointEnabled == 0) return; + + $eventRule = json_decode($setting['event_rule'], true); + + $eventEnabled = $eventRule['course_review']['enabled'] ?? 0; + + if ($eventEnabled == 0) return; + + $eventPoint = $eventRule['course_review']['point'] ?? 0; + + if ($eventPoint <= 0) return; + + $eventId = $review->id; + $eventType = PointHistoryModel::EVENT_COURSE_REVIEW; + + $historyRepo = new PointHistoryRepo(); + + $history = $historyRepo->findEventHistory($eventId, $eventType); + + if ($history) return; + + $userRepo = new UserRepo(); + + $user = $userRepo->findById($review->owner_id); + + $courseRepo = new CourseRepo(); + + $course = $courseRepo->findById($review->course_id); + + $eventInfo = [ + 'course' => [ + 'id' => $course->id, + 'title' => $course->title, + ] + ]; + + $history = new PointHistoryModel(); + + $history->user_id = $user->id; + $history->user_name = $user->name; + $history->event_id = $eventId; + $history->event_type = $eventType; + $history->event_info = $eventInfo; + $history->event_point = $eventPoint; + + $this->handlePointHistory($history); + } + + public function handleImDiscuss(ImMessageModel $message) + { + $setting = $this->getSettings('point'); + + $pointEnabled = $setting['enabled'] ?? 0; + + if ($pointEnabled == 0) return; + + $eventRule = json_decode($setting['event_rule'], true); + + $eventEnabled = $eventRule['im_discuss']['enabled'] ?? 0; + + if ($eventEnabled == 0) return; + + $eventPoint = $eventRule['im_discuss']['point'] ?? 0; + + if ($eventPoint <= 0) return; + + $eventId = $message->sender_id; + $eventType = PointHistoryModel::EVENT_IM_DISCUSS; + $eventInfo = '每日微聊'; + + $historyRepo = new PointHistoryRepo(); + + $history = $historyRepo->findDailyEventHistory($eventId, $eventType, date('Ymd')); + + if ($history) return; + + $userRepo = new UserRepo(); + + $user = $userRepo->findById($message->sender_id); + + $history = new PointHistoryModel(); + + $history->user_id = $user->id; + $history->user_name = $user->name; + $history->event_id = $eventId; + $history->event_type = $eventType; + $history->event_info = $eventInfo; + $history->event_point = $eventPoint; + + $this->handlePointHistory($history); + } + + protected function handlePointHistory(PointHistoryModel $history) + { + $logger = $this->getLogger('point'); + + try { + + $this->db->begin(); + + if ($history->create() === false) { + throw new \RuntimeException('Create Point History Failed'); + } + + $userRepo = new UserRepo(); + + $balance = $userRepo->findUserBalance($history->user_id); + + if ($balance) { + $balance->user_id = $history->user_id; + $balance->point += $history->event_point; + $result = $balance->update(); + } else { + $balance = new UserBalanceModel(); + $balance->user_id = $history->user_id; + $balance->point = $history->event_point; + $result = $balance->create(); + } + + if ($result === false) { + throw new \RuntimeException('Save User Balance Failed'); + } + + $this->db->commit(); + + } catch (\Exception $e) { + + $this->db->rollback(); + + $logger->error('Point History Exception ' . kg_json_encode([ + 'code' => $e->getCode(), + 'message' => $e->getMessage(), + ])); + + throw new \RuntimeException('sys.trans_rollback'); + } + } + +} diff --git a/app/Services/Logic/Point/PointRedeem.php b/app/Services/Logic/Point/PointRedeem.php new file mode 100644 index 00000000..5be3cc65 --- /dev/null +++ b/app/Services/Logic/Point/PointRedeem.php @@ -0,0 +1,129 @@ +request->getPost('gift_id', ['trim', 'int']); + + $gift = $this->checkGift($giftId); + + $user = $this->getLoginUser(); + + $validator = new PointRedeemValidator(); + + $validator->checkIfAllowRedeem($gift, $user); + + $this->createPointRedeem($gift, $user); + } + + protected function createPointRedeem(PointGiftModel $gift, UserModel $user) + { + $logger = $this->getLogger('point'); + + $itemId = "point_redeem:{$gift->id}"; + + $lockId = LockUtil::addLock($itemId); + + if ($lockId === false) { + throw new \RuntimeException('Add Lock Failed'); + } + + try { + + $this->db->begin(); + + $redeem = new PointRedeemModel(); + + $redeem->user_id = $user->id; + $redeem->user_name = $user->name; + $redeem->gift_id = $gift->id; + $redeem->gift_type = $gift->type; + $redeem->gift_name = $gift->name; + $redeem->gift_point = $gift->point; + + if ($gift->type == PointGiftModel::TYPE_GOODS) { + $userRepo = new UserRepo(); + $contact = $userRepo->findUserContact($user->id); + $redeem->contact_name = $contact->name; + $redeem->contact_phone = $contact->phone; + $redeem->contact_address = $contact->fullAddress(); + } + + $result = $redeem->create(); + + if ($result === false) { + throw new \RuntimeException('Create Point Redeem Failed'); + } + + $gift->stock -= 1; + $gift->redeem_count += 1; + + if ($gift->update() === false) { + throw new \RuntimeException('Decrease Gift Stock Failed'); + } + + $task = new TaskModel(); + + $itemInfo = [ + 'point_redeem' => [ + 'id' => $redeem->id, + 'user_id' => $redeem->user_id, + 'gift_id' => $redeem->gift_id, + ] + ]; + + $task->item_id = $redeem->id; + $task->item_type = TaskModel::TYPE_POINT_GIFT_DELIVER; + $task->item_info = $itemInfo; + + $result = $task->create(); + + if ($result === false) { + throw new \RuntimeException('Create Gift Deliver Task Failed'); + } + + $this->handleRedeemPoint($redeem); + + $this->db->commit(); + + } catch (\Exception $e) { + + $this->db->rollback(); + + $logger->error('Point Redeem Exception ' . kg_json_encode([ + 'file' => $e->getFile(), + 'line' => $e->getLine(), + 'message' => $e->getMessage(), + ])); + + throw new \RuntimeException('sys.trans_rollback'); + } + + LockUtil::releaseLock($itemId, $lockId); + } + + protected function handleRedeemPoint(PointRedeemModel $redeem) + { + $service = new PointHistoryService(); + + $service->handlePointRedeem($redeem); + } + +} diff --git a/app/Services/Logic/PointGiftTrait.php b/app/Services/Logic/PointGiftTrait.php new file mode 100644 index 00000000..c7095fba --- /dev/null +++ b/app/Services/Logic/PointGiftTrait.php @@ -0,0 +1,17 @@ +checkGift($id); + } + +} diff --git a/app/Services/Logic/Refund/RefundCreate.php b/app/Services/Logic/Refund/RefundCreate.php index a3332928..bb9749ec 100644 --- a/app/Services/Logic/Refund/RefundCreate.php +++ b/app/Services/Logic/Refund/RefundCreate.php @@ -3,7 +3,6 @@ namespace App\Services\Logic\Refund; use App\Models\Refund as RefundModel; -use App\Models\Task; use App\Models\Task as TaskModel; use App\Repos\Order as OrderRepo; use App\Services\Logic\OrderTrait; @@ -19,6 +18,8 @@ class RefundCreate extends Service public function handle() { + $logger = $this->getLogger('refund'); + $post = $this->request->getPost(); $order = $this->checkOrderBySn($post['order_sn']); @@ -47,42 +48,61 @@ class RefundCreate extends Service $validator->checkAmount($order->amount, $refundAmount); - $refund = new RefundModel(); + try { - $refund->subject = $order->subject; - $refund->amount = $refundAmount; - $refund->apply_note = $applyNote; - $refund->order_id = $order->id; - $refund->trade_id = $trade->id; - $refund->owner_id = $user->id; - $refund->status = RefundModel::STATUS_APPROVED; - $refund->review_note = '退款周期内无条件审批'; + $this->db->begin(); - $refund->create(); + $refund = new RefundModel(); - $task = new TaskModel(); + $refund->subject = $order->subject; + $refund->amount = $refundAmount; + $refund->apply_note = $applyNote; + $refund->order_id = $order->id; + $refund->trade_id = $trade->id; + $refund->owner_id = $user->id; + $refund->status = RefundModel::STATUS_APPROVED; + $refund->review_note = '退款周期内无条件审批'; - /** - * 设定延迟,给取消退款一个调解机会 - */ - $itemInfo = [ - 'refund' => [ - 'id' => $refund->id, - 'order_id' => $refund->order_id, - 'trade_id' => $refund->trade_id, - ], - 'deadline' => time() + 3600 * 24 * 2, - ]; + if ($refund->create() === false) { + throw new \RuntimeException('Create Refund Failed'); + } - $task->item_id = $refund->id; - $task->item_type = TaskModel::TYPE_REFUND; - $task->item_info = $itemInfo; - $task->priority = TaskModel::PRIORITY_MIDDLE; - $task->status = TaskModel::STATUS_PENDING; + $task = new TaskModel(); - $task->create(); + $itemInfo = [ + 'refund' => [ + 'id' => $refund->id, + 'order_id' => $refund->order_id, + 'trade_id' => $refund->trade_id, + ], + ]; - return $refund; + $task->item_id = $refund->id; + $task->item_type = TaskModel::TYPE_REFUND; + $task->item_info = $itemInfo; + $task->priority = TaskModel::PRIORITY_MIDDLE; + $task->status = TaskModel::STATUS_PENDING; + + if ($task->create() === false) { + throw new \RuntimeException('Create Refund Task Failed'); + } + + $this->db->commit(); + + return $refund; + + } catch (\Exception $e) { + + $this->db->rollback(); + + $logger->error('Create Refund Exception ' . kg_json_encode([ + 'file' => $e->getFile(), + 'line' => $e->getLine(), + 'message' => $e->getMessage(), + ])); + + throw new \RuntimeException('sys.trans_rollback'); + } } } diff --git a/app/Services/Logic/Review/ReviewCreate.php b/app/Services/Logic/Review/ReviewCreate.php index b56d38fe..1b4d3c37 100644 --- a/app/Services/Logic/Review/ReviewCreate.php +++ b/app/Services/Logic/Review/ReviewCreate.php @@ -54,6 +54,8 @@ class ReviewCreate extends Service $this->updateCourseRating($course); + $this->eventsManager->fire('Review:afterCreate', $this, $review); + return $review; } diff --git a/app/Services/Logic/Review/ReviewLike.php b/app/Services/Logic/Review/ReviewLike.php index 033371a4..5ae74f52 100644 --- a/app/Services/Logic/Review/ReviewLike.php +++ b/app/Services/Logic/Review/ReviewLike.php @@ -78,7 +78,7 @@ class ReviewLike extends Service protected function incrUserDailyReviewLikeCount(UserModel $user) { - $this->eventsManager->fire('userDailyCounter:incrReviewLikeCount', $this, $user); + $this->eventsManager->fire('UserDailyCounter:incrReviewLikeCount', $this, $user); } } diff --git a/app/Services/Logic/User/Console/BalanceInfo.php b/app/Services/Logic/User/Console/BalanceInfo.php new file mode 100644 index 00000000..656d4253 --- /dev/null +++ b/app/Services/Logic/User/Console/BalanceInfo.php @@ -0,0 +1,32 @@ +getLoginUser(); + + $userRepo = new UserRepo(); + + $balance = $userRepo->findUserBalance($user->id); + + if (!$balance) { + return [ + 'cash' => 0.00, + 'point' => 0, + ]; + } + + return [ + 'cash' => $balance->cash, + 'point' => $balance->point, + ]; + } + +} diff --git a/app/Services/Logic/User/Console/ContactInfo.php b/app/Services/Logic/User/Console/ContactInfo.php new file mode 100644 index 00000000..1125baec --- /dev/null +++ b/app/Services/Logic/User/Console/ContactInfo.php @@ -0,0 +1,45 @@ +getLoginUser(); + + $userRepo = new UserRepo(); + + $contact = $userRepo->findUserContact($user->id); + + if (!$contact) { + return $this->defaultContactInfo(); + } + + return [ + 'name' => $contact->name, + 'phone' => $contact->phone, + 'add_province' => $contact->add_province, + 'add_city' => $contact->add_city, + 'add_county' => $contact->add_county, + 'add_other' => $contact->add_other, + ]; + } + + protected function defaultContactInfo() + { + return [ + 'name' => '', + 'phone' => '', + 'add_province' => '', + 'add_city' => '', + 'add_county' => '', + 'add_other' => '', + ]; + } + +} diff --git a/app/Services/Logic/User/Console/ContactUpdate.php b/app/Services/Logic/User/Console/ContactUpdate.php new file mode 100644 index 00000000..d8ab0aaf --- /dev/null +++ b/app/Services/Logic/User/Console/ContactUpdate.php @@ -0,0 +1,35 @@ +request->getPost(); + + $user = $this->getLoginUser(); + + $validator = new UserContactValidator(); + + $contact = new UserContactModel(); + + $contact->name = $validator->checkName($post['name']); + $contact->phone = $validator->checkPhone($post['phone']); + $contact->add_province = $validator->checkAddProvince($post['address']['province']); + $contact->add_city = $validator->checkAddCity($post['address']['city']); + $contact->add_county = $validator->checkAddCounty($post['address']['county']); + $contact->add_other = $validator->checkAddOther($post['address']['other']); + $contact->user_id = $user->id; + + $contact->save(); + + return $contact; + } + +} diff --git a/app/Services/Logic/User/Console/PointHistory.php b/app/Services/Logic/User/Console/PointHistory.php new file mode 100644 index 00000000..1a655619 --- /dev/null +++ b/app/Services/Logic/User/Console/PointHistory.php @@ -0,0 +1,61 @@ +getLoginUser(); + + $pagerQuery = new PagerQuery(); + + $params = $pagerQuery->getParams(); + + $params['user_id'] = $user->id; + $params['deleted'] = 0; + + $sort = $pagerQuery->getSort(); + $page = $pagerQuery->getPage(); + $limit = $pagerQuery->getLimit(); + + $historyRepo = new PointHistoryRepo(); + + $pager = $historyRepo->paginate($params, $sort, $page, $limit); + + return $this->handlePager($pager); + } + + public function handlePager($pager) + { + if ($pager->total_items == 0) { + return $pager; + } + + $items = []; + + foreach ($pager->items as $item) { + $items[] = [ + 'id' => $item->id, + 'event_id' => $item->event_id, + 'event_type' => $item->event_type, + 'event_info' => $item->event_info, + 'event_point' => $item->event_point, + 'create_time' => $item->create_time, + ]; + } + + $pager->items = $items; + + return $pager; + } + +} diff --git a/app/Services/Logic/User/Console/PointRedeemList.php b/app/Services/Logic/User/Console/PointRedeemList.php new file mode 100644 index 00000000..9b65d41f --- /dev/null +++ b/app/Services/Logic/User/Console/PointRedeemList.php @@ -0,0 +1,73 @@ +getLoginUser(); + + $pagerQuery = new PagerQuery(); + + $params = $pagerQuery->getParams(); + + $params['user_id'] = $user->id; + $params['deleted'] = 0; + + $sort = $pagerQuery->getSort(); + $page = $pagerQuery->getPage(); + $limit = $pagerQuery->getLimit(); + + $redeemRepo = new PointRedeemRepo(); + + $pager = $redeemRepo->paginate($params, $sort, $page, $limit); + + return $this->handlePager($pager); + } + + public function handlePager($pager) + { + if ($pager->total_items == 0) { + return $pager; + } + + $items = []; + + foreach ($pager->items as $item) { + $items[] = [ + 'id' => $item->id, + 'status' => $item->status, + 'create_time' => $item->create_time, + 'user' => [ + 'id' => $item->user_id, + 'name' => $item->user_name, + ], + 'gift' => [ + 'id' => $item->gift_id, + 'name' => $item->gift_name, + 'type' => $item->gift_type, + 'point' => $item->gift_point, + ], + 'contact' => [ + 'name' => $item->contact_name, + 'phone' => $item->contact_phone, + 'address' => $item->contact_address, + ], + ]; + } + + $pager->items = $items; + + return $pager; + } + +} diff --git a/app/Services/Pay/Alipay.php b/app/Services/Pay/Alipay.php index a8498d92..25ce01dc 100644 --- a/app/Services/Pay/Alipay.php +++ b/app/Services/Pay/Alipay.php @@ -193,7 +193,7 @@ class Alipay extends PayService $trade->channel_sn = $data->trade_no; - $this->eventsManager->fire('pay:afterPay', $this, $trade); + $this->eventsManager->fire('Trade:afterPay', $this, $trade); $trade = $tradeRepo->findById($trade->id); diff --git a/app/Services/Pay/Wxpay.php b/app/Services/Pay/Wxpay.php index ba94fb0e..89ee126a 100644 --- a/app/Services/Pay/Wxpay.php +++ b/app/Services/Pay/Wxpay.php @@ -194,7 +194,7 @@ class Wxpay extends PayService $trade->channel_sn = $data->transaction_id; - $this->eventsManager->fire('pay:afterPay', $this, $trade); + $this->eventsManager->fire('Trade:afterPay', $this, $trade); $trade = $tradeRepo->findById($trade->id); diff --git a/app/Services/Throttle.php b/app/Services/Throttle.php index 7a5f4140..341ffd37 100644 --- a/app/Services/Throttle.php +++ b/app/Services/Throttle.php @@ -19,18 +19,18 @@ class Throttle extends Service $cacheKey = $this->getCacheKey($sign); + if ($cache->ttl($cacheKey) < 1) { + $cache->save($cacheKey, 0, $config->path('throttle.lifetime')); + } + $rateLimit = $cache->get($cacheKey); - if ($rateLimit) { - if ($rateLimit >= $config->path('throttle.rate_limit')) { - return false; - } else { - $cache->increment($cacheKey, 1); - } - } else { - $cache->save($cacheKey, 1, $config->path('throttle.lifetime')); + if ($rateLimit >= $config->path('throttle.rate_limit')) { + return false; } + $cache->increment($cacheKey, 1); + return true; } diff --git a/app/Traits/Auth.php b/app/Traits/Auth.php index 6cde45db..a8a87a13 100644 --- a/app/Traits/Auth.php +++ b/app/Traits/Auth.php @@ -2,12 +2,11 @@ namespace App\Traits; +use App\Caches\User as UserCache; use App\Models\User as UserModel; -use App\Repos\User as UserRepo; use App\Services\Auth as AuthService; use App\Validators\Validator as AppValidator; use Phalcon\Di as Di; -use Phalcon\Events\Manager as EventsManager; trait Auth { @@ -23,18 +22,9 @@ trait Auth return $this->getGuestUser(); } - $userRepo = new UserRepo(); + $userCache = new UserCache(); - $user = $userRepo->findById($authUser['id']); - - /** - * @var EventsManager $eventsManager - */ - $eventsManager = Di::getDefault()->getShared('eventsManager'); - - $eventsManager->fire('user:online', $this, $user); - - return $user; + return $userCache->get($authUser['id']); } /** @@ -48,9 +38,9 @@ trait Auth $validator->checkAuthUser($authUser['id']); - $userRepo = new UserRepo(); + $userCache = new UserCache(); - return $userRepo->findById($authUser['id']); + return $userCache->get($authUser['id']); } /** diff --git a/app/Traits/Security.php b/app/Traits/Security.php index 408d7339..51eba092 100644 --- a/app/Traits/Security.php +++ b/app/Traits/Security.php @@ -30,13 +30,6 @@ trait Security $validator->checkRateLimit(); } - public function checkApiSignature() - { - $validator = new SecurityValidator(); - - $validator->checkApiSignature(); - } - public function isNotSafeRequest() { /** diff --git a/app/Validators/Help.php b/app/Validators/Help.php index e9da769d..e3f406f4 100644 --- a/app/Validators/Help.php +++ b/app/Validators/Help.php @@ -91,7 +91,7 @@ class Help extends Validator throw new BadRequestException('help.content_too_short'); } - if ($length > 3000) { + if ($length > 30000) { throw new BadRequestException('help.content_too_long'); } diff --git a/app/Validators/ImGroup.php b/app/Validators/ImGroup.php index d2118a43..0ca4bb51 100644 --- a/app/Validators/ImGroup.php +++ b/app/Validators/ImGroup.php @@ -77,9 +77,9 @@ class ImGroup extends Validator return $value; } - public function checkAbout($name) + public function checkAbout($about) { - $value = $this->filter->sanitize($name, ['trim', 'string']); + $value = $this->filter->sanitize($about, ['trim', 'string']); $length = kg_strlen($value); diff --git a/app/Validators/Page.php b/app/Validators/Page.php index 5925d029..078b2536 100644 --- a/app/Validators/Page.php +++ b/app/Validators/Page.php @@ -86,7 +86,7 @@ class Page extends Validator throw new BadRequestException('page.content_too_short'); } - if ($length > 3000) { + if ($length > 30000) { throw new BadRequestException('page.content_too_long'); } diff --git a/app/Validators/PointGift.php b/app/Validators/PointGift.php new file mode 100644 index 00000000..8e7448e2 --- /dev/null +++ b/app/Validators/PointGift.php @@ -0,0 +1,175 @@ +checkId($id); + + $giftCache = new PointGiftCache(); + + $gift = $giftCache->get($id); + + if (!$gift) { + throw new BadRequestException('point_gift.not_found'); + } + + return $gift; + } + + public function checkGift($id) + { + $this->checkId($id); + + $giftRepo = new PointGiftRepo(); + + $gift = $giftRepo->findById($id); + + if (!$gift) { + throw new BadRequestException('point_gift.not_found'); + } + + return $gift; + } + + public function checkId($id) + { + $id = intval($id); + + $maxGiftIdCache = new MaxPointGiftIdCache(); + + $maxId = $maxGiftIdCache->get(); + + if ($id < 1 || $id > $maxId) { + throw new BadRequestException('point_gift.not_found'); + } + } + + public function checkName($name) + { + $value = $this->filter->sanitize($name, ['trim', 'string']); + + $length = kg_strlen($value); + + if ($length < 2) { + throw new BadRequestException('point_gift.name_too_short'); + } + + if ($length > 30) { + throw new BadRequestException('point_gift.name_too_long'); + } + + return $value; + } + + public function checkDetails($details) + { + $value = $this->filter->sanitize($details, ['trim', 'string']); + + $length = kg_strlen($value); + + if ($length > 30000) { + throw new BadRequestException('point_gift.details_too_long'); + } + + return $value; + } + + public function checkCover($cover) + { + $value = $this->filter->sanitize($cover, ['trim', 'string']); + + if (!CommonValidator::url($value)) { + throw new BadRequestException('point_gift.invalid_cover'); + } + + return kg_cos_img_style_trim($value); + } + + public function checkAttrs(PointGiftModel $gift, array $attrs) + { + $result = $gift->attrs; + + if ($gift->type == PointGiftModel::TYPE_GOODS) { + $result['url'] = $attrs['url']; + } + + return $result; + } + + public function checkType($type) + { + $list = PointGiftModel::types(); + + if (!isset($list[$type])) { + throw new BadRequestException('point_gift.invalid_type'); + } + + return $type; + } + + public function checkPoint($point) + { + $value = $this->filter->sanitize($point, ['trim', 'int']); + + if ($value < 1 || $value > 999999) { + throw new BadRequestException('point_gift.invalid_point'); + } + + return $value; + } + + public function checkStock($stock) + { + $value = $this->filter->sanitize($stock, ['trim', 'int']); + + if ($value < 1 || $value > 999999) { + throw new BadRequestException('point_gift.invalid_stock'); + } + + return $value; + } + + public function checkRedeemLimit($limit) + { + $value = $this->filter->sanitize($limit, ['trim', 'int']); + + if ($value < 1 || $value > 999999) { + throw new BadRequestException('point_gift.invalid_redeem_limit'); + } + + return $value; + } + + public function checkPublishStatus($status) + { + if (!in_array($status, [0, 1])) { + throw new BadRequestException('point_gift.invalid_publish_status'); + } + + return $status; + } + + public function checkCourse($id) + { + $validator = new Course(); + + return $validator->checkCourse($id); + } + +} diff --git a/app/Validators/PointRedeem.php b/app/Validators/PointRedeem.php new file mode 100644 index 00000000..6a64d590 --- /dev/null +++ b/app/Validators/PointRedeem.php @@ -0,0 +1,118 @@ +findById($id); + + if (!$redeem) { + throw new BadRequestException('point_redeem.not_found'); + } + + return $redeem; + } + + public function checkGift($giftId) + { + $validator = new PointGift(); + + return $validator->checkGift($giftId); + } + + public function checkIfAllowRedeem(PointGiftModel $gift, UserModel $user) + { + $this->checkStock($gift); + + $this->checkRedeemLimit($gift, $user); + + $this->checkPointBalance($gift, $user); + + if ($gift->type == PointGiftModel::TYPE_COURSE) { + + $validator = new Course(); + + $course = $validator->checkCourse($gift->attrs['id']); + + $this->checkIfAllowRedeemCourse($course, $user); + + } elseif ($gift->type == PointGiftModel::TYPE_GOODS) { + + $this->checkIfAllowRedeemGoods($user); + } + } + + protected function checkIfAllowRedeemCourse(CourseModel $course, UserModel $user) + { + if ($course->published == 0) { + throw new BadRequestException('point_redeem.course_not_published'); + } + + if ($course->market_price == 0) { + throw new BadRequestException('point_redeem.course_free'); + } + + $courseUserRepo = new CourseUserRepo(); + + $courseUser = $courseUserRepo->findCourseUser($course->id, $user->id); + + if ($courseUser && $courseUser->expiry_time > time()) { + throw new BadRequestException('point_redeem.course_owned'); + } + } + + protected function checkIfAllowRedeemGoods(UserModel $user) + { + $userRepo = new UserRepo(); + + $contact = $userRepo->findUserContact($user->id); + + if (!$contact) { + throw new BadRequestException('point_redeem.no_user_contact'); + } + } + + protected function checkStock(PointGiftModel $gift) + { + if ($gift->stock < 1) { + throw new BadRequestException('point_redeem.no_enough_stock'); + } + } + + protected function checkRedeemLimit(PointGiftModel $gift, UserModel $user) + { + $redeemRepo = new PointRedeemRepo(); + + $count = $redeemRepo->countUserGiftRedeems($user->id, $gift->id); + + if ($count >= $gift->redeem_limit) { + throw new BadRequestException('point_redeem.reach_redeem_limit'); + } + } + + protected function checkPointBalance(PointGiftModel $gift, UserModel $user) + { + $userRepo = new UserRepo(); + + $balance = $userRepo->findUserBalance($user->id); + + if (!$balance || $balance->point < $gift->point) { + throw new BadRequestException('point_redeem.no_enough_point'); + } + } + +} diff --git a/app/Validators/UserContact.php b/app/Validators/UserContact.php new file mode 100644 index 00000000..34304516 --- /dev/null +++ b/app/Validators/UserContact.php @@ -0,0 +1,101 @@ +findById($id); + + if (!$user) { + throw new BadRequestException('user_contact.not_found'); + } + + return $user; + } + + public function checkName($name) + { + $value = $this->filter->sanitize($name, ['trim', 'string']); + + $length = kg_strlen($value); + + if ($length < 2 || $length > 15) { + throw new BadRequestException('user_contact.invalid_name'); + } + + return $value; + } + + public function checkPhone($phone) + { + $value = $this->filter->sanitize($phone, ['trim', 'string']); + + if (!CommonValidator::phone($value)) { + throw new BadRequestException('user_contact.invalid_phone'); + } + + return $value; + } + + public function checkAddProvince($province) + { + $value = $this->filter->sanitize($province, ['trim', 'string']); + + $length = kg_strlen($value); + + if ($length < 2 || $length > 15) { + throw new BadRequestException('user_contact.invalid_add_province'); + } + + return $value; + } + + public function checkAddCity($city) + { + $value = $this->filter->sanitize($city, ['trim', 'string']); + + $length = kg_strlen($value); + + if ($length < 2 || $length > 15) { + throw new BadRequestException('user_contact.invalid_add_city'); + } + + return $value; + } + + public function checkAddCounty($county) + { + $value = $this->filter->sanitize($county, ['trim', 'string']); + + $length = kg_strlen($value); + + if ($length < 2 || $length > 15) { + throw new BadRequestException('user_contact.invalid_add_county'); + } + + return $value; + } + + public function checkAddOther($other) + { + $value = $this->filter->sanitize($other, ['trim', 'string']); + + $length = kg_strlen($value); + + if ($length < 5 || $length > 50) { + throw new BadRequestException('user_contact.invalid_add_other'); + } + + return $value; + } + +} diff --git a/config/errors.php b/config/errors.php index 16e5a804..ca812440 100644 --- a/config/errors.php +++ b/config/errors.php @@ -222,7 +222,7 @@ $error['page.not_found'] = '单页不存在'; $error['page.title_too_short'] = '标题太短(少于2个字符)'; $error['page.title_too_long'] = '标题太长(多于50个字符)'; $error['page.content_too_short'] = '内容太短(少于10个字符)'; -$error['page.content_too_long'] = '内容太长(多于3000个字符)'; +$error['page.content_too_long'] = '内容太长(多于30000个字符)'; $error['page.invalid_publish_status'] = '无效的发布状态'; /** @@ -232,7 +232,7 @@ $error['help.not_found'] = '帮助不存在'; $error['help.title_too_short'] = '标题太短(少于2个字符)'; $error['help.title_too_long'] = '标题太长(多于50个字符)'; $error['help.content_too_short'] = '内容太短(少于10个字符)'; -$error['help.content_too_long'] = '内容太长(多于60000个字符)'; +$error['help.content_too_long'] = '内容太长(多于30000个字符)'; $error['help.invalid_priority'] = '无效的排序数值(范围:1-255)'; $error['help.invalid_publish_status'] = '无效的发布状态'; @@ -244,7 +244,7 @@ $error['slide.invalid_platform'] = '无效的平台类型'; $error['slide.invalid_target'] = '无效的目标类型'; $error['slide.invalid_link'] = '无效的链接地址'; $error['slide.invalid_priority'] = '无效的排序数值(范围:1-255)'; -$error['slide.invalid_cover'] = '无效的封面图片'; +$error['slide.invalid_cover'] = '无效的封面'; $error['slide.title_too_short'] = '标题太短(少于2个字符)'; $error['slide.title_too_long'] = '标题太长(多于50个字符)'; $error['slide.summary_too_long'] = '简介太长(多于255个字符)'; @@ -356,4 +356,38 @@ $error['im_message.content_too_short'] = '消息内容太短(少于1字符)' $error['im_message.content_too_long'] = '消息内容太长(超过1000字符)'; $error['im_message.self_chat'] = '不能给自己发送消息'; +/** + * 联系信息相关 + */ +$error['user_contact.invalid_name'] = '无效的用户姓名'; +$error['user_contact.invalid_phone'] = '无效的手机号码'; +$error['user_contact.invalid_add_province'] = '无效的地址(省)'; +$error['user_contact.invalid_add_city'] = '无效的地址(市)'; +$error['user_contact.invalid_add_county'] = '无效的地址(区)'; +$error['user_contact.invalid_add_other'] = '无效的地址(详)'; + +/** + * 积分兑换相关 + */ +$error['point_gift.not_found'] = '礼品不存在'; +$error['point_gift.name_too_short'] = '礼品名称太短(少于2字符)'; +$error['point_gift.name_too_long'] = '礼品名称太长(超过30字符)'; +$error['point_gift.details_too_long'] = '礼品详情太长(多于30000个字符)'; +$error['point_gift.invalid_cover'] = '无效的封面'; +$error['point_gift.invalid_type'] = '无效的类型'; +$error['point_gift.invalid_point'] = '无效的积分值(范围1-999999)'; +$error['point_gift.invalid_stock'] = '无效的库存值(范围1-999999)'; +$error['point_gift.invalid_redeem_limit'] = '无效的兑换限额(范围1-999999)'; +$error['point_gift.invalid_publish_status'] = '无效的发布状态'; + +$error['point_redeem.not_found'] = '兑换不存在'; +$error['point_redeem.course_not_published'] = '课程尚未发布'; +$error['point_redeem.course_free'] = '课程当前免费,无需积分兑换'; +$error['point_redeem.course_owned'] = '您已经拥有课程,无需积分兑换'; +$error['point_redeem.no_user_contact'] = '您尚未设置收货地址,请前往用户中心设置'; +$error['point_redeem.reach_redeem_limit'] = '超出物品兑换限额'; +$error['point_redeem.no_enough_point'] = '您的积分余额不足以抵扣此次兑换'; +$error['point_redeem.no_enough_stock'] = '兑换物品库存不足'; + + return $error; diff --git a/config/events.php b/config/events.php index f4211779..f8caf678 100644 --- a/config/events.php +++ b/config/events.php @@ -1,11 +1,17 @@ Pay::class, - 'user' => User::class, - 'userDailyCounter' => UserDailyCounter::class, + 'UserDailyCounter' => UserDailyCounter::class, + 'ImMessage' => ImMessage::class, + 'Account' => Account::class, + 'Review' => Review::class, + 'Trade' => Trade::class, + 'Site' => Site::class, ]; \ No newline at end of file diff --git a/db/migrations/20210126024511_data_202101261130.php b/db/migrations/20210126024511_data_202101261130.php new file mode 100644 index 00000000..51ecdd03 --- /dev/null +++ b/db/migrations/20210126024511_data_202101261130.php @@ -0,0 +1,47 @@ + 1, 'rate' => 5]; + + $eventRule = [ + 'account_register' => ['enabled' => 1, 'point' => 100], + 'course_review' => ['enabled' => 1, 'point' => 50], + 'chapter_study' => ['enabled' => 1, 'point' => 10], + 'site_visit' => ['enabled' => 1, 'point' => 10], + 'im_discuss' => ['enabled' => 1, 'point' => 10], + ]; + + $rows = [ + [ + 'section' => 'point', + 'item_key' => 'enabled', + 'item_value' => 1, + ], + [ + 'section' => 'point', + 'item_key' => 'consume_rule', + 'item_value' => json_encode($consumeRule), + ], + [ + 'section' => 'point', + 'item_key' => 'event_rule', + 'item_value' => json_encode($eventRule), + ], + ]; + + $this->table('kg_setting')->insert($rows)->save(); + } + + public function down() + { + $this->getQueryBuilder() + ->delete('kg_setting') + ->where(['section' => 'point']) + ->execute(); + } + +} diff --git a/db/migrations/20210213093244_schema_202102131730.php b/db/migrations/20210213093244_schema_202102131730.php new file mode 100644 index 00000000..848f31d0 --- /dev/null +++ b/db/migrations/20210213093244_schema_202102131730.php @@ -0,0 +1,519 @@ +table('kg_point_gift', [ + 'id' => false, + 'primary_key' => ['id'], + 'engine' => 'InnoDB', + 'encoding' => 'utf8mb4', + 'collation' => 'utf8mb4_general_ci', + 'comment' => '', + 'row_format' => 'DYNAMIC', + ]) + ->addColumn('id', 'integer', [ + 'null' => false, + 'limit' => MysqlAdapter::INT_REGULAR, + 'signed' => false, + 'identity' => 'enable', + 'comment' => '主键编号', + ]) + ->addColumn('name', 'string', [ + 'null' => false, + 'default' => '', + 'limit' => 100, + 'collation' => 'utf8mb4_general_ci', + 'encoding' => 'utf8mb4', + 'comment' => '名称', + 'after' => 'id', + ]) + ->addColumn('cover', 'string', [ + 'null' => false, + 'default' => '', + 'limit' => 100, + 'collation' => 'utf8mb4_general_ci', + 'encoding' => 'utf8mb4', + 'comment' => '封面', + 'after' => 'name', + ]) + ->addColumn('details', 'text', [ + 'null' => false, + 'limit' => 65535, + 'collation' => 'utf8mb4_general_ci', + 'encoding' => 'utf8mb4', + 'comment' => '详情', + 'after' => 'cover', + ]) + ->addColumn('attrs', 'string', [ + 'null' => false, + 'default' => '', + 'limit' => 1000, + 'collation' => 'utf8mb4_general_ci', + 'encoding' => 'utf8mb4', + 'comment' => '扩展属性', + 'after' => 'details', + ]) + ->addColumn('type', 'integer', [ + 'null' => false, + 'default' => '0', + 'limit' => MysqlAdapter::INT_REGULAR, + 'signed' => false, + 'comment' => '类型', + 'after' => 'attrs', + ]) + ->addColumn('stock', 'integer', [ + 'null' => false, + 'default' => '0', + 'limit' => MysqlAdapter::INT_REGULAR, + 'signed' => false, + 'comment' => '库存', + 'after' => 'type', + ]) + ->addColumn('point', 'integer', [ + 'null' => false, + 'default' => '0', + 'limit' => MysqlAdapter::INT_REGULAR, + 'signed' => false, + 'comment' => '所需积分', + 'after' => 'stock', + ]) + ->addColumn('published', 'integer', [ + 'null' => false, + 'default' => '0', + 'limit' => MysqlAdapter::INT_REGULAR, + 'signed' => false, + 'comment' => '发布标识', + 'after' => 'point', + ]) + ->addColumn('deleted', 'integer', [ + 'null' => false, + 'default' => '0', + 'limit' => MysqlAdapter::INT_REGULAR, + 'signed' => false, + 'comment' => '删除标识', + 'after' => 'published', + ]) + ->addColumn('redeem_limit', 'integer', [ + 'null' => false, + 'default' => '1', + 'limit' => MysqlAdapter::INT_REGULAR, + 'signed' => false, + 'comment' => '兑换限额', + 'after' => 'deleted', + ]) + ->addColumn('redeem_count', 'integer', [ + 'null' => false, + 'default' => '0', + 'limit' => MysqlAdapter::INT_REGULAR, + 'signed' => false, + 'comment' => '兑换数量', + 'after' => 'redeem_limit', + ]) + ->addColumn('create_time', 'integer', [ + 'null' => false, + 'default' => '0', + 'limit' => MysqlAdapter::INT_REGULAR, + 'signed' => false, + 'comment' => '创建时间', + 'after' => 'redeem_count', + ]) + ->addColumn('update_time', 'integer', [ + 'null' => false, + 'default' => '0', + 'limit' => MysqlAdapter::INT_REGULAR, + 'signed' => false, + 'comment' => '更新时间', + 'after' => 'create_time', + ]) + ->create(); + + $this->table('kg_point_history', [ + 'id' => false, + 'primary_key' => ['id'], + 'engine' => 'InnoDB', + 'encoding' => 'utf8mb4', + 'collation' => 'utf8mb4_general_ci', + 'comment' => '', + 'row_format' => 'DYNAMIC', + ]) + ->addColumn('id', 'integer', [ + 'null' => false, + 'limit' => MysqlAdapter::INT_REGULAR, + 'signed' => false, + 'identity' => 'enable', + 'comment' => '主键编号', + ]) + ->addColumn('user_id', 'integer', [ + 'null' => false, + 'limit' => MysqlAdapter::INT_REGULAR, + 'signed' => false, + 'comment' => '用户编号', + 'after' => 'id', + ]) + ->addColumn('user_name', 'string', [ + 'null' => false, + 'default' => '', + 'limit' => 30, + 'collation' => 'utf8mb4_general_ci', + 'encoding' => 'utf8mb4', + 'comment' => '用户名称', + 'after' => 'user_id', + ]) + ->addColumn('event_id', 'integer', [ + 'null' => false, + 'limit' => MysqlAdapter::INT_REGULAR, + 'signed' => false, + 'comment' => '事件编号', + 'after' => 'user_name', + ]) + ->addColumn('event_type', 'integer', [ + 'null' => false, + 'limit' => MysqlAdapter::INT_REGULAR, + 'signed' => false, + 'comment' => '事件类型', + 'after' => 'event_id', + ]) + ->addColumn('event_info', 'string', [ + 'null' => false, + 'default' => '0', + 'limit' => 1000, + 'collation' => 'utf8mb4_general_ci', + 'encoding' => 'utf8mb4', + 'comment' => '事件内容', + 'after' => 'event_type', + ]) + ->addColumn('event_point', 'integer', [ + 'null' => false, + 'default' => '0', + 'limit' => MysqlAdapter::INT_REGULAR, + 'comment' => '事件积分', + 'after' => 'event_info', + ]) + ->addColumn('deleted', 'integer', [ + 'null' => false, + 'default' => '0', + 'limit' => MysqlAdapter::INT_REGULAR, + 'signed' => false, + 'comment' => '删除标识', + 'after' => 'event_point', + ]) + ->addColumn('create_time', 'integer', [ + 'null' => false, + 'default' => '0', + 'limit' => MysqlAdapter::INT_REGULAR, + 'signed' => false, + 'comment' => '创建时间', + 'after' => 'deleted', + ]) + ->addColumn('update_time', 'integer', [ + 'null' => false, + 'default' => '0', + 'limit' => MysqlAdapter::INT_REGULAR, + 'signed' => false, + 'comment' => '更新时间', + 'after' => 'create_time', + ]) + ->addIndex(['event_id', 'event_type'], [ + 'name' => 'event', + 'unique' => false, + ]) + ->addIndex(['user_id'], [ + 'name' => 'user_id', + 'unique' => false, + ]) + ->create(); + + $this->table('kg_point_redeem', [ + 'id' => false, + 'primary_key' => ['id'], + 'engine' => 'InnoDB', + 'encoding' => 'utf8mb4', + 'collation' => 'utf8mb4_general_ci', + 'comment' => '', + 'row_format' => 'DYNAMIC', + ]) + ->addColumn('id', 'integer', [ + 'null' => false, + 'limit' => MysqlAdapter::INT_REGULAR, + 'identity' => 'enable', + 'comment' => '主键编号', + ]) + ->addColumn('user_id', 'integer', [ + 'null' => false, + 'default' => '0', + 'limit' => MysqlAdapter::INT_REGULAR, + 'signed' => false, + 'comment' => '用户编号', + 'after' => 'id', + ]) + ->addColumn('user_name', 'string', [ + 'null' => false, + 'default' => '', + 'limit' => 30, + 'collation' => 'utf8mb4_general_ci', + 'encoding' => 'utf8mb4', + 'comment' => '用户名称', + 'after' => 'user_id', + ]) + ->addColumn('gift_id', 'integer', [ + 'null' => false, + 'default' => '0', + 'limit' => MysqlAdapter::INT_REGULAR, + 'signed' => false, + 'comment' => '礼品编号', + 'after' => 'user_name', + ]) + ->addColumn('gift_name', 'string', [ + 'null' => false, + 'default' => '', + 'limit' => 100, + 'collation' => 'utf8mb4_general_ci', + 'encoding' => 'utf8mb4', + 'comment' => '礼品名称', + 'after' => 'gift_id', + ]) + ->addColumn('gift_type', 'integer', [ + 'null' => false, + 'default' => '0', + 'limit' => MysqlAdapter::INT_REGULAR, + 'signed' => false, + 'comment' => '礼品类型', + 'after' => 'gift_name', + ]) + ->addColumn('gift_point', 'integer', [ + 'null' => false, + 'default' => '0', + 'limit' => MysqlAdapter::INT_REGULAR, + 'signed' => false, + 'comment' => '礼品积分', + 'after' => 'gift_type', + ]) + ->addColumn('contact_name', 'string', [ + 'null' => false, + 'default' => '', + 'limit' => 30, + 'collation' => 'utf8mb4_general_ci', + 'encoding' => 'utf8mb4', + 'comment' => '联系人', + 'after' => 'gift_point', + ]) + ->addColumn('contact_phone', 'string', [ + 'null' => false, + 'default' => '', + 'limit' => 30, + 'collation' => 'utf8mb4_general_ci', + 'encoding' => 'utf8mb4', + 'comment' => '联系电话', + 'after' => 'contact_name', + ]) + ->addColumn('contact_address', 'string', [ + 'null' => false, + 'default' => '', + 'limit' => 100, + 'collation' => 'utf8mb4_general_ci', + 'encoding' => 'utf8mb4', + 'comment' => '联系地址', + 'after' => 'contact_phone', + ]) + ->addColumn('remark', 'string', [ + 'null' => false, + 'default' => '', + 'limit' => 255, + 'collation' => 'utf8mb4_general_ci', + 'encoding' => 'utf8mb4', + 'comment' => '备注', + 'after' => 'contact_address', + ]) + ->addColumn('status', 'integer', [ + 'null' => false, + 'default' => '0', + 'limit' => MysqlAdapter::INT_REGULAR, + 'signed' => false, + 'comment' => '状态标识', + 'after' => 'remark', + ]) + ->addColumn('create_time', 'integer', [ + 'null' => false, + 'default' => '0', + 'limit' => MysqlAdapter::INT_REGULAR, + 'signed' => false, + 'comment' => '创建时间', + 'after' => 'status', + ]) + ->addColumn('update_time', 'integer', [ + 'null' => false, + 'default' => '0', + 'limit' => MysqlAdapter::INT_REGULAR, + 'signed' => false, + 'comment' => '更新时间', + 'after' => 'create_time', + ]) + ->addIndex(['gift_id'], [ + 'name' => 'gift_id', + 'unique' => false, + ]) + ->addIndex(['user_id'], [ + 'name' => 'user_id', + 'unique' => false, + ]) + ->create(); + + $this->table('kg_user_balance', [ + 'id' => false, + 'primary_key' => ['user_id'], + 'engine' => 'InnoDB', + 'encoding' => 'utf8mb4', + 'collation' => 'utf8mb4_general_ci', + 'comment' => '', + 'row_format' => 'DYNAMIC', + ]) + ->addColumn('user_id', 'integer', [ + 'null' => false, + 'default' => '0', + 'limit' => MysqlAdapter::INT_REGULAR, + 'signed' => false, + 'comment' => '用户编号', + ]) + ->addColumn('cash', 'decimal', [ + 'null' => false, + 'default' => '0.00', + 'precision' => '10', + 'scale' => '2', + 'comment' => '可用现金', + 'after' => 'user_id', + ]) + ->addColumn('point', 'integer', [ + 'null' => false, + 'default' => '0', + 'limit' => MysqlAdapter::INT_REGULAR, + 'comment' => '可用积分', + 'after' => 'cash', + ]) + ->addColumn('deleted', 'integer', [ + 'null' => false, + 'default' => '0', + 'limit' => MysqlAdapter::INT_REGULAR, + 'signed' => false, + 'comment' => '删除标识', + 'after' => 'point', + ]) + ->addColumn('create_time', 'integer', [ + 'null' => false, + 'default' => '0', + 'limit' => MysqlAdapter::INT_REGULAR, + 'signed' => false, + 'comment' => '创建时间', + 'after' => 'deleted', + ]) + ->addColumn('update_time', 'integer', [ + 'null' => false, + 'default' => '0', + 'limit' => MysqlAdapter::INT_REGULAR, + 'signed' => false, + 'comment' => '更新时间', + 'after' => 'create_time', + ]) + ->create(); + + $this->table('kg_user_contact', [ + 'id' => false, + 'primary_key' => ['user_id'], + 'engine' => 'InnoDB', + 'encoding' => 'utf8mb4', + 'collation' => 'utf8mb4_general_ci', + 'comment' => '', + 'row_format' => 'DYNAMIC', + ]) + ->addColumn('user_id', 'integer', [ + 'null' => false, + 'limit' => MysqlAdapter::INT_REGULAR, + 'signed' => false, + 'comment' => '用户编号', + ]) + ->addColumn('name', 'string', [ + 'null' => false, + 'default' => '', + 'limit' => 30, + 'collation' => 'utf8mb4_general_ci', + 'encoding' => 'utf8mb4', + 'comment' => '姓名', + 'after' => 'user_id', + ]) + ->addColumn('phone', 'string', [ + 'null' => false, + 'default' => '', + 'limit' => 30, + 'collation' => 'utf8mb4_general_ci', + 'encoding' => 'utf8mb4', + 'comment' => '电话', + 'after' => 'name', + ]) + ->addColumn('add_province', 'string', [ + 'null' => false, + 'default' => '', + 'limit' => 30, + 'collation' => 'utf8mb4_general_ci', + 'encoding' => 'utf8mb4', + 'comment' => '地址(省)', + 'after' => 'phone', + ]) + ->addColumn('add_city', 'string', [ + 'null' => false, + 'default' => '', + 'limit' => 30, + 'collation' => 'utf8mb4_general_ci', + 'encoding' => 'utf8mb4', + 'comment' => '地址(市)', + 'after' => 'add_province', + ]) + ->addColumn('add_county', 'string', [ + 'null' => false, + 'default' => '', + 'limit' => 30, + 'collation' => 'utf8mb4_general_ci', + 'encoding' => 'utf8mb4', + 'comment' => '地址(区)', + 'after' => 'add_city', + ]) + ->addColumn('add_other', 'string', [ + 'null' => false, + 'default' => '', + 'limit' => 50, + 'collation' => 'utf8mb4_general_ci', + 'encoding' => 'utf8mb4', + 'comment' => '地址(详)', + 'after' => 'add_county', + ]) + ->addColumn('deleted', 'integer', [ + 'null' => false, + 'default' => '0', + 'limit' => MysqlAdapter::INT_REGULAR, + 'signed' => false, + 'comment' => '删除标识', + 'after' => 'add_other', + ]) + ->addColumn('create_time', 'integer', [ + 'null' => false, + 'default' => '0', + 'limit' => MysqlAdapter::INT_REGULAR, + 'signed' => false, + 'comment' => '创建时间', + 'after' => 'deleted', + ]) + ->addColumn('update_time', 'integer', [ + 'null' => false, + 'default' => '0', + 'limit' => MysqlAdapter::INT_REGULAR, + 'signed' => false, + 'comment' => '更新时间', + 'after' => 'create_time', + ]) + ->create(); + } + +} \ No newline at end of file diff --git a/db/migrations/schema.php b/db/migrations/schema.php deleted file mode 100644 index 9ff9aefc..00000000 --- a/db/migrations/schema.php +++ /dev/null @@ -1,16187 +0,0 @@ - - array( - 'DEFAULT_CHARACTER_SET_NAME' => 'utf8mb4', - 0 => 'utf8mb4', - 'DEFAULT_COLLATION_NAME' => 'utf8mb4_general_ci', - 1 => 'utf8mb4_general_ci', - ), - 'tables' => - array( - 'kg_account' => - array( - 'table' => - array( - 'table_name' => 'kg_account', - 'engine' => 'InnoDB', - 'table_comment' => '', - 'table_collation' => 'utf8mb4_general_ci', - 'character_set_name' => 'utf8mb4', - 'row_format' => 'Dynamic', - ), - 'columns' => - array( - 'id' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_account', - 'COLUMN_NAME' => 'id', - 'ORDINAL_POSITION' => '1', - 'COLUMN_DEFAULT' => NULL, - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => 'PRI', - 'EXTRA' => 'auto_increment', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '主键编号', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'email' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_account', - 'COLUMN_NAME' => 'email', - 'ORDINAL_POSITION' => '2', - 'COLUMN_DEFAULT' => '', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'varchar', - 'CHARACTER_MAXIMUM_LENGTH' => '30', - 'CHARACTER_OCTET_LENGTH' => '120', - 'NUMERIC_PRECISION' => NULL, - 'NUMERIC_SCALE' => NULL, - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => 'utf8mb4', - 'COLLATION_NAME' => 'utf8mb4_general_ci', - 'COLUMN_TYPE' => 'varchar(30)', - 'COLUMN_KEY' => 'MUL', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '邮箱', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'phone' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_account', - 'COLUMN_NAME' => 'phone', - 'ORDINAL_POSITION' => '3', - 'COLUMN_DEFAULT' => '', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'varchar', - 'CHARACTER_MAXIMUM_LENGTH' => '30', - 'CHARACTER_OCTET_LENGTH' => '120', - 'NUMERIC_PRECISION' => NULL, - 'NUMERIC_SCALE' => NULL, - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => 'utf8mb4', - 'COLLATION_NAME' => 'utf8mb4_general_ci', - 'COLUMN_TYPE' => 'varchar(30)', - 'COLUMN_KEY' => 'MUL', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '手机', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'password' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_account', - 'COLUMN_NAME' => 'password', - 'ORDINAL_POSITION' => '4', - 'COLUMN_DEFAULT' => '', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'varchar', - 'CHARACTER_MAXIMUM_LENGTH' => '32', - 'CHARACTER_OCTET_LENGTH' => '128', - 'NUMERIC_PRECISION' => NULL, - 'NUMERIC_SCALE' => NULL, - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => 'utf8mb4', - 'COLLATION_NAME' => 'utf8mb4_general_ci', - 'COLUMN_TYPE' => 'varchar(32)', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '密码', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'salt' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_account', - 'COLUMN_NAME' => 'salt', - 'ORDINAL_POSITION' => '5', - 'COLUMN_DEFAULT' => '', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'varchar', - 'CHARACTER_MAXIMUM_LENGTH' => '32', - 'CHARACTER_OCTET_LENGTH' => '128', - 'NUMERIC_PRECISION' => NULL, - 'NUMERIC_SCALE' => NULL, - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => 'utf8mb4', - 'COLLATION_NAME' => 'utf8mb4_general_ci', - 'COLUMN_TYPE' => 'varchar(32)', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '密盐', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'deleted' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_account', - 'COLUMN_NAME' => 'deleted', - 'ORDINAL_POSITION' => '6', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '删除标识', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'create_time' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_account', - 'COLUMN_NAME' => 'create_time', - 'ORDINAL_POSITION' => '7', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '创建时间', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'update_time' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_account', - 'COLUMN_NAME' => 'update_time', - 'ORDINAL_POSITION' => '8', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '更新时间', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - ), - 'indexes' => - array( - 'email' => - array( - 1 => - array( - 'Table' => 'kg_account', - 'Non_unique' => '1', - 'Key_name' => 'email', - 'Seq_in_index' => '1', - 'Column_name' => 'email', - 'Collation' => 'A', - 'Sub_part' => NULL, - 'Packed' => NULL, - 'Null' => '', - 'Index_type' => 'BTREE', - 'Comment' => '', - 'Index_comment' => '', - ), - ), - 'phone' => - array( - 1 => - array( - 'Table' => 'kg_account', - 'Non_unique' => '1', - 'Key_name' => 'phone', - 'Seq_in_index' => '1', - 'Column_name' => 'phone', - 'Collation' => 'A', - 'Sub_part' => NULL, - 'Packed' => NULL, - 'Null' => '', - 'Index_type' => 'BTREE', - 'Comment' => '', - 'Index_comment' => '', - ), - ), - 'PRIMARY' => - array( - 1 => - array( - 'Table' => 'kg_account', - 'Non_unique' => '0', - 'Key_name' => 'PRIMARY', - 'Seq_in_index' => '1', - 'Column_name' => 'id', - 'Collation' => 'A', - 'Sub_part' => NULL, - 'Packed' => NULL, - 'Null' => '', - 'Index_type' => 'BTREE', - 'Comment' => '', - 'Index_comment' => '', - ), - ), - ), - 'foreign_keys' => NULL, - ), - 'kg_area' => - array( - 'table' => - array( - 'table_name' => 'kg_area', - 'engine' => 'InnoDB', - 'table_comment' => '', - 'table_collation' => 'utf8mb4_general_ci', - 'character_set_name' => 'utf8mb4', - 'row_format' => 'Dynamic', - ), - 'columns' => - array( - 'id' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_area', - 'COLUMN_NAME' => 'id', - 'ORDINAL_POSITION' => '1', - 'COLUMN_DEFAULT' => NULL, - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => 'PRI', - 'EXTRA' => 'auto_increment', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '主键', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'type' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_area', - 'COLUMN_NAME' => 'type', - 'ORDINAL_POSITION' => '2', - 'COLUMN_DEFAULT' => '3', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '类型', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'code' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_area', - 'COLUMN_NAME' => 'code', - 'ORDINAL_POSITION' => '3', - 'COLUMN_DEFAULT' => '', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'varchar', - 'CHARACTER_MAXIMUM_LENGTH' => '30', - 'CHARACTER_OCTET_LENGTH' => '120', - 'NUMERIC_PRECISION' => NULL, - 'NUMERIC_SCALE' => NULL, - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => 'utf8mb4', - 'COLLATION_NAME' => 'utf8mb4_general_ci', - 'COLUMN_TYPE' => 'varchar(30)', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '编码', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'name' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_area', - 'COLUMN_NAME' => 'name', - 'ORDINAL_POSITION' => '4', - 'COLUMN_DEFAULT' => '', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'varchar', - 'CHARACTER_MAXIMUM_LENGTH' => '30', - 'CHARACTER_OCTET_LENGTH' => '120', - 'NUMERIC_PRECISION' => NULL, - 'NUMERIC_SCALE' => NULL, - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => 'utf8mb4', - 'COLLATION_NAME' => 'utf8mb4_general_ci', - 'COLUMN_TYPE' => 'varchar(30)', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '名称', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - ), - 'indexes' => - array( - 'PRIMARY' => - array( - 1 => - array( - 'Table' => 'kg_area', - 'Non_unique' => '0', - 'Key_name' => 'PRIMARY', - 'Seq_in_index' => '1', - 'Column_name' => 'id', - 'Collation' => 'A', - 'Sub_part' => NULL, - 'Packed' => NULL, - 'Null' => '', - 'Index_type' => 'BTREE', - 'Comment' => '', - 'Index_comment' => '', - ), - ), - ), - 'foreign_keys' => NULL, - ), - 'kg_audit' => - array( - 'table' => - array( - 'table_name' => 'kg_audit', - 'engine' => 'InnoDB', - 'table_comment' => '', - 'table_collation' => 'utf8mb4_general_ci', - 'character_set_name' => 'utf8mb4', - 'row_format' => 'Dynamic', - ), - 'columns' => - array( - 'id' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_audit', - 'COLUMN_NAME' => 'id', - 'ORDINAL_POSITION' => '1', - 'COLUMN_DEFAULT' => NULL, - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => 'PRI', - 'EXTRA' => 'auto_increment', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '主键编号', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'user_id' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_audit', - 'COLUMN_NAME' => 'user_id', - 'ORDINAL_POSITION' => '2', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => 'MUL', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '用户编号', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'user_name' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_audit', - 'COLUMN_NAME' => 'user_name', - 'ORDINAL_POSITION' => '3', - 'COLUMN_DEFAULT' => '', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'varchar', - 'CHARACTER_MAXIMUM_LENGTH' => '30', - 'CHARACTER_OCTET_LENGTH' => '120', - 'NUMERIC_PRECISION' => NULL, - 'NUMERIC_SCALE' => NULL, - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => 'utf8mb4', - 'COLLATION_NAME' => 'utf8mb4_general_ci', - 'COLUMN_TYPE' => 'varchar(30)', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '用户名称', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'user_ip' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_audit', - 'COLUMN_NAME' => 'user_ip', - 'ORDINAL_POSITION' => '4', - 'COLUMN_DEFAULT' => '', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'varchar', - 'CHARACTER_MAXIMUM_LENGTH' => '30', - 'CHARACTER_OCTET_LENGTH' => '120', - 'NUMERIC_PRECISION' => NULL, - 'NUMERIC_SCALE' => NULL, - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => 'utf8mb4', - 'COLLATION_NAME' => 'utf8mb4_general_ci', - 'COLUMN_TYPE' => 'varchar(30)', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '用户IP', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'req_route' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_audit', - 'COLUMN_NAME' => 'req_route', - 'ORDINAL_POSITION' => '5', - 'COLUMN_DEFAULT' => '', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'varchar', - 'CHARACTER_MAXIMUM_LENGTH' => '50', - 'CHARACTER_OCTET_LENGTH' => '200', - 'NUMERIC_PRECISION' => NULL, - 'NUMERIC_SCALE' => NULL, - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => 'utf8mb4', - 'COLLATION_NAME' => 'utf8mb4_general_ci', - 'COLUMN_TYPE' => 'varchar(50)', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '请求路由', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'req_path' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_audit', - 'COLUMN_NAME' => 'req_path', - 'ORDINAL_POSITION' => '6', - 'COLUMN_DEFAULT' => '', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'varchar', - 'CHARACTER_MAXIMUM_LENGTH' => '100', - 'CHARACTER_OCTET_LENGTH' => '400', - 'NUMERIC_PRECISION' => NULL, - 'NUMERIC_SCALE' => NULL, - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => 'utf8mb4', - 'COLLATION_NAME' => 'utf8mb4_general_ci', - 'COLUMN_TYPE' => 'varchar(100)', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '请求路径', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'req_data' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_audit', - 'COLUMN_NAME' => 'req_data', - 'ORDINAL_POSITION' => '7', - 'COLUMN_DEFAULT' => NULL, - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'text', - 'CHARACTER_MAXIMUM_LENGTH' => '65535', - 'CHARACTER_OCTET_LENGTH' => '65535', - 'NUMERIC_PRECISION' => NULL, - 'NUMERIC_SCALE' => NULL, - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => 'utf8mb4', - 'COLLATION_NAME' => 'utf8mb4_general_ci', - 'COLUMN_TYPE' => 'text', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '请求数据', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'create_time' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_audit', - 'COLUMN_NAME' => 'create_time', - 'ORDINAL_POSITION' => '8', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '创建时间', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - ), - 'indexes' => - array( - 'PRIMARY' => - array( - 1 => - array( - 'Table' => 'kg_audit', - 'Non_unique' => '0', - 'Key_name' => 'PRIMARY', - 'Seq_in_index' => '1', - 'Column_name' => 'id', - 'Collation' => 'A', - 'Sub_part' => NULL, - 'Packed' => NULL, - 'Null' => '', - 'Index_type' => 'BTREE', - 'Comment' => '', - 'Index_comment' => '', - ), - ), - 'user_id' => - array( - 1 => - array( - 'Table' => 'kg_audit', - 'Non_unique' => '1', - 'Key_name' => 'user_id', - 'Seq_in_index' => '1', - 'Column_name' => 'user_id', - 'Collation' => 'A', - 'Sub_part' => NULL, - 'Packed' => NULL, - 'Null' => '', - 'Index_type' => 'BTREE', - 'Comment' => '', - 'Index_comment' => '', - ), - ), - ), - 'foreign_keys' => NULL, - ), - 'kg_category' => - array( - 'table' => - array( - 'table_name' => 'kg_category', - 'engine' => 'InnoDB', - 'table_comment' => '', - 'table_collation' => 'utf8mb4_general_ci', - 'character_set_name' => 'utf8mb4', - 'row_format' => 'Dynamic', - ), - 'columns' => - array( - 'id' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_category', - 'COLUMN_NAME' => 'id', - 'ORDINAL_POSITION' => '1', - 'COLUMN_DEFAULT' => NULL, - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => 'PRI', - 'EXTRA' => 'auto_increment', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '主键编号', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'parent_id' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_category', - 'COLUMN_NAME' => 'parent_id', - 'ORDINAL_POSITION' => '2', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '父级编号', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'level' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_category', - 'COLUMN_NAME' => 'level', - 'ORDINAL_POSITION' => '3', - 'COLUMN_DEFAULT' => '1', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '层级', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'type' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_category', - 'COLUMN_NAME' => 'type', - 'ORDINAL_POSITION' => '4', - 'COLUMN_DEFAULT' => '1', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '类型', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'name' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_category', - 'COLUMN_NAME' => 'name', - 'ORDINAL_POSITION' => '5', - 'COLUMN_DEFAULT' => '', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'varchar', - 'CHARACTER_MAXIMUM_LENGTH' => '30', - 'CHARACTER_OCTET_LENGTH' => '120', - 'NUMERIC_PRECISION' => NULL, - 'NUMERIC_SCALE' => NULL, - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => 'utf8mb4', - 'COLLATION_NAME' => 'utf8mb4_general_ci', - 'COLUMN_TYPE' => 'varchar(30)', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '名称', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'path' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_category', - 'COLUMN_NAME' => 'path', - 'ORDINAL_POSITION' => '6', - 'COLUMN_DEFAULT' => '', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'varchar', - 'CHARACTER_MAXIMUM_LENGTH' => '30', - 'CHARACTER_OCTET_LENGTH' => '120', - 'NUMERIC_PRECISION' => NULL, - 'NUMERIC_SCALE' => NULL, - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => 'utf8mb4', - 'COLLATION_NAME' => 'utf8mb4_general_ci', - 'COLUMN_TYPE' => 'varchar(30)', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '路径', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'priority' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_category', - 'COLUMN_NAME' => 'priority', - 'ORDINAL_POSITION' => '7', - 'COLUMN_DEFAULT' => '30', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '优先级', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'published' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_category', - 'COLUMN_NAME' => 'published', - 'ORDINAL_POSITION' => '8', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '发布标识', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'deleted' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_category', - 'COLUMN_NAME' => 'deleted', - 'ORDINAL_POSITION' => '9', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '删除标识', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'child_count' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_category', - 'COLUMN_NAME' => 'child_count', - 'ORDINAL_POSITION' => '10', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '节点数', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'create_time' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_category', - 'COLUMN_NAME' => 'create_time', - 'ORDINAL_POSITION' => '11', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '创建时间', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'update_time' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_category', - 'COLUMN_NAME' => 'update_time', - 'ORDINAL_POSITION' => '12', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '更新时间', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - ), - 'indexes' => - array( - 'PRIMARY' => - array( - 1 => - array( - 'Table' => 'kg_category', - 'Non_unique' => '0', - 'Key_name' => 'PRIMARY', - 'Seq_in_index' => '1', - 'Column_name' => 'id', - 'Collation' => 'A', - 'Sub_part' => NULL, - 'Packed' => NULL, - 'Null' => '', - 'Index_type' => 'BTREE', - 'Comment' => '', - 'Index_comment' => '', - ), - ), - ), - 'foreign_keys' => NULL, - ), - 'kg_chapter' => - array( - 'table' => - array( - 'table_name' => 'kg_chapter', - 'engine' => 'InnoDB', - 'table_comment' => '', - 'table_collation' => 'utf8mb4_general_ci', - 'character_set_name' => 'utf8mb4', - 'row_format' => 'Dynamic', - ), - 'columns' => - array( - 'id' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_chapter', - 'COLUMN_NAME' => 'id', - 'ORDINAL_POSITION' => '1', - 'COLUMN_DEFAULT' => NULL, - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => 'PRI', - 'EXTRA' => 'auto_increment', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '主键编号', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'parent_id' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_chapter', - 'COLUMN_NAME' => 'parent_id', - 'ORDINAL_POSITION' => '2', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => 'MUL', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '父级编号', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'course_id' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_chapter', - 'COLUMN_NAME' => 'course_id', - 'ORDINAL_POSITION' => '3', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => 'MUL', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '课程编号', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'title' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_chapter', - 'COLUMN_NAME' => 'title', - 'ORDINAL_POSITION' => '4', - 'COLUMN_DEFAULT' => '', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'varchar', - 'CHARACTER_MAXIMUM_LENGTH' => '100', - 'CHARACTER_OCTET_LENGTH' => '400', - 'NUMERIC_PRECISION' => NULL, - 'NUMERIC_SCALE' => NULL, - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => 'utf8mb4', - 'COLLATION_NAME' => 'utf8mb4_general_ci', - 'COLUMN_TYPE' => 'varchar(100)', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '标题', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'summary' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_chapter', - 'COLUMN_NAME' => 'summary', - 'ORDINAL_POSITION' => '5', - 'COLUMN_DEFAULT' => '', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'varchar', - 'CHARACTER_MAXIMUM_LENGTH' => '255', - 'CHARACTER_OCTET_LENGTH' => '1020', - 'NUMERIC_PRECISION' => NULL, - 'NUMERIC_SCALE' => NULL, - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => 'utf8mb4', - 'COLLATION_NAME' => 'utf8mb4_general_ci', - 'COLUMN_TYPE' => 'varchar(255)', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '简介', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'priority' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_chapter', - 'COLUMN_NAME' => 'priority', - 'ORDINAL_POSITION' => '6', - 'COLUMN_DEFAULT' => '30', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '优先级', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'free' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_chapter', - 'COLUMN_NAME' => 'free', - 'ORDINAL_POSITION' => '7', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '免费标识', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'model' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_chapter', - 'COLUMN_NAME' => 'model', - 'ORDINAL_POSITION' => '8', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '模式类型', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'attrs' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_chapter', - 'COLUMN_NAME' => 'attrs', - 'ORDINAL_POSITION' => '9', - 'COLUMN_DEFAULT' => '', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'varchar', - 'CHARACTER_MAXIMUM_LENGTH' => '1000', - 'CHARACTER_OCTET_LENGTH' => '4000', - 'NUMERIC_PRECISION' => NULL, - 'NUMERIC_SCALE' => NULL, - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => 'utf8mb4', - 'COLLATION_NAME' => 'utf8mb4_general_ci', - 'COLUMN_TYPE' => 'varchar(1000)', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '扩展属性', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'published' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_chapter', - 'COLUMN_NAME' => 'published', - 'ORDINAL_POSITION' => '10', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '发布标识', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'deleted' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_chapter', - 'COLUMN_NAME' => 'deleted', - 'ORDINAL_POSITION' => '11', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '删除标识', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'resource_count' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_chapter', - 'COLUMN_NAME' => 'resource_count', - 'ORDINAL_POSITION' => '12', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '资料数', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'lesson_count' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_chapter', - 'COLUMN_NAME' => 'lesson_count', - 'ORDINAL_POSITION' => '13', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '课时数', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'user_count' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_chapter', - 'COLUMN_NAME' => 'user_count', - 'ORDINAL_POSITION' => '14', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '学员数', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'consult_count' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_chapter', - 'COLUMN_NAME' => 'consult_count', - 'ORDINAL_POSITION' => '15', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '咨询数', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'like_count' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_chapter', - 'COLUMN_NAME' => 'like_count', - 'ORDINAL_POSITION' => '16', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '点赞数', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'create_time' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_chapter', - 'COLUMN_NAME' => 'create_time', - 'ORDINAL_POSITION' => '17', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '创建时间', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'update_time' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_chapter', - 'COLUMN_NAME' => 'update_time', - 'ORDINAL_POSITION' => '18', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '更新时间', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - ), - 'indexes' => - array( - 'course_id' => - array( - 1 => - array( - 'Table' => 'kg_chapter', - 'Non_unique' => '1', - 'Key_name' => 'course_id', - 'Seq_in_index' => '1', - 'Column_name' => 'course_id', - 'Collation' => 'A', - 'Sub_part' => NULL, - 'Packed' => NULL, - 'Null' => '', - 'Index_type' => 'BTREE', - 'Comment' => '', - 'Index_comment' => '', - ), - ), - 'parent_id' => - array( - 1 => - array( - 'Table' => 'kg_chapter', - 'Non_unique' => '1', - 'Key_name' => 'parent_id', - 'Seq_in_index' => '1', - 'Column_name' => 'parent_id', - 'Collation' => 'A', - 'Sub_part' => NULL, - 'Packed' => NULL, - 'Null' => '', - 'Index_type' => 'BTREE', - 'Comment' => '', - 'Index_comment' => '', - ), - ), - 'PRIMARY' => - array( - 1 => - array( - 'Table' => 'kg_chapter', - 'Non_unique' => '0', - 'Key_name' => 'PRIMARY', - 'Seq_in_index' => '1', - 'Column_name' => 'id', - 'Collation' => 'A', - 'Sub_part' => NULL, - 'Packed' => NULL, - 'Null' => '', - 'Index_type' => 'BTREE', - 'Comment' => '', - 'Index_comment' => '', - ), - ), - ), - 'foreign_keys' => NULL, - ), - 'kg_chapter_like' => - array( - 'table' => - array( - 'table_name' => 'kg_chapter_like', - 'engine' => 'InnoDB', - 'table_comment' => '', - 'table_collation' => 'utf8mb4_general_ci', - 'character_set_name' => 'utf8mb4', - 'row_format' => 'Compact', - ), - 'columns' => - array( - 'id' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_chapter_like', - 'COLUMN_NAME' => 'id', - 'ORDINAL_POSITION' => '1', - 'COLUMN_DEFAULT' => NULL, - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => 'PRI', - 'EXTRA' => 'auto_increment', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '主键编号', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'chapter_id' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_chapter_like', - 'COLUMN_NAME' => 'chapter_id', - 'ORDINAL_POSITION' => '2', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => 'MUL', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '课程编号', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'user_id' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_chapter_like', - 'COLUMN_NAME' => 'user_id', - 'ORDINAL_POSITION' => '3', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '标签编号', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'deleted' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_chapter_like', - 'COLUMN_NAME' => 'deleted', - 'ORDINAL_POSITION' => '4', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '删除标识', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'create_time' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_chapter_like', - 'COLUMN_NAME' => 'create_time', - 'ORDINAL_POSITION' => '5', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '创建时间', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'update_time' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_chapter_like', - 'COLUMN_NAME' => 'update_time', - 'ORDINAL_POSITION' => '6', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '更新时间', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - ), - 'indexes' => - array( - 'chapter_user' => - array( - 1 => - array( - 'Table' => 'kg_chapter_like', - 'Non_unique' => '1', - 'Key_name' => 'chapter_user', - 'Seq_in_index' => '1', - 'Column_name' => 'chapter_id', - 'Collation' => 'A', - 'Sub_part' => NULL, - 'Packed' => NULL, - 'Null' => '', - 'Index_type' => 'BTREE', - 'Comment' => '', - 'Index_comment' => '', - ), - 2 => - array( - 'Table' => 'kg_chapter_like', - 'Non_unique' => '1', - 'Key_name' => 'chapter_user', - 'Seq_in_index' => '2', - 'Column_name' => 'user_id', - 'Collation' => 'A', - 'Sub_part' => NULL, - 'Packed' => NULL, - 'Null' => '', - 'Index_type' => 'BTREE', - 'Comment' => '', - 'Index_comment' => '', - ), - ), - 'PRIMARY' => - array( - 1 => - array( - 'Table' => 'kg_chapter_like', - 'Non_unique' => '0', - 'Key_name' => 'PRIMARY', - 'Seq_in_index' => '1', - 'Column_name' => 'id', - 'Collation' => 'A', - 'Sub_part' => NULL, - 'Packed' => NULL, - 'Null' => '', - 'Index_type' => 'BTREE', - 'Comment' => '', - 'Index_comment' => '', - ), - ), - ), - 'foreign_keys' => NULL, - ), - 'kg_chapter_live' => - array( - 'table' => - array( - 'table_name' => 'kg_chapter_live', - 'engine' => 'InnoDB', - 'table_comment' => '', - 'table_collation' => 'utf8mb4_general_ci', - 'character_set_name' => 'utf8mb4', - 'row_format' => 'Dynamic', - ), - 'columns' => - array( - 'id' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_chapter_live', - 'COLUMN_NAME' => 'id', - 'ORDINAL_POSITION' => '1', - 'COLUMN_DEFAULT' => NULL, - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => 'PRI', - 'EXTRA' => 'auto_increment', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '主键编号', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'course_id' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_chapter_live', - 'COLUMN_NAME' => 'course_id', - 'ORDINAL_POSITION' => '2', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => 'MUL', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '课程编号', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'chapter_id' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_chapter_live', - 'COLUMN_NAME' => 'chapter_id', - 'ORDINAL_POSITION' => '3', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => 'MUL', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '章节编号', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'start_time' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_chapter_live', - 'COLUMN_NAME' => 'start_time', - 'ORDINAL_POSITION' => '4', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '开始时间', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'end_time' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_chapter_live', - 'COLUMN_NAME' => 'end_time', - 'ORDINAL_POSITION' => '5', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '结束时间', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'user_limit' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_chapter_live', - 'COLUMN_NAME' => 'user_limit', - 'ORDINAL_POSITION' => '6', - 'COLUMN_DEFAULT' => '100', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '用户限额', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'status' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_chapter_live', - 'COLUMN_NAME' => 'status', - 'ORDINAL_POSITION' => '7', - 'COLUMN_DEFAULT' => '2', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '状态标识', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'create_time' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_chapter_live', - 'COLUMN_NAME' => 'create_time', - 'ORDINAL_POSITION' => '8', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '创建时间', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'update_time' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_chapter_live', - 'COLUMN_NAME' => 'update_time', - 'ORDINAL_POSITION' => '9', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '更新时间', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - ), - 'indexes' => - array( - 'chapter_id' => - array( - 1 => - array( - 'Table' => 'kg_chapter_live', - 'Non_unique' => '1', - 'Key_name' => 'chapter_id', - 'Seq_in_index' => '1', - 'Column_name' => 'chapter_id', - 'Collation' => 'A', - 'Sub_part' => NULL, - 'Packed' => NULL, - 'Null' => '', - 'Index_type' => 'BTREE', - 'Comment' => '', - 'Index_comment' => '', - ), - ), - 'course_id' => - array( - 1 => - array( - 'Table' => 'kg_chapter_live', - 'Non_unique' => '1', - 'Key_name' => 'course_id', - 'Seq_in_index' => '1', - 'Column_name' => 'course_id', - 'Collation' => 'A', - 'Sub_part' => NULL, - 'Packed' => NULL, - 'Null' => '', - 'Index_type' => 'BTREE', - 'Comment' => '', - 'Index_comment' => '', - ), - ), - 'PRIMARY' => - array( - 1 => - array( - 'Table' => 'kg_chapter_live', - 'Non_unique' => '0', - 'Key_name' => 'PRIMARY', - 'Seq_in_index' => '1', - 'Column_name' => 'id', - 'Collation' => 'A', - 'Sub_part' => NULL, - 'Packed' => NULL, - 'Null' => '', - 'Index_type' => 'BTREE', - 'Comment' => '', - 'Index_comment' => '', - ), - ), - ), - 'foreign_keys' => NULL, - ), - 'kg_chapter_read' => - array( - 'table' => - array( - 'table_name' => 'kg_chapter_read', - 'engine' => 'InnoDB', - 'table_comment' => '', - 'table_collation' => 'utf8mb4_general_ci', - 'character_set_name' => 'utf8mb4', - 'row_format' => 'Dynamic', - ), - 'columns' => - array( - 'id' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_chapter_read', - 'COLUMN_NAME' => 'id', - 'ORDINAL_POSITION' => '1', - 'COLUMN_DEFAULT' => NULL, - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => 'PRI', - 'EXTRA' => 'auto_increment', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '主键编号', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'course_id' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_chapter_read', - 'COLUMN_NAME' => 'course_id', - 'ORDINAL_POSITION' => '2', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => 'MUL', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '课程编号', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'chapter_id' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_chapter_read', - 'COLUMN_NAME' => 'chapter_id', - 'ORDINAL_POSITION' => '3', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => 'MUL', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '章节编号', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'content' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_chapter_read', - 'COLUMN_NAME' => 'content', - 'ORDINAL_POSITION' => '4', - 'COLUMN_DEFAULT' => NULL, - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'text', - 'CHARACTER_MAXIMUM_LENGTH' => '65535', - 'CHARACTER_OCTET_LENGTH' => '65535', - 'NUMERIC_PRECISION' => NULL, - 'NUMERIC_SCALE' => NULL, - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => 'utf8mb4', - 'COLLATION_NAME' => 'utf8mb4_general_ci', - 'COLUMN_TYPE' => 'text', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '内容', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'create_time' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_chapter_read', - 'COLUMN_NAME' => 'create_time', - 'ORDINAL_POSITION' => '5', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '创建时间', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'update_time' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_chapter_read', - 'COLUMN_NAME' => 'update_time', - 'ORDINAL_POSITION' => '6', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '更新时间', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - ), - 'indexes' => - array( - 'chapter_id' => - array( - 1 => - array( - 'Table' => 'kg_chapter_read', - 'Non_unique' => '1', - 'Key_name' => 'chapter_id', - 'Seq_in_index' => '1', - 'Column_name' => 'chapter_id', - 'Collation' => 'A', - 'Sub_part' => NULL, - 'Packed' => NULL, - 'Null' => '', - 'Index_type' => 'BTREE', - 'Comment' => '', - 'Index_comment' => '', - ), - ), - 'course_id' => - array( - 1 => - array( - 'Table' => 'kg_chapter_read', - 'Non_unique' => '1', - 'Key_name' => 'course_id', - 'Seq_in_index' => '1', - 'Column_name' => 'course_id', - 'Collation' => 'A', - 'Sub_part' => NULL, - 'Packed' => NULL, - 'Null' => '', - 'Index_type' => 'BTREE', - 'Comment' => '', - 'Index_comment' => '', - ), - ), - 'PRIMARY' => - array( - 1 => - array( - 'Table' => 'kg_chapter_read', - 'Non_unique' => '0', - 'Key_name' => 'PRIMARY', - 'Seq_in_index' => '1', - 'Column_name' => 'id', - 'Collation' => 'A', - 'Sub_part' => NULL, - 'Packed' => NULL, - 'Null' => '', - 'Index_type' => 'BTREE', - 'Comment' => '', - 'Index_comment' => '', - ), - ), - ), - 'foreign_keys' => NULL, - ), - 'kg_chapter_user' => - array( - 'table' => - array( - 'table_name' => 'kg_chapter_user', - 'engine' => 'InnoDB', - 'table_comment' => '', - 'table_collation' => 'utf8mb4_general_ci', - 'character_set_name' => 'utf8mb4', - 'row_format' => 'Dynamic', - ), - 'columns' => - array( - 'id' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_chapter_user', - 'COLUMN_NAME' => 'id', - 'ORDINAL_POSITION' => '1', - 'COLUMN_DEFAULT' => NULL, - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => 'PRI', - 'EXTRA' => 'auto_increment', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '主键编号', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'course_id' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_chapter_user', - 'COLUMN_NAME' => 'course_id', - 'ORDINAL_POSITION' => '2', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => 'MUL', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '课程编号', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'chapter_id' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_chapter_user', - 'COLUMN_NAME' => 'chapter_id', - 'ORDINAL_POSITION' => '3', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => 'MUL', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '章节编号', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'user_id' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_chapter_user', - 'COLUMN_NAME' => 'user_id', - 'ORDINAL_POSITION' => '4', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '用户编号', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'plan_id' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_chapter_user', - 'COLUMN_NAME' => 'plan_id', - 'ORDINAL_POSITION' => '5', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '计划编号', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'duration' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_chapter_user', - 'COLUMN_NAME' => 'duration', - 'ORDINAL_POSITION' => '6', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '学习时长', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'position' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_chapter_user', - 'COLUMN_NAME' => 'position', - 'ORDINAL_POSITION' => '7', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '播放位置', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'progress' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_chapter_user', - 'COLUMN_NAME' => 'progress', - 'ORDINAL_POSITION' => '8', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '学习进度', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'consumed' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_chapter_user', - 'COLUMN_NAME' => 'consumed', - 'ORDINAL_POSITION' => '9', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '消费标识', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'deleted' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_chapter_user', - 'COLUMN_NAME' => 'deleted', - 'ORDINAL_POSITION' => '10', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '删除标识', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'create_time' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_chapter_user', - 'COLUMN_NAME' => 'create_time', - 'ORDINAL_POSITION' => '11', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '创建时间', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'update_time' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_chapter_user', - 'COLUMN_NAME' => 'update_time', - 'ORDINAL_POSITION' => '12', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '更新时间', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - ), - 'indexes' => - array( - 'chapter_user' => - array( - 1 => - array( - 'Table' => 'kg_chapter_user', - 'Non_unique' => '1', - 'Key_name' => 'chapter_user', - 'Seq_in_index' => '1', - 'Column_name' => 'chapter_id', - 'Collation' => 'A', - 'Sub_part' => NULL, - 'Packed' => NULL, - 'Null' => '', - 'Index_type' => 'BTREE', - 'Comment' => '', - 'Index_comment' => '', - ), - 2 => - array( - 'Table' => 'kg_chapter_user', - 'Non_unique' => '1', - 'Key_name' => 'chapter_user', - 'Seq_in_index' => '2', - 'Column_name' => 'user_id', - 'Collation' => 'A', - 'Sub_part' => NULL, - 'Packed' => NULL, - 'Null' => '', - 'Index_type' => 'BTREE', - 'Comment' => '', - 'Index_comment' => '', - ), - ), - 'course_user' => - array( - 1 => - array( - 'Table' => 'kg_chapter_user', - 'Non_unique' => '1', - 'Key_name' => 'course_user', - 'Seq_in_index' => '1', - 'Column_name' => 'course_id', - 'Collation' => 'A', - 'Sub_part' => NULL, - 'Packed' => NULL, - 'Null' => '', - 'Index_type' => 'BTREE', - 'Comment' => '', - 'Index_comment' => '', - ), - 2 => - array( - 'Table' => 'kg_chapter_user', - 'Non_unique' => '1', - 'Key_name' => 'course_user', - 'Seq_in_index' => '2', - 'Column_name' => 'user_id', - 'Collation' => 'A', - 'Sub_part' => NULL, - 'Packed' => NULL, - 'Null' => '', - 'Index_type' => 'BTREE', - 'Comment' => '', - 'Index_comment' => '', - ), - ), - 'PRIMARY' => - array( - 1 => - array( - 'Table' => 'kg_chapter_user', - 'Non_unique' => '0', - 'Key_name' => 'PRIMARY', - 'Seq_in_index' => '1', - 'Column_name' => 'id', - 'Collation' => 'A', - 'Sub_part' => NULL, - 'Packed' => NULL, - 'Null' => '', - 'Index_type' => 'BTREE', - 'Comment' => '', - 'Index_comment' => '', - ), - ), - ), - 'foreign_keys' => NULL, - ), - 'kg_chapter_vod' => - array( - 'table' => - array( - 'table_name' => 'kg_chapter_vod', - 'engine' => 'InnoDB', - 'table_comment' => '', - 'table_collation' => 'utf8mb4_general_ci', - 'character_set_name' => 'utf8mb4', - 'row_format' => 'Dynamic', - ), - 'columns' => - array( - 'id' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_chapter_vod', - 'COLUMN_NAME' => 'id', - 'ORDINAL_POSITION' => '1', - 'COLUMN_DEFAULT' => NULL, - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => 'PRI', - 'EXTRA' => 'auto_increment', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '主键编号', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'course_id' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_chapter_vod', - 'COLUMN_NAME' => 'course_id', - 'ORDINAL_POSITION' => '2', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => 'MUL', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '课程编号', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'chapter_id' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_chapter_vod', - 'COLUMN_NAME' => 'chapter_id', - 'ORDINAL_POSITION' => '3', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => 'MUL', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '章节编号', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'file_id' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_chapter_vod', - 'COLUMN_NAME' => 'file_id', - 'ORDINAL_POSITION' => '4', - 'COLUMN_DEFAULT' => '', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'varchar', - 'CHARACTER_MAXIMUM_LENGTH' => '32', - 'CHARACTER_OCTET_LENGTH' => '128', - 'NUMERIC_PRECISION' => NULL, - 'NUMERIC_SCALE' => NULL, - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => 'utf8mb4', - 'COLLATION_NAME' => 'utf8mb4_general_ci', - 'COLUMN_TYPE' => 'varchar(32)', - 'COLUMN_KEY' => 'MUL', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '文件编号', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'file_transcode' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_chapter_vod', - 'COLUMN_NAME' => 'file_transcode', - 'ORDINAL_POSITION' => '5', - 'COLUMN_DEFAULT' => '', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'varchar', - 'CHARACTER_MAXIMUM_LENGTH' => '1500', - 'CHARACTER_OCTET_LENGTH' => '6000', - 'NUMERIC_PRECISION' => NULL, - 'NUMERIC_SCALE' => NULL, - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => 'utf8mb4', - 'COLLATION_NAME' => 'utf8mb4_general_ci', - 'COLUMN_TYPE' => 'varchar(1500)', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '文件属性', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'create_time' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_chapter_vod', - 'COLUMN_NAME' => 'create_time', - 'ORDINAL_POSITION' => '6', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '创建时间', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'update_time' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_chapter_vod', - 'COLUMN_NAME' => 'update_time', - 'ORDINAL_POSITION' => '7', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '更新时间', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - ), - 'indexes' => - array( - 'chapter_id' => - array( - 1 => - array( - 'Table' => 'kg_chapter_vod', - 'Non_unique' => '1', - 'Key_name' => 'chapter_id', - 'Seq_in_index' => '1', - 'Column_name' => 'chapter_id', - 'Collation' => 'A', - 'Sub_part' => NULL, - 'Packed' => NULL, - 'Null' => '', - 'Index_type' => 'BTREE', - 'Comment' => '', - 'Index_comment' => '', - ), - ), - 'course_id' => - array( - 1 => - array( - 'Table' => 'kg_chapter_vod', - 'Non_unique' => '1', - 'Key_name' => 'course_id', - 'Seq_in_index' => '1', - 'Column_name' => 'course_id', - 'Collation' => 'A', - 'Sub_part' => NULL, - 'Packed' => NULL, - 'Null' => '', - 'Index_type' => 'BTREE', - 'Comment' => '', - 'Index_comment' => '', - ), - ), - 'file_id' => - array( - 1 => - array( - 'Table' => 'kg_chapter_vod', - 'Non_unique' => '1', - 'Key_name' => 'file_id', - 'Seq_in_index' => '1', - 'Column_name' => 'file_id', - 'Collation' => 'A', - 'Sub_part' => NULL, - 'Packed' => NULL, - 'Null' => '', - 'Index_type' => 'BTREE', - 'Comment' => '', - 'Index_comment' => '', - ), - ), - 'PRIMARY' => - array( - 1 => - array( - 'Table' => 'kg_chapter_vod', - 'Non_unique' => '0', - 'Key_name' => 'PRIMARY', - 'Seq_in_index' => '1', - 'Column_name' => 'id', - 'Collation' => 'A', - 'Sub_part' => NULL, - 'Packed' => NULL, - 'Null' => '', - 'Index_type' => 'BTREE', - 'Comment' => '', - 'Index_comment' => '', - ), - ), - ), - 'foreign_keys' => NULL, - ), - 'kg_connect' => - array( - 'table' => - array( - 'table_name' => 'kg_connect', - 'engine' => 'InnoDB', - 'table_comment' => '', - 'table_collation' => 'utf8mb4_general_ci', - 'character_set_name' => 'utf8mb4', - 'row_format' => 'Dynamic', - ), - 'columns' => - array( - 'id' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_connect', - 'COLUMN_NAME' => 'id', - 'ORDINAL_POSITION' => '1', - 'COLUMN_DEFAULT' => NULL, - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => 'PRI', - 'EXTRA' => 'auto_increment', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '主键编号', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'user_id' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_connect', - 'COLUMN_NAME' => 'user_id', - 'ORDINAL_POSITION' => '2', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => 'MUL', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '用户编号', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'union_id' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_connect', - 'COLUMN_NAME' => 'union_id', - 'ORDINAL_POSITION' => '3', - 'COLUMN_DEFAULT' => '', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'varchar', - 'CHARACTER_MAXIMUM_LENGTH' => '64', - 'CHARACTER_OCTET_LENGTH' => '256', - 'NUMERIC_PRECISION' => NULL, - 'NUMERIC_SCALE' => NULL, - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => 'utf8mb4', - 'COLLATION_NAME' => 'utf8mb4_general_ci', - 'COLUMN_TYPE' => 'varchar(64)', - 'COLUMN_KEY' => 'MUL', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => 'union_id', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'open_id' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_connect', - 'COLUMN_NAME' => 'open_id', - 'ORDINAL_POSITION' => '4', - 'COLUMN_DEFAULT' => '', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'varchar', - 'CHARACTER_MAXIMUM_LENGTH' => '64', - 'CHARACTER_OCTET_LENGTH' => '256', - 'NUMERIC_PRECISION' => NULL, - 'NUMERIC_SCALE' => NULL, - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => 'utf8mb4', - 'COLLATION_NAME' => 'utf8mb4_general_ci', - 'COLUMN_TYPE' => 'varchar(64)', - 'COLUMN_KEY' => 'MUL', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '开放ID', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'open_name' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_connect', - 'COLUMN_NAME' => 'open_name', - 'ORDINAL_POSITION' => '5', - 'COLUMN_DEFAULT' => '', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'varchar', - 'CHARACTER_MAXIMUM_LENGTH' => '30', - 'CHARACTER_OCTET_LENGTH' => '120', - 'NUMERIC_PRECISION' => NULL, - 'NUMERIC_SCALE' => NULL, - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => 'utf8mb4', - 'COLLATION_NAME' => 'utf8mb4_general_ci', - 'COLUMN_TYPE' => 'varchar(30)', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '开放名称', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'open_avatar' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_connect', - 'COLUMN_NAME' => 'open_avatar', - 'ORDINAL_POSITION' => '6', - 'COLUMN_DEFAULT' => '', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'varchar', - 'CHARACTER_MAXIMUM_LENGTH' => '150', - 'CHARACTER_OCTET_LENGTH' => '600', - 'NUMERIC_PRECISION' => NULL, - 'NUMERIC_SCALE' => NULL, - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => 'utf8mb4', - 'COLLATION_NAME' => 'utf8mb4_general_ci', - 'COLUMN_TYPE' => 'varchar(150)', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '开放头像', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'provider' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_connect', - 'COLUMN_NAME' => 'provider', - 'ORDINAL_POSITION' => '7', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '提供方', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'deleted' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_connect', - 'COLUMN_NAME' => 'deleted', - 'ORDINAL_POSITION' => '8', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '删除标识', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'create_time' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_connect', - 'COLUMN_NAME' => 'create_time', - 'ORDINAL_POSITION' => '9', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '创建时间', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'update_time' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_connect', - 'COLUMN_NAME' => 'update_time', - 'ORDINAL_POSITION' => '10', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '更新时间', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - ), - 'indexes' => - array( - 'open_provider' => - array( - 1 => - array( - 'Table' => 'kg_connect', - 'Non_unique' => '1', - 'Key_name' => 'open_provider', - 'Seq_in_index' => '1', - 'Column_name' => 'open_id', - 'Collation' => 'A', - 'Sub_part' => NULL, - 'Packed' => NULL, - 'Null' => '', - 'Index_type' => 'BTREE', - 'Comment' => '', - 'Index_comment' => '', - ), - 2 => - array( - 'Table' => 'kg_connect', - 'Non_unique' => '1', - 'Key_name' => 'open_provider', - 'Seq_in_index' => '2', - 'Column_name' => 'provider', - 'Collation' => 'A', - 'Sub_part' => NULL, - 'Packed' => NULL, - 'Null' => '', - 'Index_type' => 'BTREE', - 'Comment' => '', - 'Index_comment' => '', - ), - ), - 'PRIMARY' => - array( - 1 => - array( - 'Table' => 'kg_connect', - 'Non_unique' => '0', - 'Key_name' => 'PRIMARY', - 'Seq_in_index' => '1', - 'Column_name' => 'id', - 'Collation' => 'A', - 'Sub_part' => NULL, - 'Packed' => NULL, - 'Null' => '', - 'Index_type' => 'BTREE', - 'Comment' => '', - 'Index_comment' => '', - ), - ), - 'union_provider' => - array( - 1 => - array( - 'Table' => 'kg_connect', - 'Non_unique' => '1', - 'Key_name' => 'union_provider', - 'Seq_in_index' => '1', - 'Column_name' => 'union_id', - 'Collation' => 'A', - 'Sub_part' => NULL, - 'Packed' => NULL, - 'Null' => '', - 'Index_type' => 'BTREE', - 'Comment' => '', - 'Index_comment' => '', - ), - 2 => - array( - 'Table' => 'kg_connect', - 'Non_unique' => '1', - 'Key_name' => 'union_provider', - 'Seq_in_index' => '2', - 'Column_name' => 'provider', - 'Collation' => 'A', - 'Sub_part' => NULL, - 'Packed' => NULL, - 'Null' => '', - 'Index_type' => 'BTREE', - 'Comment' => '', - 'Index_comment' => '', - ), - ), - 'user_id' => - array( - 1 => - array( - 'Table' => 'kg_connect', - 'Non_unique' => '1', - 'Key_name' => 'user_id', - 'Seq_in_index' => '1', - 'Column_name' => 'user_id', - 'Collation' => 'A', - 'Sub_part' => NULL, - 'Packed' => NULL, - 'Null' => '', - 'Index_type' => 'BTREE', - 'Comment' => '', - 'Index_comment' => '', - ), - ), - ), - 'foreign_keys' => NULL, - ), - 'kg_consult' => - array( - 'table' => - array( - 'table_name' => 'kg_consult', - 'engine' => 'InnoDB', - 'table_comment' => '', - 'table_collation' => 'utf8mb4_general_ci', - 'character_set_name' => 'utf8mb4', - 'row_format' => 'Compact', - ), - 'columns' => - array( - 'id' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_consult', - 'COLUMN_NAME' => 'id', - 'ORDINAL_POSITION' => '1', - 'COLUMN_DEFAULT' => NULL, - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => 'PRI', - 'EXTRA' => 'auto_increment', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '主键编号', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'course_id' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_consult', - 'COLUMN_NAME' => 'course_id', - 'ORDINAL_POSITION' => '2', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => 'MUL', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '课程编号', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'chapter_id' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_consult', - 'COLUMN_NAME' => 'chapter_id', - 'ORDINAL_POSITION' => '3', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => 'MUL', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '章节编号', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'owner_id' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_consult', - 'COLUMN_NAME' => 'owner_id', - 'ORDINAL_POSITION' => '4', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => 'MUL', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '用户编号', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'replier_id' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_consult', - 'COLUMN_NAME' => 'replier_id', - 'ORDINAL_POSITION' => '5', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '回复者编号', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'question' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_consult', - 'COLUMN_NAME' => 'question', - 'ORDINAL_POSITION' => '6', - 'COLUMN_DEFAULT' => '', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'varchar', - 'CHARACTER_MAXIMUM_LENGTH' => '1500', - 'CHARACTER_OCTET_LENGTH' => '6000', - 'NUMERIC_PRECISION' => NULL, - 'NUMERIC_SCALE' => NULL, - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => 'utf8mb4', - 'COLLATION_NAME' => 'utf8mb4_general_ci', - 'COLUMN_TYPE' => 'varchar(1500)', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '问题', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'answer' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_consult', - 'COLUMN_NAME' => 'answer', - 'ORDINAL_POSITION' => '7', - 'COLUMN_DEFAULT' => '', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'varchar', - 'CHARACTER_MAXIMUM_LENGTH' => '1500', - 'CHARACTER_OCTET_LENGTH' => '6000', - 'NUMERIC_PRECISION' => NULL, - 'NUMERIC_SCALE' => NULL, - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => 'utf8mb4', - 'COLLATION_NAME' => 'utf8mb4_general_ci', - 'COLUMN_TYPE' => 'varchar(1500)', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '答案', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'rating' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_consult', - 'COLUMN_NAME' => 'rating', - 'ORDINAL_POSITION' => '8', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '评分', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'priority' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_consult', - 'COLUMN_NAME' => 'priority', - 'ORDINAL_POSITION' => '9', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '优先级', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'private' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_consult', - 'COLUMN_NAME' => 'private', - 'ORDINAL_POSITION' => '10', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '私密标识', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'published' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_consult', - 'COLUMN_NAME' => 'published', - 'ORDINAL_POSITION' => '11', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '发布标识', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'deleted' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_consult', - 'COLUMN_NAME' => 'deleted', - 'ORDINAL_POSITION' => '12', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '删除标识', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'like_count' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_consult', - 'COLUMN_NAME' => 'like_count', - 'ORDINAL_POSITION' => '13', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '点赞数', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'reply_time' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_consult', - 'COLUMN_NAME' => 'reply_time', - 'ORDINAL_POSITION' => '14', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '回复时间', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'create_time' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_consult', - 'COLUMN_NAME' => 'create_time', - 'ORDINAL_POSITION' => '15', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '创建时间', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'update_time' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_consult', - 'COLUMN_NAME' => 'update_time', - 'ORDINAL_POSITION' => '16', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '更新时间', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - ), - 'indexes' => - array( - 'chapter_id' => - array( - 1 => - array( - 'Table' => 'kg_consult', - 'Non_unique' => '1', - 'Key_name' => 'chapter_id', - 'Seq_in_index' => '1', - 'Column_name' => 'chapter_id', - 'Collation' => 'A', - 'Sub_part' => NULL, - 'Packed' => NULL, - 'Null' => '', - 'Index_type' => 'BTREE', - 'Comment' => '', - 'Index_comment' => '', - ), - ), - 'course_id' => - array( - 1 => - array( - 'Table' => 'kg_consult', - 'Non_unique' => '1', - 'Key_name' => 'course_id', - 'Seq_in_index' => '1', - 'Column_name' => 'course_id', - 'Collation' => 'A', - 'Sub_part' => NULL, - 'Packed' => NULL, - 'Null' => '', - 'Index_type' => 'BTREE', - 'Comment' => '', - 'Index_comment' => '', - ), - ), - 'owner_id' => - array( - 1 => - array( - 'Table' => 'kg_consult', - 'Non_unique' => '1', - 'Key_name' => 'owner_id', - 'Seq_in_index' => '1', - 'Column_name' => 'owner_id', - 'Collation' => 'A', - 'Sub_part' => NULL, - 'Packed' => NULL, - 'Null' => '', - 'Index_type' => 'BTREE', - 'Comment' => '', - 'Index_comment' => '', - ), - ), - 'PRIMARY' => - array( - 1 => - array( - 'Table' => 'kg_consult', - 'Non_unique' => '0', - 'Key_name' => 'PRIMARY', - 'Seq_in_index' => '1', - 'Column_name' => 'id', - 'Collation' => 'A', - 'Sub_part' => NULL, - 'Packed' => NULL, - 'Null' => '', - 'Index_type' => 'BTREE', - 'Comment' => '', - 'Index_comment' => '', - ), - ), - ), - 'foreign_keys' => NULL, - ), - 'kg_consult_like' => - array( - 'table' => - array( - 'table_name' => 'kg_consult_like', - 'engine' => 'InnoDB', - 'table_comment' => '', - 'table_collation' => 'utf8mb4_general_ci', - 'character_set_name' => 'utf8mb4', - 'row_format' => 'Compact', - ), - 'columns' => - array( - 'id' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_consult_like', - 'COLUMN_NAME' => 'id', - 'ORDINAL_POSITION' => '1', - 'COLUMN_DEFAULT' => NULL, - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => 'PRI', - 'EXTRA' => 'auto_increment', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '主键编号', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'consult_id' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_consult_like', - 'COLUMN_NAME' => 'consult_id', - 'ORDINAL_POSITION' => '2', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => 'MUL', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '咨询编号', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'user_id' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_consult_like', - 'COLUMN_NAME' => 'user_id', - 'ORDINAL_POSITION' => '3', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '用户编号', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'deleted' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_consult_like', - 'COLUMN_NAME' => 'deleted', - 'ORDINAL_POSITION' => '4', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '删除标识', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'create_time' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_consult_like', - 'COLUMN_NAME' => 'create_time', - 'ORDINAL_POSITION' => '5', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '创建时间', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'update_time' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_consult_like', - 'COLUMN_NAME' => 'update_time', - 'ORDINAL_POSITION' => '6', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '更新时间', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - ), - 'indexes' => - array( - 'consult_user' => - array( - 1 => - array( - 'Table' => 'kg_consult_like', - 'Non_unique' => '1', - 'Key_name' => 'consult_user', - 'Seq_in_index' => '1', - 'Column_name' => 'consult_id', - 'Collation' => 'A', - 'Sub_part' => NULL, - 'Packed' => NULL, - 'Null' => '', - 'Index_type' => 'BTREE', - 'Comment' => '', - 'Index_comment' => '', - ), - 2 => - array( - 'Table' => 'kg_consult_like', - 'Non_unique' => '1', - 'Key_name' => 'consult_user', - 'Seq_in_index' => '2', - 'Column_name' => 'user_id', - 'Collation' => 'A', - 'Sub_part' => NULL, - 'Packed' => NULL, - 'Null' => '', - 'Index_type' => 'BTREE', - 'Comment' => '', - 'Index_comment' => '', - ), - ), - 'PRIMARY' => - array( - 1 => - array( - 'Table' => 'kg_consult_like', - 'Non_unique' => '0', - 'Key_name' => 'PRIMARY', - 'Seq_in_index' => '1', - 'Column_name' => 'id', - 'Collation' => 'A', - 'Sub_part' => NULL, - 'Packed' => NULL, - 'Null' => '', - 'Index_type' => 'BTREE', - 'Comment' => '', - 'Index_comment' => '', - ), - ), - ), - 'foreign_keys' => NULL, - ), - 'kg_course' => - array( - 'table' => - array( - 'table_name' => 'kg_course', - 'engine' => 'InnoDB', - 'table_comment' => '', - 'table_collation' => 'utf8mb4_general_ci', - 'character_set_name' => 'utf8mb4', - 'row_format' => 'Dynamic', - ), - 'columns' => - array( - 'id' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_course', - 'COLUMN_NAME' => 'id', - 'ORDINAL_POSITION' => '1', - 'COLUMN_DEFAULT' => NULL, - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => 'PRI', - 'EXTRA' => 'auto_increment', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '主键编号', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'title' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_course', - 'COLUMN_NAME' => 'title', - 'ORDINAL_POSITION' => '2', - 'COLUMN_DEFAULT' => '', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'varchar', - 'CHARACTER_MAXIMUM_LENGTH' => '100', - 'CHARACTER_OCTET_LENGTH' => '400', - 'NUMERIC_PRECISION' => NULL, - 'NUMERIC_SCALE' => NULL, - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => 'utf8mb4', - 'COLLATION_NAME' => 'utf8mb4_general_ci', - 'COLUMN_TYPE' => 'varchar(100)', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '标题', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'cover' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_course', - 'COLUMN_NAME' => 'cover', - 'ORDINAL_POSITION' => '3', - 'COLUMN_DEFAULT' => '', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'varchar', - 'CHARACTER_MAXIMUM_LENGTH' => '100', - 'CHARACTER_OCTET_LENGTH' => '400', - 'NUMERIC_PRECISION' => NULL, - 'NUMERIC_SCALE' => NULL, - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => 'utf8mb4', - 'COLLATION_NAME' => 'utf8mb4_general_ci', - 'COLUMN_TYPE' => 'varchar(100)', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '封面', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'summary' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_course', - 'COLUMN_NAME' => 'summary', - 'ORDINAL_POSITION' => '4', - 'COLUMN_DEFAULT' => '', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'varchar', - 'CHARACTER_MAXIMUM_LENGTH' => '255', - 'CHARACTER_OCTET_LENGTH' => '1020', - 'NUMERIC_PRECISION' => NULL, - 'NUMERIC_SCALE' => NULL, - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => 'utf8mb4', - 'COLLATION_NAME' => 'utf8mb4_general_ci', - 'COLUMN_TYPE' => 'varchar(255)', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '简介', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'keywords' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_course', - 'COLUMN_NAME' => 'keywords', - 'ORDINAL_POSITION' => '5', - 'COLUMN_DEFAULT' => '', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'varchar', - 'CHARACTER_MAXIMUM_LENGTH' => '100', - 'CHARACTER_OCTET_LENGTH' => '400', - 'NUMERIC_PRECISION' => NULL, - 'NUMERIC_SCALE' => NULL, - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => 'utf8mb4', - 'COLLATION_NAME' => 'utf8mb4_general_ci', - 'COLUMN_TYPE' => 'varchar(100)', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '关键字', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'details' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_course', - 'COLUMN_NAME' => 'details', - 'ORDINAL_POSITION' => '6', - 'COLUMN_DEFAULT' => NULL, - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'text', - 'CHARACTER_MAXIMUM_LENGTH' => '65535', - 'CHARACTER_OCTET_LENGTH' => '65535', - 'NUMERIC_PRECISION' => NULL, - 'NUMERIC_SCALE' => NULL, - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => 'utf8mb4', - 'COLLATION_NAME' => 'utf8mb4_general_ci', - 'COLUMN_TYPE' => 'text', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '详情', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'category_id' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_course', - 'COLUMN_NAME' => 'category_id', - 'ORDINAL_POSITION' => '7', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '分类编号', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'teacher_id' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_course', - 'COLUMN_NAME' => 'teacher_id', - 'ORDINAL_POSITION' => '8', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '讲师编号', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'market_price' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_course', - 'COLUMN_NAME' => 'market_price', - 'ORDINAL_POSITION' => '9', - 'COLUMN_DEFAULT' => '0.00', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'decimal', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '2', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'decimal(10,2) unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '优惠价格', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'vip_price' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_course', - 'COLUMN_NAME' => 'vip_price', - 'ORDINAL_POSITION' => '10', - 'COLUMN_DEFAULT' => '0.00', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'decimal', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '2', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'decimal(10,2) unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '会员价格', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'study_expiry' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_course', - 'COLUMN_NAME' => 'study_expiry', - 'ORDINAL_POSITION' => '11', - 'COLUMN_DEFAULT' => '12', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '学习期限', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'refund_expiry' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_course', - 'COLUMN_NAME' => 'refund_expiry', - 'ORDINAL_POSITION' => '12', - 'COLUMN_DEFAULT' => '30', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '退款期限', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'rating' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_course', - 'COLUMN_NAME' => 'rating', - 'ORDINAL_POSITION' => '13', - 'COLUMN_DEFAULT' => '5.00', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'float', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '2', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'float(10,2) unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '用户评分', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'score' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_course', - 'COLUMN_NAME' => 'score', - 'ORDINAL_POSITION' => '14', - 'COLUMN_DEFAULT' => '0.0000', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'float', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '4', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'float(10,4) unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '综合得分', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'model' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_course', - 'COLUMN_NAME' => 'model', - 'ORDINAL_POSITION' => '15', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '模型', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'level' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_course', - 'COLUMN_NAME' => 'level', - 'ORDINAL_POSITION' => '16', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '难度', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'attrs' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_course', - 'COLUMN_NAME' => 'attrs', - 'ORDINAL_POSITION' => '17', - 'COLUMN_DEFAULT' => '', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'varchar', - 'CHARACTER_MAXIMUM_LENGTH' => '1000', - 'CHARACTER_OCTET_LENGTH' => '4000', - 'NUMERIC_PRECISION' => NULL, - 'NUMERIC_SCALE' => NULL, - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => 'utf8mb4', - 'COLLATION_NAME' => 'utf8mb4_general_ci', - 'COLUMN_TYPE' => 'varchar(1000)', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '扩展属性', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'featured' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_course', - 'COLUMN_NAME' => 'featured', - 'ORDINAL_POSITION' => '18', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '推荐标识', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'published' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_course', - 'COLUMN_NAME' => 'published', - 'ORDINAL_POSITION' => '19', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '发布标识', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'deleted' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_course', - 'COLUMN_NAME' => 'deleted', - 'ORDINAL_POSITION' => '20', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '删除标识', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'resource_count' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_course', - 'COLUMN_NAME' => 'resource_count', - 'ORDINAL_POSITION' => '21', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '资料数', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'user_count' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_course', - 'COLUMN_NAME' => 'user_count', - 'ORDINAL_POSITION' => '22', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '学员数', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'lesson_count' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_course', - 'COLUMN_NAME' => 'lesson_count', - 'ORDINAL_POSITION' => '23', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '课时数', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'package_count' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_course', - 'COLUMN_NAME' => 'package_count', - 'ORDINAL_POSITION' => '24', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '套餐数', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'review_count' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_course', - 'COLUMN_NAME' => 'review_count', - 'ORDINAL_POSITION' => '25', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '评价数', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'consult_count' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_course', - 'COLUMN_NAME' => 'consult_count', - 'ORDINAL_POSITION' => '26', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '咨询数', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'favorite_count' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_course', - 'COLUMN_NAME' => 'favorite_count', - 'ORDINAL_POSITION' => '27', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '收藏数', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'create_time' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_course', - 'COLUMN_NAME' => 'create_time', - 'ORDINAL_POSITION' => '28', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '创建时间', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'update_time' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_course', - 'COLUMN_NAME' => 'update_time', - 'ORDINAL_POSITION' => '29', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '更新时间', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - ), - 'indexes' => - array( - 'PRIMARY' => - array( - 1 => - array( - 'Table' => 'kg_course', - 'Non_unique' => '0', - 'Key_name' => 'PRIMARY', - 'Seq_in_index' => '1', - 'Column_name' => 'id', - 'Collation' => 'A', - 'Sub_part' => NULL, - 'Packed' => NULL, - 'Null' => '', - 'Index_type' => 'BTREE', - 'Comment' => '', - 'Index_comment' => '', - ), - ), - ), - 'foreign_keys' => NULL, - ), - 'kg_course_category' => - array( - 'table' => - array( - 'table_name' => 'kg_course_category', - 'engine' => 'InnoDB', - 'table_comment' => '', - 'table_collation' => 'utf8mb4_general_ci', - 'character_set_name' => 'utf8mb4', - 'row_format' => 'Compact', - ), - 'columns' => - array( - 'id' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_course_category', - 'COLUMN_NAME' => 'id', - 'ORDINAL_POSITION' => '1', - 'COLUMN_DEFAULT' => NULL, - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => 'PRI', - 'EXTRA' => 'auto_increment', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '主键编号', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'course_id' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_course_category', - 'COLUMN_NAME' => 'course_id', - 'ORDINAL_POSITION' => '2', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => 'MUL', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '课程编号', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'category_id' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_course_category', - 'COLUMN_NAME' => 'category_id', - 'ORDINAL_POSITION' => '3', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => 'MUL', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '分类编号', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'create_time' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_course_category', - 'COLUMN_NAME' => 'create_time', - 'ORDINAL_POSITION' => '4', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '创建时间', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - ), - 'indexes' => - array( - 'category_id' => - array( - 1 => - array( - 'Table' => 'kg_course_category', - 'Non_unique' => '1', - 'Key_name' => 'category_id', - 'Seq_in_index' => '1', - 'Column_name' => 'category_id', - 'Collation' => 'A', - 'Sub_part' => NULL, - 'Packed' => NULL, - 'Null' => '', - 'Index_type' => 'BTREE', - 'Comment' => '', - 'Index_comment' => '', - ), - ), - 'course_id' => - array( - 1 => - array( - 'Table' => 'kg_course_category', - 'Non_unique' => '1', - 'Key_name' => 'course_id', - 'Seq_in_index' => '1', - 'Column_name' => 'course_id', - 'Collation' => 'A', - 'Sub_part' => NULL, - 'Packed' => NULL, - 'Null' => '', - 'Index_type' => 'BTREE', - 'Comment' => '', - 'Index_comment' => '', - ), - ), - 'PRIMARY' => - array( - 1 => - array( - 'Table' => 'kg_course_category', - 'Non_unique' => '0', - 'Key_name' => 'PRIMARY', - 'Seq_in_index' => '1', - 'Column_name' => 'id', - 'Collation' => 'A', - 'Sub_part' => NULL, - 'Packed' => NULL, - 'Null' => '', - 'Index_type' => 'BTREE', - 'Comment' => '', - 'Index_comment' => '', - ), - ), - ), - 'foreign_keys' => NULL, - ), - 'kg_course_favorite' => - array( - 'table' => - array( - 'table_name' => 'kg_course_favorite', - 'engine' => 'InnoDB', - 'table_comment' => '', - 'table_collation' => 'utf8mb4_general_ci', - 'character_set_name' => 'utf8mb4', - 'row_format' => 'Compact', - ), - 'columns' => - array( - 'id' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_course_favorite', - 'COLUMN_NAME' => 'id', - 'ORDINAL_POSITION' => '1', - 'COLUMN_DEFAULT' => NULL, - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => 'PRI', - 'EXTRA' => 'auto_increment', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '主键编号', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'course_id' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_course_favorite', - 'COLUMN_NAME' => 'course_id', - 'ORDINAL_POSITION' => '2', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => 'MUL', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '课程编号', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'user_id' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_course_favorite', - 'COLUMN_NAME' => 'user_id', - 'ORDINAL_POSITION' => '3', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => 'MUL', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '用户编号', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'deleted' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_course_favorite', - 'COLUMN_NAME' => 'deleted', - 'ORDINAL_POSITION' => '4', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '删除标识', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'create_time' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_course_favorite', - 'COLUMN_NAME' => 'create_time', - 'ORDINAL_POSITION' => '5', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '创建时间', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'update_time' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_course_favorite', - 'COLUMN_NAME' => 'update_time', - 'ORDINAL_POSITION' => '6', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '更新时间', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - ), - 'indexes' => - array( - 'course_id' => - array( - 1 => - array( - 'Table' => 'kg_course_favorite', - 'Non_unique' => '1', - 'Key_name' => 'course_id', - 'Seq_in_index' => '1', - 'Column_name' => 'course_id', - 'Collation' => 'A', - 'Sub_part' => NULL, - 'Packed' => NULL, - 'Null' => '', - 'Index_type' => 'BTREE', - 'Comment' => '', - 'Index_comment' => '', - ), - ), - 'PRIMARY' => - array( - 1 => - array( - 'Table' => 'kg_course_favorite', - 'Non_unique' => '0', - 'Key_name' => 'PRIMARY', - 'Seq_in_index' => '1', - 'Column_name' => 'id', - 'Collation' => 'A', - 'Sub_part' => NULL, - 'Packed' => NULL, - 'Null' => '', - 'Index_type' => 'BTREE', - 'Comment' => '', - 'Index_comment' => '', - ), - ), - 'user_id' => - array( - 1 => - array( - 'Table' => 'kg_course_favorite', - 'Non_unique' => '1', - 'Key_name' => 'user_id', - 'Seq_in_index' => '1', - 'Column_name' => 'user_id', - 'Collation' => 'A', - 'Sub_part' => NULL, - 'Packed' => NULL, - 'Null' => '', - 'Index_type' => 'BTREE', - 'Comment' => '', - 'Index_comment' => '', - ), - ), - ), - 'foreign_keys' => NULL, - ), - 'kg_course_package' => - array( - 'table' => - array( - 'table_name' => 'kg_course_package', - 'engine' => 'InnoDB', - 'table_comment' => '', - 'table_collation' => 'utf8mb4_general_ci', - 'character_set_name' => 'utf8mb4', - 'row_format' => 'Compact', - ), - 'columns' => - array( - 'id' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_course_package', - 'COLUMN_NAME' => 'id', - 'ORDINAL_POSITION' => '1', - 'COLUMN_DEFAULT' => NULL, - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => 'PRI', - 'EXTRA' => 'auto_increment', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '主键编号', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'course_id' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_course_package', - 'COLUMN_NAME' => 'course_id', - 'ORDINAL_POSITION' => '2', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => 'MUL', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '课程编号', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'package_id' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_course_package', - 'COLUMN_NAME' => 'package_id', - 'ORDINAL_POSITION' => '3', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => 'MUL', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '套餐编号', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'create_time' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_course_package', - 'COLUMN_NAME' => 'create_time', - 'ORDINAL_POSITION' => '4', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '创建时间', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - ), - 'indexes' => - array( - 'course_id' => - array( - 1 => - array( - 'Table' => 'kg_course_package', - 'Non_unique' => '1', - 'Key_name' => 'course_id', - 'Seq_in_index' => '1', - 'Column_name' => 'course_id', - 'Collation' => 'A', - 'Sub_part' => NULL, - 'Packed' => NULL, - 'Null' => '', - 'Index_type' => 'BTREE', - 'Comment' => '', - 'Index_comment' => '', - ), - ), - 'package_id' => - array( - 1 => - array( - 'Table' => 'kg_course_package', - 'Non_unique' => '1', - 'Key_name' => 'package_id', - 'Seq_in_index' => '1', - 'Column_name' => 'package_id', - 'Collation' => 'A', - 'Sub_part' => NULL, - 'Packed' => NULL, - 'Null' => '', - 'Index_type' => 'BTREE', - 'Comment' => '', - 'Index_comment' => '', - ), - ), - 'PRIMARY' => - array( - 1 => - array( - 'Table' => 'kg_course_package', - 'Non_unique' => '0', - 'Key_name' => 'PRIMARY', - 'Seq_in_index' => '1', - 'Column_name' => 'id', - 'Collation' => 'A', - 'Sub_part' => NULL, - 'Packed' => NULL, - 'Null' => '', - 'Index_type' => 'BTREE', - 'Comment' => '', - 'Index_comment' => '', - ), - ), - ), - 'foreign_keys' => NULL, - ), - 'kg_course_rating' => - array( - 'table' => - array( - 'table_name' => 'kg_course_rating', - 'engine' => 'InnoDB', - 'table_comment' => '', - 'table_collation' => 'utf8mb4_general_ci', - 'character_set_name' => 'utf8mb4', - 'row_format' => 'Dynamic', - ), - 'columns' => - array( - 'course_id' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_course_rating', - 'COLUMN_NAME' => 'course_id', - 'ORDINAL_POSITION' => '1', - 'COLUMN_DEFAULT' => NULL, - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => 'PRI', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '主键编号', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'rating' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_course_rating', - 'COLUMN_NAME' => 'rating', - 'ORDINAL_POSITION' => '2', - 'COLUMN_DEFAULT' => '5.00', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'float', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '2', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'float(10,2) unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '综合评分', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'rating1' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_course_rating', - 'COLUMN_NAME' => 'rating1', - 'ORDINAL_POSITION' => '3', - 'COLUMN_DEFAULT' => '5.00', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'float', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '2', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'float(10,2) unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '维度1评分', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'rating2' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_course_rating', - 'COLUMN_NAME' => 'rating2', - 'ORDINAL_POSITION' => '4', - 'COLUMN_DEFAULT' => '5.00', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'float', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '2', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'float(10,2) unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '维度2评分', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'rating3' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_course_rating', - 'COLUMN_NAME' => 'rating3', - 'ORDINAL_POSITION' => '5', - 'COLUMN_DEFAULT' => '5.00', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'float', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '2', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'float(10,2) unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '维度3评分', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'create_time' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_course_rating', - 'COLUMN_NAME' => 'create_time', - 'ORDINAL_POSITION' => '6', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '创建时间', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'update_time' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_course_rating', - 'COLUMN_NAME' => 'update_time', - 'ORDINAL_POSITION' => '7', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '更新时间', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - ), - 'indexes' => - array( - 'PRIMARY' => - array( - 1 => - array( - 'Table' => 'kg_course_rating', - 'Non_unique' => '0', - 'Key_name' => 'PRIMARY', - 'Seq_in_index' => '1', - 'Column_name' => 'course_id', - 'Collation' => 'A', - 'Sub_part' => NULL, - 'Packed' => NULL, - 'Null' => '', - 'Index_type' => 'BTREE', - 'Comment' => '', - 'Index_comment' => '', - ), - ), - ), - 'foreign_keys' => NULL, - ), - 'kg_course_related' => - array( - 'table' => - array( - 'table_name' => 'kg_course_related', - 'engine' => 'InnoDB', - 'table_comment' => '', - 'table_collation' => 'utf8mb4_general_ci', - 'character_set_name' => 'utf8mb4', - 'row_format' => 'Compact', - ), - 'columns' => - array( - 'id' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_course_related', - 'COLUMN_NAME' => 'id', - 'ORDINAL_POSITION' => '1', - 'COLUMN_DEFAULT' => NULL, - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => 'PRI', - 'EXTRA' => 'auto_increment', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '主键编号', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'course_id' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_course_related', - 'COLUMN_NAME' => 'course_id', - 'ORDINAL_POSITION' => '2', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => 'MUL', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '课程编号', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'related_id' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_course_related', - 'COLUMN_NAME' => 'related_id', - 'ORDINAL_POSITION' => '3', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '相关编号', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'create_time' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_course_related', - 'COLUMN_NAME' => 'create_time', - 'ORDINAL_POSITION' => '4', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '创建时间', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - ), - 'indexes' => - array( - 'course_id' => - array( - 1 => - array( - 'Table' => 'kg_course_related', - 'Non_unique' => '1', - 'Key_name' => 'course_id', - 'Seq_in_index' => '1', - 'Column_name' => 'course_id', - 'Collation' => 'A', - 'Sub_part' => NULL, - 'Packed' => NULL, - 'Null' => '', - 'Index_type' => 'BTREE', - 'Comment' => '', - 'Index_comment' => '', - ), - ), - 'PRIMARY' => - array( - 1 => - array( - 'Table' => 'kg_course_related', - 'Non_unique' => '0', - 'Key_name' => 'PRIMARY', - 'Seq_in_index' => '1', - 'Column_name' => 'id', - 'Collation' => 'A', - 'Sub_part' => NULL, - 'Packed' => NULL, - 'Null' => '', - 'Index_type' => 'BTREE', - 'Comment' => '', - 'Index_comment' => '', - ), - ), - ), - 'foreign_keys' => NULL, - ), - 'kg_course_topic' => - array( - 'table' => - array( - 'table_name' => 'kg_course_topic', - 'engine' => 'InnoDB', - 'table_comment' => '', - 'table_collation' => 'utf8mb4_general_ci', - 'character_set_name' => 'utf8mb4', - 'row_format' => 'Compact', - ), - 'columns' => - array( - 'id' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_course_topic', - 'COLUMN_NAME' => 'id', - 'ORDINAL_POSITION' => '1', - 'COLUMN_DEFAULT' => NULL, - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => 'PRI', - 'EXTRA' => 'auto_increment', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '主键编号', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'course_id' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_course_topic', - 'COLUMN_NAME' => 'course_id', - 'ORDINAL_POSITION' => '2', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => 'MUL', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '课程编号', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'topic_id' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_course_topic', - 'COLUMN_NAME' => 'topic_id', - 'ORDINAL_POSITION' => '3', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => 'MUL', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '标签编号', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'create_time' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_course_topic', - 'COLUMN_NAME' => 'create_time', - 'ORDINAL_POSITION' => '4', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '创建时间', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - ), - 'indexes' => - array( - 'course_id' => - array( - 1 => - array( - 'Table' => 'kg_course_topic', - 'Non_unique' => '1', - 'Key_name' => 'course_id', - 'Seq_in_index' => '1', - 'Column_name' => 'course_id', - 'Collation' => 'A', - 'Sub_part' => NULL, - 'Packed' => NULL, - 'Null' => '', - 'Index_type' => 'BTREE', - 'Comment' => '', - 'Index_comment' => '', - ), - ), - 'PRIMARY' => - array( - 1 => - array( - 'Table' => 'kg_course_topic', - 'Non_unique' => '0', - 'Key_name' => 'PRIMARY', - 'Seq_in_index' => '1', - 'Column_name' => 'id', - 'Collation' => 'A', - 'Sub_part' => NULL, - 'Packed' => NULL, - 'Null' => '', - 'Index_type' => 'BTREE', - 'Comment' => '', - 'Index_comment' => '', - ), - ), - 'topic_id' => - array( - 1 => - array( - 'Table' => 'kg_course_topic', - 'Non_unique' => '1', - 'Key_name' => 'topic_id', - 'Seq_in_index' => '1', - 'Column_name' => 'topic_id', - 'Collation' => 'A', - 'Sub_part' => NULL, - 'Packed' => NULL, - 'Null' => '', - 'Index_type' => 'BTREE', - 'Comment' => '', - 'Index_comment' => '', - ), - ), - ), - 'foreign_keys' => NULL, - ), - 'kg_course_user' => - array( - 'table' => - array( - 'table_name' => 'kg_course_user', - 'engine' => 'InnoDB', - 'table_comment' => '', - 'table_collation' => 'utf8mb4_general_ci', - 'character_set_name' => 'utf8mb4', - 'row_format' => 'Dynamic', - ), - 'columns' => - array( - 'id' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_course_user', - 'COLUMN_NAME' => 'id', - 'ORDINAL_POSITION' => '1', - 'COLUMN_DEFAULT' => NULL, - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => 'PRI', - 'EXTRA' => 'auto_increment', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '主键编号', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'course_id' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_course_user', - 'COLUMN_NAME' => 'course_id', - 'ORDINAL_POSITION' => '2', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => 'MUL', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '课程编号', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'user_id' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_course_user', - 'COLUMN_NAME' => 'user_id', - 'ORDINAL_POSITION' => '3', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => 'MUL', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '用户编号', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'plan_id' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_course_user', - 'COLUMN_NAME' => 'plan_id', - 'ORDINAL_POSITION' => '4', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '计划编号', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'role_type' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_course_user', - 'COLUMN_NAME' => 'role_type', - 'ORDINAL_POSITION' => '5', - 'COLUMN_DEFAULT' => '1', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '角色类型', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'source_type' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_course_user', - 'COLUMN_NAME' => 'source_type', - 'ORDINAL_POSITION' => '6', - 'COLUMN_DEFAULT' => '1', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '来源类型', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'duration' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_course_user', - 'COLUMN_NAME' => 'duration', - 'ORDINAL_POSITION' => '7', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '学习时长', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'progress' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_course_user', - 'COLUMN_NAME' => 'progress', - 'ORDINAL_POSITION' => '8', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '学习进度', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'reviewed' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_course_user', - 'COLUMN_NAME' => 'reviewed', - 'ORDINAL_POSITION' => '9', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '评价标识', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'deleted' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_course_user', - 'COLUMN_NAME' => 'deleted', - 'ORDINAL_POSITION' => '10', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '删除标识', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'expiry_time' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_course_user', - 'COLUMN_NAME' => 'expiry_time', - 'ORDINAL_POSITION' => '11', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '过期时间', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'create_time' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_course_user', - 'COLUMN_NAME' => 'create_time', - 'ORDINAL_POSITION' => '12', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '创建时间', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'update_time' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_course_user', - 'COLUMN_NAME' => 'update_time', - 'ORDINAL_POSITION' => '13', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '更新时间', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - ), - 'indexes' => - array( - 'course_id' => - array( - 1 => - array( - 'Table' => 'kg_course_user', - 'Non_unique' => '1', - 'Key_name' => 'course_id', - 'Seq_in_index' => '1', - 'Column_name' => 'course_id', - 'Collation' => 'A', - 'Sub_part' => NULL, - 'Packed' => NULL, - 'Null' => '', - 'Index_type' => 'BTREE', - 'Comment' => '', - 'Index_comment' => '', - ), - ), - 'course_user' => - array( - 1 => - array( - 'Table' => 'kg_course_user', - 'Non_unique' => '1', - 'Key_name' => 'course_user', - 'Seq_in_index' => '1', - 'Column_name' => 'course_id', - 'Collation' => 'A', - 'Sub_part' => NULL, - 'Packed' => NULL, - 'Null' => '', - 'Index_type' => 'BTREE', - 'Comment' => '', - 'Index_comment' => '', - ), - 2 => - array( - 'Table' => 'kg_course_user', - 'Non_unique' => '1', - 'Key_name' => 'course_user', - 'Seq_in_index' => '2', - 'Column_name' => 'user_id', - 'Collation' => 'A', - 'Sub_part' => NULL, - 'Packed' => NULL, - 'Null' => '', - 'Index_type' => 'BTREE', - 'Comment' => '', - 'Index_comment' => '', - ), - ), - 'PRIMARY' => - array( - 1 => - array( - 'Table' => 'kg_course_user', - 'Non_unique' => '0', - 'Key_name' => 'PRIMARY', - 'Seq_in_index' => '1', - 'Column_name' => 'id', - 'Collation' => 'A', - 'Sub_part' => NULL, - 'Packed' => NULL, - 'Null' => '', - 'Index_type' => 'BTREE', - 'Comment' => '', - 'Index_comment' => '', - ), - ), - 'user_id' => - array( - 1 => - array( - 'Table' => 'kg_course_user', - 'Non_unique' => '1', - 'Key_name' => 'user_id', - 'Seq_in_index' => '1', - 'Column_name' => 'user_id', - 'Collation' => 'A', - 'Sub_part' => NULL, - 'Packed' => NULL, - 'Null' => '', - 'Index_type' => 'BTREE', - 'Comment' => '', - 'Index_comment' => '', - ), - ), - ), - 'foreign_keys' => NULL, - ), - 'kg_danmu' => - array( - 'table' => - array( - 'table_name' => 'kg_danmu', - 'engine' => 'InnoDB', - 'table_comment' => '', - 'table_collation' => 'utf8mb4_general_ci', - 'character_set_name' => 'utf8mb4', - 'row_format' => 'Dynamic', - ), - 'columns' => - array( - 'id' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_danmu', - 'COLUMN_NAME' => 'id', - 'ORDINAL_POSITION' => '1', - 'COLUMN_DEFAULT' => NULL, - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => 'PRI', - 'EXTRA' => 'auto_increment', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '主键编号', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'course_id' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_danmu', - 'COLUMN_NAME' => 'course_id', - 'ORDINAL_POSITION' => '2', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '课程编号', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'chapter_id' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_danmu', - 'COLUMN_NAME' => 'chapter_id', - 'ORDINAL_POSITION' => '3', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => 'MUL', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '章节编号', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'owner_id' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_danmu', - 'COLUMN_NAME' => 'owner_id', - 'ORDINAL_POSITION' => '4', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => 'MUL', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '用户编号', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'time' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_danmu', - 'COLUMN_NAME' => 'time', - 'ORDINAL_POSITION' => '5', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '时间轴', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'text' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_danmu', - 'COLUMN_NAME' => 'text', - 'ORDINAL_POSITION' => '6', - 'COLUMN_DEFAULT' => '', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'varchar', - 'CHARACTER_MAXIMUM_LENGTH' => '255', - 'CHARACTER_OCTET_LENGTH' => '1020', - 'NUMERIC_PRECISION' => NULL, - 'NUMERIC_SCALE' => NULL, - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => 'utf8mb4', - 'COLLATION_NAME' => 'utf8mb4_general_ci', - 'COLUMN_TYPE' => 'varchar(255)', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '内容', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'color' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_danmu', - 'COLUMN_NAME' => 'color', - 'ORDINAL_POSITION' => '7', - 'COLUMN_DEFAULT' => 'white', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'varchar', - 'CHARACTER_MAXIMUM_LENGTH' => '30', - 'CHARACTER_OCTET_LENGTH' => '120', - 'NUMERIC_PRECISION' => NULL, - 'NUMERIC_SCALE' => NULL, - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => 'utf8mb4', - 'COLLATION_NAME' => 'utf8mb4_general_ci', - 'COLUMN_TYPE' => 'varchar(30)', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '颜色', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'size' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_danmu', - 'COLUMN_NAME' => 'size', - 'ORDINAL_POSITION' => '8', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '字号', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'position' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_danmu', - 'COLUMN_NAME' => 'position', - 'ORDINAL_POSITION' => '9', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '位置', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'published' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_danmu', - 'COLUMN_NAME' => 'published', - 'ORDINAL_POSITION' => '10', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '发布标识', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'deleted' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_danmu', - 'COLUMN_NAME' => 'deleted', - 'ORDINAL_POSITION' => '11', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '删除标识', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'create_time' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_danmu', - 'COLUMN_NAME' => 'create_time', - 'ORDINAL_POSITION' => '12', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '创建时间', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'update_time' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_danmu', - 'COLUMN_NAME' => 'update_time', - 'ORDINAL_POSITION' => '13', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '更新时间', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - ), - 'indexes' => - array( - 'chapter_id' => - array( - 1 => - array( - 'Table' => 'kg_danmu', - 'Non_unique' => '1', - 'Key_name' => 'chapter_id', - 'Seq_in_index' => '1', - 'Column_name' => 'chapter_id', - 'Collation' => 'A', - 'Sub_part' => NULL, - 'Packed' => NULL, - 'Null' => '', - 'Index_type' => 'BTREE', - 'Comment' => '', - 'Index_comment' => '', - ), - ), - 'owner_id' => - array( - 1 => - array( - 'Table' => 'kg_danmu', - 'Non_unique' => '1', - 'Key_name' => 'owner_id', - 'Seq_in_index' => '1', - 'Column_name' => 'owner_id', - 'Collation' => 'A', - 'Sub_part' => NULL, - 'Packed' => NULL, - 'Null' => '', - 'Index_type' => 'BTREE', - 'Comment' => '', - 'Index_comment' => '', - ), - ), - 'PRIMARY' => - array( - 1 => - array( - 'Table' => 'kg_danmu', - 'Non_unique' => '0', - 'Key_name' => 'PRIMARY', - 'Seq_in_index' => '1', - 'Column_name' => 'id', - 'Collation' => 'A', - 'Sub_part' => NULL, - 'Packed' => NULL, - 'Null' => '', - 'Index_type' => 'BTREE', - 'Comment' => '', - 'Index_comment' => '', - ), - ), - ), - 'foreign_keys' => NULL, - ), - 'kg_help' => - array( - 'table' => - array( - 'table_name' => 'kg_help', - 'engine' => 'InnoDB', - 'table_comment' => '', - 'table_collation' => 'utf8mb4_general_ci', - 'character_set_name' => 'utf8mb4', - 'row_format' => 'Dynamic', - ), - 'columns' => - array( - 'id' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_help', - 'COLUMN_NAME' => 'id', - 'ORDINAL_POSITION' => '1', - 'COLUMN_DEFAULT' => NULL, - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => 'PRI', - 'EXTRA' => 'auto_increment', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '主键编号', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'category_id' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_help', - 'COLUMN_NAME' => 'category_id', - 'ORDINAL_POSITION' => '2', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '分类编号', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'title' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_help', - 'COLUMN_NAME' => 'title', - 'ORDINAL_POSITION' => '3', - 'COLUMN_DEFAULT' => '', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'varchar', - 'CHARACTER_MAXIMUM_LENGTH' => '100', - 'CHARACTER_OCTET_LENGTH' => '400', - 'NUMERIC_PRECISION' => NULL, - 'NUMERIC_SCALE' => NULL, - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => 'utf8mb4', - 'COLLATION_NAME' => 'utf8mb4_general_ci', - 'COLUMN_TYPE' => 'varchar(100)', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '标题', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'content' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_help', - 'COLUMN_NAME' => 'content', - 'ORDINAL_POSITION' => '4', - 'COLUMN_DEFAULT' => NULL, - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'text', - 'CHARACTER_MAXIMUM_LENGTH' => '65535', - 'CHARACTER_OCTET_LENGTH' => '65535', - 'NUMERIC_PRECISION' => NULL, - 'NUMERIC_SCALE' => NULL, - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => 'utf8mb4', - 'COLLATION_NAME' => 'utf8mb4_general_ci', - 'COLUMN_TYPE' => 'text', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '内容', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'priority' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_help', - 'COLUMN_NAME' => 'priority', - 'ORDINAL_POSITION' => '5', - 'COLUMN_DEFAULT' => '10', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '优先级', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'published' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_help', - 'COLUMN_NAME' => 'published', - 'ORDINAL_POSITION' => '6', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '发布标识', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'deleted' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_help', - 'COLUMN_NAME' => 'deleted', - 'ORDINAL_POSITION' => '7', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '删除标识', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'create_time' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_help', - 'COLUMN_NAME' => 'create_time', - 'ORDINAL_POSITION' => '8', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '创建时间', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'update_time' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_help', - 'COLUMN_NAME' => 'update_time', - 'ORDINAL_POSITION' => '9', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '更新时间', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - ), - 'indexes' => - array( - 'PRIMARY' => - array( - 1 => - array( - 'Table' => 'kg_help', - 'Non_unique' => '0', - 'Key_name' => 'PRIMARY', - 'Seq_in_index' => '1', - 'Column_name' => 'id', - 'Collation' => 'A', - 'Sub_part' => NULL, - 'Packed' => NULL, - 'Null' => '', - 'Index_type' => 'BTREE', - 'Comment' => '', - 'Index_comment' => '', - ), - ), - ), - 'foreign_keys' => NULL, - ), - 'kg_im_friend_group' => - array( - 'table' => - array( - 'table_name' => 'kg_im_friend_group', - 'engine' => 'InnoDB', - 'table_comment' => '', - 'table_collation' => 'utf8mb4_general_ci', - 'character_set_name' => 'utf8mb4', - 'row_format' => 'Dynamic', - ), - 'columns' => - array( - 'id' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_im_friend_group', - 'COLUMN_NAME' => 'id', - 'ORDINAL_POSITION' => '1', - 'COLUMN_DEFAULT' => NULL, - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => 'PRI', - 'EXTRA' => 'auto_increment', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '主键编号', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'user_id' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_im_friend_group', - 'COLUMN_NAME' => 'user_id', - 'ORDINAL_POSITION' => '2', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => 'UNI', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '用户编号', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'name' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_im_friend_group', - 'COLUMN_NAME' => 'name', - 'ORDINAL_POSITION' => '3', - 'COLUMN_DEFAULT' => '', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'varchar', - 'CHARACTER_MAXIMUM_LENGTH' => '100', - 'CHARACTER_OCTET_LENGTH' => '400', - 'NUMERIC_PRECISION' => NULL, - 'NUMERIC_SCALE' => NULL, - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => 'utf8mb4', - 'COLLATION_NAME' => 'utf8mb4_general_ci', - 'COLUMN_TYPE' => 'varchar(100)', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '名称', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'priority' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_im_friend_group', - 'COLUMN_NAME' => 'priority', - 'ORDINAL_POSITION' => '4', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '优先级', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'deleted' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_im_friend_group', - 'COLUMN_NAME' => 'deleted', - 'ORDINAL_POSITION' => '5', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '删除标识', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'user_count' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_im_friend_group', - 'COLUMN_NAME' => 'user_count', - 'ORDINAL_POSITION' => '6', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '成员数', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'create_time' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_im_friend_group', - 'COLUMN_NAME' => 'create_time', - 'ORDINAL_POSITION' => '7', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '创建时间', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'update_time' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_im_friend_group', - 'COLUMN_NAME' => 'update_time', - 'ORDINAL_POSITION' => '8', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '更新时间', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - ), - 'indexes' => - array( - 'PRIMARY' => - array( - 1 => - array( - 'Table' => 'kg_im_friend_group', - 'Non_unique' => '0', - 'Key_name' => 'PRIMARY', - 'Seq_in_index' => '1', - 'Column_name' => 'id', - 'Collation' => 'A', - 'Sub_part' => NULL, - 'Packed' => NULL, - 'Null' => '', - 'Index_type' => 'BTREE', - 'Comment' => '', - 'Index_comment' => '', - ), - ), - 'user_id' => - array( - 1 => - array( - 'Table' => 'kg_im_friend_group', - 'Non_unique' => '0', - 'Key_name' => 'user_id', - 'Seq_in_index' => '1', - 'Column_name' => 'user_id', - 'Collation' => 'A', - 'Sub_part' => NULL, - 'Packed' => NULL, - 'Null' => '', - 'Index_type' => 'BTREE', - 'Comment' => '', - 'Index_comment' => '', - ), - ), - ), - 'foreign_keys' => NULL, - ), - 'kg_im_friend_user' => - array( - 'table' => - array( - 'table_name' => 'kg_im_friend_user', - 'engine' => 'InnoDB', - 'table_comment' => '', - 'table_collation' => 'utf8mb4_general_ci', - 'character_set_name' => 'utf8mb4', - 'row_format' => 'Dynamic', - ), - 'columns' => - array( - 'id' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_im_friend_user', - 'COLUMN_NAME' => 'id', - 'ORDINAL_POSITION' => '1', - 'COLUMN_DEFAULT' => NULL, - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => 'PRI', - 'EXTRA' => 'auto_increment', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '主键编号', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'user_id' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_im_friend_user', - 'COLUMN_NAME' => 'user_id', - 'ORDINAL_POSITION' => '2', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => 'MUL', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '用户编号', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'friend_id' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_im_friend_user', - 'COLUMN_NAME' => 'friend_id', - 'ORDINAL_POSITION' => '3', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '目标编号', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'group_id' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_im_friend_user', - 'COLUMN_NAME' => 'group_id', - 'ORDINAL_POSITION' => '4', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '分组编号', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'msg_count' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_im_friend_user', - 'COLUMN_NAME' => 'msg_count', - 'ORDINAL_POSITION' => '5', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '消息数', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'create_time' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_im_friend_user', - 'COLUMN_NAME' => 'create_time', - 'ORDINAL_POSITION' => '6', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '创建时间', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'update_time' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_im_friend_user', - 'COLUMN_NAME' => 'update_time', - 'ORDINAL_POSITION' => '7', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '更新时间', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - ), - 'indexes' => - array( - 'PRIMARY' => - array( - 1 => - array( - 'Table' => 'kg_im_friend_user', - 'Non_unique' => '0', - 'Key_name' => 'PRIMARY', - 'Seq_in_index' => '1', - 'Column_name' => 'id', - 'Collation' => 'A', - 'Sub_part' => NULL, - 'Packed' => NULL, - 'Null' => '', - 'Index_type' => 'BTREE', - 'Comment' => '', - 'Index_comment' => '', - ), - ), - 'user_friend' => - array( - 1 => - array( - 'Table' => 'kg_im_friend_user', - 'Non_unique' => '1', - 'Key_name' => 'user_friend', - 'Seq_in_index' => '1', - 'Column_name' => 'user_id', - 'Collation' => 'A', - 'Sub_part' => NULL, - 'Packed' => NULL, - 'Null' => '', - 'Index_type' => 'BTREE', - 'Comment' => '', - 'Index_comment' => '', - ), - 2 => - array( - 'Table' => 'kg_im_friend_user', - 'Non_unique' => '1', - 'Key_name' => 'user_friend', - 'Seq_in_index' => '2', - 'Column_name' => 'friend_id', - 'Collation' => 'A', - 'Sub_part' => NULL, - 'Packed' => NULL, - 'Null' => '', - 'Index_type' => 'BTREE', - 'Comment' => '', - 'Index_comment' => '', - ), - ), - ), - 'foreign_keys' => NULL, - ), - 'kg_im_group' => - array( - 'table' => - array( - 'table_name' => 'kg_im_group', - 'engine' => 'InnoDB', - 'table_comment' => '', - 'table_collation' => 'utf8mb4_general_ci', - 'character_set_name' => 'utf8mb4', - 'row_format' => 'Dynamic', - ), - 'columns' => - array( - 'id' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_im_group', - 'COLUMN_NAME' => 'id', - 'ORDINAL_POSITION' => '1', - 'COLUMN_DEFAULT' => NULL, - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => 'PRI', - 'EXTRA' => 'auto_increment', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '主键编号', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'owner_id' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_im_group', - 'COLUMN_NAME' => 'owner_id', - 'ORDINAL_POSITION' => '2', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '群主编号', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'course_id' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_im_group', - 'COLUMN_NAME' => 'course_id', - 'ORDINAL_POSITION' => '3', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '课程编号', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'type' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_im_group', - 'COLUMN_NAME' => 'type', - 'ORDINAL_POSITION' => '4', - 'COLUMN_DEFAULT' => '1', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '类型', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'name' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_im_group', - 'COLUMN_NAME' => 'name', - 'ORDINAL_POSITION' => '5', - 'COLUMN_DEFAULT' => '', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'varchar', - 'CHARACTER_MAXIMUM_LENGTH' => '100', - 'CHARACTER_OCTET_LENGTH' => '400', - 'NUMERIC_PRECISION' => NULL, - 'NUMERIC_SCALE' => NULL, - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => 'utf8mb4', - 'COLLATION_NAME' => 'utf8mb4_general_ci', - 'COLUMN_TYPE' => 'varchar(100)', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '名称', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'avatar' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_im_group', - 'COLUMN_NAME' => 'avatar', - 'ORDINAL_POSITION' => '6', - 'COLUMN_DEFAULT' => '', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'varchar', - 'CHARACTER_MAXIMUM_LENGTH' => '100', - 'CHARACTER_OCTET_LENGTH' => '400', - 'NUMERIC_PRECISION' => NULL, - 'NUMERIC_SCALE' => NULL, - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => 'utf8mb4', - 'COLLATION_NAME' => 'utf8mb4_general_ci', - 'COLUMN_TYPE' => 'varchar(100)', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '头像', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'about' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_im_group', - 'COLUMN_NAME' => 'about', - 'ORDINAL_POSITION' => '7', - 'COLUMN_DEFAULT' => '', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'varchar', - 'CHARACTER_MAXIMUM_LENGTH' => '255', - 'CHARACTER_OCTET_LENGTH' => '1020', - 'NUMERIC_PRECISION' => NULL, - 'NUMERIC_SCALE' => NULL, - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => 'utf8mb4', - 'COLLATION_NAME' => 'utf8mb4_general_ci', - 'COLUMN_TYPE' => 'varchar(255)', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '简介', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'published' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_im_group', - 'COLUMN_NAME' => 'published', - 'ORDINAL_POSITION' => '8', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '发布标识', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'deleted' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_im_group', - 'COLUMN_NAME' => 'deleted', - 'ORDINAL_POSITION' => '9', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '删除标识', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'user_count' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_im_group', - 'COLUMN_NAME' => 'user_count', - 'ORDINAL_POSITION' => '10', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '成员数', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'msg_count' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_im_group', - 'COLUMN_NAME' => 'msg_count', - 'ORDINAL_POSITION' => '11', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '消息数', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'create_time' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_im_group', - 'COLUMN_NAME' => 'create_time', - 'ORDINAL_POSITION' => '12', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '创建时间', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'update_time' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_im_group', - 'COLUMN_NAME' => 'update_time', - 'ORDINAL_POSITION' => '13', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '更新时间', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - ), - 'indexes' => - array( - 'PRIMARY' => - array( - 1 => - array( - 'Table' => 'kg_im_group', - 'Non_unique' => '0', - 'Key_name' => 'PRIMARY', - 'Seq_in_index' => '1', - 'Column_name' => 'id', - 'Collation' => 'A', - 'Sub_part' => NULL, - 'Packed' => NULL, - 'Null' => '', - 'Index_type' => 'BTREE', - 'Comment' => '', - 'Index_comment' => '', - ), - ), - ), - 'foreign_keys' => NULL, - ), - 'kg_im_group_user' => - array( - 'table' => - array( - 'table_name' => 'kg_im_group_user', - 'engine' => 'InnoDB', - 'table_comment' => '', - 'table_collation' => 'utf8mb4_general_ci', - 'character_set_name' => 'utf8mb4', - 'row_format' => 'Dynamic', - ), - 'columns' => - array( - 'id' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_im_group_user', - 'COLUMN_NAME' => 'id', - 'ORDINAL_POSITION' => '1', - 'COLUMN_DEFAULT' => NULL, - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => 'PRI', - 'EXTRA' => 'auto_increment', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '主键编号', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'group_id' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_im_group_user', - 'COLUMN_NAME' => 'group_id', - 'ORDINAL_POSITION' => '2', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => 'MUL', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '群组编号', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'user_id' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_im_group_user', - 'COLUMN_NAME' => 'user_id', - 'ORDINAL_POSITION' => '3', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => 'MUL', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '用户编号', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'priority' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_im_group_user', - 'COLUMN_NAME' => 'priority', - 'ORDINAL_POSITION' => '4', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '优先级', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'create_time' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_im_group_user', - 'COLUMN_NAME' => 'create_time', - 'ORDINAL_POSITION' => '5', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '创建时间', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'update_time' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_im_group_user', - 'COLUMN_NAME' => 'update_time', - 'ORDINAL_POSITION' => '6', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '更新时间', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - ), - 'indexes' => - array( - 'group_id' => - array( - 1 => - array( - 'Table' => 'kg_im_group_user', - 'Non_unique' => '1', - 'Key_name' => 'group_id', - 'Seq_in_index' => '1', - 'Column_name' => 'group_id', - 'Collation' => 'A', - 'Sub_part' => NULL, - 'Packed' => NULL, - 'Null' => '', - 'Index_type' => 'BTREE', - 'Comment' => '', - 'Index_comment' => '', - ), - ), - 'group_user' => - array( - 1 => - array( - 'Table' => 'kg_im_group_user', - 'Non_unique' => '1', - 'Key_name' => 'group_user', - 'Seq_in_index' => '1', - 'Column_name' => 'group_id', - 'Collation' => 'A', - 'Sub_part' => NULL, - 'Packed' => NULL, - 'Null' => '', - 'Index_type' => 'BTREE', - 'Comment' => '', - 'Index_comment' => '', - ), - 2 => - array( - 'Table' => 'kg_im_group_user', - 'Non_unique' => '1', - 'Key_name' => 'group_user', - 'Seq_in_index' => '2', - 'Column_name' => 'user_id', - 'Collation' => 'A', - 'Sub_part' => NULL, - 'Packed' => NULL, - 'Null' => '', - 'Index_type' => 'BTREE', - 'Comment' => '', - 'Index_comment' => '', - ), - ), - 'PRIMARY' => - array( - 1 => - array( - 'Table' => 'kg_im_group_user', - 'Non_unique' => '0', - 'Key_name' => 'PRIMARY', - 'Seq_in_index' => '1', - 'Column_name' => 'id', - 'Collation' => 'A', - 'Sub_part' => NULL, - 'Packed' => NULL, - 'Null' => '', - 'Index_type' => 'BTREE', - 'Comment' => '', - 'Index_comment' => '', - ), - ), - 'user_id' => - array( - 1 => - array( - 'Table' => 'kg_im_group_user', - 'Non_unique' => '1', - 'Key_name' => 'user_id', - 'Seq_in_index' => '1', - 'Column_name' => 'user_id', - 'Collation' => 'A', - 'Sub_part' => NULL, - 'Packed' => NULL, - 'Null' => '', - 'Index_type' => 'BTREE', - 'Comment' => '', - 'Index_comment' => '', - ), - ), - ), - 'foreign_keys' => NULL, - ), - 'kg_im_message' => - array( - 'table' => - array( - 'table_name' => 'kg_im_message', - 'engine' => 'InnoDB', - 'table_comment' => '', - 'table_collation' => 'utf8mb4_general_ci', - 'character_set_name' => 'utf8mb4', - 'row_format' => 'Dynamic', - ), - 'columns' => - array( - 'id' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_im_message', - 'COLUMN_NAME' => 'id', - 'ORDINAL_POSITION' => '1', - 'COLUMN_DEFAULT' => NULL, - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => 'PRI', - 'EXTRA' => 'auto_increment', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '主键编号', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'chat_id' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_im_message', - 'COLUMN_NAME' => 'chat_id', - 'ORDINAL_POSITION' => '2', - 'COLUMN_DEFAULT' => '', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'varchar', - 'CHARACTER_MAXIMUM_LENGTH' => '30', - 'CHARACTER_OCTET_LENGTH' => '120', - 'NUMERIC_PRECISION' => NULL, - 'NUMERIC_SCALE' => NULL, - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => 'utf8mb4', - 'COLLATION_NAME' => 'utf8mb4_general_ci', - 'COLUMN_TYPE' => 'varchar(30)', - 'COLUMN_KEY' => 'MUL', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '对话编号', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'sender_id' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_im_message', - 'COLUMN_NAME' => 'sender_id', - 'ORDINAL_POSITION' => '3', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '发送方', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'receiver_id' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_im_message', - 'COLUMN_NAME' => 'receiver_id', - 'ORDINAL_POSITION' => '4', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => 'MUL', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '接收方', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'receiver_type' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_im_message', - 'COLUMN_NAME' => 'receiver_type', - 'ORDINAL_POSITION' => '5', - 'COLUMN_DEFAULT' => '1', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '接收方类型', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'content' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_im_message', - 'COLUMN_NAME' => 'content', - 'ORDINAL_POSITION' => '6', - 'COLUMN_DEFAULT' => '', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'varchar', - 'CHARACTER_MAXIMUM_LENGTH' => '3000', - 'CHARACTER_OCTET_LENGTH' => '12000', - 'NUMERIC_PRECISION' => NULL, - 'NUMERIC_SCALE' => NULL, - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => 'utf8mb4', - 'COLLATION_NAME' => 'utf8mb4_general_ci', - 'COLUMN_TYPE' => 'varchar(3000)', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '内容', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'viewed' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_im_message', - 'COLUMN_NAME' => 'viewed', - 'ORDINAL_POSITION' => '7', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '已读标识', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'deleted' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_im_message', - 'COLUMN_NAME' => 'deleted', - 'ORDINAL_POSITION' => '8', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '删除标识', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'create_time' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_im_message', - 'COLUMN_NAME' => 'create_time', - 'ORDINAL_POSITION' => '9', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '创建时间', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'update_time' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_im_message', - 'COLUMN_NAME' => 'update_time', - 'ORDINAL_POSITION' => '10', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '更新时间', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - ), - 'indexes' => - array( - 'chat_id' => - array( - 1 => - array( - 'Table' => 'kg_im_message', - 'Non_unique' => '1', - 'Key_name' => 'chat_id', - 'Seq_in_index' => '1', - 'Column_name' => 'chat_id', - 'Collation' => 'A', - 'Sub_part' => NULL, - 'Packed' => NULL, - 'Null' => '', - 'Index_type' => 'BTREE', - 'Comment' => '', - 'Index_comment' => '', - ), - ), - 'PRIMARY' => - array( - 1 => - array( - 'Table' => 'kg_im_message', - 'Non_unique' => '0', - 'Key_name' => 'PRIMARY', - 'Seq_in_index' => '1', - 'Column_name' => 'id', - 'Collation' => 'A', - 'Sub_part' => NULL, - 'Packed' => NULL, - 'Null' => '', - 'Index_type' => 'BTREE', - 'Comment' => '', - 'Index_comment' => '', - ), - ), - 'receiver' => - array( - 1 => - array( - 'Table' => 'kg_im_message', - 'Non_unique' => '1', - 'Key_name' => 'receiver', - 'Seq_in_index' => '1', - 'Column_name' => 'receiver_id', - 'Collation' => 'A', - 'Sub_part' => NULL, - 'Packed' => NULL, - 'Null' => '', - 'Index_type' => 'BTREE', - 'Comment' => '', - 'Index_comment' => '', - ), - 2 => - array( - 'Table' => 'kg_im_message', - 'Non_unique' => '1', - 'Key_name' => 'receiver', - 'Seq_in_index' => '2', - 'Column_name' => 'receiver_type', - 'Collation' => 'A', - 'Sub_part' => NULL, - 'Packed' => NULL, - 'Null' => '', - 'Index_type' => 'BTREE', - 'Comment' => '', - 'Index_comment' => '', - ), - ), - ), - 'foreign_keys' => NULL, - ), - 'kg_im_notice' => - array( - 'table' => - array( - 'table_name' => 'kg_im_notice', - 'engine' => 'InnoDB', - 'table_comment' => '', - 'table_collation' => 'utf8mb4_general_ci', - 'character_set_name' => 'utf8mb4', - 'row_format' => 'Dynamic', - ), - 'columns' => - array( - 'id' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_im_notice', - 'COLUMN_NAME' => 'id', - 'ORDINAL_POSITION' => '1', - 'COLUMN_DEFAULT' => NULL, - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => 'PRI', - 'EXTRA' => 'auto_increment', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '主键编号', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'sender_id' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_im_notice', - 'COLUMN_NAME' => 'sender_id', - 'ORDINAL_POSITION' => '2', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => 'MUL', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '发送方', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'receiver_id' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_im_notice', - 'COLUMN_NAME' => 'receiver_id', - 'ORDINAL_POSITION' => '3', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => 'MUL', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '接收方', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'item_type' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_im_notice', - 'COLUMN_NAME' => 'item_type', - 'ORDINAL_POSITION' => '4', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '条目类型', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'item_info' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_im_notice', - 'COLUMN_NAME' => 'item_info', - 'ORDINAL_POSITION' => '5', - 'COLUMN_DEFAULT' => '', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'varchar', - 'CHARACTER_MAXIMUM_LENGTH' => '1500', - 'CHARACTER_OCTET_LENGTH' => '6000', - 'NUMERIC_PRECISION' => NULL, - 'NUMERIC_SCALE' => NULL, - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => 'utf8mb4', - 'COLLATION_NAME' => 'utf8mb4_general_ci', - 'COLUMN_TYPE' => 'varchar(1500)', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '条目内容', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'viewed' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_im_notice', - 'COLUMN_NAME' => 'viewed', - 'ORDINAL_POSITION' => '6', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '已读标识', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'deleted' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_im_notice', - 'COLUMN_NAME' => 'deleted', - 'ORDINAL_POSITION' => '7', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '删除标识', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'create_time' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_im_notice', - 'COLUMN_NAME' => 'create_time', - 'ORDINAL_POSITION' => '8', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '创建时间', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'update_time' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_im_notice', - 'COLUMN_NAME' => 'update_time', - 'ORDINAL_POSITION' => '9', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '更新时间', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - ), - 'indexes' => - array( - 'PRIMARY' => - array( - 1 => - array( - 'Table' => 'kg_im_notice', - 'Non_unique' => '0', - 'Key_name' => 'PRIMARY', - 'Seq_in_index' => '1', - 'Column_name' => 'id', - 'Collation' => 'A', - 'Sub_part' => NULL, - 'Packed' => NULL, - 'Null' => '', - 'Index_type' => 'BTREE', - 'Comment' => '', - 'Index_comment' => '', - ), - ), - 'receiver_id' => - array( - 1 => - array( - 'Table' => 'kg_im_notice', - 'Non_unique' => '1', - 'Key_name' => 'receiver_id', - 'Seq_in_index' => '1', - 'Column_name' => 'receiver_id', - 'Collation' => 'A', - 'Sub_part' => NULL, - 'Packed' => NULL, - 'Null' => '', - 'Index_type' => 'BTREE', - 'Comment' => '', - 'Index_comment' => '', - ), - ), - 'sender_id' => - array( - 1 => - array( - 'Table' => 'kg_im_notice', - 'Non_unique' => '1', - 'Key_name' => 'sender_id', - 'Seq_in_index' => '1', - 'Column_name' => 'sender_id', - 'Collation' => 'A', - 'Sub_part' => NULL, - 'Packed' => NULL, - 'Null' => '', - 'Index_type' => 'BTREE', - 'Comment' => '', - 'Index_comment' => '', - ), - ), - ), - 'foreign_keys' => NULL, - ), - 'kg_im_user' => - array( - 'table' => - array( - 'table_name' => 'kg_im_user', - 'engine' => 'InnoDB', - 'table_comment' => '', - 'table_collation' => 'utf8mb4_general_ci', - 'character_set_name' => 'utf8mb4', - 'row_format' => 'Dynamic', - ), - 'columns' => - array( - 'id' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_im_user', - 'COLUMN_NAME' => 'id', - 'ORDINAL_POSITION' => '1', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => 'PRI', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '主键编号', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'name' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_im_user', - 'COLUMN_NAME' => 'name', - 'ORDINAL_POSITION' => '2', - 'COLUMN_DEFAULT' => '', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'varchar', - 'CHARACTER_MAXIMUM_LENGTH' => '30', - 'CHARACTER_OCTET_LENGTH' => '120', - 'NUMERIC_PRECISION' => NULL, - 'NUMERIC_SCALE' => NULL, - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => 'utf8mb4', - 'COLLATION_NAME' => 'utf8mb4_general_ci', - 'COLUMN_TYPE' => 'varchar(30)', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '名称', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'avatar' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_im_user', - 'COLUMN_NAME' => 'avatar', - 'ORDINAL_POSITION' => '3', - 'COLUMN_DEFAULT' => '', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'varchar', - 'CHARACTER_MAXIMUM_LENGTH' => '100', - 'CHARACTER_OCTET_LENGTH' => '400', - 'NUMERIC_PRECISION' => NULL, - 'NUMERIC_SCALE' => NULL, - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => 'utf8mb4', - 'COLLATION_NAME' => 'utf8mb4_general_ci', - 'COLUMN_TYPE' => 'varchar(100)', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '头像', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'sign' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_im_user', - 'COLUMN_NAME' => 'sign', - 'ORDINAL_POSITION' => '4', - 'COLUMN_DEFAULT' => '', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'varchar', - 'CHARACTER_MAXIMUM_LENGTH' => '30', - 'CHARACTER_OCTET_LENGTH' => '120', - 'NUMERIC_PRECISION' => NULL, - 'NUMERIC_SCALE' => NULL, - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => 'utf8mb4', - 'COLLATION_NAME' => 'utf8mb4_general_ci', - 'COLUMN_TYPE' => 'varchar(30)', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '签名', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'skin' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_im_user', - 'COLUMN_NAME' => 'skin', - 'ORDINAL_POSITION' => '5', - 'COLUMN_DEFAULT' => '', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'varchar', - 'CHARACTER_MAXIMUM_LENGTH' => '100', - 'CHARACTER_OCTET_LENGTH' => '400', - 'NUMERIC_PRECISION' => NULL, - 'NUMERIC_SCALE' => NULL, - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => 'utf8mb4', - 'COLLATION_NAME' => 'utf8mb4_general_ci', - 'COLUMN_TYPE' => 'varchar(100)', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '皮肤', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'status' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_im_user', - 'COLUMN_NAME' => 'status', - 'ORDINAL_POSITION' => '6', - 'COLUMN_DEFAULT' => 'hide', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'varchar', - 'CHARACTER_MAXIMUM_LENGTH' => '15', - 'CHARACTER_OCTET_LENGTH' => '60', - 'NUMERIC_PRECISION' => NULL, - 'NUMERIC_SCALE' => NULL, - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => 'utf8mb4', - 'COLLATION_NAME' => 'utf8mb4_general_ci', - 'COLUMN_TYPE' => 'varchar(15)', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '在线状态', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'deleted' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_im_user', - 'COLUMN_NAME' => 'deleted', - 'ORDINAL_POSITION' => '7', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '删除标识', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'friend_count' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_im_user', - 'COLUMN_NAME' => 'friend_count', - 'ORDINAL_POSITION' => '8', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '好友数', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'group_count' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_im_user', - 'COLUMN_NAME' => 'group_count', - 'ORDINAL_POSITION' => '9', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '群组数', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'create_time' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_im_user', - 'COLUMN_NAME' => 'create_time', - 'ORDINAL_POSITION' => '10', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '创建时间', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'update_time' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_im_user', - 'COLUMN_NAME' => 'update_time', - 'ORDINAL_POSITION' => '11', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '更新时间', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - ), - 'indexes' => - array( - 'PRIMARY' => - array( - 1 => - array( - 'Table' => 'kg_im_user', - 'Non_unique' => '0', - 'Key_name' => 'PRIMARY', - 'Seq_in_index' => '1', - 'Column_name' => 'id', - 'Collation' => 'A', - 'Sub_part' => NULL, - 'Packed' => NULL, - 'Null' => '', - 'Index_type' => 'BTREE', - 'Comment' => '', - 'Index_comment' => '', - ), - ), - ), - 'foreign_keys' => NULL, - ), - 'kg_learning' => - array( - 'table' => - array( - 'table_name' => 'kg_learning', - 'engine' => 'InnoDB', - 'table_comment' => '', - 'table_collation' => 'utf8mb4_general_ci', - 'character_set_name' => 'utf8mb4', - 'row_format' => 'Dynamic', - ), - 'columns' => - array( - 'id' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_learning', - 'COLUMN_NAME' => 'id', - 'ORDINAL_POSITION' => '1', - 'COLUMN_DEFAULT' => NULL, - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => 'PRI', - 'EXTRA' => 'auto_increment', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '主键编号', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'request_id' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_learning', - 'COLUMN_NAME' => 'request_id', - 'ORDINAL_POSITION' => '2', - 'COLUMN_DEFAULT' => '', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'varchar', - 'CHARACTER_MAXIMUM_LENGTH' => '64', - 'CHARACTER_OCTET_LENGTH' => '256', - 'NUMERIC_PRECISION' => NULL, - 'NUMERIC_SCALE' => NULL, - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => 'utf8mb4', - 'COLLATION_NAME' => 'utf8mb4_general_ci', - 'COLUMN_TYPE' => 'varchar(64)', - 'COLUMN_KEY' => 'MUL', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '请求编号', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'course_id' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_learning', - 'COLUMN_NAME' => 'course_id', - 'ORDINAL_POSITION' => '3', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '课程编号', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'chapter_id' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_learning', - 'COLUMN_NAME' => 'chapter_id', - 'ORDINAL_POSITION' => '4', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => 'MUL', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '课时编号', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'user_id' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_learning', - 'COLUMN_NAME' => 'user_id', - 'ORDINAL_POSITION' => '5', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '用户编号', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'plan_id' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_learning', - 'COLUMN_NAME' => 'plan_id', - 'ORDINAL_POSITION' => '6', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '计划编号', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'duration' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_learning', - 'COLUMN_NAME' => 'duration', - 'ORDINAL_POSITION' => '7', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '学习时长', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'position' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_learning', - 'COLUMN_NAME' => 'position', - 'ORDINAL_POSITION' => '8', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '播放位置', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'deleted' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_learning', - 'COLUMN_NAME' => 'deleted', - 'ORDINAL_POSITION' => '9', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '删除标识', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'client_type' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_learning', - 'COLUMN_NAME' => 'client_type', - 'ORDINAL_POSITION' => '10', - 'COLUMN_DEFAULT' => '1', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '终端类型', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'client_ip' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_learning', - 'COLUMN_NAME' => 'client_ip', - 'ORDINAL_POSITION' => '11', - 'COLUMN_DEFAULT' => '', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'varchar', - 'CHARACTER_MAXIMUM_LENGTH' => '64', - 'CHARACTER_OCTET_LENGTH' => '256', - 'NUMERIC_PRECISION' => NULL, - 'NUMERIC_SCALE' => NULL, - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => 'utf8mb4', - 'COLLATION_NAME' => 'utf8mb4_general_ci', - 'COLUMN_TYPE' => 'varchar(64)', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '终端IP', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'active_time' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_learning', - 'COLUMN_NAME' => 'active_time', - 'ORDINAL_POSITION' => '12', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '活跃时间', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'create_time' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_learning', - 'COLUMN_NAME' => 'create_time', - 'ORDINAL_POSITION' => '13', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '创建时间', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'update_time' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_learning', - 'COLUMN_NAME' => 'update_time', - 'ORDINAL_POSITION' => '14', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '更新时间', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - ), - 'indexes' => - array( - 'chapter_user' => - array( - 1 => - array( - 'Table' => 'kg_learning', - 'Non_unique' => '1', - 'Key_name' => 'chapter_user', - 'Seq_in_index' => '1', - 'Column_name' => 'chapter_id', - 'Collation' => 'A', - 'Sub_part' => NULL, - 'Packed' => NULL, - 'Null' => '', - 'Index_type' => 'BTREE', - 'Comment' => '', - 'Index_comment' => '', - ), - 2 => - array( - 'Table' => 'kg_learning', - 'Non_unique' => '1', - 'Key_name' => 'chapter_user', - 'Seq_in_index' => '2', - 'Column_name' => 'user_id', - 'Collation' => 'A', - 'Sub_part' => NULL, - 'Packed' => NULL, - 'Null' => '', - 'Index_type' => 'BTREE', - 'Comment' => '', - 'Index_comment' => '', - ), - ), - 'PRIMARY' => - array( - 1 => - array( - 'Table' => 'kg_learning', - 'Non_unique' => '0', - 'Key_name' => 'PRIMARY', - 'Seq_in_index' => '1', - 'Column_name' => 'id', - 'Collation' => 'A', - 'Sub_part' => NULL, - 'Packed' => NULL, - 'Null' => '', - 'Index_type' => 'BTREE', - 'Comment' => '', - 'Index_comment' => '', - ), - ), - 'request_id' => - array( - 1 => - array( - 'Table' => 'kg_learning', - 'Non_unique' => '1', - 'Key_name' => 'request_id', - 'Seq_in_index' => '1', - 'Column_name' => 'request_id', - 'Collation' => 'A', - 'Sub_part' => NULL, - 'Packed' => NULL, - 'Null' => '', - 'Index_type' => 'BTREE', - 'Comment' => '', - 'Index_comment' => '', - ), - ), - ), - 'foreign_keys' => NULL, - ), - 'kg_migration' => - array( - 'table' => - array( - 'table_name' => 'kg_migration', - 'engine' => 'InnoDB', - 'table_comment' => '', - 'table_collation' => 'utf8_general_ci', - 'character_set_name' => 'utf8', - 'row_format' => 'Dynamic', - ), - 'columns' => - array( - 'version' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_migration', - 'COLUMN_NAME' => 'version', - 'ORDINAL_POSITION' => '1', - 'COLUMN_DEFAULT' => NULL, - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'bigint', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '19', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'bigint', - 'COLUMN_KEY' => 'PRI', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'migration_name' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_migration', - 'COLUMN_NAME' => 'migration_name', - 'ORDINAL_POSITION' => '2', - 'COLUMN_DEFAULT' => NULL, - 'IS_NULLABLE' => 'YES', - 'DATA_TYPE' => 'varchar', - 'CHARACTER_MAXIMUM_LENGTH' => '100', - 'CHARACTER_OCTET_LENGTH' => '300', - 'NUMERIC_PRECISION' => NULL, - 'NUMERIC_SCALE' => NULL, - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => 'utf8', - 'COLLATION_NAME' => 'utf8_general_ci', - 'COLUMN_TYPE' => 'varchar(100)', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'start_time' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_migration', - 'COLUMN_NAME' => 'start_time', - 'ORDINAL_POSITION' => '3', - 'COLUMN_DEFAULT' => NULL, - 'IS_NULLABLE' => 'YES', - 'DATA_TYPE' => 'timestamp', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => NULL, - 'NUMERIC_SCALE' => NULL, - 'DATETIME_PRECISION' => '0', - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'timestamp', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'end_time' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_migration', - 'COLUMN_NAME' => 'end_time', - 'ORDINAL_POSITION' => '4', - 'COLUMN_DEFAULT' => NULL, - 'IS_NULLABLE' => 'YES', - 'DATA_TYPE' => 'timestamp', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => NULL, - 'NUMERIC_SCALE' => NULL, - 'DATETIME_PRECISION' => '0', - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'timestamp', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'breakpoint' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_migration', - 'COLUMN_NAME' => 'breakpoint', - 'ORDINAL_POSITION' => '5', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - ), - 'indexes' => - array( - 'PRIMARY' => - array( - 1 => - array( - 'Table' => 'kg_migration', - 'Non_unique' => '0', - 'Key_name' => 'PRIMARY', - 'Seq_in_index' => '1', - 'Column_name' => 'version', - 'Collation' => 'A', - 'Sub_part' => NULL, - 'Packed' => NULL, - 'Null' => '', - 'Index_type' => 'BTREE', - 'Comment' => '', - 'Index_comment' => '', - ), - ), - ), - 'foreign_keys' => NULL, - ), - 'kg_nav' => - array( - 'table' => - array( - 'table_name' => 'kg_nav', - 'engine' => 'InnoDB', - 'table_comment' => '', - 'table_collation' => 'utf8mb4_general_ci', - 'character_set_name' => 'utf8mb4', - 'row_format' => 'Dynamic', - ), - 'columns' => - array( - 'id' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_nav', - 'COLUMN_NAME' => 'id', - 'ORDINAL_POSITION' => '1', - 'COLUMN_DEFAULT' => NULL, - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => 'PRI', - 'EXTRA' => 'auto_increment', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '主键编号', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'parent_id' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_nav', - 'COLUMN_NAME' => 'parent_id', - 'ORDINAL_POSITION' => '2', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '父级编号', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'level' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_nav', - 'COLUMN_NAME' => 'level', - 'ORDINAL_POSITION' => '3', - 'COLUMN_DEFAULT' => '1', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '层级', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'name' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_nav', - 'COLUMN_NAME' => 'name', - 'ORDINAL_POSITION' => '4', - 'COLUMN_DEFAULT' => '', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'varchar', - 'CHARACTER_MAXIMUM_LENGTH' => '30', - 'CHARACTER_OCTET_LENGTH' => '120', - 'NUMERIC_PRECISION' => NULL, - 'NUMERIC_SCALE' => NULL, - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => 'utf8mb4', - 'COLLATION_NAME' => 'utf8mb4_general_ci', - 'COLUMN_TYPE' => 'varchar(30)', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '名称', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'path' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_nav', - 'COLUMN_NAME' => 'path', - 'ORDINAL_POSITION' => '5', - 'COLUMN_DEFAULT' => '', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'varchar', - 'CHARACTER_MAXIMUM_LENGTH' => '30', - 'CHARACTER_OCTET_LENGTH' => '120', - 'NUMERIC_PRECISION' => NULL, - 'NUMERIC_SCALE' => NULL, - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => 'utf8mb4', - 'COLLATION_NAME' => 'utf8mb4_general_ci', - 'COLUMN_TYPE' => 'varchar(30)', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '路径', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'target' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_nav', - 'COLUMN_NAME' => 'target', - 'ORDINAL_POSITION' => '6', - 'COLUMN_DEFAULT' => '_blank', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'varchar', - 'CHARACTER_MAXIMUM_LENGTH' => '30', - 'CHARACTER_OCTET_LENGTH' => '120', - 'NUMERIC_PRECISION' => NULL, - 'NUMERIC_SCALE' => NULL, - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => 'utf8mb4', - 'COLLATION_NAME' => 'utf8mb4_general_ci', - 'COLUMN_TYPE' => 'varchar(30)', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '打开方式', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'url' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_nav', - 'COLUMN_NAME' => 'url', - 'ORDINAL_POSITION' => '7', - 'COLUMN_DEFAULT' => '', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'varchar', - 'CHARACTER_MAXIMUM_LENGTH' => '100', - 'CHARACTER_OCTET_LENGTH' => '400', - 'NUMERIC_PRECISION' => NULL, - 'NUMERIC_SCALE' => NULL, - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => 'utf8mb4', - 'COLLATION_NAME' => 'utf8mb4_general_ci', - 'COLUMN_TYPE' => 'varchar(100)', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '链接地址', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'position' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_nav', - 'COLUMN_NAME' => 'position', - 'ORDINAL_POSITION' => '8', - 'COLUMN_DEFAULT' => '1', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '位置', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'priority' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_nav', - 'COLUMN_NAME' => 'priority', - 'ORDINAL_POSITION' => '9', - 'COLUMN_DEFAULT' => '30', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '优先级', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'published' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_nav', - 'COLUMN_NAME' => 'published', - 'ORDINAL_POSITION' => '10', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '发布标识', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'deleted' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_nav', - 'COLUMN_NAME' => 'deleted', - 'ORDINAL_POSITION' => '11', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '删除标识', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'child_count' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_nav', - 'COLUMN_NAME' => 'child_count', - 'ORDINAL_POSITION' => '12', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '子类数量', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'create_time' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_nav', - 'COLUMN_NAME' => 'create_time', - 'ORDINAL_POSITION' => '13', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '创建时间', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'update_time' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_nav', - 'COLUMN_NAME' => 'update_time', - 'ORDINAL_POSITION' => '14', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '更新时间', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - ), - 'indexes' => - array( - 'PRIMARY' => - array( - 1 => - array( - 'Table' => 'kg_nav', - 'Non_unique' => '0', - 'Key_name' => 'PRIMARY', - 'Seq_in_index' => '1', - 'Column_name' => 'id', - 'Collation' => 'A', - 'Sub_part' => NULL, - 'Packed' => NULL, - 'Null' => '', - 'Index_type' => 'BTREE', - 'Comment' => '', - 'Index_comment' => '', - ), - ), - ), - 'foreign_keys' => NULL, - ), - 'kg_online' => - array( - 'table' => - array( - 'table_name' => 'kg_online', - 'engine' => 'InnoDB', - 'table_comment' => '', - 'table_collation' => 'utf8mb4_general_ci', - 'character_set_name' => 'utf8mb4', - 'row_format' => 'Dynamic', - ), - 'columns' => - array( - 'id' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_online', - 'COLUMN_NAME' => 'id', - 'ORDINAL_POSITION' => '1', - 'COLUMN_DEFAULT' => NULL, - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => 'PRI', - 'EXTRA' => 'auto_increment', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '主键编号', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'user_id' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_online', - 'COLUMN_NAME' => 'user_id', - 'ORDINAL_POSITION' => '2', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => 'MUL', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '用户编号', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'client_type' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_online', - 'COLUMN_NAME' => 'client_type', - 'ORDINAL_POSITION' => '3', - 'COLUMN_DEFAULT' => '1', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '终端类型', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'client_ip' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_online', - 'COLUMN_NAME' => 'client_ip', - 'ORDINAL_POSITION' => '4', - 'COLUMN_DEFAULT' => '', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'varchar', - 'CHARACTER_MAXIMUM_LENGTH' => '64', - 'CHARACTER_OCTET_LENGTH' => '256', - 'NUMERIC_PRECISION' => NULL, - 'NUMERIC_SCALE' => NULL, - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => 'utf8mb4', - 'COLLATION_NAME' => 'utf8mb4_general_ci', - 'COLUMN_TYPE' => 'varchar(64)', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '终端IP', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'active_time' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_online', - 'COLUMN_NAME' => 'active_time', - 'ORDINAL_POSITION' => '5', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => 'MUL', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '活跃时间', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'create_time' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_online', - 'COLUMN_NAME' => 'create_time', - 'ORDINAL_POSITION' => '6', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '创建时间', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'update_time' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_online', - 'COLUMN_NAME' => 'update_time', - 'ORDINAL_POSITION' => '7', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '更新时间', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - ), - 'indexes' => - array( - 'active_time' => - array( - 1 => - array( - 'Table' => 'kg_online', - 'Non_unique' => '1', - 'Key_name' => 'active_time', - 'Seq_in_index' => '1', - 'Column_name' => 'active_time', - 'Collation' => 'A', - 'Sub_part' => NULL, - 'Packed' => NULL, - 'Null' => '', - 'Index_type' => 'BTREE', - 'Comment' => '', - 'Index_comment' => '', - ), - ), - 'PRIMARY' => - array( - 1 => - array( - 'Table' => 'kg_online', - 'Non_unique' => '0', - 'Key_name' => 'PRIMARY', - 'Seq_in_index' => '1', - 'Column_name' => 'id', - 'Collation' => 'A', - 'Sub_part' => NULL, - 'Packed' => NULL, - 'Null' => '', - 'Index_type' => 'BTREE', - 'Comment' => '', - 'Index_comment' => '', - ), - ), - 'user_id' => - array( - 1 => - array( - 'Table' => 'kg_online', - 'Non_unique' => '1', - 'Key_name' => 'user_id', - 'Seq_in_index' => '1', - 'Column_name' => 'user_id', - 'Collation' => 'A', - 'Sub_part' => NULL, - 'Packed' => NULL, - 'Null' => '', - 'Index_type' => 'BTREE', - 'Comment' => '', - 'Index_comment' => '', - ), - ), - ), - 'foreign_keys' => NULL, - ), - 'kg_order' => - array( - 'table' => - array( - 'table_name' => 'kg_order', - 'engine' => 'InnoDB', - 'table_comment' => '', - 'table_collation' => 'utf8mb4_general_ci', - 'character_set_name' => 'utf8mb4', - 'row_format' => 'Dynamic', - ), - 'columns' => - array( - 'id' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_order', - 'COLUMN_NAME' => 'id', - 'ORDINAL_POSITION' => '1', - 'COLUMN_DEFAULT' => NULL, - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => 'PRI', - 'EXTRA' => 'auto_increment', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '主键编号', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'sn' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_order', - 'COLUMN_NAME' => 'sn', - 'ORDINAL_POSITION' => '2', - 'COLUMN_DEFAULT' => '', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'varchar', - 'CHARACTER_MAXIMUM_LENGTH' => '32', - 'CHARACTER_OCTET_LENGTH' => '128', - 'NUMERIC_PRECISION' => NULL, - 'NUMERIC_SCALE' => NULL, - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => 'utf8mb4', - 'COLLATION_NAME' => 'utf8mb4_general_ci', - 'COLUMN_TYPE' => 'varchar(32)', - 'COLUMN_KEY' => 'MUL', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '订单编号', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'subject' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_order', - 'COLUMN_NAME' => 'subject', - 'ORDINAL_POSITION' => '3', - 'COLUMN_DEFAULT' => '', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'varchar', - 'CHARACTER_MAXIMUM_LENGTH' => '100', - 'CHARACTER_OCTET_LENGTH' => '400', - 'NUMERIC_PRECISION' => NULL, - 'NUMERIC_SCALE' => NULL, - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => 'utf8mb4', - 'COLLATION_NAME' => 'utf8mb4_general_ci', - 'COLUMN_TYPE' => 'varchar(100)', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '订单标题', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'amount' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_order', - 'COLUMN_NAME' => 'amount', - 'ORDINAL_POSITION' => '4', - 'COLUMN_DEFAULT' => '0.00', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'decimal', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '2', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'decimal(10,2) unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '订单金额', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'owner_id' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_order', - 'COLUMN_NAME' => 'owner_id', - 'ORDINAL_POSITION' => '5', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => 'MUL', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '用户编号', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'item_id' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_order', - 'COLUMN_NAME' => 'item_id', - 'ORDINAL_POSITION' => '6', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => 'MUL', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '条目编号', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'item_type' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_order', - 'COLUMN_NAME' => 'item_type', - 'ORDINAL_POSITION' => '7', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '条目类型', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'item_info' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_order', - 'COLUMN_NAME' => 'item_info', - 'ORDINAL_POSITION' => '8', - 'COLUMN_DEFAULT' => '', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'varchar', - 'CHARACTER_MAXIMUM_LENGTH' => '3000', - 'CHARACTER_OCTET_LENGTH' => '12000', - 'NUMERIC_PRECISION' => NULL, - 'NUMERIC_SCALE' => NULL, - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => 'utf8mb4', - 'COLLATION_NAME' => 'utf8mb4_general_ci', - 'COLUMN_TYPE' => 'varchar(3000)', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '条目内容', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'client_type' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_order', - 'COLUMN_NAME' => 'client_type', - 'ORDINAL_POSITION' => '9', - 'COLUMN_DEFAULT' => '1', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '终端类型', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'client_ip' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_order', - 'COLUMN_NAME' => 'client_ip', - 'ORDINAL_POSITION' => '10', - 'COLUMN_DEFAULT' => '', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'varchar', - 'CHARACTER_MAXIMUM_LENGTH' => '64', - 'CHARACTER_OCTET_LENGTH' => '256', - 'NUMERIC_PRECISION' => NULL, - 'NUMERIC_SCALE' => NULL, - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => 'utf8mb4', - 'COLLATION_NAME' => 'utf8mb4_general_ci', - 'COLUMN_TYPE' => 'varchar(64)', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '终端IP', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'status' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_order', - 'COLUMN_NAME' => 'status', - 'ORDINAL_POSITION' => '11', - 'COLUMN_DEFAULT' => '1', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '状态标识', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'deleted' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_order', - 'COLUMN_NAME' => 'deleted', - 'ORDINAL_POSITION' => '12', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '删除标识', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'create_time' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_order', - 'COLUMN_NAME' => 'create_time', - 'ORDINAL_POSITION' => '13', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '创建时间', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'update_time' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_order', - 'COLUMN_NAME' => 'update_time', - 'ORDINAL_POSITION' => '14', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '更新时间', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - ), - 'indexes' => - array( - 'item' => - array( - 1 => - array( - 'Table' => 'kg_order', - 'Non_unique' => '1', - 'Key_name' => 'item', - 'Seq_in_index' => '1', - 'Column_name' => 'item_id', - 'Collation' => 'A', - 'Sub_part' => NULL, - 'Packed' => NULL, - 'Null' => '', - 'Index_type' => 'BTREE', - 'Comment' => '', - 'Index_comment' => '', - ), - 2 => - array( - 'Table' => 'kg_order', - 'Non_unique' => '1', - 'Key_name' => 'item', - 'Seq_in_index' => '2', - 'Column_name' => 'item_type', - 'Collation' => 'A', - 'Sub_part' => NULL, - 'Packed' => NULL, - 'Null' => '', - 'Index_type' => 'BTREE', - 'Comment' => '', - 'Index_comment' => '', - ), - ), - 'owner_id' => - array( - 1 => - array( - 'Table' => 'kg_order', - 'Non_unique' => '1', - 'Key_name' => 'owner_id', - 'Seq_in_index' => '1', - 'Column_name' => 'owner_id', - 'Collation' => 'A', - 'Sub_part' => NULL, - 'Packed' => NULL, - 'Null' => '', - 'Index_type' => 'BTREE', - 'Comment' => '', - 'Index_comment' => '', - ), - ), - 'PRIMARY' => - array( - 1 => - array( - 'Table' => 'kg_order', - 'Non_unique' => '0', - 'Key_name' => 'PRIMARY', - 'Seq_in_index' => '1', - 'Column_name' => 'id', - 'Collation' => 'A', - 'Sub_part' => NULL, - 'Packed' => NULL, - 'Null' => '', - 'Index_type' => 'BTREE', - 'Comment' => '', - 'Index_comment' => '', - ), - ), - 'sn' => - array( - 1 => - array( - 'Table' => 'kg_order', - 'Non_unique' => '1', - 'Key_name' => 'sn', - 'Seq_in_index' => '1', - 'Column_name' => 'sn', - 'Collation' => 'A', - 'Sub_part' => NULL, - 'Packed' => NULL, - 'Null' => '', - 'Index_type' => 'BTREE', - 'Comment' => '', - 'Index_comment' => '', - ), - ), - ), - 'foreign_keys' => NULL, - ), - 'kg_order_status' => - array( - 'table' => - array( - 'table_name' => 'kg_order_status', - 'engine' => 'InnoDB', - 'table_comment' => '', - 'table_collation' => 'utf8mb4_general_ci', - 'character_set_name' => 'utf8mb4', - 'row_format' => 'Dynamic', - ), - 'columns' => - array( - 'id' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_order_status', - 'COLUMN_NAME' => 'id', - 'ORDINAL_POSITION' => '1', - 'COLUMN_DEFAULT' => NULL, - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => 'PRI', - 'EXTRA' => 'auto_increment', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '主键编号', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'order_id' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_order_status', - 'COLUMN_NAME' => 'order_id', - 'ORDINAL_POSITION' => '2', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => 'MUL', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '订单编号', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'status' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_order_status', - 'COLUMN_NAME' => 'status', - 'ORDINAL_POSITION' => '3', - 'COLUMN_DEFAULT' => '1', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '订单状态', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'create_time' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_order_status', - 'COLUMN_NAME' => 'create_time', - 'ORDINAL_POSITION' => '4', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '创建时间', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - ), - 'indexes' => - array( - 'order_id' => - array( - 1 => - array( - 'Table' => 'kg_order_status', - 'Non_unique' => '1', - 'Key_name' => 'order_id', - 'Seq_in_index' => '1', - 'Column_name' => 'order_id', - 'Collation' => 'A', - 'Sub_part' => NULL, - 'Packed' => NULL, - 'Null' => '', - 'Index_type' => 'BTREE', - 'Comment' => '', - 'Index_comment' => '', - ), - ), - 'PRIMARY' => - array( - 1 => - array( - 'Table' => 'kg_order_status', - 'Non_unique' => '0', - 'Key_name' => 'PRIMARY', - 'Seq_in_index' => '1', - 'Column_name' => 'id', - 'Collation' => 'A', - 'Sub_part' => NULL, - 'Packed' => NULL, - 'Null' => '', - 'Index_type' => 'BTREE', - 'Comment' => '', - 'Index_comment' => '', - ), - ), - ), - 'foreign_keys' => NULL, - ), - 'kg_package' => - array( - 'table' => - array( - 'table_name' => 'kg_package', - 'engine' => 'InnoDB', - 'table_comment' => '', - 'table_collation' => 'utf8mb4_general_ci', - 'character_set_name' => 'utf8mb4', - 'row_format' => 'Compact', - ), - 'columns' => - array( - 'id' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_package', - 'COLUMN_NAME' => 'id', - 'ORDINAL_POSITION' => '1', - 'COLUMN_DEFAULT' => NULL, - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => 'PRI', - 'EXTRA' => 'auto_increment', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '主键编号', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'title' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_package', - 'COLUMN_NAME' => 'title', - 'ORDINAL_POSITION' => '2', - 'COLUMN_DEFAULT' => '', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'varchar', - 'CHARACTER_MAXIMUM_LENGTH' => '100', - 'CHARACTER_OCTET_LENGTH' => '400', - 'NUMERIC_PRECISION' => NULL, - 'NUMERIC_SCALE' => NULL, - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => 'utf8mb4', - 'COLLATION_NAME' => 'utf8mb4_general_ci', - 'COLUMN_TYPE' => 'varchar(100)', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '标题', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'summary' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_package', - 'COLUMN_NAME' => 'summary', - 'ORDINAL_POSITION' => '3', - 'COLUMN_DEFAULT' => '', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'varchar', - 'CHARACTER_MAXIMUM_LENGTH' => '255', - 'CHARACTER_OCTET_LENGTH' => '1020', - 'NUMERIC_PRECISION' => NULL, - 'NUMERIC_SCALE' => NULL, - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => 'utf8mb4', - 'COLLATION_NAME' => 'utf8mb4_general_ci', - 'COLUMN_TYPE' => 'varchar(255)', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '简介', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'market_price' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_package', - 'COLUMN_NAME' => 'market_price', - 'ORDINAL_POSITION' => '4', - 'COLUMN_DEFAULT' => '0.00', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'decimal', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '2', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'decimal(10,2) unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '优惠价格', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'vip_price' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_package', - 'COLUMN_NAME' => 'vip_price', - 'ORDINAL_POSITION' => '5', - 'COLUMN_DEFAULT' => '0.00', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'decimal', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '2', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'decimal(10,2) unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '会员价格', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'course_count' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_package', - 'COLUMN_NAME' => 'course_count', - 'ORDINAL_POSITION' => '6', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '课程数量', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'published' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_package', - 'COLUMN_NAME' => 'published', - 'ORDINAL_POSITION' => '7', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '发布标识', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'deleted' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_package', - 'COLUMN_NAME' => 'deleted', - 'ORDINAL_POSITION' => '8', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '删除标识', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'create_time' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_package', - 'COLUMN_NAME' => 'create_time', - 'ORDINAL_POSITION' => '9', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '创建时间', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'update_time' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_package', - 'COLUMN_NAME' => 'update_time', - 'ORDINAL_POSITION' => '10', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '更新时间', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - ), - 'indexes' => - array( - 'PRIMARY' => - array( - 1 => - array( - 'Table' => 'kg_package', - 'Non_unique' => '0', - 'Key_name' => 'PRIMARY', - 'Seq_in_index' => '1', - 'Column_name' => 'id', - 'Collation' => 'A', - 'Sub_part' => NULL, - 'Packed' => NULL, - 'Null' => '', - 'Index_type' => 'BTREE', - 'Comment' => '', - 'Index_comment' => '', - ), - ), - ), - 'foreign_keys' => NULL, - ), - 'kg_page' => - array( - 'table' => - array( - 'table_name' => 'kg_page', - 'engine' => 'InnoDB', - 'table_comment' => '', - 'table_collation' => 'utf8mb4_general_ci', - 'character_set_name' => 'utf8mb4', - 'row_format' => 'Dynamic', - ), - 'columns' => - array( - 'id' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_page', - 'COLUMN_NAME' => 'id', - 'ORDINAL_POSITION' => '1', - 'COLUMN_DEFAULT' => NULL, - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => 'PRI', - 'EXTRA' => 'auto_increment', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '主键编号', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'title' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_page', - 'COLUMN_NAME' => 'title', - 'ORDINAL_POSITION' => '2', - 'COLUMN_DEFAULT' => '', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'varchar', - 'CHARACTER_MAXIMUM_LENGTH' => '100', - 'CHARACTER_OCTET_LENGTH' => '400', - 'NUMERIC_PRECISION' => NULL, - 'NUMERIC_SCALE' => NULL, - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => 'utf8mb4', - 'COLLATION_NAME' => 'utf8mb4_general_ci', - 'COLUMN_TYPE' => 'varchar(100)', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '标题', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'content' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_page', - 'COLUMN_NAME' => 'content', - 'ORDINAL_POSITION' => '3', - 'COLUMN_DEFAULT' => NULL, - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'text', - 'CHARACTER_MAXIMUM_LENGTH' => '65535', - 'CHARACTER_OCTET_LENGTH' => '65535', - 'NUMERIC_PRECISION' => NULL, - 'NUMERIC_SCALE' => NULL, - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => 'utf8mb4', - 'COLLATION_NAME' => 'utf8mb4_general_ci', - 'COLUMN_TYPE' => 'text', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '内容', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'published' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_page', - 'COLUMN_NAME' => 'published', - 'ORDINAL_POSITION' => '4', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '发布标识', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'deleted' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_page', - 'COLUMN_NAME' => 'deleted', - 'ORDINAL_POSITION' => '5', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '删除标识', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'create_time' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_page', - 'COLUMN_NAME' => 'create_time', - 'ORDINAL_POSITION' => '6', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '创建时间', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'update_time' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_page', - 'COLUMN_NAME' => 'update_time', - 'ORDINAL_POSITION' => '7', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '更新时间', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - ), - 'indexes' => - array( - 'PRIMARY' => - array( - 1 => - array( - 'Table' => 'kg_page', - 'Non_unique' => '0', - 'Key_name' => 'PRIMARY', - 'Seq_in_index' => '1', - 'Column_name' => 'id', - 'Collation' => 'A', - 'Sub_part' => NULL, - 'Packed' => NULL, - 'Null' => '', - 'Index_type' => 'BTREE', - 'Comment' => '', - 'Index_comment' => '', - ), - ), - ), - 'foreign_keys' => NULL, - ), - 'kg_refund' => - array( - 'table' => - array( - 'table_name' => 'kg_refund', - 'engine' => 'InnoDB', - 'table_comment' => '', - 'table_collation' => 'utf8mb4_general_ci', - 'character_set_name' => 'utf8mb4', - 'row_format' => 'Dynamic', - ), - 'columns' => - array( - 'id' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_refund', - 'COLUMN_NAME' => 'id', - 'ORDINAL_POSITION' => '1', - 'COLUMN_DEFAULT' => NULL, - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => 'PRI', - 'EXTRA' => 'auto_increment', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '主键编号', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'owner_id' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_refund', - 'COLUMN_NAME' => 'owner_id', - 'ORDINAL_POSITION' => '2', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => 'MUL', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '用户编号', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'order_id' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_refund', - 'COLUMN_NAME' => 'order_id', - 'ORDINAL_POSITION' => '3', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => 'MUL', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '订单编号', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'trade_id' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_refund', - 'COLUMN_NAME' => 'trade_id', - 'ORDINAL_POSITION' => '4', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => 'MUL', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '交易编号', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'sn' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_refund', - 'COLUMN_NAME' => 'sn', - 'ORDINAL_POSITION' => '5', - 'COLUMN_DEFAULT' => '', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'varchar', - 'CHARACTER_MAXIMUM_LENGTH' => '32', - 'CHARACTER_OCTET_LENGTH' => '128', - 'NUMERIC_PRECISION' => NULL, - 'NUMERIC_SCALE' => NULL, - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => 'utf8mb4', - 'COLLATION_NAME' => 'utf8mb4_general_ci', - 'COLUMN_TYPE' => 'varchar(32)', - 'COLUMN_KEY' => 'MUL', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '退款序号', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'subject' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_refund', - 'COLUMN_NAME' => 'subject', - 'ORDINAL_POSITION' => '6', - 'COLUMN_DEFAULT' => '', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'varchar', - 'CHARACTER_MAXIMUM_LENGTH' => '100', - 'CHARACTER_OCTET_LENGTH' => '400', - 'NUMERIC_PRECISION' => NULL, - 'NUMERIC_SCALE' => NULL, - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => 'utf8mb4', - 'COLLATION_NAME' => 'utf8mb4_general_ci', - 'COLUMN_TYPE' => 'varchar(100)', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '退款主题', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'amount' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_refund', - 'COLUMN_NAME' => 'amount', - 'ORDINAL_POSITION' => '7', - 'COLUMN_DEFAULT' => '0.00', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'decimal', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '2', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'decimal(10,2) unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '退款金额', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'status' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_refund', - 'COLUMN_NAME' => 'status', - 'ORDINAL_POSITION' => '8', - 'COLUMN_DEFAULT' => '1', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '状态类型', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'deleted' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_refund', - 'COLUMN_NAME' => 'deleted', - 'ORDINAL_POSITION' => '9', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '删除标识', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'apply_note' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_refund', - 'COLUMN_NAME' => 'apply_note', - 'ORDINAL_POSITION' => '10', - 'COLUMN_DEFAULT' => '', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'varchar', - 'CHARACTER_MAXIMUM_LENGTH' => '255', - 'CHARACTER_OCTET_LENGTH' => '1020', - 'NUMERIC_PRECISION' => NULL, - 'NUMERIC_SCALE' => NULL, - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => 'utf8mb4', - 'COLLATION_NAME' => 'utf8mb4_general_ci', - 'COLUMN_TYPE' => 'varchar(255)', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '申请备注', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'review_note' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_refund', - 'COLUMN_NAME' => 'review_note', - 'ORDINAL_POSITION' => '11', - 'COLUMN_DEFAULT' => '', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'varchar', - 'CHARACTER_MAXIMUM_LENGTH' => '255', - 'CHARACTER_OCTET_LENGTH' => '1020', - 'NUMERIC_PRECISION' => NULL, - 'NUMERIC_SCALE' => NULL, - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => 'utf8mb4', - 'COLLATION_NAME' => 'utf8mb4_general_ci', - 'COLUMN_TYPE' => 'varchar(255)', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '审核备注', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'create_time' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_refund', - 'COLUMN_NAME' => 'create_time', - 'ORDINAL_POSITION' => '12', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '创建时间', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'update_time' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_refund', - 'COLUMN_NAME' => 'update_time', - 'ORDINAL_POSITION' => '13', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '更新时间', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - ), - 'indexes' => - array( - 'order_id' => - array( - 1 => - array( - 'Table' => 'kg_refund', - 'Non_unique' => '1', - 'Key_name' => 'order_id', - 'Seq_in_index' => '1', - 'Column_name' => 'order_id', - 'Collation' => 'A', - 'Sub_part' => NULL, - 'Packed' => NULL, - 'Null' => '', - 'Index_type' => 'BTREE', - 'Comment' => '', - 'Index_comment' => '', - ), - ), - 'owner_id' => - array( - 1 => - array( - 'Table' => 'kg_refund', - 'Non_unique' => '1', - 'Key_name' => 'owner_id', - 'Seq_in_index' => '1', - 'Column_name' => 'owner_id', - 'Collation' => 'A', - 'Sub_part' => NULL, - 'Packed' => NULL, - 'Null' => '', - 'Index_type' => 'BTREE', - 'Comment' => '', - 'Index_comment' => '', - ), - ), - 'PRIMARY' => - array( - 1 => - array( - 'Table' => 'kg_refund', - 'Non_unique' => '0', - 'Key_name' => 'PRIMARY', - 'Seq_in_index' => '1', - 'Column_name' => 'id', - 'Collation' => 'A', - 'Sub_part' => NULL, - 'Packed' => NULL, - 'Null' => '', - 'Index_type' => 'BTREE', - 'Comment' => '', - 'Index_comment' => '', - ), - ), - 'sn' => - array( - 1 => - array( - 'Table' => 'kg_refund', - 'Non_unique' => '1', - 'Key_name' => 'sn', - 'Seq_in_index' => '1', - 'Column_name' => 'sn', - 'Collation' => 'A', - 'Sub_part' => NULL, - 'Packed' => NULL, - 'Null' => '', - 'Index_type' => 'BTREE', - 'Comment' => '', - 'Index_comment' => '', - ), - ), - 'trade_id' => - array( - 1 => - array( - 'Table' => 'kg_refund', - 'Non_unique' => '1', - 'Key_name' => 'trade_id', - 'Seq_in_index' => '1', - 'Column_name' => 'trade_id', - 'Collation' => 'A', - 'Sub_part' => NULL, - 'Packed' => NULL, - 'Null' => '', - 'Index_type' => 'BTREE', - 'Comment' => '', - 'Index_comment' => '', - ), - ), - ), - 'foreign_keys' => NULL, - ), - 'kg_refund_status' => - array( - 'table' => - array( - 'table_name' => 'kg_refund_status', - 'engine' => 'InnoDB', - 'table_comment' => '', - 'table_collation' => 'utf8mb4_general_ci', - 'character_set_name' => 'utf8mb4', - 'row_format' => 'Dynamic', - ), - 'columns' => - array( - 'id' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_refund_status', - 'COLUMN_NAME' => 'id', - 'ORDINAL_POSITION' => '1', - 'COLUMN_DEFAULT' => NULL, - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => 'PRI', - 'EXTRA' => 'auto_increment', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '主键编号', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'refund_id' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_refund_status', - 'COLUMN_NAME' => 'refund_id', - 'ORDINAL_POSITION' => '2', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => 'MUL', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '订单编号', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'status' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_refund_status', - 'COLUMN_NAME' => 'status', - 'ORDINAL_POSITION' => '3', - 'COLUMN_DEFAULT' => '1', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '订单状态', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'create_time' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_refund_status', - 'COLUMN_NAME' => 'create_time', - 'ORDINAL_POSITION' => '4', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '创建时间', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - ), - 'indexes' => - array( - 'PRIMARY' => - array( - 1 => - array( - 'Table' => 'kg_refund_status', - 'Non_unique' => '0', - 'Key_name' => 'PRIMARY', - 'Seq_in_index' => '1', - 'Column_name' => 'id', - 'Collation' => 'A', - 'Sub_part' => NULL, - 'Packed' => NULL, - 'Null' => '', - 'Index_type' => 'BTREE', - 'Comment' => '', - 'Index_comment' => '', - ), - ), - 'refund_id' => - array( - 1 => - array( - 'Table' => 'kg_refund_status', - 'Non_unique' => '1', - 'Key_name' => 'refund_id', - 'Seq_in_index' => '1', - 'Column_name' => 'refund_id', - 'Collation' => 'A', - 'Sub_part' => NULL, - 'Packed' => NULL, - 'Null' => '', - 'Index_type' => 'BTREE', - 'Comment' => '', - 'Index_comment' => '', - ), - ), - ), - 'foreign_keys' => NULL, - ), - 'kg_resource' => - array( - 'table' => - array( - 'table_name' => 'kg_resource', - 'engine' => 'InnoDB', - 'table_comment' => '', - 'table_collation' => 'utf8mb4_general_ci', - 'character_set_name' => 'utf8mb4', - 'row_format' => 'Compact', - ), - 'columns' => - array( - 'id' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_resource', - 'COLUMN_NAME' => 'id', - 'ORDINAL_POSITION' => '1', - 'COLUMN_DEFAULT' => NULL, - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => 'PRI', - 'EXTRA' => 'auto_increment', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '主键编号', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'course_id' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_resource', - 'COLUMN_NAME' => 'course_id', - 'ORDINAL_POSITION' => '2', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => 'MUL', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '课程编号', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'chapter_id' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_resource', - 'COLUMN_NAME' => 'chapter_id', - 'ORDINAL_POSITION' => '3', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => 'MUL', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '章节编号', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'upload_id' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_resource', - 'COLUMN_NAME' => 'upload_id', - 'ORDINAL_POSITION' => '4', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '上传编号', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'create_time' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_resource', - 'COLUMN_NAME' => 'create_time', - 'ORDINAL_POSITION' => '5', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '创建时间', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'update_time' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_resource', - 'COLUMN_NAME' => 'update_time', - 'ORDINAL_POSITION' => '6', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '更新时间', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - ), - 'indexes' => - array( - 'chapter_id' => - array( - 1 => - array( - 'Table' => 'kg_resource', - 'Non_unique' => '1', - 'Key_name' => 'chapter_id', - 'Seq_in_index' => '1', - 'Column_name' => 'chapter_id', - 'Collation' => 'A', - 'Sub_part' => NULL, - 'Packed' => NULL, - 'Null' => '', - 'Index_type' => 'BTREE', - 'Comment' => '', - 'Index_comment' => '', - ), - ), - 'course_id' => - array( - 1 => - array( - 'Table' => 'kg_resource', - 'Non_unique' => '1', - 'Key_name' => 'course_id', - 'Seq_in_index' => '1', - 'Column_name' => 'course_id', - 'Collation' => 'A', - 'Sub_part' => NULL, - 'Packed' => NULL, - 'Null' => '', - 'Index_type' => 'BTREE', - 'Comment' => '', - 'Index_comment' => '', - ), - ), - 'PRIMARY' => - array( - 1 => - array( - 'Table' => 'kg_resource', - 'Non_unique' => '0', - 'Key_name' => 'PRIMARY', - 'Seq_in_index' => '1', - 'Column_name' => 'id', - 'Collation' => 'A', - 'Sub_part' => NULL, - 'Packed' => NULL, - 'Null' => '', - 'Index_type' => 'BTREE', - 'Comment' => '', - 'Index_comment' => '', - ), - ), - ), - 'foreign_keys' => NULL, - ), - 'kg_review' => - array( - 'table' => - array( - 'table_name' => 'kg_review', - 'engine' => 'InnoDB', - 'table_comment' => '', - 'table_collation' => 'utf8mb4_general_ci', - 'character_set_name' => 'utf8mb4', - 'row_format' => 'Dynamic', - ), - 'columns' => - array( - 'id' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_review', - 'COLUMN_NAME' => 'id', - 'ORDINAL_POSITION' => '1', - 'COLUMN_DEFAULT' => NULL, - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => 'PRI', - 'EXTRA' => 'auto_increment', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '主键编号', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'course_id' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_review', - 'COLUMN_NAME' => 'course_id', - 'ORDINAL_POSITION' => '2', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => 'MUL', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '课程编号', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'owner_id' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_review', - 'COLUMN_NAME' => 'owner_id', - 'ORDINAL_POSITION' => '3', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => 'MUL', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '用户编号', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'content' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_review', - 'COLUMN_NAME' => 'content', - 'ORDINAL_POSITION' => '4', - 'COLUMN_DEFAULT' => '', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'varchar', - 'CHARACTER_MAXIMUM_LENGTH' => '1000', - 'CHARACTER_OCTET_LENGTH' => '4000', - 'NUMERIC_PRECISION' => NULL, - 'NUMERIC_SCALE' => NULL, - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => 'utf8mb4', - 'COLLATION_NAME' => 'utf8mb4_general_ci', - 'COLUMN_TYPE' => 'varchar(1000)', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '内容', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'reply' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_review', - 'COLUMN_NAME' => 'reply', - 'ORDINAL_POSITION' => '5', - 'COLUMN_DEFAULT' => '', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'varchar', - 'CHARACTER_MAXIMUM_LENGTH' => '1000', - 'CHARACTER_OCTET_LENGTH' => '4000', - 'NUMERIC_PRECISION' => NULL, - 'NUMERIC_SCALE' => NULL, - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => 'utf8mb4', - 'COLLATION_NAME' => 'utf8mb4_general_ci', - 'COLUMN_TYPE' => 'varchar(1000)', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '回复', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'rating' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_review', - 'COLUMN_NAME' => 'rating', - 'ORDINAL_POSITION' => '6', - 'COLUMN_DEFAULT' => '5.00', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'float', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '2', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'float(10,2) unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '综合评分', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'rating1' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_review', - 'COLUMN_NAME' => 'rating1', - 'ORDINAL_POSITION' => '7', - 'COLUMN_DEFAULT' => '5.00', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'float', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '2', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'float(10,2) unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '维度1评分', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'rating2' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_review', - 'COLUMN_NAME' => 'rating2', - 'ORDINAL_POSITION' => '8', - 'COLUMN_DEFAULT' => '5.00', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'float', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '2', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'float(10,2) unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '维度2评分', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'rating3' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_review', - 'COLUMN_NAME' => 'rating3', - 'ORDINAL_POSITION' => '9', - 'COLUMN_DEFAULT' => '5.00', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'float', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '2', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'float(10,2) unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '维度3评分', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'anonymous' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_review', - 'COLUMN_NAME' => 'anonymous', - 'ORDINAL_POSITION' => '10', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '匿名标识', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'published' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_review', - 'COLUMN_NAME' => 'published', - 'ORDINAL_POSITION' => '11', - 'COLUMN_DEFAULT' => '1', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '发布标识', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'deleted' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_review', - 'COLUMN_NAME' => 'deleted', - 'ORDINAL_POSITION' => '12', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '删除标识', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'like_count' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_review', - 'COLUMN_NAME' => 'like_count', - 'ORDINAL_POSITION' => '13', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '点赞数', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'create_time' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_review', - 'COLUMN_NAME' => 'create_time', - 'ORDINAL_POSITION' => '14', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '创建时间', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'update_time' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_review', - 'COLUMN_NAME' => 'update_time', - 'ORDINAL_POSITION' => '15', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '更新时间', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - ), - 'indexes' => - array( - 'course_id' => - array( - 1 => - array( - 'Table' => 'kg_review', - 'Non_unique' => '1', - 'Key_name' => 'course_id', - 'Seq_in_index' => '1', - 'Column_name' => 'course_id', - 'Collation' => 'A', - 'Sub_part' => NULL, - 'Packed' => NULL, - 'Null' => '', - 'Index_type' => 'BTREE', - 'Comment' => '', - 'Index_comment' => '', - ), - ), - 'onwer_id' => - array( - 1 => - array( - 'Table' => 'kg_review', - 'Non_unique' => '1', - 'Key_name' => 'onwer_id', - 'Seq_in_index' => '1', - 'Column_name' => 'owner_id', - 'Collation' => 'A', - 'Sub_part' => NULL, - 'Packed' => NULL, - 'Null' => '', - 'Index_type' => 'BTREE', - 'Comment' => '', - 'Index_comment' => '', - ), - ), - 'PRIMARY' => - array( - 1 => - array( - 'Table' => 'kg_review', - 'Non_unique' => '0', - 'Key_name' => 'PRIMARY', - 'Seq_in_index' => '1', - 'Column_name' => 'id', - 'Collation' => 'A', - 'Sub_part' => NULL, - 'Packed' => NULL, - 'Null' => '', - 'Index_type' => 'BTREE', - 'Comment' => '', - 'Index_comment' => '', - ), - ), - ), - 'foreign_keys' => NULL, - ), - 'kg_review_like' => - array( - 'table' => - array( - 'table_name' => 'kg_review_like', - 'engine' => 'InnoDB', - 'table_comment' => '', - 'table_collation' => 'utf8mb4_general_ci', - 'character_set_name' => 'utf8mb4', - 'row_format' => 'Compact', - ), - 'columns' => - array( - 'id' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_review_like', - 'COLUMN_NAME' => 'id', - 'ORDINAL_POSITION' => '1', - 'COLUMN_DEFAULT' => NULL, - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => 'PRI', - 'EXTRA' => 'auto_increment', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '主键编号', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'review_id' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_review_like', - 'COLUMN_NAME' => 'review_id', - 'ORDINAL_POSITION' => '2', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => 'MUL', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '评价编号', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'user_id' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_review_like', - 'COLUMN_NAME' => 'user_id', - 'ORDINAL_POSITION' => '3', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '用户编号', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'deleted' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_review_like', - 'COLUMN_NAME' => 'deleted', - 'ORDINAL_POSITION' => '4', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '删除标识', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'create_time' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_review_like', - 'COLUMN_NAME' => 'create_time', - 'ORDINAL_POSITION' => '5', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '创建时间', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'update_time' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_review_like', - 'COLUMN_NAME' => 'update_time', - 'ORDINAL_POSITION' => '6', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '更新时间', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - ), - 'indexes' => - array( - 'PRIMARY' => - array( - 1 => - array( - 'Table' => 'kg_review_like', - 'Non_unique' => '0', - 'Key_name' => 'PRIMARY', - 'Seq_in_index' => '1', - 'Column_name' => 'id', - 'Collation' => 'A', - 'Sub_part' => NULL, - 'Packed' => NULL, - 'Null' => '', - 'Index_type' => 'BTREE', - 'Comment' => '', - 'Index_comment' => '', - ), - ), - 'review_user' => - array( - 1 => - array( - 'Table' => 'kg_review_like', - 'Non_unique' => '1', - 'Key_name' => 'review_user', - 'Seq_in_index' => '1', - 'Column_name' => 'review_id', - 'Collation' => 'A', - 'Sub_part' => NULL, - 'Packed' => NULL, - 'Null' => '', - 'Index_type' => 'BTREE', - 'Comment' => '', - 'Index_comment' => '', - ), - 2 => - array( - 'Table' => 'kg_review_like', - 'Non_unique' => '1', - 'Key_name' => 'review_user', - 'Seq_in_index' => '2', - 'Column_name' => 'user_id', - 'Collation' => 'A', - 'Sub_part' => NULL, - 'Packed' => NULL, - 'Null' => '', - 'Index_type' => 'BTREE', - 'Comment' => '', - 'Index_comment' => '', - ), - ), - ), - 'foreign_keys' => NULL, - ), - 'kg_reward' => - array( - 'table' => - array( - 'table_name' => 'kg_reward', - 'engine' => 'InnoDB', - 'table_comment' => '', - 'table_collation' => 'utf8mb4_general_ci', - 'character_set_name' => 'utf8mb4', - 'row_format' => 'Dynamic', - ), - 'columns' => - array( - 'id' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_reward', - 'COLUMN_NAME' => 'id', - 'ORDINAL_POSITION' => '1', - 'COLUMN_DEFAULT' => NULL, - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'smallint', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '5', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'smallint unsigned', - 'COLUMN_KEY' => 'PRI', - 'EXTRA' => 'auto_increment', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '主键编号', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'title' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_reward', - 'COLUMN_NAME' => 'title', - 'ORDINAL_POSITION' => '2', - 'COLUMN_DEFAULT' => '', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'varchar', - 'CHARACTER_MAXIMUM_LENGTH' => '100', - 'CHARACTER_OCTET_LENGTH' => '400', - 'NUMERIC_PRECISION' => NULL, - 'NUMERIC_SCALE' => NULL, - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => 'utf8mb4', - 'COLLATION_NAME' => 'utf8mb4_general_ci', - 'COLUMN_TYPE' => 'varchar(100)', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '标题', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'price' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_reward', - 'COLUMN_NAME' => 'price', - 'ORDINAL_POSITION' => '3', - 'COLUMN_DEFAULT' => '0.00', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'decimal', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '2', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'decimal(10,2) unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '价格', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'deleted' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_reward', - 'COLUMN_NAME' => 'deleted', - 'ORDINAL_POSITION' => '4', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '删除标识', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'create_time' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_reward', - 'COLUMN_NAME' => 'create_time', - 'ORDINAL_POSITION' => '5', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '创建时间', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'update_time' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_reward', - 'COLUMN_NAME' => 'update_time', - 'ORDINAL_POSITION' => '6', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '更新时间', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - ), - 'indexes' => - array( - 'PRIMARY' => - array( - 1 => - array( - 'Table' => 'kg_reward', - 'Non_unique' => '0', - 'Key_name' => 'PRIMARY', - 'Seq_in_index' => '1', - 'Column_name' => 'id', - 'Collation' => 'A', - 'Sub_part' => NULL, - 'Packed' => NULL, - 'Null' => '', - 'Index_type' => 'BTREE', - 'Comment' => '', - 'Index_comment' => '', - ), - ), - ), - 'foreign_keys' => NULL, - ), - 'kg_role' => - array( - 'table' => - array( - 'table_name' => 'kg_role', - 'engine' => 'InnoDB', - 'table_comment' => '', - 'table_collation' => 'utf8mb4_general_ci', - 'character_set_name' => 'utf8mb4', - 'row_format' => 'Dynamic', - ), - 'columns' => - array( - 'id' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_role', - 'COLUMN_NAME' => 'id', - 'ORDINAL_POSITION' => '1', - 'COLUMN_DEFAULT' => NULL, - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => 'PRI', - 'EXTRA' => 'auto_increment', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '主键编号', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'type' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_role', - 'COLUMN_NAME' => 'type', - 'ORDINAL_POSITION' => '2', - 'COLUMN_DEFAULT' => '2', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '类型', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'name' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_role', - 'COLUMN_NAME' => 'name', - 'ORDINAL_POSITION' => '3', - 'COLUMN_DEFAULT' => '', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'varchar', - 'CHARACTER_MAXIMUM_LENGTH' => '30', - 'CHARACTER_OCTET_LENGTH' => '120', - 'NUMERIC_PRECISION' => NULL, - 'NUMERIC_SCALE' => NULL, - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => 'utf8mb4', - 'COLLATION_NAME' => 'utf8mb4_general_ci', - 'COLUMN_TYPE' => 'varchar(30)', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '名称', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'summary' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_role', - 'COLUMN_NAME' => 'summary', - 'ORDINAL_POSITION' => '4', - 'COLUMN_DEFAULT' => '', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'varchar', - 'CHARACTER_MAXIMUM_LENGTH' => '255', - 'CHARACTER_OCTET_LENGTH' => '1020', - 'NUMERIC_PRECISION' => NULL, - 'NUMERIC_SCALE' => NULL, - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => 'utf8mb4', - 'COLLATION_NAME' => 'utf8mb4_general_ci', - 'COLUMN_TYPE' => 'varchar(255)', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '简介', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'routes' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_role', - 'COLUMN_NAME' => 'routes', - 'ORDINAL_POSITION' => '5', - 'COLUMN_DEFAULT' => NULL, - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'text', - 'CHARACTER_MAXIMUM_LENGTH' => '65535', - 'CHARACTER_OCTET_LENGTH' => '65535', - 'NUMERIC_PRECISION' => NULL, - 'NUMERIC_SCALE' => NULL, - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => 'utf8mb4', - 'COLLATION_NAME' => 'utf8mb4_general_ci', - 'COLUMN_TYPE' => 'text', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '权限路由', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'deleted' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_role', - 'COLUMN_NAME' => 'deleted', - 'ORDINAL_POSITION' => '6', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '删除标识', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'user_count' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_role', - 'COLUMN_NAME' => 'user_count', - 'ORDINAL_POSITION' => '7', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '成员数量', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'create_time' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_role', - 'COLUMN_NAME' => 'create_time', - 'ORDINAL_POSITION' => '8', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '创建时间', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'update_time' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_role', - 'COLUMN_NAME' => 'update_time', - 'ORDINAL_POSITION' => '9', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '更新时间', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - ), - 'indexes' => - array( - 'PRIMARY' => - array( - 1 => - array( - 'Table' => 'kg_role', - 'Non_unique' => '0', - 'Key_name' => 'PRIMARY', - 'Seq_in_index' => '1', - 'Column_name' => 'id', - 'Collation' => 'A', - 'Sub_part' => NULL, - 'Packed' => NULL, - 'Null' => '', - 'Index_type' => 'BTREE', - 'Comment' => '', - 'Index_comment' => '', - ), - ), - ), - 'foreign_keys' => NULL, - ), - 'kg_setting' => - array( - 'table' => - array( - 'table_name' => 'kg_setting', - 'engine' => 'InnoDB', - 'table_comment' => '', - 'table_collation' => 'utf8mb4_general_ci', - 'character_set_name' => 'utf8mb4', - 'row_format' => 'Dynamic', - ), - 'columns' => - array( - 'id' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_setting', - 'COLUMN_NAME' => 'id', - 'ORDINAL_POSITION' => '1', - 'COLUMN_DEFAULT' => NULL, - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => 'PRI', - 'EXTRA' => 'auto_increment', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '主键编号', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'section' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_setting', - 'COLUMN_NAME' => 'section', - 'ORDINAL_POSITION' => '2', - 'COLUMN_DEFAULT' => '', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'varchar', - 'CHARACTER_MAXIMUM_LENGTH' => '50', - 'CHARACTER_OCTET_LENGTH' => '200', - 'NUMERIC_PRECISION' => NULL, - 'NUMERIC_SCALE' => NULL, - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => 'utf8mb4', - 'COLLATION_NAME' => 'utf8mb4_general_ci', - 'COLUMN_TYPE' => 'varchar(50)', - 'COLUMN_KEY' => 'MUL', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '配置组', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'item_key' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_setting', - 'COLUMN_NAME' => 'item_key', - 'ORDINAL_POSITION' => '3', - 'COLUMN_DEFAULT' => '', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'varchar', - 'CHARACTER_MAXIMUM_LENGTH' => '50', - 'CHARACTER_OCTET_LENGTH' => '200', - 'NUMERIC_PRECISION' => NULL, - 'NUMERIC_SCALE' => NULL, - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => 'utf8mb4', - 'COLLATION_NAME' => 'utf8mb4_general_ci', - 'COLUMN_TYPE' => 'varchar(50)', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '配置项', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'item_value' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_setting', - 'COLUMN_NAME' => 'item_value', - 'ORDINAL_POSITION' => '4', - 'COLUMN_DEFAULT' => NULL, - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'text', - 'CHARACTER_MAXIMUM_LENGTH' => '65535', - 'CHARACTER_OCTET_LENGTH' => '65535', - 'NUMERIC_PRECISION' => NULL, - 'NUMERIC_SCALE' => NULL, - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => 'utf8mb4', - 'COLLATION_NAME' => 'utf8mb4_general_ci', - 'COLUMN_TYPE' => 'text', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '配置值', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - ), - 'indexes' => - array( - 'PRIMARY' => - array( - 1 => - array( - 'Table' => 'kg_setting', - 'Non_unique' => '0', - 'Key_name' => 'PRIMARY', - 'Seq_in_index' => '1', - 'Column_name' => 'id', - 'Collation' => 'A', - 'Sub_part' => NULL, - 'Packed' => NULL, - 'Null' => '', - 'Index_type' => 'BTREE', - 'Comment' => '', - 'Index_comment' => '', - ), - ), - 'section_key' => - array( - 1 => - array( - 'Table' => 'kg_setting', - 'Non_unique' => '0', - 'Key_name' => 'section_key', - 'Seq_in_index' => '1', - 'Column_name' => 'section', - 'Collation' => 'A', - 'Sub_part' => NULL, - 'Packed' => NULL, - 'Null' => '', - 'Index_type' => 'BTREE', - 'Comment' => '', - 'Index_comment' => '', - ), - 2 => - array( - 'Table' => 'kg_setting', - 'Non_unique' => '0', - 'Key_name' => 'section_key', - 'Seq_in_index' => '2', - 'Column_name' => 'item_key', - 'Collation' => 'A', - 'Sub_part' => NULL, - 'Packed' => NULL, - 'Null' => '', - 'Index_type' => 'BTREE', - 'Comment' => '', - 'Index_comment' => '', - ), - ), - ), - 'foreign_keys' => NULL, - ), - 'kg_slide' => - array( - 'table' => - array( - 'table_name' => 'kg_slide', - 'engine' => 'InnoDB', - 'table_comment' => '', - 'table_collation' => 'utf8mb4_general_ci', - 'character_set_name' => 'utf8mb4', - 'row_format' => 'Dynamic', - ), - 'columns' => - array( - 'id' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_slide', - 'COLUMN_NAME' => 'id', - 'ORDINAL_POSITION' => '1', - 'COLUMN_DEFAULT' => NULL, - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => 'PRI', - 'EXTRA' => 'auto_increment', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '主键编号', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'title' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_slide', - 'COLUMN_NAME' => 'title', - 'ORDINAL_POSITION' => '2', - 'COLUMN_DEFAULT' => '', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'varchar', - 'CHARACTER_MAXIMUM_LENGTH' => '100', - 'CHARACTER_OCTET_LENGTH' => '400', - 'NUMERIC_PRECISION' => NULL, - 'NUMERIC_SCALE' => NULL, - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => 'utf8mb4', - 'COLLATION_NAME' => 'utf8mb4_general_ci', - 'COLUMN_TYPE' => 'varchar(100)', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '标题', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'cover' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_slide', - 'COLUMN_NAME' => 'cover', - 'ORDINAL_POSITION' => '3', - 'COLUMN_DEFAULT' => '', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'varchar', - 'CHARACTER_MAXIMUM_LENGTH' => '100', - 'CHARACTER_OCTET_LENGTH' => '400', - 'NUMERIC_PRECISION' => NULL, - 'NUMERIC_SCALE' => NULL, - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => 'utf8mb4', - 'COLLATION_NAME' => 'utf8mb4_general_ci', - 'COLUMN_TYPE' => 'varchar(100)', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '封面', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'summary' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_slide', - 'COLUMN_NAME' => 'summary', - 'ORDINAL_POSITION' => '4', - 'COLUMN_DEFAULT' => '', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'varchar', - 'CHARACTER_MAXIMUM_LENGTH' => '255', - 'CHARACTER_OCTET_LENGTH' => '1020', - 'NUMERIC_PRECISION' => NULL, - 'NUMERIC_SCALE' => NULL, - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => 'utf8mb4', - 'COLLATION_NAME' => 'utf8mb4_general_ci', - 'COLUMN_TYPE' => 'varchar(255)', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '简介', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'content' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_slide', - 'COLUMN_NAME' => 'content', - 'ORDINAL_POSITION' => '5', - 'COLUMN_DEFAULT' => '', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'varchar', - 'CHARACTER_MAXIMUM_LENGTH' => '255', - 'CHARACTER_OCTET_LENGTH' => '1020', - 'NUMERIC_PRECISION' => NULL, - 'NUMERIC_SCALE' => NULL, - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => 'utf8mb4', - 'COLLATION_NAME' => 'utf8mb4_general_ci', - 'COLUMN_TYPE' => 'varchar(255)', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '内容', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'platform' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_slide', - 'COLUMN_NAME' => 'platform', - 'ORDINAL_POSITION' => '6', - 'COLUMN_DEFAULT' => '1', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '平台类型', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'target' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_slide', - 'COLUMN_NAME' => 'target', - 'ORDINAL_POSITION' => '7', - 'COLUMN_DEFAULT' => '1', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '目标类型', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'priority' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_slide', - 'COLUMN_NAME' => 'priority', - 'ORDINAL_POSITION' => '8', - 'COLUMN_DEFAULT' => '10', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '优先级', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'published' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_slide', - 'COLUMN_NAME' => 'published', - 'ORDINAL_POSITION' => '9', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '发布状态', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'deleted' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_slide', - 'COLUMN_NAME' => 'deleted', - 'ORDINAL_POSITION' => '10', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '删除标识', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'create_time' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_slide', - 'COLUMN_NAME' => 'create_time', - 'ORDINAL_POSITION' => '11', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '创建时间', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'update_time' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_slide', - 'COLUMN_NAME' => 'update_time', - 'ORDINAL_POSITION' => '12', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '更新时间', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - ), - 'indexes' => - array( - 'PRIMARY' => - array( - 1 => - array( - 'Table' => 'kg_slide', - 'Non_unique' => '0', - 'Key_name' => 'PRIMARY', - 'Seq_in_index' => '1', - 'Column_name' => 'id', - 'Collation' => 'A', - 'Sub_part' => NULL, - 'Packed' => NULL, - 'Null' => '', - 'Index_type' => 'BTREE', - 'Comment' => '', - 'Index_comment' => '', - ), - ), - ), - 'foreign_keys' => NULL, - ), - 'kg_task' => - array( - 'table' => - array( - 'table_name' => 'kg_task', - 'engine' => 'InnoDB', - 'table_comment' => '', - 'table_collation' => 'utf8mb4_general_ci', - 'character_set_name' => 'utf8mb4', - 'row_format' => 'Dynamic', - ), - 'columns' => - array( - 'id' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_task', - 'COLUMN_NAME' => 'id', - 'ORDINAL_POSITION' => '1', - 'COLUMN_DEFAULT' => NULL, - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => 'PRI', - 'EXTRA' => 'auto_increment', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'item_id' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_task', - 'COLUMN_NAME' => 'item_id', - 'ORDINAL_POSITION' => '2', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '条目编号', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'item_type' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_task', - 'COLUMN_NAME' => 'item_type', - 'ORDINAL_POSITION' => '3', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '条目类型', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'item_info' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_task', - 'COLUMN_NAME' => 'item_info', - 'ORDINAL_POSITION' => '4', - 'COLUMN_DEFAULT' => '', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'varchar', - 'CHARACTER_MAXIMUM_LENGTH' => '3000', - 'CHARACTER_OCTET_LENGTH' => '12000', - 'NUMERIC_PRECISION' => NULL, - 'NUMERIC_SCALE' => NULL, - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => 'utf8mb4', - 'COLLATION_NAME' => 'utf8mb4_general_ci', - 'COLUMN_TYPE' => 'varchar(3000)', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '条目内容', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'status' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_task', - 'COLUMN_NAME' => 'status', - 'ORDINAL_POSITION' => '5', - 'COLUMN_DEFAULT' => '1', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '状态', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'priority' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_task', - 'COLUMN_NAME' => 'priority', - 'ORDINAL_POSITION' => '6', - 'COLUMN_DEFAULT' => '30', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '优先级', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'try_count' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_task', - 'COLUMN_NAME' => 'try_count', - 'ORDINAL_POSITION' => '7', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '重试数', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'create_time' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_task', - 'COLUMN_NAME' => 'create_time', - 'ORDINAL_POSITION' => '8', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => 'MUL', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '创建时间', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'update_time' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_task', - 'COLUMN_NAME' => 'update_time', - 'ORDINAL_POSITION' => '9', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '更新时间', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - ), - 'indexes' => - array( - 'create_time' => - array( - 1 => - array( - 'Table' => 'kg_task', - 'Non_unique' => '1', - 'Key_name' => 'create_time', - 'Seq_in_index' => '1', - 'Column_name' => 'create_time', - 'Collation' => 'A', - 'Sub_part' => NULL, - 'Packed' => NULL, - 'Null' => '', - 'Index_type' => 'BTREE', - 'Comment' => '', - 'Index_comment' => '', - ), - ), - 'PRIMARY' => - array( - 1 => - array( - 'Table' => 'kg_task', - 'Non_unique' => '0', - 'Key_name' => 'PRIMARY', - 'Seq_in_index' => '1', - 'Column_name' => 'id', - 'Collation' => 'A', - 'Sub_part' => NULL, - 'Packed' => NULL, - 'Null' => '', - 'Index_type' => 'BTREE', - 'Comment' => '', - 'Index_comment' => '', - ), - ), - ), - 'foreign_keys' => NULL, - ), - 'kg_topic' => - array( - 'table' => - array( - 'table_name' => 'kg_topic', - 'engine' => 'InnoDB', - 'table_comment' => '', - 'table_collation' => 'utf8mb4_general_ci', - 'character_set_name' => 'utf8mb4', - 'row_format' => 'Compact', - ), - 'columns' => - array( - 'id' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_topic', - 'COLUMN_NAME' => 'id', - 'ORDINAL_POSITION' => '1', - 'COLUMN_DEFAULT' => NULL, - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => 'PRI', - 'EXTRA' => 'auto_increment', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '主键编号', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'title' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_topic', - 'COLUMN_NAME' => 'title', - 'ORDINAL_POSITION' => '2', - 'COLUMN_DEFAULT' => '', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'varchar', - 'CHARACTER_MAXIMUM_LENGTH' => '100', - 'CHARACTER_OCTET_LENGTH' => '400', - 'NUMERIC_PRECISION' => NULL, - 'NUMERIC_SCALE' => NULL, - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => 'utf8mb4', - 'COLLATION_NAME' => 'utf8mb4_general_ci', - 'COLUMN_TYPE' => 'varchar(100)', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '标题', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'keywords' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_topic', - 'COLUMN_NAME' => 'keywords', - 'ORDINAL_POSITION' => '3', - 'COLUMN_DEFAULT' => '', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'varchar', - 'CHARACTER_MAXIMUM_LENGTH' => '100', - 'CHARACTER_OCTET_LENGTH' => '400', - 'NUMERIC_PRECISION' => NULL, - 'NUMERIC_SCALE' => NULL, - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => 'utf8mb4', - 'COLLATION_NAME' => 'utf8mb4_general_ci', - 'COLUMN_TYPE' => 'varchar(100)', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '关键字', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'summary' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_topic', - 'COLUMN_NAME' => 'summary', - 'ORDINAL_POSITION' => '4', - 'COLUMN_DEFAULT' => '', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'varchar', - 'CHARACTER_MAXIMUM_LENGTH' => '255', - 'CHARACTER_OCTET_LENGTH' => '1020', - 'NUMERIC_PRECISION' => NULL, - 'NUMERIC_SCALE' => NULL, - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => 'utf8mb4', - 'COLLATION_NAME' => 'utf8mb4_general_ci', - 'COLUMN_TYPE' => 'varchar(255)', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '简介', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'course_count' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_topic', - 'COLUMN_NAME' => 'course_count', - 'ORDINAL_POSITION' => '5', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '课程数量', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'published' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_topic', - 'COLUMN_NAME' => 'published', - 'ORDINAL_POSITION' => '6', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '发布标识', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'deleted' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_topic', - 'COLUMN_NAME' => 'deleted', - 'ORDINAL_POSITION' => '7', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '删除标识', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'create_time' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_topic', - 'COLUMN_NAME' => 'create_time', - 'ORDINAL_POSITION' => '8', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '创建时间', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'update_time' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_topic', - 'COLUMN_NAME' => 'update_time', - 'ORDINAL_POSITION' => '9', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '更新时间', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - ), - 'indexes' => - array( - 'PRIMARY' => - array( - 1 => - array( - 'Table' => 'kg_topic', - 'Non_unique' => '0', - 'Key_name' => 'PRIMARY', - 'Seq_in_index' => '1', - 'Column_name' => 'id', - 'Collation' => 'A', - 'Sub_part' => NULL, - 'Packed' => NULL, - 'Null' => '', - 'Index_type' => 'BTREE', - 'Comment' => '', - 'Index_comment' => '', - ), - ), - ), - 'foreign_keys' => NULL, - ), - 'kg_trade' => - array( - 'table' => - array( - 'table_name' => 'kg_trade', - 'engine' => 'InnoDB', - 'table_comment' => '', - 'table_collation' => 'utf8mb4_general_ci', - 'character_set_name' => 'utf8mb4', - 'row_format' => 'Dynamic', - ), - 'columns' => - array( - 'id' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_trade', - 'COLUMN_NAME' => 'id', - 'ORDINAL_POSITION' => '1', - 'COLUMN_DEFAULT' => NULL, - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => 'PRI', - 'EXTRA' => 'auto_increment', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '主键编号', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'owner_id' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_trade', - 'COLUMN_NAME' => 'owner_id', - 'ORDINAL_POSITION' => '2', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => 'MUL', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '用户编号', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'order_id' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_trade', - 'COLUMN_NAME' => 'order_id', - 'ORDINAL_POSITION' => '3', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => 'MUL', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '订单编号', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'sn' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_trade', - 'COLUMN_NAME' => 'sn', - 'ORDINAL_POSITION' => '4', - 'COLUMN_DEFAULT' => '', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'varchar', - 'CHARACTER_MAXIMUM_LENGTH' => '32', - 'CHARACTER_OCTET_LENGTH' => '128', - 'NUMERIC_PRECISION' => NULL, - 'NUMERIC_SCALE' => NULL, - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => 'utf8mb4', - 'COLLATION_NAME' => 'utf8mb4_general_ci', - 'COLUMN_TYPE' => 'varchar(32)', - 'COLUMN_KEY' => 'MUL', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '交易序号', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'subject' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_trade', - 'COLUMN_NAME' => 'subject', - 'ORDINAL_POSITION' => '5', - 'COLUMN_DEFAULT' => '', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'varchar', - 'CHARACTER_MAXIMUM_LENGTH' => '100', - 'CHARACTER_OCTET_LENGTH' => '400', - 'NUMERIC_PRECISION' => NULL, - 'NUMERIC_SCALE' => NULL, - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => 'utf8mb4', - 'COLLATION_NAME' => 'utf8mb4_general_ci', - 'COLUMN_TYPE' => 'varchar(100)', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '交易主题', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'amount' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_trade', - 'COLUMN_NAME' => 'amount', - 'ORDINAL_POSITION' => '6', - 'COLUMN_DEFAULT' => '0.00', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'decimal', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '2', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'decimal(10,2) unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '交易金额', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'channel' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_trade', - 'COLUMN_NAME' => 'channel', - 'ORDINAL_POSITION' => '7', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '平台类型', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'channel_sn' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_trade', - 'COLUMN_NAME' => 'channel_sn', - 'ORDINAL_POSITION' => '8', - 'COLUMN_DEFAULT' => '', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'varchar', - 'CHARACTER_MAXIMUM_LENGTH' => '64', - 'CHARACTER_OCTET_LENGTH' => '256', - 'NUMERIC_PRECISION' => NULL, - 'NUMERIC_SCALE' => NULL, - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => 'utf8mb4', - 'COLLATION_NAME' => 'utf8mb4_general_ci', - 'COLUMN_TYPE' => 'varchar(64)', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '平台序号', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'status' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_trade', - 'COLUMN_NAME' => 'status', - 'ORDINAL_POSITION' => '9', - 'COLUMN_DEFAULT' => '1', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '状态类型', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'deleted' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_trade', - 'COLUMN_NAME' => 'deleted', - 'ORDINAL_POSITION' => '10', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '删除标识', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'create_time' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_trade', - 'COLUMN_NAME' => 'create_time', - 'ORDINAL_POSITION' => '11', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '创建时间', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'update_time' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_trade', - 'COLUMN_NAME' => 'update_time', - 'ORDINAL_POSITION' => '12', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '更新时间', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - ), - 'indexes' => - array( - 'order_id' => - array( - 1 => - array( - 'Table' => 'kg_trade', - 'Non_unique' => '1', - 'Key_name' => 'order_id', - 'Seq_in_index' => '1', - 'Column_name' => 'order_id', - 'Collation' => 'A', - 'Sub_part' => NULL, - 'Packed' => NULL, - 'Null' => '', - 'Index_type' => 'BTREE', - 'Comment' => '', - 'Index_comment' => '', - ), - ), - 'owner_id' => - array( - 1 => - array( - 'Table' => 'kg_trade', - 'Non_unique' => '1', - 'Key_name' => 'owner_id', - 'Seq_in_index' => '1', - 'Column_name' => 'owner_id', - 'Collation' => 'A', - 'Sub_part' => NULL, - 'Packed' => NULL, - 'Null' => '', - 'Index_type' => 'BTREE', - 'Comment' => '', - 'Index_comment' => '', - ), - ), - 'PRIMARY' => - array( - 1 => - array( - 'Table' => 'kg_trade', - 'Non_unique' => '0', - 'Key_name' => 'PRIMARY', - 'Seq_in_index' => '1', - 'Column_name' => 'id', - 'Collation' => 'A', - 'Sub_part' => NULL, - 'Packed' => NULL, - 'Null' => '', - 'Index_type' => 'BTREE', - 'Comment' => '', - 'Index_comment' => '', - ), - ), - 'sn' => - array( - 1 => - array( - 'Table' => 'kg_trade', - 'Non_unique' => '1', - 'Key_name' => 'sn', - 'Seq_in_index' => '1', - 'Column_name' => 'sn', - 'Collation' => 'A', - 'Sub_part' => NULL, - 'Packed' => NULL, - 'Null' => '', - 'Index_type' => 'BTREE', - 'Comment' => '', - 'Index_comment' => '', - ), - ), - ), - 'foreign_keys' => NULL, - ), - 'kg_trade_status' => - array( - 'table' => - array( - 'table_name' => 'kg_trade_status', - 'engine' => 'InnoDB', - 'table_comment' => '', - 'table_collation' => 'utf8mb4_general_ci', - 'character_set_name' => 'utf8mb4', - 'row_format' => 'Dynamic', - ), - 'columns' => - array( - 'id' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_trade_status', - 'COLUMN_NAME' => 'id', - 'ORDINAL_POSITION' => '1', - 'COLUMN_DEFAULT' => NULL, - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => 'PRI', - 'EXTRA' => 'auto_increment', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '主键编号', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'trade_id' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_trade_status', - 'COLUMN_NAME' => 'trade_id', - 'ORDINAL_POSITION' => '2', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => 'MUL', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '订单编号', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'status' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_trade_status', - 'COLUMN_NAME' => 'status', - 'ORDINAL_POSITION' => '3', - 'COLUMN_DEFAULT' => '1', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '订单状态', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'create_time' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_trade_status', - 'COLUMN_NAME' => 'create_time', - 'ORDINAL_POSITION' => '4', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '创建时间', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - ), - 'indexes' => - array( - 'PRIMARY' => - array( - 1 => - array( - 'Table' => 'kg_trade_status', - 'Non_unique' => '0', - 'Key_name' => 'PRIMARY', - 'Seq_in_index' => '1', - 'Column_name' => 'id', - 'Collation' => 'A', - 'Sub_part' => NULL, - 'Packed' => NULL, - 'Null' => '', - 'Index_type' => 'BTREE', - 'Comment' => '', - 'Index_comment' => '', - ), - ), - 'trade_id' => - array( - 1 => - array( - 'Table' => 'kg_trade_status', - 'Non_unique' => '1', - 'Key_name' => 'trade_id', - 'Seq_in_index' => '1', - 'Column_name' => 'trade_id', - 'Collation' => 'A', - 'Sub_part' => NULL, - 'Packed' => NULL, - 'Null' => '', - 'Index_type' => 'BTREE', - 'Comment' => '', - 'Index_comment' => '', - ), - ), - ), - 'foreign_keys' => NULL, - ), - 'kg_upload' => - array( - 'table' => - array( - 'table_name' => 'kg_upload', - 'engine' => 'InnoDB', - 'table_comment' => '', - 'table_collation' => 'utf8mb4_general_ci', - 'character_set_name' => 'utf8mb4', - 'row_format' => 'Dynamic', - ), - 'columns' => - array( - 'id' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_upload', - 'COLUMN_NAME' => 'id', - 'ORDINAL_POSITION' => '1', - 'COLUMN_DEFAULT' => NULL, - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => 'PRI', - 'EXTRA' => 'auto_increment', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '主键编号', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'type' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_upload', - 'COLUMN_NAME' => 'type', - 'ORDINAL_POSITION' => '2', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '条目类型', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'name' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_upload', - 'COLUMN_NAME' => 'name', - 'ORDINAL_POSITION' => '3', - 'COLUMN_DEFAULT' => '', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'varchar', - 'CHARACTER_MAXIMUM_LENGTH' => '100', - 'CHARACTER_OCTET_LENGTH' => '400', - 'NUMERIC_PRECISION' => NULL, - 'NUMERIC_SCALE' => NULL, - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => 'utf8mb4', - 'COLLATION_NAME' => 'utf8mb4_general_ci', - 'COLUMN_TYPE' => 'varchar(100)', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '文件名', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'path' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_upload', - 'COLUMN_NAME' => 'path', - 'ORDINAL_POSITION' => '4', - 'COLUMN_DEFAULT' => '', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'varchar', - 'CHARACTER_MAXIMUM_LENGTH' => '100', - 'CHARACTER_OCTET_LENGTH' => '400', - 'NUMERIC_PRECISION' => NULL, - 'NUMERIC_SCALE' => NULL, - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => 'utf8mb4', - 'COLLATION_NAME' => 'utf8mb4_general_ci', - 'COLUMN_TYPE' => 'varchar(100)', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '路径', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'mime' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_upload', - 'COLUMN_NAME' => 'mime', - 'ORDINAL_POSITION' => '5', - 'COLUMN_DEFAULT' => '', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'varchar', - 'CHARACTER_MAXIMUM_LENGTH' => '100', - 'CHARACTER_OCTET_LENGTH' => '400', - 'NUMERIC_PRECISION' => NULL, - 'NUMERIC_SCALE' => NULL, - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => 'utf8mb4', - 'COLLATION_NAME' => 'utf8mb4_general_ci', - 'COLUMN_TYPE' => 'varchar(100)', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => 'mime', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'md5' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_upload', - 'COLUMN_NAME' => 'md5', - 'ORDINAL_POSITION' => '6', - 'COLUMN_DEFAULT' => '', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'varchar', - 'CHARACTER_MAXIMUM_LENGTH' => '32', - 'CHARACTER_OCTET_LENGTH' => '128', - 'NUMERIC_PRECISION' => NULL, - 'NUMERIC_SCALE' => NULL, - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => 'utf8mb4', - 'COLLATION_NAME' => 'utf8mb4_general_ci', - 'COLUMN_TYPE' => 'varchar(32)', - 'COLUMN_KEY' => 'UNI', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => 'md5', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'size' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_upload', - 'COLUMN_NAME' => 'size', - 'ORDINAL_POSITION' => '7', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '大小', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'deleted' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_upload', - 'COLUMN_NAME' => 'deleted', - 'ORDINAL_POSITION' => '8', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '删除标识', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'create_time' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_upload', - 'COLUMN_NAME' => 'create_time', - 'ORDINAL_POSITION' => '9', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '创建时间', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'update_time' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_upload', - 'COLUMN_NAME' => 'update_time', - 'ORDINAL_POSITION' => '10', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '更新时间', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - ), - 'indexes' => - array( - 'md5' => - array( - 1 => - array( - 'Table' => 'kg_upload', - 'Non_unique' => '0', - 'Key_name' => 'md5', - 'Seq_in_index' => '1', - 'Column_name' => 'md5', - 'Collation' => 'A', - 'Sub_part' => NULL, - 'Packed' => NULL, - 'Null' => '', - 'Index_type' => 'BTREE', - 'Comment' => '', - 'Index_comment' => '', - ), - ), - 'PRIMARY' => - array( - 1 => - array( - 'Table' => 'kg_upload', - 'Non_unique' => '0', - 'Key_name' => 'PRIMARY', - 'Seq_in_index' => '1', - 'Column_name' => 'id', - 'Collation' => 'A', - 'Sub_part' => NULL, - 'Packed' => NULL, - 'Null' => '', - 'Index_type' => 'BTREE', - 'Comment' => '', - 'Index_comment' => '', - ), - ), - ), - 'foreign_keys' => NULL, - ), - 'kg_user' => - array( - 'table' => - array( - 'table_name' => 'kg_user', - 'engine' => 'InnoDB', - 'table_comment' => '', - 'table_collation' => 'utf8mb4_general_ci', - 'character_set_name' => 'utf8mb4', - 'row_format' => 'Dynamic', - ), - 'columns' => - array( - 'id' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_user', - 'COLUMN_NAME' => 'id', - 'ORDINAL_POSITION' => '1', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => 'PRI', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '主键编号', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'name' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_user', - 'COLUMN_NAME' => 'name', - 'ORDINAL_POSITION' => '2', - 'COLUMN_DEFAULT' => '', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'varchar', - 'CHARACTER_MAXIMUM_LENGTH' => '30', - 'CHARACTER_OCTET_LENGTH' => '120', - 'NUMERIC_PRECISION' => NULL, - 'NUMERIC_SCALE' => NULL, - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => 'utf8mb4', - 'COLLATION_NAME' => 'utf8mb4_general_ci', - 'COLUMN_TYPE' => 'varchar(30)', - 'COLUMN_KEY' => 'MUL', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '名称', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'avatar' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_user', - 'COLUMN_NAME' => 'avatar', - 'ORDINAL_POSITION' => '3', - 'COLUMN_DEFAULT' => '', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'varchar', - 'CHARACTER_MAXIMUM_LENGTH' => '100', - 'CHARACTER_OCTET_LENGTH' => '400', - 'NUMERIC_PRECISION' => NULL, - 'NUMERIC_SCALE' => NULL, - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => 'utf8mb4', - 'COLLATION_NAME' => 'utf8mb4_general_ci', - 'COLUMN_TYPE' => 'varchar(100)', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '头像', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'title' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_user', - 'COLUMN_NAME' => 'title', - 'ORDINAL_POSITION' => '4', - 'COLUMN_DEFAULT' => '', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'varchar', - 'CHARACTER_MAXIMUM_LENGTH' => '30', - 'CHARACTER_OCTET_LENGTH' => '120', - 'NUMERIC_PRECISION' => NULL, - 'NUMERIC_SCALE' => NULL, - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => 'utf8mb4', - 'COLLATION_NAME' => 'utf8mb4_general_ci', - 'COLUMN_TYPE' => 'varchar(30)', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '头衔', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'about' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_user', - 'COLUMN_NAME' => 'about', - 'ORDINAL_POSITION' => '5', - 'COLUMN_DEFAULT' => '', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'varchar', - 'CHARACTER_MAXIMUM_LENGTH' => '255', - 'CHARACTER_OCTET_LENGTH' => '1020', - 'NUMERIC_PRECISION' => NULL, - 'NUMERIC_SCALE' => NULL, - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => 'utf8mb4', - 'COLLATION_NAME' => 'utf8mb4_general_ci', - 'COLUMN_TYPE' => 'varchar(255)', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '简介', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'area' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_user', - 'COLUMN_NAME' => 'area', - 'ORDINAL_POSITION' => '6', - 'COLUMN_DEFAULT' => '', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'varchar', - 'CHARACTER_MAXIMUM_LENGTH' => '30', - 'CHARACTER_OCTET_LENGTH' => '120', - 'NUMERIC_PRECISION' => NULL, - 'NUMERIC_SCALE' => NULL, - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => 'utf8mb4', - 'COLLATION_NAME' => 'utf8mb4_general_ci', - 'COLUMN_TYPE' => 'varchar(30)', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '地区', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'gender' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_user', - 'COLUMN_NAME' => 'gender', - 'ORDINAL_POSITION' => '7', - 'COLUMN_DEFAULT' => '3', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '性别', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'vip' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_user', - 'COLUMN_NAME' => 'vip', - 'ORDINAL_POSITION' => '8', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '会员标识', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'locked' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_user', - 'COLUMN_NAME' => 'locked', - 'ORDINAL_POSITION' => '9', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '锁定标识', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'deleted' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_user', - 'COLUMN_NAME' => 'deleted', - 'ORDINAL_POSITION' => '10', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '删除标识', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'edu_role' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_user', - 'COLUMN_NAME' => 'edu_role', - 'ORDINAL_POSITION' => '11', - 'COLUMN_DEFAULT' => '1', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '教学角色', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'admin_role' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_user', - 'COLUMN_NAME' => 'admin_role', - 'ORDINAL_POSITION' => '12', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '后台角色', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'course_count' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_user', - 'COLUMN_NAME' => 'course_count', - 'ORDINAL_POSITION' => '13', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '课程数', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'favorite_count' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_user', - 'COLUMN_NAME' => 'favorite_count', - 'ORDINAL_POSITION' => '14', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '收藏数', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'vip_expiry_time' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_user', - 'COLUMN_NAME' => 'vip_expiry_time', - 'ORDINAL_POSITION' => '15', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '会员期限', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'lock_expiry_time' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_user', - 'COLUMN_NAME' => 'lock_expiry_time', - 'ORDINAL_POSITION' => '16', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '锁定期限', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'active_time' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_user', - 'COLUMN_NAME' => 'active_time', - 'ORDINAL_POSITION' => '17', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '活跃时间', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'create_time' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_user', - 'COLUMN_NAME' => 'create_time', - 'ORDINAL_POSITION' => '18', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '创建时间', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'update_time' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_user', - 'COLUMN_NAME' => 'update_time', - 'ORDINAL_POSITION' => '19', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '更新时间', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - ), - 'indexes' => - array( - 'name' => - array( - 1 => - array( - 'Table' => 'kg_user', - 'Non_unique' => '1', - 'Key_name' => 'name', - 'Seq_in_index' => '1', - 'Column_name' => 'name', - 'Collation' => 'A', - 'Sub_part' => NULL, - 'Packed' => NULL, - 'Null' => '', - 'Index_type' => 'BTREE', - 'Comment' => '', - 'Index_comment' => '', - ), - ), - 'PRIMARY' => - array( - 1 => - array( - 'Table' => 'kg_user', - 'Non_unique' => '0', - 'Key_name' => 'PRIMARY', - 'Seq_in_index' => '1', - 'Column_name' => 'id', - 'Collation' => 'A', - 'Sub_part' => NULL, - 'Packed' => NULL, - 'Null' => '', - 'Index_type' => 'BTREE', - 'Comment' => '', - 'Index_comment' => '', - ), - ), - ), - 'foreign_keys' => NULL, - ), - 'kg_user_session' => - array( - 'table' => - array( - 'table_name' => 'kg_user_session', - 'engine' => 'InnoDB', - 'table_comment' => '', - 'table_collation' => 'utf8mb4_general_ci', - 'character_set_name' => 'utf8mb4', - 'row_format' => 'Dynamic', - ), - 'columns' => - array( - 'id' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_user_session', - 'COLUMN_NAME' => 'id', - 'ORDINAL_POSITION' => '1', - 'COLUMN_DEFAULT' => NULL, - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => 'PRI', - 'EXTRA' => 'auto_increment', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '主键编号', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'user_id' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_user_session', - 'COLUMN_NAME' => 'user_id', - 'ORDINAL_POSITION' => '2', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => 'MUL', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '用户编号', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'session_id' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_user_session', - 'COLUMN_NAME' => 'session_id', - 'ORDINAL_POSITION' => '3', - 'COLUMN_DEFAULT' => '', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'varchar', - 'CHARACTER_MAXIMUM_LENGTH' => '64', - 'CHARACTER_OCTET_LENGTH' => '256', - 'NUMERIC_PRECISION' => NULL, - 'NUMERIC_SCALE' => NULL, - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => 'utf8mb4', - 'COLLATION_NAME' => 'utf8mb4_general_ci', - 'COLUMN_TYPE' => 'varchar(64)', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '会话编号', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'client_type' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_user_session', - 'COLUMN_NAME' => 'client_type', - 'ORDINAL_POSITION' => '4', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '终端类型', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'client_ip' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_user_session', - 'COLUMN_NAME' => 'client_ip', - 'ORDINAL_POSITION' => '5', - 'COLUMN_DEFAULT' => '', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'varchar', - 'CHARACTER_MAXIMUM_LENGTH' => '64', - 'CHARACTER_OCTET_LENGTH' => '256', - 'NUMERIC_PRECISION' => NULL, - 'NUMERIC_SCALE' => NULL, - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => 'utf8mb4', - 'COLLATION_NAME' => 'utf8mb4_general_ci', - 'COLUMN_TYPE' => 'varchar(64)', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '终端IP', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'deleted' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_user_session', - 'COLUMN_NAME' => 'deleted', - 'ORDINAL_POSITION' => '6', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '删除标识', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'create_time' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_user_session', - 'COLUMN_NAME' => 'create_time', - 'ORDINAL_POSITION' => '7', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '创建时间', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'update_time' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_user_session', - 'COLUMN_NAME' => 'update_time', - 'ORDINAL_POSITION' => '8', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '更新时间', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - ), - 'indexes' => - array( - 'PRIMARY' => - array( - 1 => - array( - 'Table' => 'kg_user_session', - 'Non_unique' => '0', - 'Key_name' => 'PRIMARY', - 'Seq_in_index' => '1', - 'Column_name' => 'id', - 'Collation' => 'A', - 'Sub_part' => NULL, - 'Packed' => NULL, - 'Null' => '', - 'Index_type' => 'BTREE', - 'Comment' => '', - 'Index_comment' => '', - ), - ), - 'user_id' => - array( - 1 => - array( - 'Table' => 'kg_user_session', - 'Non_unique' => '1', - 'Key_name' => 'user_id', - 'Seq_in_index' => '1', - 'Column_name' => 'user_id', - 'Collation' => 'A', - 'Sub_part' => NULL, - 'Packed' => NULL, - 'Null' => '', - 'Index_type' => 'BTREE', - 'Comment' => '', - 'Index_comment' => '', - ), - ), - ), - 'foreign_keys' => NULL, - ), - 'kg_user_token' => - array( - 'table' => - array( - 'table_name' => 'kg_user_token', - 'engine' => 'InnoDB', - 'table_comment' => '', - 'table_collation' => 'utf8mb4_general_ci', - 'character_set_name' => 'utf8mb4', - 'row_format' => 'Dynamic', - ), - 'columns' => - array( - 'id' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_user_token', - 'COLUMN_NAME' => 'id', - 'ORDINAL_POSITION' => '1', - 'COLUMN_DEFAULT' => NULL, - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => 'PRI', - 'EXTRA' => 'auto_increment', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '主键编号', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'user_id' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_user_token', - 'COLUMN_NAME' => 'user_id', - 'ORDINAL_POSITION' => '2', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => 'MUL', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '用户编号', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'token' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_user_token', - 'COLUMN_NAME' => 'token', - 'ORDINAL_POSITION' => '3', - 'COLUMN_DEFAULT' => '', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'varchar', - 'CHARACTER_MAXIMUM_LENGTH' => '64', - 'CHARACTER_OCTET_LENGTH' => '256', - 'NUMERIC_PRECISION' => NULL, - 'NUMERIC_SCALE' => NULL, - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => 'utf8mb4', - 'COLLATION_NAME' => 'utf8mb4_general_ci', - 'COLUMN_TYPE' => 'varchar(64)', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '身份令牌', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'client_type' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_user_token', - 'COLUMN_NAME' => 'client_type', - 'ORDINAL_POSITION' => '4', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '终端类型', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'client_ip' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_user_token', - 'COLUMN_NAME' => 'client_ip', - 'ORDINAL_POSITION' => '5', - 'COLUMN_DEFAULT' => '', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'varchar', - 'CHARACTER_MAXIMUM_LENGTH' => '64', - 'CHARACTER_OCTET_LENGTH' => '256', - 'NUMERIC_PRECISION' => NULL, - 'NUMERIC_SCALE' => NULL, - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => 'utf8mb4', - 'COLLATION_NAME' => 'utf8mb4_general_ci', - 'COLUMN_TYPE' => 'varchar(64)', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '终端IP', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'deleted' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_user_token', - 'COLUMN_NAME' => 'deleted', - 'ORDINAL_POSITION' => '6', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '删除标识', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'create_time' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_user_token', - 'COLUMN_NAME' => 'create_time', - 'ORDINAL_POSITION' => '7', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '创建时间', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'update_time' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_user_token', - 'COLUMN_NAME' => 'update_time', - 'ORDINAL_POSITION' => '8', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '更新时间', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - ), - 'indexes' => - array( - 'PRIMARY' => - array( - 1 => - array( - 'Table' => 'kg_user_token', - 'Non_unique' => '0', - 'Key_name' => 'PRIMARY', - 'Seq_in_index' => '1', - 'Column_name' => 'id', - 'Collation' => 'A', - 'Sub_part' => NULL, - 'Packed' => NULL, - 'Null' => '', - 'Index_type' => 'BTREE', - 'Comment' => '', - 'Index_comment' => '', - ), - ), - 'user_id' => - array( - 1 => - array( - 'Table' => 'kg_user_token', - 'Non_unique' => '1', - 'Key_name' => 'user_id', - 'Seq_in_index' => '1', - 'Column_name' => 'user_id', - 'Collation' => 'A', - 'Sub_part' => NULL, - 'Packed' => NULL, - 'Null' => '', - 'Index_type' => 'BTREE', - 'Comment' => '', - 'Index_comment' => '', - ), - ), - ), - 'foreign_keys' => NULL, - ), - 'kg_vip' => - array( - 'table' => - array( - 'table_name' => 'kg_vip', - 'engine' => 'InnoDB', - 'table_comment' => '', - 'table_collation' => 'utf8mb4_general_ci', - 'character_set_name' => 'utf8mb4', - 'row_format' => 'Dynamic', - ), - 'columns' => - array( - 'id' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_vip', - 'COLUMN_NAME' => 'id', - 'ORDINAL_POSITION' => '1', - 'COLUMN_DEFAULT' => NULL, - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => 'PRI', - 'EXTRA' => 'auto_increment', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '主键编号', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'title' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_vip', - 'COLUMN_NAME' => 'title', - 'ORDINAL_POSITION' => '2', - 'COLUMN_DEFAULT' => '', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'varchar', - 'CHARACTER_MAXIMUM_LENGTH' => '30', - 'CHARACTER_OCTET_LENGTH' => '120', - 'NUMERIC_PRECISION' => NULL, - 'NUMERIC_SCALE' => NULL, - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => 'utf8mb4', - 'COLLATION_NAME' => 'utf8mb4_general_ci', - 'COLUMN_TYPE' => 'varchar(30)', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '标题', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'expiry' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_vip', - 'COLUMN_NAME' => 'expiry', - 'ORDINAL_POSITION' => '3', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '有效期', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'price' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_vip', - 'COLUMN_NAME' => 'price', - 'ORDINAL_POSITION' => '4', - 'COLUMN_DEFAULT' => '0.00', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'decimal', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '2', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'decimal(10,2) unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '价格', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'deleted' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_vip', - 'COLUMN_NAME' => 'deleted', - 'ORDINAL_POSITION' => '5', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '删除标识', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'create_time' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_vip', - 'COLUMN_NAME' => 'create_time', - 'ORDINAL_POSITION' => '6', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '创建时间', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'update_time' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_vip', - 'COLUMN_NAME' => 'update_time', - 'ORDINAL_POSITION' => '7', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '更新时间', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - ), - 'indexes' => - array( - 'PRIMARY' => - array( - 1 => - array( - 'Table' => 'kg_vip', - 'Non_unique' => '0', - 'Key_name' => 'PRIMARY', - 'Seq_in_index' => '1', - 'Column_name' => 'id', - 'Collation' => 'A', - 'Sub_part' => NULL, - 'Packed' => NULL, - 'Null' => '', - 'Index_type' => 'BTREE', - 'Comment' => '', - 'Index_comment' => '', - ), - ), - ), - 'foreign_keys' => NULL, - ), - 'kg_wechat_subscribe' => - array( - 'table' => - array( - 'table_name' => 'kg_wechat_subscribe', - 'engine' => 'InnoDB', - 'table_comment' => '', - 'table_collation' => 'utf8mb4_general_ci', - 'character_set_name' => 'utf8mb4', - 'row_format' => 'Dynamic', - ), - 'columns' => - array( - 'id' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_wechat_subscribe', - 'COLUMN_NAME' => 'id', - 'ORDINAL_POSITION' => '1', - 'COLUMN_DEFAULT' => NULL, - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => 'PRI', - 'EXTRA' => 'auto_increment', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '主键编号', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'user_id' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_wechat_subscribe', - 'COLUMN_NAME' => 'user_id', - 'ORDINAL_POSITION' => '2', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => 'MUL', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '用户编号', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'open_id' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_wechat_subscribe', - 'COLUMN_NAME' => 'open_id', - 'ORDINAL_POSITION' => '3', - 'COLUMN_DEFAULT' => '', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'varchar', - 'CHARACTER_MAXIMUM_LENGTH' => '64', - 'CHARACTER_OCTET_LENGTH' => '256', - 'NUMERIC_PRECISION' => NULL, - 'NUMERIC_SCALE' => NULL, - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => 'utf8mb4', - 'COLLATION_NAME' => 'utf8mb4_general_ci', - 'COLUMN_TYPE' => 'varchar(64)', - 'COLUMN_KEY' => 'MUL', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '开放ID', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'deleted' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_wechat_subscribe', - 'COLUMN_NAME' => 'deleted', - 'ORDINAL_POSITION' => '4', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '删除标识', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'create_time' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_wechat_subscribe', - 'COLUMN_NAME' => 'create_time', - 'ORDINAL_POSITION' => '5', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '创建时间', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - 'update_time' => - array( - 'TABLE_CATALOG' => 'def', - 'TABLE_NAME' => 'kg_wechat_subscribe', - 'COLUMN_NAME' => 'update_time', - 'ORDINAL_POSITION' => '6', - 'COLUMN_DEFAULT' => '0', - 'IS_NULLABLE' => 'NO', - 'DATA_TYPE' => 'int', - 'CHARACTER_MAXIMUM_LENGTH' => NULL, - 'CHARACTER_OCTET_LENGTH' => NULL, - 'NUMERIC_PRECISION' => '10', - 'NUMERIC_SCALE' => '0', - 'DATETIME_PRECISION' => NULL, - 'CHARACTER_SET_NAME' => NULL, - 'COLLATION_NAME' => NULL, - 'COLUMN_TYPE' => 'int unsigned', - 'COLUMN_KEY' => '', - 'EXTRA' => '', - 'PRIVILEGES' => 'select,insert,update,references', - 'COLUMN_COMMENT' => '更新时间', - 'GENERATION_EXPRESSION' => '', - 'SRS_ID' => NULL, - ), - ), - 'indexes' => - array( - 'open_id' => - array( - 1 => - array( - 'Table' => 'kg_wechat_subscribe', - 'Non_unique' => '1', - 'Key_name' => 'open_id', - 'Seq_in_index' => '1', - 'Column_name' => 'open_id', - 'Collation' => 'A', - 'Sub_part' => NULL, - 'Packed' => NULL, - 'Null' => '', - 'Index_type' => 'BTREE', - 'Comment' => '', - 'Index_comment' => '', - ), - ), - 'PRIMARY' => - array( - 1 => - array( - 'Table' => 'kg_wechat_subscribe', - 'Non_unique' => '0', - 'Key_name' => 'PRIMARY', - 'Seq_in_index' => '1', - 'Column_name' => 'id', - 'Collation' => 'A', - 'Sub_part' => NULL, - 'Packed' => NULL, - 'Null' => '', - 'Index_type' => 'BTREE', - 'Comment' => '', - 'Index_comment' => '', - ), - ), - 'user_id' => - array( - 1 => - array( - 'Table' => 'kg_wechat_subscribe', - 'Non_unique' => '1', - 'Key_name' => 'user_id', - 'Seq_in_index' => '1', - 'Column_name' => 'user_id', - 'Collation' => 'A', - 'Sub_part' => NULL, - 'Packed' => NULL, - 'Null' => '', - 'Index_type' => 'BTREE', - 'Comment' => '', - 'Index_comment' => '', - ), - ), - ), - 'foreign_keys' => NULL, - ), - ), -); \ No newline at end of file diff --git a/public/static/admin/css/common.css b/public/static/admin/css/common.css index b5ef5dcc..c8977177 100644 --- a/public/static/admin/css/common.css +++ b/public/static/admin/css/common.css @@ -34,6 +34,14 @@ list-style: decimal; } +.kg-layer-content { + padding: 15px; +} + +.kg-layer-content .layui-table { + margin: 0; +} + .kg-body { padding: 15px; } diff --git a/public/static/admin/js/contact.js b/public/static/admin/js/contact.js new file mode 100644 index 00000000..c16d9f21 --- /dev/null +++ b/public/static/admin/js/contact.js @@ -0,0 +1,21 @@ +layui.use(['jquery', 'layer'], function () { + + var $ = layui.jquery; + var layer = layui.layer; + + $('.kg-contact').on('click', function () { + var content = '
' + + '' + + '' + + '' + + '
联系人手机号收货地址
' + $(this).data('name') + '' + $(this).data('phone') + '' + $(this).data('address') + '
' + + '
'; + layer.open({ + type: 1, + title: '联系信息', + area: ['800px', '160px'], + content: content + }); + }); + +}); \ No newline at end of file diff --git a/public/static/admin/js/vditor.js b/public/static/admin/js/vditor.js index 69071b58..3e08c2fb 100644 --- a/public/static/admin/js/vditor.js +++ b/public/static/admin/js/vditor.js @@ -42,13 +42,6 @@ layui.use(['jquery'], function () { value: $textarea.val() }); - /** - * 取消提交表单行为 - */ - $('body').on('click', '.vditor-preview__action > button', function () { - return false; - }); - /** * 同步编辑器内容到表单 */ diff --git a/public/static/home/css/common.css b/public/static/home/css/common.css index 25ffe190..d30bd0c5 100644 --- a/public/static/home/css/common.css +++ b/public/static/home/css/common.css @@ -778,36 +778,40 @@ margin: 5px; } -.sidebar-teacher-card { +.sidebar-user-card { margin-bottom: 15px; } -.sidebar-teacher-card .avatar { +.sidebar-user-card .avatar { float: left; width: 60px; height: 60px; margin-right: 10px; } -.sidebar-teacher-card .avatar img { +.sidebar-user-card .avatar img { width: 100%; height: 100%; border-radius: 60px; } -.sidebar-teacher-card .info { +.sidebar-user-card .info { float: left; padding: 5px 0; } -.sidebar-teacher-card .info .name { +.sidebar-user-card .info .name { } -.sidebar-teacher-card .info .title { +.sidebar-user-card .info .title { color: #666; font-size: 12px; } +.sidebar-user-card .info span { + margin-right: 5px; +} + .topic-badge { padding: 2px 5px; margin-right: 5px; @@ -1679,7 +1683,7 @@ } .order-card { - padding: 15px 20px; + padding: 10px 0; margin-bottom: 20px; background-color: white; color: #666; @@ -1824,4 +1828,42 @@ .layim-chat-status .offline { color: gray; +} + +.gift-meta .cover { + float: left; + margin-right: 10px; +} + +.gift-meta .cover img { + width: 210px; + height: 118px; +} + +.gift-meta .info { + float: left; +} + +.gift-meta .info p { + line-height: 35px; +} + +.gift-meta .info .stats { + margin-bottom: 10px; +} + +.gift-meta .info span { + margin-right: 5px; +} + +.gift-meta .info .value { + color: #666; +} + +.gift-meta .info .price, .sidebar-user-card .info .point { + color: red; +} + +.gift-details { + min-height: 450px; } \ No newline at end of file diff --git a/public/static/home/js/point.gift.list.js b/public/static/home/js/point.gift.list.js new file mode 100644 index 00000000..f3ff5cba --- /dev/null +++ b/public/static/home/js/point.gift.list.js @@ -0,0 +1,9 @@ +layui.use(['jquery', 'helper'], function () { + + var $ = layui.jquery; + var helper = layui.helper; + var $giftList = $('#gift-list'); + + helper.ajaxLoadHtml($giftList.data('url'), $giftList.attr('id')); + +}); \ No newline at end of file diff --git a/public/static/home/js/point.gift.show.js b/public/static/home/js/point.gift.show.js new file mode 100644 index 00000000..a8df29bc --- /dev/null +++ b/public/static/home/js/point.gift.show.js @@ -0,0 +1,24 @@ +layui.use(['jquery', 'layer'], function () { + + var $ = layui.jquery; + var layer = layui.layer; + + $('.btn-redeem').on('click', function () { + var url = $(this).data('url'); + var data = {gift_id: $(this).data('id')}; + layer.confirm('兑换不支持退换,确定要兑换该物品吗?', function () { + $.ajax({ + type: 'POST', + url: url, + data: data, + success: function (res) { + layer.msg(res.msg, {icon: 1}); + setTimeout(function () { + window.location.href = '/uc/point/redeems'; + }, 3000); + } + }); + }); + }); + +}); \ No newline at end of file diff --git a/public/static/home/js/user.console.contact.js b/public/static/home/js/user.console.contact.js new file mode 100644 index 00000000..6aa2f380 --- /dev/null +++ b/public/static/home/js/user.console.contact.js @@ -0,0 +1,12 @@ +layui.use(['layarea'], function () { + + var layarea = layui.layarea; + + layarea.render({ + elem: '#area-picker', + change: function (res) { + console.log(res); + } + }); + +}); \ No newline at end of file diff --git a/scheduler.php b/scheduler.php index 477d2263..666bb7e4 100644 --- a/scheduler.php +++ b/scheduler.php @@ -25,6 +25,9 @@ $scheduler->php($script, $bin, ['--task' => 'vod_event', '--action' => 'main']) $scheduler->php($script, $bin, ['--task' => 'close_trade', '--action' => 'main']) ->at('*/13 * * * *'); +$scheduler->php($script, $bin, ['--task' => 'point_gift_deliver', '--action' => 'main']) + ->at('*/11 * * * *'); + $scheduler->php($script, $bin, ['--task' => 'close_order', '--action' => 'main']) ->hourly(3);