From 57e29a38ef6e2cb92dea88b99b49dc73ad4b9591 Mon Sep 17 00:00:00 2001 From: yanzai Date: Mon, 18 Mar 2024 17:46:21 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=20=E4=B8=AA=E6=A3=80=20?= =?UTF-8?q?=E9=A2=84=E7=BA=A6=E6=97=B6=E9=97=B4=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Http/Controllers/SMSController.php | 103 ++++++++++++++++++ app/Http/Controllers/UserOrderController.php | 14 ++- routes/web.php | 1 + 北京仁仁体检小程序/api/api.js | 2 +- 北京仁仁体检小程序/api/index.js | 2 +- 北京仁仁体检小程序/lu/share.js | 26 +++++ 北京仁仁体检小程序/main.js | 3 + 北京仁仁体检小程序/pages/main/combo/combo.vue | 1 + 北京仁仁体检小程序/pages/main/home/home.vue | 1 + 北京仁仁体检小程序/pages/main/order/order.vue | 1 + 北京仁仁体检小程序/pages/main/user/user.vue | 3 + 11 files changed, 152 insertions(+), 5 deletions(-) create mode 100644 app/Http/Controllers/SMSController.php create mode 100644 北京仁仁体检小程序/lu/share.js diff --git a/app/Http/Controllers/SMSController.php b/app/Http/Controllers/SMSController.php new file mode 100644 index 0000000..0febd0b --- /dev/null +++ b/app/Http/Controllers/SMSController.php @@ -0,0 +1,103 @@ +accessKeyId; + $accessKeySecret = $this->accessKeySecret; + $params["PhoneNumbers"] = $mobile; + $params["SignName"] = $this->signName; + $params["TemplateCode"] = $this->TemplateCode; + $params['TemplateParam'] = $paramString; + $content = $this->request( + $accessKeyId, + $accessKeySecret, + "dysmsapi.aliyuncs.com", + array_merge($params, array( + "RegionId" => "cn-hangzhou", + "Action" => "SendSms", + "Version" => "2017-05-25", + )) + ); + + return $content; + } + + public function request($accessKeyId, $accessKeySecret, $domain, $params, $security=false) { + $apiParams = array_merge(array ( + "SignatureMethod" => "HMAC-SHA1", + "SignatureNonce" => uniqid(mt_rand(0,0xffff), true), + "SignatureVersion" => "1.0", + "AccessKeyId" => $accessKeyId, + "Timestamp" => gmdate("Y-m-d\TH:i:s\Z"), + "Format" => "JSON", + ), $params); + ksort($apiParams); + $sortedQueryStringTmp = ""; + foreach ($apiParams as $key => $value) { + $sortedQueryStringTmp .= "&" . $this->encode($key) . "=" . $this->encode($value); + } + + $stringToSign = "GET&%2F&" . $this->encode(substr($sortedQueryStringTmp, 1)); + + $sign = base64_encode(hash_hmac("sha1", $stringToSign, $accessKeySecret . "&",true)); + + $signature = $this->encode($sign); + + $url = ($security ? 'https' : 'http')."://{$domain}/?Signature={$signature}{$sortedQueryStringTmp}"; + + try { + $content = $this->fetchContent($url); + return json_decode($content); + } catch( \Exception $e) { + return false; + } + } + + private function encode($str) + { + $res = urlencode($str); + $res = preg_replace("/\+/", "%20", $res); + $res = preg_replace("/\*/", "%2A", $res); + $res = preg_replace("/%7E/", "~", $res); + return $res; + } + + private function fetchContent($url) { + $ch = curl_init(); + curl_setopt($ch, CURLOPT_URL, $url); + curl_setopt($ch, CURLOPT_TIMEOUT, 5); + curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); + curl_setopt($ch, CURLOPT_HTTPHEADER, array( + "x-sdk-client" => "php/2.0.0" + )); + + if(substr($url, 0,5) == 'https') { + curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); + curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); + } + + $rtn = curl_exec($ch); + + if($rtn === false) { + trigger_error("[CURL_" . curl_errno($ch) . "]: " . curl_error($ch), E_USER_ERROR); + } + curl_close($ch); + + return $rtn; + } +} diff --git a/app/Http/Controllers/UserOrderController.php b/app/Http/Controllers/UserOrderController.php index f453fc0..6ee4956 100644 --- a/app/Http/Controllers/UserOrderController.php +++ b/app/Http/Controllers/UserOrderController.php @@ -424,7 +424,12 @@ class UserOrderController extends Controller $pay = $wcp->refund($post_data); $wcr->params = json_encode($pay, JSON_UNESCAPED_UNICODE); $wcr->save(); - if (isset($pay['code'])) Yo::error_echo(200076); + if (isset($pay['code'])){ + self::unlock_appointment($order_info->hospital, [ + '预约Id' =>$appointment_id + ]); + Yo::error_echo(200076); + } if ($pay['status'] != 'PROCESSING' && $pay['status'] != 'SUCCESS'){ //如果退款失败,则解除锁定 self::unlock_appointment($order_info->hospital, [ '预约Id' =>$appointment_id @@ -612,12 +617,15 @@ class UserOrderController extends Controller ]); $order_info->appointment_info = json_encode($appointment_info['data'][0], JSON_UNESCAPED_UNICODE); $order_info->save(); - if($order_info->type == 2){ + if($order_info->type == 2 or $order_info->type == 1){ $appointment=DB::table('appointments')->where(['id'=>$order_info->appointment])->get(); $data=[ "预约Id"=> $order_info->appointment_number, "预约开始时间"=>$appointment[0]->date . ' '.$appointment[0]->start_time, - "预约截止时间"=>$appointment[0]->date . ' '.$appointment[0]->end_time + "预约截止时间"=>$appointment[0]->date . ' '.$appointment[0]->end_time, + "已排期"=>1, + "排期操作时间"=>date("Y-m-d H:i:s"), + "排期操作"=>"微信小程序" ]; $peis = new PEISApiController(); $url_code ='预约时段修改'; diff --git a/routes/web.php b/routes/web.php index 9e858e8..50e8fe0 100644 --- a/routes/web.php +++ b/routes/web.php @@ -167,3 +167,4 @@ Route::post("api/$admin_api/Admin/status", [\App\Http\Controllers\AdminControlle Route::post("api/$admin_api/Admin/info", [\App\Http\Controllers\AdminController::class, 'info']); Route::post("api/$admin_api/Admin/menu", [\App\Http\Controllers\AdminController::class, 'menu']); Route::post("api/$admin_api/Config/get", [\App\Http\Controllers\ConfigController::class, 'get']); +Route::post("api/$admin_api/testSendsms", [\App\Http\Controllers\SMSController::class, 'sendSms']); diff --git a/北京仁仁体检小程序/api/api.js b/北京仁仁体检小程序/api/api.js index 95f97f7..5d105fe 100644 --- a/北京仁仁体检小程序/api/api.js +++ b/北京仁仁体检小程序/api/api.js @@ -1,7 +1,7 @@ let url_ = "https://bjrrtj-api.cjy.net.cn"; let report_url_ = "https://bjrrtj-api.cjy.net.cn"; let h5_url_ = "https://bjrrtj-api.cjy.net.cn"; -const dev = 1; +const dev = 0; if (dev === 1) { url_ = "http://localbeijingrenren"; report_url_ = "http://192.168.31.106:5173"; diff --git a/北京仁仁体检小程序/api/index.js b/北京仁仁体检小程序/api/index.js index 108a9bf..69a6f34 100644 --- a/北京仁仁体检小程序/api/index.js +++ b/北京仁仁体检小程序/api/index.js @@ -3,7 +3,7 @@ import { } from '@/lu/axios.js' import $api from './api.js' let url_ = "https://bjrrtj-api.cjy.net.cn"; -const dev = 1 +const dev = 0 if (dev === 1) { url_ = "http://localbeijingrenren" } diff --git a/北京仁仁体检小程序/lu/share.js b/北京仁仁体检小程序/lu/share.js new file mode 100644 index 0000000..bf7451f --- /dev/null +++ b/北京仁仁体检小程序/lu/share.js @@ -0,0 +1,26 @@ +export default { + data() { + return {} + }, + //分享小程序 + onShareAppMessage(e) { + if (e.from === 'button') { + console.log('来自页面内转发按钮'); + } else if (e.from === 'menu') { + console.log('右上角菜单转发按钮'); + } + return { + // 自定义分享内容 + title: '仁仁健康', + path: '/pages/main/home/home', // 路径,可传递参数到指定页面 + + }; + }, + // 分享到朋友圈 + onShareTimeline() { + return { + title: '仁仁健康', + path: '/pages/main/home/home', + }; + }, +} diff --git a/北京仁仁体检小程序/main.js b/北京仁仁体检小程序/main.js index 04ab6c3..9c2eb93 100644 --- a/北京仁仁体检小程序/main.js +++ b/北京仁仁体检小程序/main.js @@ -4,10 +4,13 @@ import { import * as Pinia from 'pinia'; import App from './App.vue' import $lu from './lu' +import share from './lu/share.js' //注意路径是上一步新建文件的路径 + uni.$lu = $lu export function createApp() { const app = createSSRApp(App) + app.mixin(share) app.use(Pinia.createPinia()) return { app, diff --git a/北京仁仁体检小程序/pages/main/combo/combo.vue b/北京仁仁体检小程序/pages/main/combo/combo.vue index 02c1f12..6544947 100644 --- a/北京仁仁体检小程序/pages/main/combo/combo.vue +++ b/北京仁仁体检小程序/pages/main/combo/combo.vue @@ -27,6 +27,7 @@ getHospitalInfo() getUserInfo() }) + const user_info = ref(false) const getUserInfo = () => { diff --git a/北京仁仁体检小程序/pages/main/home/home.vue b/北京仁仁体检小程序/pages/main/home/home.vue index 4b68554..a4f46e6 100644 --- a/北京仁仁体检小程序/pages/main/home/home.vue +++ b/北京仁仁体检小程序/pages/main/home/home.vue @@ -34,6 +34,7 @@ }) + const user_info = ref(false) const getUserInfo = () => { uni.$lu.user((info) => { diff --git a/北京仁仁体检小程序/pages/main/order/order.vue b/北京仁仁体检小程序/pages/main/order/order.vue index 69fdb11..ec5da72 100644 --- a/北京仁仁体检小程序/pages/main/order/order.vue +++ b/北京仁仁体检小程序/pages/main/order/order.vue @@ -153,6 +153,7 @@ } +