diff --git a/app/Console/Tasks/CleanLogTask.php b/app/Console/Tasks/CleanLogTask.php index 581d6163..3db52cd5 100644 --- a/app/Console/Tasks/CleanLogTask.php +++ b/app/Console/Tasks/CleanLogTask.php @@ -15,7 +15,7 @@ class CleanLogTask extends Task $this->cleanSqlLog(); $this->cleanListenLog(); $this->cleanCaptchaLog(); - $this->cleanWechatLog(); + $this->cleanWeChatLog(); $this->cleanMailLog(); $this->cleanSmsLog(); $this->cleanVodLog(); @@ -166,7 +166,7 @@ class CleanLogTask extends Task /** * 清理微信服务日志 */ - protected function cleanWechatLog() + protected function cleanWeChatLog() { $type = 'wechat'; diff --git a/app/Console/Tasks/DeliverTask.php b/app/Console/Tasks/DeliverTask.php index 50ec1d07..f37a12d0 100644 --- a/app/Console/Tasks/DeliverTask.php +++ b/app/Console/Tasks/DeliverTask.php @@ -176,8 +176,6 @@ class DeliverTask extends Task if ($groupUser->create() === false) { throw new \RuntimeException('Create Group User Failed'); } - - continue; } } } diff --git a/app/Console/Tasks/NoticeTask.php b/app/Console/Tasks/NoticeTask.php index 8d3abe45..1f1d084c 100644 --- a/app/Console/Tasks/NoticeTask.php +++ b/app/Console/Tasks/NoticeTask.php @@ -3,14 +3,15 @@ namespace App\Console\Tasks; use App\Models\Task as TaskModel; -use App\Services\DingTalk\Notice\ConsultCreate as ConsultCreateNotice; -use App\Services\DingTalk\Notice\CustomService as CustomServiceNotice; -use App\Services\DingTalk\Notice\ServerMonitor as ServerMonitorNotice; -use App\Services\DingTalk\Notice\TeacherLive as TeacherLiveNotice; use App\Services\Logic\Notice\AccountLogin as AccountLoginNotice; use App\Services\Logic\Notice\ConsultReply as ConsultReplyNotice; +use App\Services\Logic\Notice\DingTalk\ConsultCreate as ConsultCreateNotice; +use App\Services\Logic\Notice\DingTalk\CustomService as CustomServiceNotice; +use App\Services\Logic\Notice\DingTalk\ServerMonitor as ServerMonitorNotice; +use App\Services\Logic\Notice\DingTalk\TeacherLive as TeacherLiveNotice; use App\Services\Logic\Notice\LiveBegin as LiveBeginNotice; use App\Services\Logic\Notice\OrderFinish as OrderFinishNotice; +use App\Services\Logic\Notice\PointGoodsDeliver as PointGoodsDeliverNotice; use App\Services\Logic\Notice\RefundFinish as RefundFinishNotice; use Phalcon\Mvc\Model\Resultset; use Phalcon\Mvc\Model\ResultsetInterface; @@ -24,9 +25,7 @@ class NoticeTask extends Task $tasks = $this->findTasks(300); - if ($tasks->count() == 0) { - return; - } + if ($tasks->count() == 0) return; foreach ($tasks as $task) { @@ -48,6 +47,9 @@ class NoticeTask extends Task case TaskModel::TYPE_NOTICE_CONSULT_REPLY: $this->handleConsultReplyNotice($task); break; + case TaskModel::TYPE_NOTICE_POINT_GOODS_DELIVER: + $this->handlePointGoodsDeliverNotice($task); + break; case TaskModel::TYPE_NOTICE_CONSULT_CREATE: $this->handleConsultCreateNotice($task); break; @@ -122,6 +124,13 @@ class NoticeTask extends Task $notice->handleTask($task); } + protected function handlePointGoodsDeliverNotice(TaskModel $task) + { + $notice = new PointGoodsDeliverNotice(); + + $notice->handleTask($task); + } + protected function handleConsultCreateNotice(TaskModel $task) { $notice = new ConsultCreateNotice(); @@ -162,6 +171,8 @@ class NoticeTask extends Task TaskModel::TYPE_NOTICE_ORDER_FINISH, TaskModel::TYPE_NOTICE_REFUND_FINISH, 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, diff --git a/app/Console/Tasks/OptimizeTableTask.php b/app/Console/Tasks/OptimizeTableTask.php index 7143c0b7..f690cb8a 100644 --- a/app/Console/Tasks/OptimizeTableTask.php +++ b/app/Console/Tasks/OptimizeTableTask.php @@ -5,17 +5,47 @@ namespace App\Console\Tasks; use App\Models\ImMessage as ImMessageModel; use App\Models\Learning as LearningModel; use App\Models\Task as TaskModel; +use App\Models\UserSession as UserSessionModel; +use App\Models\UserToken as UserTokenModel; class OptimizeTableTask extends Task { public function mainAction() { + $this->optimizeUserSessionTable(); + $this->optimizeUserTokenTable(); $this->optimizeImMessageTable(); $this->optimizeLearningTable(); $this->optimizeTaskTable(); } + protected function optimizeUserSessionTable() + { + $sessionModel = new UserSessionModel(); + + $tableName = $sessionModel->getSource(); + + $this->db->delete($tableName, "expire_time < :expire_time", [ + 'expire_time' => strtotime('-3 days'), + ]); + + $this->db->execute("OPTIMIZE TABLE {$tableName}"); + } + + protected function optimizeUserTokenTable() + { + $tokenModel = new UserTokenModel(); + + $tableName = $tokenModel->getSource(); + + $this->db->delete($tableName, "expire_time < :expire_time", [ + 'expire_time' => strtotime('-3 days'), + ]); + + $this->db->execute("OPTIMIZE TABLE {$tableName}"); + } + protected function optimizeImMessageTable() { $count = ImMessageModel::count(); diff --git a/app/Console/Tasks/PointGiftDeliverTask.php b/app/Console/Tasks/PointGiftDeliverTask.php index 1af243e7..0f0778ab 100644 --- a/app/Console/Tasks/PointGiftDeliverTask.php +++ b/app/Console/Tasks/PointGiftDeliverTask.php @@ -13,7 +13,7 @@ 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\DingTalk\Notice\PointRedeem as PointRedeemNotice; +use App\Services\Logic\Notice\DingTalk\PointRedeem as PointRedeemNotice; use App\Services\Logic\Point\PointHistory as PointHistoryService; use Phalcon\Mvc\Model\Resultset; use Phalcon\Mvc\Model\ResultsetInterface; @@ -181,11 +181,6 @@ class PointGiftDeliverTask extends Task $service->handlePointRefund($redeem); } - protected function handleRedeemFinishNotice(PointRedeemModel $redeem) - { - - } - /** * @param int $limit * @return ResultsetInterface|Resultset|TaskModel[] diff --git a/app/Console/Tasks/RefundTask.php b/app/Console/Tasks/RefundTask.php index 9689542c..1a3556ff 100644 --- a/app/Console/Tasks/RefundTask.php +++ b/app/Console/Tasks/RefundTask.php @@ -6,7 +6,9 @@ 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\CourseUser as CourseUserRepo; +use App\Repos\ImGroupUser as ImGroupUserRepo; use App\Repos\Order as OrderRepo; use App\Repos\Refund as RefundRepo; use App\Repos\Trade as TradeRepo; @@ -172,17 +174,26 @@ class RefundTask extends Task protected function handleCourseOrderRefund(OrderModel $order) { $courseUserRepo = new CourseUserRepo(); - $courseUser = $courseUserRepo->findCourseStudent($order->item_id, $order->owner_id); if ($courseUser) { - $courseUser->deleted = 1; - if ($courseUser->update() === false) { throw new \RuntimeException('Delete Course User Failed'); } } + + $courseRepo = new CourseRepo(); + $group = $courseRepo->findImGroup($order->item_id); + + $groupUserRepo = new ImGroupUserRepo(); + $groupUser = $groupUserRepo->findGroupUser($group->id, $order->owner_id); + + if ($groupUser) { + if ($groupUser->delete() === false) { + throw new \RuntimeException('Delete Group User Failed'); + } + } } /** @@ -193,6 +204,8 @@ class RefundTask extends Task protected function handlePackageOrderRefund(OrderModel $order) { $courseUserRepo = new CourseUserRepo(); + $groupUserRepo = new ImGroupUserRepo(); + $courseRepo = new CourseRepo(); $itemInfo = $order->item_info; @@ -201,13 +214,20 @@ class RefundTask extends Task $courseUser = $courseUserRepo->findCourseStudent($course['id'], $order->owner_id); if ($courseUser) { - $courseUser->deleted = 1; - if ($courseUser->update() === false) { throw new \RuntimeException('Delete Course User Failed'); } } + + $group = $courseRepo->findImGroup($course['id']); + $groupUser = $groupUserRepo->findGroupUser($group->id, $order->owner_id); + + if ($groupUser) { + if ($groupUser->delete() === false) { + throw new \RuntimeException('Delete Group User Failed'); + } + } } } diff --git a/app/Console/Tasks/ServerMonitorTask.php b/app/Console/Tasks/ServerMonitorTask.php index 7eff21ca..b6fefeb9 100644 --- a/app/Console/Tasks/ServerMonitorTask.php +++ b/app/Console/Tasks/ServerMonitorTask.php @@ -4,7 +4,7 @@ namespace App\Console\Tasks; use App\Library\Benchmark; use App\Models\User as UserModel; -use App\Services\DingTalk\Notice\ServerMonitor as ServerMonitorNotice; +use App\Services\Logic\Notice\DingTalk\ServerMonitor as ServerMonitorNotice; use App\Services\Search\UserSearcher; use GatewayClient\Gateway; diff --git a/app/Console/Tasks/TeacherLiveNoticeTask.php b/app/Console/Tasks/TeacherLiveNoticeTask.php index fac00d68..d3849e82 100644 --- a/app/Console/Tasks/TeacherLiveNoticeTask.php +++ b/app/Console/Tasks/TeacherLiveNoticeTask.php @@ -4,7 +4,7 @@ namespace App\Console\Tasks; use App\Models\ChapterLive as ChapterLiveModel; use App\Repos\ChapterLive as ChapterLiveRepo; -use App\Services\DingTalk\Notice\TeacherLive as TeacherLiveNotice; +use App\Services\Logic\Notice\DingTalk\TeacherLive as TeacherLiveNotice; use Phalcon\Mvc\Model\Resultset; use Phalcon\Mvc\Model\ResultsetInterface; diff --git a/app/Http/Admin/Controllers/SettingController.php b/app/Http/Admin/Controllers/SettingController.php index c7734972..1a79a60e 100644 --- a/app/Http/Admin/Controllers/SettingController.php +++ b/app/Http/Admin/Controllers/SettingController.php @@ -365,13 +365,13 @@ class SettingController extends Controller $data = $this->request->getPost(); - $settingService->updateWechatOASettings($section, $data); + $settingService->updateWeChatOASettings($section, $data); return $this->jsonSuccess(['msg' => '更新配置成功']); } else { - $oa = $settingService->getWechatOASettings(); + $oa = $settingService->getWeChatOASettings(); $this->view->pick('setting/wechat_oa'); $this->view->setVar('oa', $oa); diff --git a/app/Http/Admin/Controllers/TestController.php b/app/Http/Admin/Controllers/TestController.php index d159935d..8ee8b549 100644 --- a/app/Http/Admin/Controllers/TestController.php +++ b/app/Http/Admin/Controllers/TestController.php @@ -8,11 +8,11 @@ use App\Http\Admin\Services\WxpayTest as WxpayTestService; use App\Services\Captcha as CaptchaService; use App\Services\DingTalkNotice as DingTalkNoticeService; use App\Services\Live as LiveService; -use App\Services\Mail\Test as TestMailService; +use App\Services\Logic\Notice\Mail\Test as MailTestService; +use App\Services\Logic\Notice\Sms\Test as SmsTestService; use App\Services\MyStorage as StorageService; -use App\Services\Sms\Test as TestSmsService; use App\Services\Vod as VodService; -use App\Services\Wechat as WechatService; +use App\Services\WeChat as WeChatService; /** * @RoutePrefix("/admin/test") @@ -61,7 +61,7 @@ class TestController extends Controller */ public function wechatOaAction() { - $wechatService = new WechatService(); + $wechatService = new WeChatService(); $oa = $wechatService->getOfficialAccount(); @@ -122,7 +122,7 @@ class TestController extends Controller { $phone = $this->request->getPost('phone', 'string'); - $smsService = new TestSmsService(); + $smsService = new SmsTestService(); $response = $smsService->handle($phone); @@ -140,7 +140,7 @@ class TestController extends Controller { $email = $this->request->getPost('email', 'string'); - $mailService = new TestMailService(); + $mailService = new MailTestService(); $result = $mailService->handle($email); diff --git a/app/Http/Admin/Services/AuthNode.php b/app/Http/Admin/Services/AuthNode.php index a0978c90..9bb89df8 100644 --- a/app/Http/Admin/Services/AuthNode.php +++ b/app/Http/Admin/Services/AuthNode.php @@ -794,6 +794,12 @@ class AuthNode extends Service 'type' => 'menu', 'route' => 'admin.setting.vip', ], + [ + 'id' => '5-1-14', + 'title' => '积分设置', + 'type' => 'menu', + 'route' => 'admin.setting.point', + ], [ 'id' => '5-1-11', 'title' => '微聊设置', @@ -818,12 +824,6 @@ class AuthNode extends Service 'type' => 'menu', 'route' => 'admin.setting.dingtalk_robot', ], - [ - 'id' => '5-1-14', - 'title' => '积分设置', - 'type' => 'menu', - 'route' => 'admin.setting.point', - ], ], ], ], diff --git a/app/Http/Admin/Services/PointRedeem.php b/app/Http/Admin/Services/PointRedeem.php index f3812807..a3a2b354 100644 --- a/app/Http/Admin/Services/PointRedeem.php +++ b/app/Http/Admin/Services/PointRedeem.php @@ -6,6 +6,7 @@ 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\Services\Logic\Notice\PointGoodsDeliver as PointGoodsDeliverNotice; use App\Validators\PointRedeem as PointRedeemValidator; class PointRedeem extends Service @@ -17,8 +18,6 @@ class PointRedeem extends Service $params = $pagerQuery->getParams(); - $params['deleted'] = $params['deleted'] ?? 0; - $sort = $pagerQuery->getSort(); $page = $pagerQuery->getPage(); $limit = $pagerQuery->getLimit(); @@ -45,9 +44,18 @@ class PointRedeem extends Service $redeem->update(); + $this->handleGoodsDeliverNotice($redeem); + return $redeem; } + protected function handleGoodsDeliverNotice(PointRedeemModel $redeem) + { + $notice = new PointGoodsDeliverNotice(); + + $notice->createTask($redeem); + } + protected function findOrFail($id) { $validator = new PointRedeemValidator(); diff --git a/app/Http/Admin/Services/Setting.php b/app/Http/Admin/Services/Setting.php index b2787a43..5cca4e2b 100644 --- a/app/Http/Admin/Services/Setting.php +++ b/app/Http/Admin/Services/Setting.php @@ -5,7 +5,7 @@ namespace App\Http\Admin\Services; use App\Caches\Setting as SettingCache; use App\Repos\Setting as SettingRepo; use App\Repos\Vip as VipRepo; -use App\Services\Wechat as WechatService; +use App\Services\WeChat as WeChatService; class Setting extends Service { @@ -58,7 +58,7 @@ class Setting extends Service return $wxpay; } - public function getWechatOASettings() + public function getWeChatOASettings() { $oa = $this->getSettings('wechat.oa'); @@ -215,7 +215,7 @@ class Setting extends Service } } - public function updateWechatOASettings($section, $settings) + public function updateWeChatOASettings($section, $settings) { if (!empty($settings['notice_template'])) { $settings['notice_template'] = kg_json_encode($settings['notice_template']); @@ -242,7 +242,7 @@ class Setting extends Service } if (!empty($buttons)) { - $service = new WechatService(); + $service = new WeChatService(); $oa = $service->getOfficialAccount(); $oa->menu->create($buttons); } diff --git a/app/Http/Admin/Services/Student.php b/app/Http/Admin/Services/Student.php index 2e8b9b4f..188693e8 100644 --- a/app/Http/Admin/Services/Student.php +++ b/app/Http/Admin/Services/Student.php @@ -45,7 +45,6 @@ class Student extends Service $params = $pagerQuery->getParams(); $params['role_type'] = CourseUserModel::ROLE_STUDENT; - $params['deleted'] = $params['deleted'] ?? 0; $sort = $pagerQuery->getSort(); $page = $pagerQuery->getPage(); diff --git a/app/Http/Admin/Views/consult/list.volt b/app/Http/Admin/Views/consult/list.volt index 65f0f5ee..c4bba140 100644 --- a/app/Http/Admin/Views/consult/list.volt +++ b/app/Http/Admin/Views/consult/list.volt @@ -55,7 +55,7 @@ {% set restore_url = url({'for':'admin.consult.restore','id':item.id}) %}
课程:{{ item.course.title }}{{ private_info(item.private) }}
+课程:{{ item.course.title }}({{ item.course.id }}){{ private_info(item.private) }}
提问:{{ item.question }}
回复:{{ item.answer }}
编号 | 课程 | 课时数 | 用户数 | @@ -96,6 +98,7 @@ {% set review_url = url({'for':'admin.review.list'},{'course_id':item.id}) %} {% set consult_url = url({'for':'admin.consult.list'},{'course_id':item.id}) %}|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
{{ item.id }} |
标题:{{ item.title }} {{ model_info(item.model) }} {{ category_info(item.category) }} {{ teacher_info(item.teacher) }} {{ level_info(item.level) }} diff --git a/app/Http/Admin/Views/point/history/list.volt b/app/Http/Admin/Views/point/history/list.volt index 145ecffa..dc792276 100644 --- a/app/Http/Admin/Views/point/history/list.volt +++ b/app/Http/Admin/Views/point/history/list.volt @@ -21,7 +21,7 @@
|