From 89aac0357412d5f82bab40d591348fa25a43f1ee Mon Sep 17 00:00:00 2001 From: lccsw <1127794702@qq.com> Date: Mon, 23 Aug 2021 20:10:58 +0800 Subject: [PATCH] add-api-sign_cache --- api/controllers/wxapp/liche/Contract.php | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/api/controllers/wxapp/liche/Contract.php b/api/controllers/wxapp/liche/Contract.php index 5dd7b140..e20f5c9f 100644 --- a/api/controllers/wxapp/liche/Contract.php +++ b/api/controllers/wxapp/liche/Contract.php @@ -91,6 +91,7 @@ class Contract extends Wxapp{ } protected function post(){ + $uid = $this->session['uid']; $id = $this->input_param('id'); $type = $this->input_param('type'); $img = $this->input_param('img'); @@ -101,6 +102,7 @@ class Contract extends Wxapp{ if(!$row['file'] || !$img){ throw new Exception('参数错误', API_CODE_INVILD_PARAM); } + if($row['status']==1){ throw new Exception('已签名', API_CODE_INVILD_PARAM); } @@ -124,6 +126,13 @@ class Contract extends Wxapp{ throw new Exception('签名失败,图片转换失败', API_CODE_INVILD_PARAM); } + $redis = load_cache('redis'); + $cache_key = "CONTRACT_{$id}_{$uid}_{$type}"; + if($redis->get($cache_key)){ + throw new Exception('请求太频繁,请刷新查看结果', API_CODE_INVILD_PARAM); + } + $redis->save($cache_key,1,60*1); + $this->load->library('receiver/sign_entity'); $sign_entity = new Sign_entity(['comp_img'=>$img_seal]); switch($type){ @@ -143,6 +152,7 @@ class Contract extends Wxapp{ ]; $result = $this->contracts_model->update($update,['id'=>$row['id']]); if($result){ + $redis->delete($cache_key); throw new Exception('签名成功', API_CODE_SUCCESS); }else{ throw new Exception('签名失败', API_CODE_INVILD_PARAM); @@ -169,6 +179,7 @@ class Contract extends Wxapp{ if($result){ $this->load->library('receiver/orders_entity'); $this->orders_entity->sign_after($id,$this->app_id,$this->session); + $redis->delete($cache_key); throw new Exception('签名成功', API_CODE_SUCCESS); }else{ throw new Exception('签名失败', API_CODE_INVILD_PARAM); @@ -194,6 +205,7 @@ class Contract extends Wxapp{ //生成支付订单 $this->load->library('receiver/orders_entity'); $this->orders_entity->check_finish($id,$this->app_id,$this->session); + $redis->delete($cache_key); throw new Exception('签名成功', API_CODE_SUCCESS); }else{ throw new Exception('签名失败', API_CODE_INVILD_PARAM); @@ -216,12 +228,14 @@ class Contract extends Wxapp{ $result = $this->contracts_model->update($update,['id'=>$row['id']]); if($result){ $this->deliverys_model->update(['status'=>1],['o_id'=>$id]); + $redis->delete($cache_key); throw new Exception('签名成功', API_CODE_SUCCESS); }else{ throw new Exception('签名失败', API_CODE_INVILD_PARAM); } break; default: + $redis->delete($cache_key); throw new Exception('未知签名类型', API_CODE_INVILD_PARAM); } }