public function cancelRefundAction(Request $request, $id)
 {
     $order = $this->getOrderService()->getOrder($id);
     $processor = OrderRefundProcessorFactory::create($order['targetType']);
     $processor->cancelRefundOrder($id);
     return $this->createJsonResponse(true);
 }
Example #2
0
 public function cancelRefundAction(Request $request, $id)
 {
     $targetType = $request->query->get("targetType");
     if (!in_array($targetType, array("course", "classroom"))) {
         throw $this->createAccessDeniedException('参数不对。');
     }
     $processor = OrderRefundProcessorFactory::create($targetType);
     $target = $processor->getTarget($id);
     if (empty($target)) {
         throw $this->createNotFoundException();
     }
     $user = $this->getCurrentUser();
     if (empty($user)) {
         throw $this->createAccessDeniedException();
     }
     $member = $processor->getTargetMember($target['id'], $user['id']);
     if (empty($member) || empty($member['orderId'])) {
         throw $this->createAccessDeniedException('您不是学员或尚未购买,不能取消退款。');
     }
     $processor->cancelRefundOrder($member['orderId']);
     return $this->createJsonResponse(true);
 }
 public function unLearn()
 {
     $classRoomId = $this->getParam("classRoomId");
     $targetType = $this->getParam("targetType");
     if (!in_array($targetType, array("course", "classroom"))) {
         throw $this->createErrorResponse('error', '退出学习失败');
     }
     $processor = OrderRefundProcessorFactory::create($targetType);
     $target = $processor->getTarget($classRoomId);
     $user = $this->controller->getUserByToken($this->request);
     if (!$user->isLogin()) {
         return $this->createErrorResponse('not_login', "您尚未登录,不能学习班级!");
     }
     $member = $processor->getTargetMember($classRoomId, $user["id"]);
     if (empty($member) || empty($member['orderId'])) {
         return $this->exitClassRoom($classRoomId, $user);
     }
     $order = $this->getOrderService()->getOrder($member['orderId']);
     if (empty($order)) {
         return $this->createErrorResponse('error', '您尚未购买,不能退学。');
     }
     $data = $this->request->request->all();
     $reason = empty($data['reason']) ? array() : $data['reason'];
     $amount = empty($data['applyRefund']) ? 0 : null;
     try {
         if (isset($data["applyRefund"]) && $data["applyRefund"]) {
             $refund = $processor->applyRefundOrder($member['orderId'], $amount, $reason, $this->container);
         } else {
             $processor->removeStudent($order['targetId'], $user['id']);
         }
     } catch (\Exception $e) {
         return $this->createErrorResponse('error', $e->getMessage());
     }
     return true;
 }
 protected function getOrderRefundProcessor($targetType)
 {
     return OrderRefundProcessorFactory::create($targetType);
 }