* @date 2020-01-29 10:13:09 */ declare (strict_types=1); namespace Modules\Api\Controllers; use App\Model\VipOrderModel; use App\Repositories\Service\PaymentService; use App\Repositories\Service\QueueService; use Carbon\Carbon; use Hyperf\Validation\Contract\ValidatorFactoryInterface; use Psr\SimpleCache\CacheInterface; class OrderController extends BaseController { use \Hyperf\Di\Aop\ProxyTrait; use \Hyperf\Di\Aop\PropertyHandlerTrait; function __construct() { if (method_exists(parent::class, '__construct')) { parent::__construct(...func_get_args()); } $this->__handlePropertyHandler(__CLASS__); } /** * 订单回调处理 * @param $type * @param $orderId * @param $gateway */ public function notify($type, $orderId) { make(QueueService::class)->addPayNotifyJob(['method' => $this->request->getMethod(), 'order_id' => $orderId, 'order_type' => $type, 'order_gateway' => 1, 'data' => $this->request->all(), 'date' => Carbon::now()->toDateTimeString()]); $orderId = intval($orderId); $result = make(PaymentService::class)->notify($orderId, $type); return $result; } /** * 用户上传-支持成功凭证 */ public function proof(ValidatorFactoryInterface $validatorFactory) { $user_id = $this->getUserId(); $inputData = $this->getJsonData(); $rules = ['order_sn' => 'required|string', 'file_path' => 'required|string']; $validator = $validatorFactory->make($inputData, $rules); if ($validator->fails()) { // 如果有错误(可能是多个信息),这里只取第一个错误信息返回. return json_fail($validator->errors()->first()); } $order_sn = $inputData['order_sn']; $file_path = $inputData['file_path']; $where = ['order_sn' => $order_sn]; $select = '*'; $r = VipOrderModel::query()->selectRaw($select)->where($where)->first(); if (!$r) { return json_fail('购买记录不存在'); } if ($r['user_code'] != $user_id) { return json_fail('此记录不是你的,无权操作'); } if ($r['payproof_imgs']) { return json_fail('你已上传凭证了,请勿重复操作'); } $data = array('payproof_imgs' => $file_path, 'is_user_proof' => 1); $re = VipOrderModel::query()->where($where)->update($data); if (!$re) { return json_fail('上传凭证失败'); } return json_success('', '上传成功'); } /** * 清除支付列表缓存 * * @return string|void * @throws \Psr\SimpleCache\InvalidArgumentException */ public function delPayListsCache() { $inputData = request()->all(); if ($inputData['key'] != env('PAY_CENTER_KEY')) { return json_fail('nook'); } make(CacheInterface::class)->delete('paymentType'); return json_success('ok'); } }