diff --git a/README.md b/README.md index 269b8fa..f050c39 100644 --- a/README.md +++ b/README.md @@ -1,14 +1,12 @@ # 入魔入佛 -入魔入佛是一个基于 Laravel 10、Vue 3 和 Layui-vue 的项目初始模板,灵感来自于 Linux 命令 `rm -rf`。该模板旨在帮助开发者快速搭建现代化的 Web 应用程序。 +入魔入佛是一个基于 Laravel 10、Vue 3 和 Element-Plus 的初始模板项目,灵感来自于 Linux 命令 `rm -rf`。该模板旨在帮助开发者快速搭建中后台+小程序应用。 ## 功能特点 -- 使用 Laravel 10 提供强大的后端功能和安全性。 -- 使用 Vue 3 构建现代化的前端用户界面。 -- 使用 Layui-vue 提供美观、简洁的 UI 组件。 -- 集成了常用的开发工具和插件,提高开发效率。 -- 遵循最佳实践和编码规范,提供可维护和可扩展的代码结构。 +- 使用 `Laravel 10` 提供强大的后端功能和安全性。 +- 使用 `Vue 3` 构建现代化的前端用户界面。 +- 使用 `Element-Plus` 作为UI组件库,提供丰富的界面组件和样式。 ## 快速开始 @@ -70,3 +68,16 @@ cd api && php artisan serve --host 0.0.0.0 --- 请注意,入魔入佛仅作为一个项目初始模板,您可以根据自己的需求进行修改和扩展。希望这个模板能够帮助您快速启动项目并提供良好的开发体验! + +## 免责声明 + +本模板仅供合法目的使用,禁止使用本模板编写任何违法程序或进行非法活动。使用者必须遵守国家和地区的法律法规,不得利用本模板从事任何违法行为,包括但不限于: + +* 侵犯他人的隐私权、知识产权或其他合法权益; +* 发布、传播或利用恶意软件、病毒、木马等危害网络安全的程序; +* 进行网络诈骗、网络攻击、网络钓鱼等违法活动; +* 利用本模板从事任何违法、违规的行为。 + +使用本模板所造成的一切后果由使用者自行承担,开发者不承担任何责任。本模板仅提供技术支持和开发工具,不对使用者使用本模板的目的、行为和后果承担任何责任。使用者在使用本模板时应自行评估风险,并承担由此产生的任何损失或损害。 + +请在使用本模板之前详细阅读并理解上述说明和免责声明。如果您不同意或无法遵守上述要求,请勿使用本模板。如果您对使用本模板的合法性有任何疑问,请咨询法律专业人士的意见。 diff --git a/api/app/Http/Controllers/WeChatController.php b/api/app/Http/Controllers/WeChatController.php new file mode 100644 index 0000000..40440bc --- /dev/null +++ b/api/app/Http/Controllers/WeChatController.php @@ -0,0 +1,68 @@ +get('code'); + $state = request()->get('state'); + $we_chat = WeChat::where('app_id', $app_id)->where('type', 1)->first(); + if (!$we_chat) return Yo::error_echo(100001, ['公众号']); + $url = $state . "code=$code"; + Yo::echo(['url' => $url]); + header("Location: $url"); + exit(); + } + + public function gzh_login($we_chat, $code) + { + $url = 'https://api.weixin.qq.com/sns/oauth2/access_token?appid=' + . $we_chat->app_id . '&secret=' + . $we_chat->app_secret . '&code=' + . $code . '&grant_type=authorization_code'; + $info = file_get_contents($url); + return json_decode($info, true); + } + + public function mp_login($we_chat, $code) + { + $url = 'https://api.weixin.qq.com/sns/jscode2session?appid=' + . $we_chat->app_id + . '&secret=' . $we_chat->app_secret + . '&js_code=' . $code . '&grant_type=authorization_code'; + $info = file_get_contents($url); + $json = json_decode($info); + return get_object_vars($json); + } + + public function login($code, $app_id) + { + $we_chat = WeChat::where('app_id', $app_id)->first(); + $login = false; + if (!$we_chat) return false; + switch ($we_chat->type) { + case 1: + $login = $this->gzh_login($we_chat, $code); + break; + case 2: + $login = $this->mp_login($we_chat, $code); + break; + } + return ['login' => !!$login]; + } + + public function login_test(Request $request) + { + $code = $request->post('code'); + $app_id = $request->post('app_id'); + return Yo::echo([ + 'info' => $this->login($code, $app_id) + ]); + } +} diff --git a/api/app/Models/WeChat.php b/api/app/Models/WeChat.php new file mode 100644 index 0000000..1f45067 --- /dev/null +++ b/api/app/Models/WeChat.php @@ -0,0 +1,10 @@ +id(); + $table->string('name', 50)->comment('名称'); + $table->tinyInteger('type')->comment('1-公众号 2-小程序'); + $table->string('app_id', 80)->comment('小程序ID')->index(); + $table->string('app_secret', 100)->comment('小程序密钥')->index(); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('we_chats'); + } +}; diff --git a/api/routes/web.php b/api/routes/web.php index d60aceb..fd2c8b1 100644 --- a/api/routes/web.php +++ b/api/routes/web.php @@ -13,17 +13,9 @@ use Illuminate\Support\Facades\Route; | */ $admin_path = 'Admin'; -$zero_path = 'Zero'; -$app_path = 'App'; Route::get("open/Gzh/auth/{app_id}", [\App\Http\Controllers\WeChatController::class, 'auth']); - -Route::get("api/Test/Excel/excel_test", [\App\Http\Controllers\ExcelController::class, 'excel_test']); -Route::post("api/Test/Email/email_test", [\App\Http\Controllers\EmailController::class, 'email_test']); -Route::post("api/Test/WeChatPay/callback_test/{app_id}", [\App\Http\Controllers\WeChatPayController::class, 'callback_test']); -Route::post("api/Test/WeChatPay/pay_test", [\App\Http\Controllers\WeChatPayController::class, 'pay_test']); Route::post("api/Test/WeChat/login_test", [\App\Http\Controllers\WeChatController::class, 'login_test']); -Route::post("api/Gateway/close", [\App\Http\Controllers\GatewayController::class, 'close']); Route::post("api/$admin_path/Config/create", [\App\Http\Controllers\ConfigController::class, 'create']); Route::post("api/$admin_path/Config/update", [\App\Http\Controllers\ConfigController::class, 'update']); Route::post("api/$admin_path/Config/delete", [\App\Http\Controllers\ConfigController::class, 'delete']); @@ -58,7 +50,6 @@ Route::post("api/$admin_path/Admin/info", [\App\Http\Controllers\AdminController Route::post("api/$admin_path/Admin/login", [\App\Http\Controllers\AdminController::class, 'login']); Route::post("api/$admin_path/ImageCaptcha/create", [\App\Http\Controllers\ImageCaptchaController::class, 'create']); Route::post("api/$admin_path/Config/get", [\App\Http\Controllers\ConfigController::class, 'get']); -Route::post("api/$zero_path/Config/get", [\App\Http\Controllers\ConfigController::class, 'get']); Route::any('api/yo', \App\Http\Controllers\YoController::class); Route::get('/', function () { return view('welcome');