# qq_admin_frame **Repository Path**: qq_admin_dev_teams/qq_admin_frame ## Basic Information - **Project Name**: qq_admin_frame - **Description**: 初始化后台-thinkphp5框架 - **Primary Language**: PHP - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2019-10-31 - **Last Updated**: 2021-12-14 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # qq_admin_frame ## 介绍 - **[ThinkPHP5.1 文档](https://www.kancloud.cn/manual/thinkphp5_1)** - **[DolphinPHP 文档](https://www.kancloud.cn/ming5112/dolphinphp)** - **[Yansongda 微信支付和支付宝支付](https://pay.yansongda.cn/docs/v2/)** - **[overtrue/easy-sms 短信插件](https://github.com/overtrue/easy-sms)** - **[overtrue/pinyin 汉字转拼音](https://github.com/overtrue/pinyin)** - **[overtrue/wechat 微信相关接口(4.1)](https://easywechat.com/docs/4.x/overview)** - **[php-snowflake 雪花算法唯一ID](https://github.com/godruoyi/php-snowflake)** - **[JWT认证](https://packagist.org/packages/firebase/php-jwt)** #### 2021.11改动 * 删除不必要的文件、插件、优化部分代码 * 短信插件修改为easysms,新增拼音转化插件 * 删除原来的config/api.php,新增根目录配置文件.env * 新增jwt认证插件,跨域中间件,jwt中间件 * api上传接口改问/index/attachment/upload #### 2020.06改动 * 表格生成器增加多条件筛选 ~~~ return ZBuilder::make('table') ->setSearchMulti("name","名称",'text') ->setSearchMulti("status","状态",'select',['0'=>"未启用",'1'=>"启用"]) ~~~ * 内置了一些Dolphinphp插件和封装: ~~~ /plugins/AliSms 阿里云短信(已删除) /plugins/Qiniu 七牛云上传组件 /plugins/Excel excel插件 /extend/tool/email 邮件发送 /extend/Pinyin 汉字提取首字母和全拼 ~~~ * 加入EasyWechat微信插件和Yansongda支付插件 ## 修改 * 修改了后台菜单结构, 删除了使用率极低的接口
系统配置部分,删除develop, database 分组, 增加 setting,wxapp 分组 * show()方法, 此方法主要是API接口返回数据 . 旧版本show第三个参数是记录日志 , 修改后是否进行加密操作 ~~~ show(int $code, string $message,$data=[],$encrypt=false) ~~~ 用户修改: ~~~ 总管理员:admin 密码:admin123 ~~~ ## 其他 * 配置 ~~~ 系统: Linux Centos 7.0+ MySQ:8 Nginx: 1.6+ PHP: 7.3 (php需要开启fileinfo扩展,/runtime和/uploads可写入权限) ~~~ * 数据库导入文件 /data/qqadmin.sql ## Demo * 写日志(tp5.1) ~~~ ~~trace("只是日志字符串","error"); ~~~ ### JWT认证 ~~~ /** * 首页\公共接口 */ class Index extends Common { public function login(){ $user_id=123; //建议只生成一些关键信息,数据量不宜过大 $payload = array( "openid" => "xxxxxxxx", "user_id"=> $user_id ); $token=jwt_encode($payload,$user_id); $payload=jwt_payload();//从Token获取加密的数据 return show_success('登录成功',['token'=>$token]); } } class User extends Common { protected $middleware=['Cors','ApiToken']; //指定中间件 public function userInfo(){ $payload=jwt_payload();//从Token获取加密的数据 $user_id=$payload['token']; } } ~~~ ### 微信支付 ~~~ use Yansongda\Pay\Pay; /** * 微信支付DEMO */ function applyPay(){ $userInfo=jwt_payload();//从上面的jwt中直接解密出openid $orderData = [ 'out_trade_no' =>time(), 'body' => "商品摘要信息", 'total_fee' =>1, 'openid' => "owsWf4speU2LqjxTwmvBK0wd846o", 'notify_url' =>env('APP_URL').'/web/index/notify' ]; try { //小程序支付 $result = Pay::wechat(config("pay.wechat"))->miniapp($orderData); Db::name("order")->where("order_no", $orderData['out_trade_no'])->update([ 'pay_no' => $orderData['out_trade_no'], ]); return show(200, "支付接口参数", $result); } catch (\Exception $e) { return show(503, "支付接口异常",[$e->getMessage()]); } } /** * 微信支付回调DEMO */ function notify() { $wechat = Pay::wechat(config("api.wechat")); // 是的,验签就这么简单! $data = $wechat->verify(); trace("支付回调参数:" . json_encode($data, JSON_UNESCAPED_UNICODE)); $order=OrderModel::where('pay_no',$data->out_trade_no)->find(); if($order->status!=0)return show_success('订单已支付'); try{ DB::startTrans(); $order->status=1; $order->save(); GoodsModel::where('id',$order->goods_id)->setInc('sale_count',1); DB::commit(); }catch(\Exception $e){ DB::rollback(); } } ~~~ ### 小程序获取OPENID,其他接口 ~~~ use EasyWeChat\Factory; public function loginByOpenID(){ $app = Factory::miniProgram(config('wechat.mini_program.default')); $result=$app->auth->session(request()->get('code')); if(isset($result['openid'])){ //注册登录 }else{ return show_error('登录失败',$result); } } ~~~