counter_key = RedisKeyEnum::suffix(RedisKeyEnum::COUNTER_KEY, $order_id, true); $this->counter_result_key = RedisKeyEnum::suffix(RedisKeyEnum::COUNTER_RESULT_KEY, $order_id, true); $this->redis = \Yii::$app->redis; return $this; } public function incr($number = 1) { $this->redis->incrby($this->counter_key, $number); } public function decr($number = 1) { return $this->redis->decrby($this->counter_key, $number); } public function getCounterResult() { return $this->redis->get($this->counter_result_key); } public function setCounterResult($data) { return $this->redis->set($this->counter_result_key, json_encode($data)); } public function callBackOld($mall_id, $order_id,$commission_arr,$handle_class = null) { var_dump('callBack:order_id:'.$order_id.json_encode($commission_arr)); if(!empty($commission_arr)){ $result = $this->getCounterResult(); var_dump('callBack:result.order_id:'.$order_id.json_encode($result)); if ($result) { $result = json_decode($result, true); if(!empty($result['commission_arr'])){ foreach ($result['commission_arr'] as $order_detail_id => &$commission) { $commission['commission'] += $commission_arr[$order_detail_id]['commission']; $commission['commission_type'] = $commission_arr[$order_detail_id]['commission_type'] ?? ''; } $this->setCounterResult($result); }else{ $this->setCounterResult(['order_id' => $order_id, 'commission_arr' => $commission_arr]); } var_dump('callBack:result1.order_id:'.$order_id.json_encode($result)); } else { var_dump('callBack:result2.order_id:'.$order_id.json_encode($commission_arr)); $this->setCounterResult(['order_id' => $order_id, 'commission_arr' => $commission_arr]); } }else{ $result = $this->getCounterResult(); var_dump('callBack:result111111.order_id:'.$order_id.json_encode($result)); if(!$result){ $this->setCounterResult(['order_id' => $order_id, 'commission_arr' => []]); } } $res = $this->decr(); $res = $this->redis->get($this->counter_key); var_dump('res'.$res); if ($res == 0) { //todo 触发事件 $result = $this->getCounterResult(); if(!$handle_class) $handle_class = OrderComputeCommissionListener::class; $data = json_decode($result, true); var_dump('callBack:data:'.$order_id.json_encode($data)); if(!empty($data)&&is_array($data)){ \Yii::$app->services->rabbitMq->push(RabbitMqEnum::EXCHANGE_ORDER, RabbitMqEnum::ORDER_QUEUE, $data, $handle_class, 'handleSync'); // if(MallAddons::isInstall($mall_id,AddonsEnum::ADDONS_NAME_CLOUD_STOCK_TWO)){ // $handle_class = CloudStockTwoOrderComputeCommissionListener::class; // \Yii::$app->services->rabbitMq->push(RabbitMqEnum::EXCHANGE_ORDER, RabbitMqEnum::ORDER_QUEUE, $data, $handle_class, 'handleSync'); // } } $this->redis->del($this->counter_key); $this->redis->del($this->counter_result_key); } } public function callBack($mall_id, $order_id,$commission_arr,$handle_class = null) { var_dump('callBack:order_id:'.$order_id.json_encode($commission_arr)); if(!empty($commission_arr)){ $result = $this->getCounterResult(); var_dump('callBack:result.order_id:'.$order_id.json_encode($result)); if ($result) { $result = json_decode($result, true); if(!empty($result['commission_arr'])){ foreach ($result['commission_arr'] as $k=>&$val){ if(isset($commission_arr[$k])){ $val = array_merge($val,$commission_arr[$k]); } } $this->setCounterResult($result); }else{ $this->setCounterResult(['order_id' => $order_id, 'commission_arr' => $commission_arr]); } var_dump('callBack:result1.order_id:'.$order_id.json_encode($result)); } else { var_dump('callBack:result2.order_id:'.$order_id.json_encode($commission_arr)); $this->setCounterResult(['order_id' => $order_id, 'commission_arr' => $commission_arr]); } }else{ $result = $this->getCounterResult(); var_dump('callBack:result111111.order_id:'.$order_id.json_encode($result)); if(!$result){ $this->setCounterResult(['order_id' => $order_id, 'commission_arr' => []]); } } $res = $this->decr(); $res = $this->redis->get($this->counter_key); var_dump('res'.$res); if ($res == 0) { //todo 触发事件 $result = $this->getCounterResult(); if(!$handle_class) $handle_class = OrderComputeCommissionListener::class; $data = json_decode($result, true); var_dump('callBack:data:'.$order_id.json_encode($data)); if(!empty($data)&&is_array($data)){ \Yii::$app->services->rabbitMq->push(RabbitMqEnum::EXCHANGE_ORDER, RabbitMqEnum::ORDER_QUEUE, $data, $handle_class, 'handleSync'); // if(MallAddons::isInstall($mall_id,AddonsEnum::ADDONS_NAME_CLOUD_STOCK_TWO)){ // $handle_class = CloudStockTwoOrderComputeCommissionListener::class; // \Yii::$app->services->rabbitMq->push(RabbitMqEnum::EXCHANGE_ORDER, RabbitMqEnum::ORDER_QUEUE, $data, $handle_class, 'handleSync'); // } } $this->redis->del($this->counter_key); $this->redis->del($this->counter_result_key); } } public function del() { $this->redis->del($this->counter_key); $this->redis->del($this->counter_result_key); } }