diff --git a/.gitignore b/.gitignore index 4c078d24..924960c7 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ +/.git /.idea /vendor /config/config.php diff --git a/CHANGELOG.md b/CHANGELOG.md index a0e862e6..4130dd6d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,17 @@ +### [v1.5.0](https://gitee.com/koogua/course-tencent-cloud/releases/v1.5.0)(2022-02-17) + +- 调整对内部人员通知任务类型的前缀 +- 调整微信和短信通知发送判断逻辑 +- 清理后台实用工具的无用文件内容 +- 支付后解除秒杀商品锁定 +- 加强支付流程数据验证 +- 加强退款流程数据验证 +- 优化账户创建数据流 +- 优化课程创建数据流 +- 优化章节创建数据流 +- 优化积分商品兑换 +- 优化发货逻辑 + ### [v1.4.9](https://gitee.com/koogua/course-tencent-cloud/releases/v1.4.9)(2022-01-01) - 修正订单消费未奖励积分问题 diff --git a/README.md b/README.md index dda2a478..dbf933d0 100644 --- a/README.md +++ b/README.md @@ -1,15 +1,15 @@ ## 酷瓜云课堂 - + ### 系统介绍 酷瓜云课堂,依托腾讯云基础服务架构,采用C扩展框架Phalcon开发,GPL-2.0开源协议,致力开源网课系统,开源网校系统,开源知识付费系统,开源在线教育系统。 - - - - + + + + ### 系统功能 diff --git a/app/Caches/SiteTodayStat.php b/app/Caches/SiteTodayStat.php index 6cb59a86..285a34aa 100644 --- a/app/Caches/SiteTodayStat.php +++ b/app/Caches/SiteTodayStat.php @@ -35,7 +35,7 @@ class SiteTodayStat extends Cache $saleAmount = $statRepo->sumDailySales($date); $refundAmount = $statRepo->sumDailyRefunds($date); $registerCount = $statRepo->countDailyRegisteredUsers($date); - $pointRedeemCount = $statRepo->countDailyPointRedeems($date); + $pointRedeemCount = $statRepo->countDailyPointGiftRedeems($date); return [ 'sale_count' => $saleCount, diff --git a/app/Console/Tasks/DeliverTask.php b/app/Console/Tasks/DeliverTask.php index 091790bc..521847a2 100644 --- a/app/Console/Tasks/DeliverTask.php +++ b/app/Console/Tasks/DeliverTask.php @@ -7,19 +7,18 @@ namespace App\Console\Tasks; -use App\Models\Course as CourseModel; -use App\Models\CourseUser as CourseUserModel; -use App\Models\ImGroupUser as ImGroupUserModel; use App\Models\Order as OrderModel; use App\Models\Refund as RefundModel; use App\Models\Task as TaskModel; use App\Models\Trade as TradeModel; use App\Repos\Course as CourseRepo; -use App\Repos\ImGroup as ImGroupRepo; -use App\Repos\ImGroupUser as ImGroupUserRepo; -use App\Repos\ImUser as ImUserRepo; use App\Repos\Order as OrderRepo; +use App\Repos\Package as PackageRepo; use App\Repos\User as UserRepo; +use App\Repos\Vip as VipRepo; +use App\Services\Logic\Deliver\CourseDeliver as CourseDeliverService; +use App\Services\Logic\Deliver\PackageDeliver as PackageDeliverService; +use App\Services\Logic\Deliver\VipDeliver as VipDeliverService; use App\Services\Logic\Notice\OrderFinish as OrderFinishNotice; use App\Services\Logic\Point\History\OrderConsume as OrderConsumePointHistory; use Phalcon\Mvc\Model; @@ -31,8 +30,6 @@ class DeliverTask extends Task public function mainAction() { - $logger = $this->getLogger('order'); - $tasks = $this->findTasks(30); echo sprintf('pending tasks: %s', $tasks->count()) . PHP_EOL; @@ -45,15 +42,7 @@ class DeliverTask extends Task foreach ($tasks as $task) { - $orderId = $task->item_info['order']['id'] ?? 0; - - $order = $orderRepo->findById($orderId); - - if (!$order) { - $task->status = TaskModel::STATUS_FAILED; - $task->update(); - continue; - } + $order = $orderRepo->findById($task->item_id); try { @@ -72,16 +61,10 @@ class DeliverTask extends Task } $order->status = OrderModel::STATUS_FINISHED; - - if ($order->update() === false) { - throw new \RuntimeException('Update Order Status Failed'); - } + $order->update(); $task->status = TaskModel::STATUS_FINISHED; - - if ($task->update() === false) { - throw new \RuntimeException('Update Task Status Failed'); - } + $task->update(); $this->db->commit(); @@ -98,7 +81,9 @@ class DeliverTask extends Task $task->update(); - $logger->error('Order Process Exception ' . kg_json_encode([ + $logger = $this->getLogger('deliver'); + + $logger->error('Deliver Task Exception ' . kg_json_encode([ 'file' => $e->getFile(), 'line' => $e->getLine(), 'message' => $e->getMessage(), @@ -119,126 +104,47 @@ class DeliverTask extends Task protected function handleCourseOrder(OrderModel $order) { - $course = $order->item_info['course']; - - if ($course['model'] == CourseModel::MODEL_OFFLINE) { - $expiryTime = strtotime($course['attrs']['end_date']); - } else { - $expiryTime = $course['study_expiry_time']; - } - - $courseUser = new CourseUserModel(); - - $courseUser->user_id = $order->owner_id; - $courseUser->course_id = $order->item_id; - $courseUser->expiry_time = $expiryTime; - $courseUser->role_type = CourseUserModel::ROLE_STUDENT; - $courseUser->source_type = CourseUserModel::SOURCE_CHARGE; - - $courseUser->create(); - $courseRepo = new CourseRepo(); - $course = $courseRepo->findById($course['id']); - - $course->user_count += 1; - - $course->update(); - - $groupRepo = new ImGroupRepo(); - - $group = $groupRepo->findByCourseId($course->id); - - $imUserRepo = new ImUserRepo(); - - $imUser = $imUserRepo->findById($order->owner_id); - - $groupUserRepo = new ImGroupUserRepo(); - - $groupUser = $groupUserRepo->findGroupUser($group->id, $order->owner_id); - - if (!$groupUser) { - - $groupUser = new ImGroupUserModel(); - - $groupUser->group_id = $group->id; - $groupUser->user_id = $order->owner_id; - $groupUser->create(); - - $imUser->group_count += 1; - $imUser->update(); - - $group->user_count += 1; - $group->update(); - } - } - - protected function handlePackageOrder(OrderModel $order) - { - $itemInfo = $order->item_info; - - foreach ($itemInfo['courses'] as $course) { - - $courseUser = new CourseUserModel(); - - $courseUser->user_id = $order->owner_id; - $courseUser->course_id = $course['id']; - $courseUser->expiry_time = $course['study_expiry_time']; - $courseUser->role_type = CourseUserModel::ROLE_STUDENT; - $courseUser->source_type = CourseUserModel::SOURCE_CHARGE; - - $courseUser->create(); - - $courseRepo = new CourseRepo(); - - $course = $courseRepo->findById($course['id']); - - $course->user_count += 1; - - $course->update(); - - $groupRepo = new ImGroupRepo(); - - $group = $groupRepo->findByCourseId($course->id); - - $imUserRepo = new ImUserRepo(); - - $imUser = $imUserRepo->findById($order->owner_id); - - $groupUserRepo = new ImGroupUserRepo(); - - $groupUser = $groupUserRepo->findGroupUser($group->id, $order->owner_id); - - if (!$groupUser) { - - $groupUser = new ImGroupUserModel(); - - $groupUser->group_id = $group->id; - $groupUser->user_id = $order->owner_id; - $groupUser->create(); - - $imUser->group_count += 1; - $imUser->update(); - - $group->user_count += 1; - $group->update(); - } - } - } - - protected function handleVipOrder(OrderModel $order) - { - $itemInfo = $order->item_info; + $course = $courseRepo->findById($order->item_id); $userRepo = new UserRepo(); $user = $userRepo->findById($order->owner_id); - $user->vip_expiry_time = $itemInfo['vip']['expiry_time']; + $service = new CourseDeliverService(); - $user->vip = 1; + $service->handle($course, $user); + } - $user->update(); + protected function handlePackageOrder(OrderModel $order) + { + $packageRepo = new PackageRepo(); + + $package = $packageRepo->findById($order->item_id); + + $userRepo = new UserRepo(); + + $user = $userRepo->findById($order->owner_id); + + $service = new PackageDeliverService(); + + $service->handle($package, $user); + } + + protected function handleVipOrder(OrderModel $order) + { + $vipRepo = new VipRepo(); + + $vip = $vipRepo->findById($order->item_id); + + $userRepo = new UserRepo(); + + $user = $userRepo->findById($order->owner_id); + + $service = new VipDeliverService(); + + $service->handle($vip, $user); } protected function handleOrderConsumePoint(OrderModel $order) @@ -311,7 +217,7 @@ class DeliverTask extends Task { $itemType = TaskModel::TYPE_DELIVER; $status = TaskModel::STATUS_PENDING; - $createTime = strtotime('-1 days'); + $createTime = strtotime('-7 days'); return TaskModel::query() ->where('item_type = :item_type:', ['item_type' => $itemType]) diff --git a/app/Console/Tasks/NoticeTask.php b/app/Console/Tasks/NoticeTask.php index 1f8eac73..d8ec1d8b 100644 --- a/app/Console/Tasks/NoticeTask.php +++ b/app/Console/Tasks/NoticeTask.php @@ -26,8 +26,6 @@ class NoticeTask extends Task public function mainAction() { - $logger = $this->getLogger('notice'); - $tasks = $this->findTasks(300); if ($tasks->count() == 0) return; @@ -55,16 +53,16 @@ class NoticeTask extends Task case TaskModel::TYPE_NOTICE_POINT_GOODS_DELIVER: $this->handlePointGoodsDeliverNotice($task); break; - case TaskModel::TYPE_NOTICE_CONSULT_CREATE: + case TaskModel::TYPE_STAFF_NOTICE_CONSULT_CREATE: $this->handleConsultCreateNotice($task); break; - case TaskModel::TYPE_NOTICE_TEACHER_LIVE: + case TaskModel::TYPE_STAFF_NOTICE_TEACHER_LIVE: $this->handleTeacherLiveNotice($task); break; - case TaskModel::TYPE_NOTICE_SERVER_MONITOR: + case TaskModel::TYPE_STAFF_NOTICE_SERVER_MONITOR: $this->handleServerMonitorNotice($task); break; - case TaskModel::TYPE_NOTICE_CUSTOM_SERVICE: + case TaskModel::TYPE_STAFF_NOTICE_CUSTOM_SERVICE: $this->handleCustomServiceNotice($task); break; } @@ -84,6 +82,8 @@ class NoticeTask extends Task $task->update(); + $logger = $this->getLogger('notice'); + $logger->error('Notice Process Exception ' . kg_json_encode([ 'file' => $e->getFile(), 'line' => $e->getLine(), @@ -178,10 +178,10 @@ class NoticeTask extends Task TaskModel::TYPE_NOTICE_CONSULT_REPLY, TaskModel::TYPE_NOTICE_POINT_GOODS_DELIVER, TaskModel::TYPE_NOTICE_LUCKY_GOODS_DELIVER, - TaskModel::TYPE_NOTICE_CONSULT_CREATE, - TaskModel::TYPE_NOTICE_TEACHER_LIVE, - TaskModel::TYPE_NOTICE_SERVER_MONITOR, - TaskModel::TYPE_NOTICE_CUSTOM_SERVICE, + TaskModel::TYPE_STAFF_NOTICE_CONSULT_CREATE, + TaskModel::TYPE_STAFF_NOTICE_TEACHER_LIVE, + TaskModel::TYPE_STAFF_NOTICE_SERVER_MONITOR, + TaskModel::TYPE_STAFF_NOTICE_CUSTOM_SERVICE, ]; $status = TaskModel::STATUS_PENDING; diff --git a/app/Console/Tasks/PointGiftDeliverTask.php b/app/Console/Tasks/PointGiftDeliverTask.php index 946945a2..8edc51d7 100644 --- a/app/Console/Tasks/PointGiftDeliverTask.php +++ b/app/Console/Tasks/PointGiftDeliverTask.php @@ -10,15 +10,15 @@ namespace App\Console\Tasks; use App\Models\CourseUser as CourseUserModel; use App\Models\ImGroupUser as ImGroupUserModel; use App\Models\PointGift as PointGiftModel; -use App\Models\PointRedeem as PointRedeemModel; +use App\Models\PointGiftRedeem as PointGiftRedeemModel; use App\Models\Task as TaskModel; use App\Repos\Course as CourseRepo; use App\Repos\CourseUser as CourseUserRepo; use App\Repos\ImGroup as ImGroupRepo; use App\Repos\ImGroupUser as ImGroupUserRepo; use App\Repos\PointGift as PointGiftRepo; -use App\Repos\PointRedeem as PointRedeemRepo; -use App\Services\Logic\Notice\DingTalk\PointRedeem as PointRedeemNotice; +use App\Repos\PointGiftRedeem as PointGiftRedeemRepo; +use App\Services\Logic\Notice\DingTalk\PointGiftRedeem as PointGiftRedeemNotice; use App\Services\Logic\Point\History\PointRefund as PointRefundPointHistory; use Phalcon\Mvc\Model\Resultset; use Phalcon\Mvc\Model\ResultsetInterface; @@ -38,13 +38,11 @@ class PointGiftDeliverTask extends Task echo '------ start deliver task ------' . PHP_EOL; - $redeemRepo = new PointRedeemRepo(); + $redeemRepo = new PointGiftRedeemRepo(); foreach ($tasks as $task) { - $redeemId = $task->item_info['point_redeem']['id'] ?? 0; - - $redeem = $redeemRepo->findById($redeemId); + $redeem = $redeemRepo->findById($task->item_id); if (!$redeem) { $task->status = TaskModel::STATUS_FAILED; @@ -102,7 +100,7 @@ class PointGiftDeliverTask extends Task echo '------ end deliver task ------' . PHP_EOL; } - protected function handleCourseRedeem(PointRedeemModel $redeem) + protected function handleCourseRedeem(PointGiftRedeemModel $redeem) { $giftRepo = new PointGiftRepo(); @@ -163,21 +161,21 @@ class PointGiftDeliverTask extends Task } } - $redeem->status = PointRedeemModel::STATUS_FINISHED; + $redeem->status = PointGiftRedeemModel::STATUS_FINISHED; if ($redeem->update() === false) { throw new \RuntimeException('Update Redeem Status Failed'); } } - protected function handleGoodsRedeem(PointRedeemModel $redeem) + protected function handleGoodsRedeem(PointGiftRedeemModel $redeem) { - $notice = new PointRedeemNotice(); + $notice = new PointGiftRedeemNotice(); $notice->createTask($redeem); } - protected function handlePointRefund(PointRedeemModel $redeem) + protected function handlePointRefund(PointGiftRedeemModel $redeem) { $service = new PointRefundPointHistory(); diff --git a/app/Console/Tasks/RefundTask.php b/app/Console/Tasks/RefundTask.php index 53386a5a..34fdd257 100644 --- a/app/Console/Tasks/RefundTask.php +++ b/app/Console/Tasks/RefundTask.php @@ -29,8 +29,6 @@ class RefundTask extends Task public function mainAction() { - $logger = $this->getLogger('refund'); - $tasks = $this->findTasks(30); echo sprintf('pending tasks: %s', $tasks->count()) . PHP_EOL; @@ -45,14 +43,12 @@ class RefundTask extends Task foreach ($tasks as $task) { - $itemInfo = $task->item_info; - - $refund = $refundRepo->findById($itemInfo['refund']['id']); + $refund = $refundRepo->findById($task->item_id); $trade = $tradeRepo->findById($refund->trade_id); $order = $orderRepo->findById($refund->order_id); - if (!$refund || !$trade || !$order) { - $task->status = TaskModel::STATUS_FAILED; + if ($refund->status != RefundModel::STATUS_APPROVED) { + $task->status = TaskModel::STATUS_CANCELED; $task->update(); continue; } @@ -62,32 +58,19 @@ class RefundTask extends Task $this->db->begin(); $this->handleTradeRefund($trade, $refund); - $this->handleOrderRefund($order); $refund->status = RefundModel::STATUS_FINISHED; - - if ($refund->update() === false) { - throw new \RuntimeException('Update Refund Status Failed'); - } + $refund->update(); $trade->status = TradeModel::STATUS_REFUNDED; - - if ($trade->update() === false) { - throw new \RuntimeException('Update Trade Status Failed'); - } + $trade->update(); $order->status = OrderModel::STATUS_REFUNDED; - - if ($order->update() === false) { - throw new \RuntimeException('Update Order Status Failed'); - } + $order->update(); $task->status = TaskModel::STATUS_FINISHED; - - if ($task->update() === false) { - throw new \RuntimeException('Update Task Status Failed'); - } + $task->update(); $this->db->commit(); @@ -106,7 +89,9 @@ class RefundTask extends Task $task->update(); - $logger->info('Refund Task Exception ' . kg_json_encode([ + $logger = $this->getLogger('refund'); + + $logger->error('Refund Task Exception ' . kg_json_encode([ 'file' => $e->getFile(), 'line' => $e->getLine(), 'message' => $e->getMessage(), diff --git a/app/Http/Admin/Controllers/ImGroupController.php b/app/Http/Admin/Controllers/ImGroupController.php index f95bf21b..e22e0086 100644 --- a/app/Http/Admin/Controllers/ImGroupController.php +++ b/app/Http/Admin/Controllers/ImGroupController.php @@ -25,8 +25,6 @@ class ImGroupController extends Controller $group = $service->getGroup($id); $pager = $service->getGroupUsers($id); - $this->view->pick('im/group/users'); - $this->view->setVar('group', $group); $this->view->setVar('pager', $pager); } @@ -40,8 +38,6 @@ class ImGroupController extends Controller $pager = $groupService->getGroups(); - $this->view->pick('im/group/list'); - $this->view->setVar('pager', $pager); } @@ -54,8 +50,6 @@ class ImGroupController extends Controller $types = $groupService->getGroupTypes(); - $this->view->pick('im/group/search'); - $this->view->setVar('types', $types); } @@ -64,7 +58,7 @@ class ImGroupController extends Controller */ public function addAction() { - $this->view->pick('im/group/add'); + } /** @@ -76,8 +70,6 @@ class ImGroupController extends Controller $group = $groupService->getGroup($id); - $this->view->pick('im/group/edit'); - $this->view->setVar('group', $group); } diff --git a/app/Http/Admin/Controllers/PointGiftController.php b/app/Http/Admin/Controllers/PointGiftController.php index 245eaa6b..433308a5 100644 --- a/app/Http/Admin/Controllers/PointGiftController.php +++ b/app/Http/Admin/Controllers/PointGiftController.php @@ -24,8 +24,6 @@ class PointGiftController extends Controller $pager = $service->getPointGifts(); - $this->view->pick('point/gift/list'); - $this->view->setVar('pager', $pager); } @@ -38,8 +36,6 @@ class PointGiftController extends Controller $types = $service->getTypes(); - $this->view->pick('point/gift/search'); - $this->view->setVar('types', $types); } @@ -53,8 +49,6 @@ class PointGiftController extends Controller $xmCourses = $service->getXmCourses(); $types = $service->getTypes(); - $this->view->pick('point/gift/add'); - $this->view->setVar('xm_courses', $xmCourses); $this->view->setVar('types', $types); } @@ -68,8 +62,6 @@ class PointGiftController extends Controller $gift = $service->getPointGift($id); - $this->view->pick('point/gift/edit'); - $this->view->setVar('gift', $gift); } diff --git a/app/Http/Admin/Controllers/PointRedeemController.php b/app/Http/Admin/Controllers/PointGiftRedeemController.php similarity index 53% rename from app/Http/Admin/Controllers/PointRedeemController.php rename to app/Http/Admin/Controllers/PointGiftRedeemController.php index f821fc34..38fe5b5d 100644 --- a/app/Http/Admin/Controllers/PointRedeemController.php +++ b/app/Http/Admin/Controllers/PointGiftRedeemController.php @@ -7,42 +7,40 @@ namespace App\Http\Admin\Controllers; -use App\Http\Admin\Services\PointRedeem as PointRedeemService; +use App\Http\Admin\Services\PointGiftRedeem as PointGiftRedeemService; /** - * @RoutePrefix("/admin/point/redeem") + * @RoutePrefix("/admin/point/gift/redeem") */ -class PointRedeemController extends Controller +class PointGiftRedeemController extends Controller { /** - * @Get("/search", name="admin.point_redeem.search") + * @Get("/search", name="admin.point_gift_redeem.search") */ public function searchAction() { - $this->view->pick('point/redeem/search'); + } /** - * @Get("/list", name="admin.point_redeem.list") + * @Get("/list", name="admin.point_gift_redeem.list") */ public function listAction() { - $redeemService = new PointRedeemService(); + $redeemService = new PointGiftRedeemService(); $pager = $redeemService->getRedeems(); - $this->view->pick('point/redeem/list'); - $this->view->setVar('pager', $pager); } /** - * @Post("/{id:[0-9]+}/deliver", name="admin.point_redeem.deliver") + * @Post("/{id:[0-9]+}/deliver", name="admin.point_gift_redeem.deliver") */ public function deliverAction($id) { - $redeemService = new PointRedeemService(); + $redeemService = new PointGiftRedeemService(); $redeemService->deliver($id); diff --git a/app/Http/Admin/Controllers/PointHistoryController.php b/app/Http/Admin/Controllers/PointHistoryController.php index 73bc2ef0..c8b8d3f6 100644 --- a/app/Http/Admin/Controllers/PointHistoryController.php +++ b/app/Http/Admin/Controllers/PointHistoryController.php @@ -24,7 +24,6 @@ class PointHistoryController extends Controller $eventTypes = $historyService->getEventTypes(); - $this->view->pick('point/history/search'); $this->view->setVar('event_types', $eventTypes); } @@ -37,8 +36,6 @@ class PointHistoryController extends Controller $pager = $historyService->getHistories(); - $this->view->pick('point/history/list'); - $this->view->setVar('pager', $pager); } diff --git a/app/Http/Admin/Services/AuthNode.php b/app/Http/Admin/Services/AuthNode.php index 032657a4..274c3b5f 100644 --- a/app/Http/Admin/Services/AuthNode.php +++ b/app/Http/Admin/Services/AuthNode.php @@ -871,7 +871,7 @@ class AuthNode extends Service 'id' => '2-20-2', 'title' => '兑换记录', 'type' => 'button', - 'route' => 'admin.point_redeem.list', + 'route' => 'admin.point_gift_redeem.list', ], [ 'id' => '2-20-3', diff --git a/app/Http/Admin/Services/Chapter.php b/app/Http/Admin/Services/Chapter.php index 8536b080..8af518a0 100644 --- a/app/Http/Admin/Services/Chapter.php +++ b/app/Http/Admin/Services/Chapter.php @@ -11,10 +11,6 @@ use App\Builders\ResourceList as ResourceListBuilder; use App\Caches\Chapter as ChapterCache; use App\Caches\CourseChapterList as CatalogCache; use App\Models\Chapter as ChapterModel; -use App\Models\ChapterLive as ChapterLiveModel; -use App\Models\ChapterOffline as ChapterOfflineModel; -use App\Models\ChapterRead as ChapterReadModel; -use App\Models\ChapterVod as ChapterVodModel; use App\Models\Course as CourseModel; use App\Repos\Chapter as ChapterRepo; use App\Repos\Course as CourseRepo; @@ -75,17 +71,14 @@ class Chapter extends Service $chapterRepo = new ChapterRepo(); - $parentId = 0; - if (isset($post['parent_id'])) { $parent = $validator->checkParent($post['parent_id']); $data['parent_id'] = $parent->id; $data['free'] = $validator->checkFreeStatus($post['free']); $data['priority'] = $chapterRepo->maxLessonPriority($post['parent_id']); - $parentId = $parent->id; } else { $data['priority'] = $chapterRepo->maxChapterPriority($post['course_id']); - $data['parent_id'] = $parentId; + $data['parent_id'] = 0; } $data['priority'] += 1; @@ -100,39 +93,6 @@ class Chapter extends Service throw new \RuntimeException('Create Chapter Failed'); } - $data = [ - 'course_id' => $course->id, - 'chapter_id' => $chapter->id, - ]; - - if ($parentId > 0) { - - $attrs = false; - - switch ($course->model) { - case CourseMOdel::MODEL_VOD: - $chapterVod = new ChapterVodModel(); - $attrs = $chapterVod->create($data); - break; - case CourseModel::MODEL_LIVE: - $chapterLive = new ChapterLiveModel(); - $attrs = $chapterLive->create($data); - break; - case CourseModel::MODEL_READ: - $chapterRead = new ChapterReadModel(); - $attrs = $chapterRead->create($data); - break; - case CourseModel::MODEL_OFFLINE: - $chapterOffline = new ChapterOfflineModel(); - $attrs = $chapterOffline->create($data); - break; - } - - if ($attrs === false) { - throw new \RuntimeException("Create Chapter Related Attrs Failed"); - } - } - $this->db->commit(); $this->updateChapterStats($chapter); diff --git a/app/Http/Admin/Services/Course.php b/app/Http/Admin/Services/Course.php index 0cbf5d44..0c5d3298 100644 --- a/app/Http/Admin/Services/Course.php +++ b/app/Http/Admin/Services/Course.php @@ -16,10 +16,8 @@ use App\Library\Paginator\Query as PagerQuery; use App\Models\Category as CategoryModel; use App\Models\Course as CourseModel; use App\Models\CourseCategory as CourseCategoryModel; -use App\Models\CourseRating as CourseRatingModel; use App\Models\CourseRelated as CourseRelatedModel; use App\Models\CourseUser as CourseUserModel; -use App\Models\ImGroup as ImGroupModel; use App\Models\ImGroupUser as ImGroupUserModel; use App\Repos\Category as CategoryRepo; use App\Repos\Chapter as ChapterRepo; @@ -90,25 +88,6 @@ class Course extends Service throw new \RuntimeException('Create Course Failed'); } - $courseRating = new CourseRatingModel(); - - $courseRating->course_id = $course->id; - - if ($courseRating->create() === false) { - throw new \RuntimeException('Create CourseRating Failed'); - } - - $imGroup = new ImGroupModel(); - - $imGroup->type = ImGroupModel::TYPE_COURSE; - $imGroup->course_id = $course->id; - $imGroup->name = $course->title; - $imGroup->about = $course->summary; - - if ($imGroup->create() === false) { - throw new \RuntimeException('Create ImGroup Failed'); - } - $this->db->commit(); return $course; diff --git a/app/Http/Admin/Services/PointRedeem.php b/app/Http/Admin/Services/PointGiftRedeem.php similarity index 73% rename from app/Http/Admin/Services/PointRedeem.php rename to app/Http/Admin/Services/PointGiftRedeem.php index 992271b4..da0705f4 100644 --- a/app/Http/Admin/Services/PointRedeem.php +++ b/app/Http/Admin/Services/PointGiftRedeem.php @@ -9,12 +9,12 @@ namespace App\Http\Admin\Services; use App\Library\Paginator\Query as PagerQuery; use App\Models\PointGift as PointGiftModel; -use App\Models\PointRedeem as PointRedeemModel; -use App\Repos\PointRedeem as PointRedeemRepo; +use App\Models\PointGiftRedeem as PointGiftRedeemModel; +use App\Repos\PointGiftRedeem as PointGiftRedeemRepo; use App\Services\Logic\Notice\PointGoodsDeliver as PointGoodsDeliverNotice; -use App\Validators\PointRedeem as PointRedeemValidator; +use App\Validators\PointGiftRedeem as PointGiftRedeemValidator; -class PointRedeem extends Service +class PointGiftRedeem extends Service { public function getRedeems() @@ -27,7 +27,7 @@ class PointRedeem extends Service $page = $pagerQuery->getPage(); $limit = $pagerQuery->getLimit(); - $redeemRepo = new PointRedeemRepo(); + $redeemRepo = new PointGiftRedeemRepo(); return $redeemRepo->paginate($params, $sort, $page, $limit); } @@ -45,7 +45,7 @@ class PointRedeem extends Service return $redeem; } - $redeem->status = PointRedeemModel::STATUS_FINISHED; + $redeem->status = PointGiftRedeemModel::STATUS_FINISHED; $redeem->update(); @@ -54,7 +54,7 @@ class PointRedeem extends Service return $redeem; } - protected function handleGoodsDeliverNotice(PointRedeemModel $redeem) + protected function handleGoodsDeliverNotice(PointGiftRedeemModel $redeem) { $notice = new PointGoodsDeliverNotice(); @@ -63,7 +63,7 @@ class PointRedeem extends Service protected function findOrFail($id) { - $validator = new PointRedeemValidator(); + $validator = new PointGiftRedeemValidator(); return $validator->checkRedeem($id); } diff --git a/app/Http/Admin/Services/User.php b/app/Http/Admin/Services/User.php index fdc20f23..8ed17c4e 100644 --- a/app/Http/Admin/Services/User.php +++ b/app/Http/Admin/Services/User.php @@ -12,7 +12,6 @@ use App\Caches\User as UserCache; use App\Library\Paginator\Query as PaginateQuery; use App\Library\Utils\Password as PasswordUtil; use App\Models\Account as AccountModel; -use App\Models\ImUser as ImUserModel; use App\Models\User as UserModel; use App\Repos\Account as AccountRepo; use App\Repos\Online as OnlineRepo; @@ -118,24 +117,13 @@ class User extends Service throw new \RuntimeException('Create Account Failed'); } - $user = new UserModel(); + $user = $this->findOrFail($account->id); - $user->id = $account->id; - $user->name = "user_{$account->id}"; - $user->edu_role = $eduRole; $user->admin_role = $adminRole; + $user->edu_role = $eduRole; - if ($user->create() === false) { - throw new \RuntimeException('Create User Failed'); - } - - $imUser = new ImUserModel(); - - $imUser->id = $user->id; - $imUser->name = $user->name; - - if ($imUser->create() === false) { - throw new \RuntimeException('Create Im User Failed'); + if ($user->update() === false) { + throw new \RuntimeException('Update User Failed'); } $this->db->commit(); @@ -148,6 +136,14 @@ class User extends Service $this->db->rollback(); + $logger = $this->getLogger('http'); + + $logger->error('Create User Error ' . kg_json_encode([ + 'file' => $e->getFile(), + 'line' => $e->getLine(), + 'message' => $e->getMessage(), + ])); + throw new \RuntimeException('sys.trans_rollback'); } } diff --git a/app/Http/Admin/Views/course/list.volt b/app/Http/Admin/Views/course/list.volt index 6be67842..0b17998e 100644 --- a/app/Http/Admin/Views/course/list.volt +++ b/app/Http/Admin/Views/course/list.volt @@ -77,10 +77,10 @@ {% if item.teacher.id is defined %} 讲师:{{ item.teacher.name }} {% endif %} - 难度:{{ level_info(item.level) }} + 难度:{{ level_type(item.level) }}
diff --git a/app/Http/Admin/Views/im/group/add.volt b/app/Http/Admin/Views/im_group/add.volt similarity index 100% rename from app/Http/Admin/Views/im/group/add.volt rename to app/Http/Admin/Views/im_group/add.volt diff --git a/app/Http/Admin/Views/im/group/edit.volt b/app/Http/Admin/Views/im_group/edit.volt similarity index 100% rename from app/Http/Admin/Views/im/group/edit.volt rename to app/Http/Admin/Views/im_group/edit.volt diff --git a/app/Http/Admin/Views/im/group/list.volt b/app/Http/Admin/Views/im_group/list.volt similarity index 100% rename from app/Http/Admin/Views/im/group/list.volt rename to app/Http/Admin/Views/im_group/list.volt diff --git a/app/Http/Admin/Views/im/group/search.volt b/app/Http/Admin/Views/im_group/search.volt similarity index 100% rename from app/Http/Admin/Views/im/group/search.volt rename to app/Http/Admin/Views/im_group/search.volt diff --git a/app/Http/Admin/Views/im/group/users.volt b/app/Http/Admin/Views/im_group/users.volt similarity index 100% rename from app/Http/Admin/Views/im/group/users.volt rename to app/Http/Admin/Views/im_group/users.volt diff --git a/app/Http/Admin/Views/macros/course.volt b/app/Http/Admin/Views/macros/course.volt index 2f7de032..bb716a69 100644 --- a/app/Http/Admin/Views/macros/course.volt +++ b/app/Http/Admin/Views/macros/course.volt @@ -1,4 +1,4 @@ -{%- macro model_info(value) %} +{%- macro model_type(value) %} {% if value == 1 %} 点播 {% elseif value == 2 %} @@ -12,7 +12,7 @@ {% endif %} {%- endmacro %} -{%- macro level_info(value) %} +{%- macro level_type(value) %} {% if value == 1 %} 入门 {% elseif value == 2 %} diff --git a/app/Http/Admin/Views/macros/point_gift.volt b/app/Http/Admin/Views/macros/point_gift.volt new file mode 100644 index 00000000..3b9216ec --- /dev/null +++ b/app/Http/Admin/Views/macros/point_gift.volt @@ -0,0 +1,19 @@ +{%- macro gift_type_info(value) %} + {% if value == 1 %} + 课程 + {% elseif value == 2 %} + 商品 + {% elseif value == 3 %} + 现金 + {% endif %} +{%- endmacro %} + +{%- macro redeem_status_info(value) %} + {% if value == 1 %} + 处理中 + {% elseif value == 2 %} + 已完成 + {% elseif value == 3 %} + 已失败 + {% endif %} +{%- endmacro %} \ No newline at end of file diff --git a/app/Http/Admin/Views/macros/point.volt b/app/Http/Admin/Views/macros/point_history.volt similarity index 72% rename from app/Http/Admin/Views/macros/point.volt rename to app/Http/Admin/Views/macros/point_history.volt index 85bcbc60..0fab2e19 100644 --- a/app/Http/Admin/Views/macros/point.volt +++ b/app/Http/Admin/Views/macros/point_history.volt @@ -1,23 +1,3 @@ -{%- 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_point_info(value) %} {% if value > 0 %} +{{ value }} @@ -51,9 +31,9 @@ {% if history.event_type == 1 %}{{ event_info.order.subject }}
{% elseif history.event_type == 2 %} -{{ event_info.point_redeem.gift_name }}
+{{ event_info.point_gift_redeem.gift_name }}
{% elseif history.event_type == 3 %} - {{ event_info.point_redeem.gift_name }} + {{ event_info.point_gift_redeem.gift_name }} {% elseif history.event_type == 4 %} N/A {% elseif history.event_type == 5 %} diff --git a/app/Http/Admin/Views/point/gift/add.volt b/app/Http/Admin/Views/point_gift/add.volt similarity index 100% rename from app/Http/Admin/Views/point/gift/add.volt rename to app/Http/Admin/Views/point_gift/add.volt diff --git a/app/Http/Admin/Views/point/gift/edit.volt b/app/Http/Admin/Views/point_gift/edit.volt similarity index 85% rename from app/Http/Admin/Views/point/gift/edit.volt rename to app/Http/Admin/Views/point_gift/edit.volt index 8808fb96..8c1d654f 100644 --- a/app/Http/Admin/Views/point/gift/edit.volt +++ b/app/Http/Admin/Views/point_gift/edit.volt @@ -5,9 +5,9 @@ {% set update_url = url({'for':'admin.point_gift.update','id':gift.id}) %} {% if gift.type == 1 %} - {{ partial('point/gift/edit_course') }} + {{ partial('point_gift/edit_course') }} {% elseif gift.type == 2 %} - {{ partial('point/gift/edit_goods') }} + {{ partial('point_gift/edit_goods') }} {% endif %} {% endblock %} diff --git a/app/Http/Admin/Views/point/gift/edit_course.volt b/app/Http/Admin/Views/point_gift/edit_course.volt similarity index 100% rename from app/Http/Admin/Views/point/gift/edit_course.volt rename to app/Http/Admin/Views/point_gift/edit_course.volt diff --git a/app/Http/Admin/Views/point/gift/edit_goods.volt b/app/Http/Admin/Views/point_gift/edit_goods.volt similarity index 100% rename from app/Http/Admin/Views/point/gift/edit_goods.volt rename to app/Http/Admin/Views/point_gift/edit_goods.volt diff --git a/app/Http/Admin/Views/point/gift/list.volt b/app/Http/Admin/Views/point_gift/list.volt similarity index 90% rename from app/Http/Admin/Views/point/gift/list.volt rename to app/Http/Admin/Views/point_gift/list.volt index 6498db51..c8224b80 100644 --- a/app/Http/Admin/Views/point/gift/list.volt +++ b/app/Http/Admin/Views/point_gift/list.volt @@ -2,8 +2,9 @@ {% block content %} - {{ partial('macros/point') }} + {{ partial('macros/point_gift') }} + {% set redeem_url = url({'for':'admin.point_gift_redeem.list'}) %} {% set add_url = url({'for':'admin.point_gift.add'}) %} {% set search_url = url({'for':'admin.point_gift.search'}) %} @@ -14,6 +15,9 @@难度级别 - {{ level_info(course.level) }} + {{ level_type(course.level) }} 学习人次 {{ course.user_count }} 综合评分 @@ -95,6 +95,7 @@