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/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/PointGiftAwardTask.php b/app/Console/Tasks/PointGiftAwardTask.php deleted file mode 100644 index 72eec301..00000000 --- a/app/Console/Tasks/PointGiftAwardTask.php +++ /dev/null @@ -1,213 +0,0 @@ -getLogger('point'); - - $tasks = $this->findTasks(); - - if ($tasks->count() == 0) { - return; - } - - $redeemRepo = new PointRedeemRepo(); - - foreach ($tasks as $task) { - - $redeem = $redeemRepo->findById($task->item_id); - - if (!$redeem) continue; - - try { - - switch ($redeem->gift_type) { - case PointGiftModel::TYPE_COURSE: - $this->handleCourseAward($redeem); - break; - case PointGiftModel::TYPE_GOODS: - $this->handleCommodityAward($redeem); - break; - } - - $this->finishRedeem($redeem); - - $task->status = TaskModel::STATUS_FINISHED; - - $task->update(); - - } catch (\Exception $e) { - - $task->try_count += 1; - $task->priority += 1; - - if ($task->try_count > self::TRY_COUNT) { - $task->status = TaskModel::STATUS_FAILED; - } - - $task->update(); - - $logger->info('Point Gift Award Exception ' . kg_json_encode([ - 'code' => $e->getCode(), - 'message' => $e->getMessage(), - ])); - } - - if ($task->status == TaskModel::STATUS_FINISHED) { - $this->handleFinishNotice(); - } elseif ($task->status == TaskModel::STATUS_FAILED) { - $this->handlePointRefund($redeem); - } - } - } - - protected function finishRedeem(PointRedeemModel $redeem) - { - $redeem->status = PointRedeemModel::STATUS_FINISHED; - - if ($redeem->update() === false) { - throw new \RuntimeException('Finish Point Redeem Failed'); - } - } - - protected function handleCourseAward(PointRedeemModel $redeem) - { - $giftRepo = new PointGiftRepo(); - - $gift = $giftRepo->findById($redeem->gift_id); - - $courseUser = new CourseUserModel(); - - $courseUser->user_id = $redeem->user_id; - $courseUser->course_id = $gift->attrs['id']; - $courseUser->expiry_time = $gift->attrs['study_expiry_time']; - $courseUser->role_type = CourseUserModel::ROLE_STUDENT; - $courseUser->source_type = CourseUserModel::SOURCE_POINT_REDEEM; - - if ($courseUser->create() === false) { - throw new \RuntimeException('Create Course User Failed'); - } - - $courseRepo = new CourseRepo(); - - $group = $courseRepo->findImGroup($gift->attrs['id']); - - $groupUserRepo = new ImGroupUserRepo(); - - $groupUser = $groupUserRepo->findGroupUser($group->id, $redeem->user_id); - - if ($groupUser) return; - - $groupUser = new ImGroupUserModel(); - - $groupUser->group_id = $group->id; - $groupUser->user_id = $redeem->user_id; - - if ($groupUser->create() === false) { - throw new \RuntimeException('Create Im Group User Failed'); - } - } - - protected function handleCommodityAward(PointRedeemModel $redeem) - { - - } - - protected function handleFinishNotice() - { - - } - - protected function handlePointRefund(PointRedeemModel $redeem) - { - $logger = $this->getLogger('point'); - - $userRepo = new UserRepo(); - - $balance = $userRepo->findUserBalance($redeem->user_id); - - try { - - $this->db->begin(); - - $history = new PointHistoryModel(); - - $eventInfo = [ - 'gift' => [ - 'id' => $redeem->gift_id, - 'name' => $redeem->gift_name, - ] - ]; - - $history->user_id = $redeem->user_id; - $history->event_id = $redeem->id; - $history->event_type = PointHistoryModel::EVENT_POINT_REFUND; - $history->event_info = $eventInfo; - - $result = $history->create(); - - if ($result === false) { - throw new \RuntimeException('Create Point History Failed'); - } - - $balance->point += $redeem->gift_point; - - $result = $balance->update(); - - if ($result === false) { - throw new \RuntimeException('Update User Balance Failed'); - } - - $this->db->commit(); - - } catch (\Exception $e) { - - $this->db->rollback(); - - $logger->error('Point Refund Exception ' . kg_json_encode([ - 'code' => $e->getCode(), - 'message' => $e->getMessage(), - ])); - } - } - - /** - * @param int $limit - * @return ResultsetInterface|Resultset|TaskModel[] - */ - protected function findTasks($limit = 30) - { - $itemType = TaskModel::TYPE_POINT_GIFT_AWARD; - $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/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..4abc568e 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,6 +48,8 @@ class RefundTask extends Task $order = $orderRepo->findById($itemInfo['refund']['order_id']); if (!$refund || !$trade || !$order) { + $task->status = TaskModel::STATUS_FAILED; + $task->update(); continue; } @@ -111,7 +110,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 +148,7 @@ class RefundTask extends Task } if (!$response) { - throw new \RuntimeException('Pay Refund Failed'); + throw new \RuntimeException('Trade Refund Failed'); } } @@ -208,9 +208,6 @@ class RefundTask extends Task { $courseUserRepo = new CourseUserRepo(); - /** - * @var array $itemInfo - */ $itemInfo = $order->item_info; foreach ($itemInfo['courses'] as $course) { @@ -239,9 +236,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 98284dfd..2ba7a0e8 100644 --- a/app/Console/Tasks/SyncLearningTask.php +++ b/app/Console/Tasks/SyncLearningTask.php @@ -125,7 +125,7 @@ class SyncLearningTask extends Task $this->updateCourseUser($learning); - $this->handleLearningPoint($chapterUser); + $this->handleStudyPoint($chapterUser); } } @@ -182,11 +182,11 @@ class SyncLearningTask extends Task /** * @param ChapterUserModel $chapterUser */ - protected function handleLearningPoint(ChapterUserModel $chapterUser) + protected function handleStudyPoint(ChapterUserModel $chapterUser) { $service = new PointHistoryService(); - $service->handleChapterLearning($chapterUser); + $service->handleChapterStudy($chapterUser); } } diff --git a/app/Http/Admin/Controllers/PointRedeemController.php b/app/Http/Admin/Controllers/PointRedeemController.php index 2457c5de..707403d3 100644 --- a/app/Http/Admin/Controllers/PointRedeemController.php +++ b/app/Http/Admin/Controllers/PointRedeemController.php @@ -2,7 +2,7 @@ namespace App\Http\Admin\Controllers; -use App\Http\Admin\Services\PointGift as PointGiftService; +use App\Http\Admin\Services\PointRedeem as PointRedeemService; /** * @RoutePrefix("/admin/point/redeem") @@ -10,14 +10,22 @@ use App\Http\Admin\Services\PointGift as PointGiftService; class PointRedeemController extends Controller { + /** + * @Get("/search", name="admin.point_redeem.search") + */ + public function searchAction() + { + $this->view->pick('point/redeem/search'); + } + /** * @Get("/list", name="admin.point_redeem.list") */ public function listAction() { - $groupService = new PointGiftService(); + $redeemService = new PointRedeemService(); - $pager = $groupService->getGroups(); + $pager = $redeemService->getRedeems(); $this->view->pick('point/redeem/list'); @@ -25,36 +33,15 @@ class PointRedeemController extends Controller } /** - * @Get("/{id:[0-9]+}/edit", name="admin.point_redeem.edit") + * @Post("/{id:[0-9]+}/deliver", name="admin.point_redeem.deliver") */ - public function editAction($id) + public function deliverAction($id) { - $groupService = new PointGiftService(); + $redeemService = new PointRedeemService(); - $group = $groupService->getGroup($id); + $redeemService->deliver($id); - $this->view->pick('point/redeem/edit'); - - $this->view->setVar('group', $group); - } - - /** - * @Post("/{id:[0-9]+}/update", name="admin.point_redeem.update") - */ - public function updateAction($id) - { - $groupService = new PointGiftService(); - - $groupService->updateGroup($id); - - $location = $this->url->get(['for' => 'admin.point_redeem.list']); - - $content = [ - 'location' => $location, - 'msg' => '更新群组成功', - ]; - - return $this->jsonSuccess($content); + return $this->jsonSuccess(['msg' => '发货成功']); } } diff --git a/app/Http/Admin/Services/PointGift.php b/app/Http/Admin/Services/PointGift.php index 735dbc52..4a78efc0 100644 --- a/app/Http/Admin/Services/PointGift.php +++ b/app/Http/Admin/Services/PointGift.php @@ -84,6 +84,10 @@ class PointGift extends Service $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']); } 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/Session.php b/app/Http/Admin/Services/Session.php index ba18fda1..bd64ad6e 100644 --- a/app/Http/Admin/Services/Session.php +++ b/app/Http/Admin/Services/Session.php @@ -2,12 +2,9 @@ namespace App\Http\Admin\Services; -use App\Models\User as UserModel; use App\Services\Auth\Admin as AdminAuth; use App\Validators\Account as AccountValidator; use App\Validators\Captcha as CaptchaValidator; -use Phalcon\Di as Di; -use Phalcon\Events\Manager as EventsManager; class Session extends Service { @@ -50,7 +47,7 @@ class Session extends Service $this->auth->saveAuthInfo($user); - $this->fireAfterLoginEvent($user); + $this->eventsManager->fire('Account:afterLogin', $this, $user); } public function logout() @@ -59,27 +56,7 @@ class Session extends Service $this->auth->clearAuthInfo(); - $this->fireAfterLogoutEvent($user); - } - - protected function fireAfterLoginEvent(UserModel $user) - { - /** - * @var EventsManager $eventsManager - */ - $eventsManager = Di::getDefault()->getShared('eventsManager'); - - $eventsManager->fire('account:afterLogin', $this, $user); - } - - protected function fireAfterLogoutEvent(UserModel $user) - { - /** - * @var EventsManager $eventsManager - */ - $eventsManager = Di::getDefault()->getShared('eventsManager'); - - $eventsManager->fire('account:afterLogout', $this, $user); + $this->eventsManager->fire('Account:afterLogout', $this, $user); } } 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/edit.volt b/app/Http/Admin/Views/point/gift/edit.volt index d7aa4d3d..a2560c51 100644 --- a/app/Http/Admin/Views/point/gift/edit.volt +++ b/app/Http/Admin/Views/point/gift/edit.volt @@ -81,6 +81,12 @@ +编号 | -礼品名称 | +物品名称 | 所需积分 | 库存数量 | +兑换限额 | 兑换人次 | 发布 | 操作 | @@ -53,9 +52,10 @@ {% set restore_url = url({'for':'admin.point_gift.restore','id':item.id}) %}||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
{{ item.id }} | -{{ item.name }} {{ type_info(item.type) }} | +{{ item.name }} {{ gift_type_info(item.type) }} | {{ item.point }} | {{ item.stock }} | +{{ item.redeem_limit }} | {{ item.redeem_count }} |
diff --git a/app/Http/Admin/Views/point/redeem/list.volt b/app/Http/Admin/Views/point/redeem/list.volt
index 7934d5b4..c86b4b1b 100644
--- a/app/Http/Admin/Views/point/redeem/list.volt
+++ b/app/Http/Admin/Views/point/redeem/list.volt
@@ -2,79 +2,61 @@
{% block content %}
- {%- macro type_info(value) %}
- {% if value == 1 %}
- 课
- {% elseif value == 2 %}
- 聊
- {% elseif value == 3 %}
- 职
- {% else %}
- 未知
- {% endif %}
- {%- endmacro %}
+ {{ partial('macros/point') }}
- {%- macro owner_info(owner) %}
- {% if owner.id is defined %}
- {{ owner.name }}({{ owner.id }})
- {% else %}
- 未设置
- {% endif %}
- {%- endmacro %}
+ {% set search_url = url({'for':'admin.point_redeem.search'}) %}
+
+ 搜索兑换
+
+
|