| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164 |
- <?php
- namespace services\common;
- use addons\CloudStock\common\listeners\order\OrderComputeCommissionListener;
- use addons\CloudStockTwo\common\listeners\order\OrderComputeCommissionListener as CloudStockTwoOrderComputeCommissionListener;
- use common\components\Service;
- use common\enums\RabbitMqEnum;
- use common\enums\RedisKeyEnum;
- use common\models\mall\MallAddons;
- use common\enums\AddonsEnum;
- /**
- *
- * 计数器服务类
- * Class PayService
- * @package services\common
- */
- class TaskCounterService extends Service
- {
- public $counter_key = '';
- public $counter_result_key = '';
- public $redis = null;
- public function set($order_id)
- {
- $this->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);
- }
- }
|