You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

253 lines
8.0 KiB

<?php
declare(strict_types=1);
namespace App\Controller;
use App\Constants\v3\LogLabel;
use App\Constants\v3\OrderState;
use App\Constants\v3\OrderType;
use App\Constants\v3\SsdbKeys;
use App\Libs\FeiePrintClient;
use App\Model\v3\Order;
use App\Model\v3\OrderGoods;
use App\Model\v3\OrderMain;
use App\Service\v3\Interfaces\CouponRebateServiceInterface;
use App\Service\v3\Interfaces\CouponServiceInterface;
use App\Service\v3\Interfaces\DeviceServiceInterface;
use App\Service\v3\Interfaces\FeiePrintServiceInterface;
use App\Service\v3\Interfaces\FinancialRecordServiceInterface;
use App\Service\v3\Interfaces\GoodsActivityServiceInterface;
use App\Service\v3\Interfaces\MiniprogramServiceInterface;
use App\Service\v3\Interfaces\MqttServiceInterface;
use App\Service\v3\Interfaces\OrderOnlineServiceInterface;
use App\Service\v3\Interfaces\SeparateAccountsServiceInterface;
use App\Service\v3\Interfaces\UserServiceInterface;
use Hyperf\DbConnection\Db;
use Hyperf\HttpServer\Contract\RequestInterface;
use Hyperf\HttpServer\Annotation\AutoController;
use Hyperf\Utils\Coroutine;
use Hyperf\Utils\ApplicationContext;
use Hyperf\Task\TaskExecutor;
use Hyperf\Task\Task;
use App\TaskWorker\SSDBTask;
use App\Commons\Log;
use Hyperf\Di\Annotation\Inject;
/**
* @AutoController()
* Class TestController
* @package App\Controller
*/
class TestController extends AbstractController
{
private $name = 'default action';
protected $client = null;
/**
* @Inject
* @var MqttServiceInterface
*/
protected $mqttService;
/**
* @Inject
* @var DeviceServiceInterface
*/
protected $deviceService;
/**
* @Inject
* @var MiniprogramServiceInterface
*/
protected $miniprogramService;
/**
* @Inject
* @var FeiePrintServiceInterface
*/
protected $feiePrintService;
/**
* @Inject
* @var UserServiceInterface
*/
protected $userService;
/**
* @Inject
* @var CouponRebateServiceInterface
*/
protected $couponRebateService;
/**
* @Inject
* @var CouponServiceInterface
*/
protected $couponService;
/**
* @Inject
* @var OrderOnlineServiceInterface
*/
protected $orderOnlineService;
/**
* @Inject
* @var SeparateAccountsServiceInterface
*/
protected $separateAccountsService;
/**
* @Inject
* @var GoodsActivityServiceInterface
*/
protected $goodsActivityService;
/**
* @Inject
* @var FinancialRecordServiceInterface
*/
protected $financialService;
public function index1(RequestInterface $request)
{
// $container = ApplicationContext::getContainer();
// $exec = $container->get(TaskExecutor::class);
// $result = $exec->execute(new Task([MethodTask::class, 'handle'], [Coroutine::id()]));
// $client = ApplicationContext::getContainer()->get(SSDBTask::class);
// $result = $client->exec("set","bar","1234");
// $result = $client->exec("get","bar");
// $client = ApplicationContext::getContainer()->get(MethodTask::class);
// $result = $client->handle("set");
// //$log = ApplicationContext::getContainer()->get(Log::class);
// $log = $this->log;
//
// $log->push(['test'=>1,'user_id'=>290,'msg'=>'order']);
// $log->event('t1',['test'=>1,'user_id'=>290,'msg'=>'order']);
//
// //$this->name = 'index1 action '. $result;
// return $this->name;
// $time = time();
// $msgInfo = array(
// 'user' => '13161443713@163.com',
// 'stime' => $time,
// 'sig' => sha1('13161443713@163.com' . 'XsaHzgePdyWTfcMX' . $time),
// 'apiname' => 'Open_printMsg',
// 'sn' => '920527381',
// 'content' => '1111',
// 'times' => 1//打印次数
// );
// $this->client = new FeiePrintClient('api.feieyun.cn', 80);
// if (!$this->client->post('/Api/Open/', $msgInfo)) {
// return '12';
// } else {
// //服务器返回的JSON字符串,建议要当做日志记录起来
// $result = $this->client->getContent();
// return $result;
// }
$globalOrderId = $this->request->input('order_main_id');
// 查询订单
$orderMain = OrderMain::query()
->where([
'global_order_id' => $globalOrderId,
'type' => OrderType::ONLINE,
'state' => OrderState::REFUNDING
])
->first();
// 订单不存在
if (empty($orderMain)) {
$this->log->event(
LogLabel::ORDER_OFFLINE_PAY_NOTIFY_LOG,
['global_order_id_fail' => $globalOrderId]
);
return true;
}
// 线下回调
// $orderPaid = $this->orderOfflineService->doPaid($globalOrderId);
// var_dump('orderOfflineService', $orderPaid);
// $separate = $this->separateAccountsService->orderOfflinePaid($globalOrderId);
// var_dump('separateAccountsService', $separate);
//
// // 喇叭通知,兼容旧音响,MQTT+IOT
// $res = $this->mqttService->speakToStore($globalOrderId);
// var_dump('mqttService', $res);
// $res = $this->deviceService->pubMsgToStoreByOrderMainId($globalOrderId);
// var_dump('deviceService', $res);
//
// // 公众号模板消息
// $res = $this->miniprogramService->sendTemMsgForOfflineOrder($globalOrderId);
// var_dump('miniprogramService', $res);
// 线上回调
// $res = $this->orderOnlineService->doByPaid($globalOrderId);
// var_dump('orderOnlineService', $res);
// $res = $this->separateAccountsService->orderOnlinePaid($globalOrderId);
// var_dump('separateAccountsService', $res);
//
// // 优惠券返券
// $res = $this->couponRebateService->couponRebateInTask($globalOrderId);
// var_dump('couponRebateService', $res);
//
// // 喇叭通知,兼容旧音响,MQTT+IOT
// $res = $this->mqttService->speakToStore($globalOrderId);
// var_dump('mqttService', $res);
// $res = $this->deviceService->pubMsgToStoreByOrderMainId($globalOrderId);
// var_dump('deviceService', $res);
//
// // 公众号模板消息
// $res = $this->miniprogramService->sendTemMsgForOnlineOrder($globalOrderId);
// var_dump('miniprogramService', $res);
//
// // 打印订单,自动打印
// $res = $this->feiePrintService->feiePrint($globalOrderId);
// var_dump('feiePrintService', $res);
// 退款回调
// 添加退款时间
$orderMain->refund_time = time();
$orderMain->state = OrderState::REFUNDED;
$res = $orderMain->save();
var_dump('$orderMain', $res);
// 退款返还优惠券
$res = $this->couponService->orderRefundCoupons($orderMain->global_order_id);
var_dump('couponService', $res);
// 处理特价商品缓存
$orderChildren = Order::query()->where(['order_main_id' => $orderMain->global_order_id])->get()->toArray();
$orderGoods = OrderGoods::query()
->where(['activity_type' => 2])
->whereIn('order_id', array_values(array_column($orderChildren, 'id')))->get();
foreach ($orderGoods as $key => &$item) {
$this->goodsActivityService->clearCacheRecord($item['goods_id'], $item['number'], $orderMain->userId);
}
var_dump('$orderChildren', $orderChildren);
// 添加用户的流水
$res = $this->financialService->userByOLOrderRefund($orderMain->user_id, $orderMain->global_order_id, $orderMain->money);
var_dump('financialService', $res);
}
public function index2(RequestInterface $request)
{
$this->name = 'index2 action';
return $this->name;
}
public function index3(RequestInterface $request)
{
return $this->name;
}
}