| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- <?php
- namespace api\controllers;
- use addons\Chanjet\common\global_func\Common;
- use addons\Chanjet\common\models\AddonsChanjetAppTicket;
- use addons\Chanjet\common\models\AddonsChanjetOtherMsg;
- use common\enums\AddonsEnum;
- use Yii;
- use yii\helpers\Json;
- class ChanJetController extends OnAuthController
- {
- public $enableCsrfValidation = false;
- public $modelClass = '';
- protected $authOptional = ['index'];
- protected function verbs()
- {
- $verbs = parent::verbs();
- $verbs['index'] = ['POST', 'GET', 'HEAD']; //methods you need in action
- return $verbs;
- }
- /**
- * 接收畅捷通消息
- *
- * @return void
- */
- public function actionIndex()
- {
- Yii::error([
- 'title' => '畅捷通消息',
- 'get' => Yii::$app->request->get(),
- 'post' => Yii::$app->request->post()
- ]);
- $encryptMsg = Yii::$app->request->post('encryptMsg', '');
- if (empty($encryptMsg)) {
- Yii::$app->controller->asJson(['result' => 'success'])->send();
- return;
- }
- // 解密并写记录,用于获取token
- $messageKey = Yii::$app->services->setting->addons->get($this->mall_id, AddonsEnum::ADDONS_NAME_CHANJET, 'basic.message_key');
- if (empty($messageKey)) {
- Yii::$app->controller->asJson(['result' => 'success'])->send();
- return;
- }
- $decodeData = Common::decryptAES($encryptMsg, $messageKey);
- if (empty($decodeData)) {
- Yii::$app->controller->asJson(['result' => 'success'])->send();
- return;
- }
- $dataToArray = Json::decode($decodeData);
- // 判断类型
- if (!empty($dataToArray['msgType']) && $dataToArray['msgType'] === 'APP_TICKET') {
- $count = AddonsChanjetAppTicket::find()
- ->where(['mall_id' => $this->mall_id])
- ->count();
- if ($count) {
- AddonsChanjetAppTicket::updateAll(['decode_data' => $dataToArray, 'updated_at' => time()], ['mall_id' => $this->mall_id]);
- } else {
- AddonsChanjetAppTicket::setData([
- 'mall_id' => $this->mall_id,
- 'decode_data' => $dataToArray
- ]);
- }
- } else {
- AddonsChanjetOtherMsg::setData([
- 'mall_id' => $this->mall_id,
- 'msg' => $decodeData
- ]);
- // TODO 如果是库存变动消息,更新库存
- }
- // 接收到消息后,必须这种返回
- Yii::$app->controller->asJson(['result' => 'success'])->send();
- }
- }
|