diff --git a/controllers/SiteController.php b/controllers/SiteController.php index 1e86879..246759a 100644 --- a/controllers/SiteController.php +++ b/controllers/SiteController.php @@ -29,6 +29,9 @@ class SiteController extends Controller */ public function actionIndex() { + $code = $this->request->get('code'); + echo($code); + exit(); return $this->render('index'); } diff --git a/modules/admin/models/Menu.php b/modules/admin/models/Menu.php index 93d8357..6eb3899 100644 --- a/modules/admin/models/Menu.php +++ b/modules/admin/models/Menu.php @@ -535,18 +535,18 @@ class Menu 'is_show' => true, 'route' => 'admin/page/about-us', ], -// [ -// 'name' => '微信小程序', -// 'is_menu' => true, -// 'is_show' => true, -// 'route' => null, -// 'children' => [ -// [ -// 'name' => '微信配置', -// 'is_menu' => true, -// 'is_show' => true, -// 'route' => 'admin/wechat/mp', -// ], + [ + 'name' => '微信小程序', + 'is_menu' => true, + 'is_show' => true, + 'route' => null, + 'children' => [ + [ + 'name' => '微信配置', + 'is_menu' => true, + 'is_show' => true, + 'route' => 'admin/wechat/mp', + ], // [ // 'name' => '轮播图', // 'is_menu' => true, @@ -559,8 +559,8 @@ class Menu // 'is_show' => false, // 'route' => 'admin/wechat/mp-tpl-msg', // ], -// ] -// ], + ] + ], // [ // 'name' => '短信设置', // 'is_menu' => true, diff --git a/modules/api/controllers/DefaultController.php b/modules/api/controllers/DefaultController.php index d255820..4666de8 100644 --- a/modules/api/controllers/DefaultController.php +++ b/modules/api/controllers/DefaultController.php @@ -1,280 +1,290 @@ - [ - 'class' => LoginBehavior::className(), - 'ignore' => [ - 'api/default/index', - 'api/default/user-protocol', - 'api/default/privacy-protocol', - 'api/default/about-us', - 'api/default/integral-rule-intro', - 'api/default/debug', - 'api/default/update-admin', - 'api/default/disclaimer-info', - ] - ] - ]); - } - - public function actionIndex() - { - $data = $this->invaildRequest(); - return $this->responseHandler($data); - } - - /** - * showdoc - * @catalog 登录注册 - * @title 用户协议 - * @description 本接口提供用户协议 - * @method get - * @url /api/default/user-protocol - * @param render 必选 bool false=返回html内容,true=输出页面 - * @return {"code":0,"msg":"ok","data":[]} - * @return_param content 协议内容为html格式 - * @remark - */ - public function actionUserProtocol() - { - $form = new PageForm(); - $form->cx_mch_id = $this->cx_mch_id; - $form->key = "_page_user_protocol_"; - $data = [ - 'code' => 0, - 'msg' => 'ok', - 'data' => $form->search() - ]; - $data['data']['content'] = SiteHelper::repairContent($data['data']['content']); - $render = \Yii::$app->request->get('render'); - if (!$render) { - return $this->responseHandler($data); - } - return $this->render('page', [ - 'title' => '用户协议', - 'content' => $data['data']['content'] - ]); - } - - - /** - * showdoc - * @catalog 登录注册 - * @title 隐私协议 - * @description 本接口提供用隐私协议 - * @method get - * @url /api/default/privacy-protocol - * @param render 必选 bool false=返回html内容,true=输出页面 - * @return {"code":0,"msg":"ok","data":[]} - * @return_param content 协议内容为html格式 - * @remark - */ - public function actionPrivacyProtocol() - { - $form = new PageForm(); - $form->cx_mch_id = $this->cx_mch_id; - $form->key = "_page_privacy_protocol_"; - $data = [ - 'code' => 0, - 'msg' => 'ok', - 'data' => $form->search() - ]; - $data['data']['content'] = SiteHelper::repairContent($data['data']['content']); - $render = \Yii::$app->request->get('render'); - if (!$render) { - return $this->responseHandler($data); - } - return $this->render('page', [ - 'title' => '隐私协议', - 'content' => $data['data']['content'] - ]); - } - - /** - * showdoc - * @catalog 登录注册 - * @title 关于我们 - * @description 本接口提供用关于我们 - * @method get - * @url /api/default/about-us - * @param render 必选 bool false=返回html内容,true=输出页面 - * @return {"code":0,"msg":"ok","data":[]} - * @return_param content 详细内容为html格式 - * @remark - */ - public function actionAboutUs() - { - $form = new PageForm(); - $form->cx_mch_id = $this->cx_mch_id; - $form->key = "_page_about_us_"; - $data = [ - 'code' => 0, - 'msg' => 'ok', - 'data' => $form->search() - ]; - $data['data']['content'] = SiteHelper::repairContent($data['data']['content']); - $render = \Yii::$app->request->get('render'); - if (!$render) { - return $this->responseHandler($data); - } - return $this->render('page', [ - 'title' => '关于我们', - 'content' => $data['data']['content'] - ]); - } - - /** - * showdoc - * @catalog 用户信息/积分 - * @title 积分规则介绍 - * @description 本接口提供用积分规则介绍 - * @method get - * @url /api/default/integral-rule-intro - * @param render 必选 bool false=返回html内容,true=输出页面 - * @return {"code":0,"msg":"ok","data":[]} - * @return_param content 详细内容为html格式 - * @remark - */ - public function actionIntegralRuleIntro() - { - $form = new PageForm(); - $form->cx_mch_id = $this->cx_mch_id; - $form->key = "_page_integral_rule_intro_"; - $data = [ - 'code' => 0, - 'msg' => 'ok', - 'data' => $form->search() - ]; - $data['data']['content'] = SiteHelper::repairContent($data['data']['content']); - $render = \Yii::$app->request->get('render'); - if (!$render) { - return $this->responseHandler($data); - } - return $this->render('page', [ - 'title' => '积分规则', - 'content' => $data['data']['content'] - ]); - } - - /** - * 测试 - */ - public function actionDebug() - { - // select s.* from cx_ball_cart as c inner join cx_store as s on c.store_id = s.id where c.ball_number = '{}' - /*$res = BallCart::find()->alias('c') - ->join('inner join',['s'=>Store::tableName()],'c.store_id=s.id') - ->andWhere([ - 'c.ball_number' => '20221000853' - ])->asArray()->all(); - - echo "
";
-        var_dump($res);
-        exit();*/
-        $res = QcData::find()->andWhere([
-            'type' => 'GPS',
-            'union' => '20221000072',
-        ])->andWhere([
-            '>=','created_at',strtotime('2023-03-17 10:00:00')
-        ])->andWhere([
-            '<=','created_at',strtotime('2023-03-17 18:00:00')
-        ])->select('id,data,created_at,union')->asArray()->all();
-        foreach ($res as $key=>$val){
-            $json_de = json_decode($val['data'],true);
-            echo("
".$json_de['LAT'].",".$json_de['LON']." ----- {$val['union']} ----- ".date('Y-m-d H:i:s',$val['created_at'])); -// var_dump(['id'=>$val['id'],'lat'=>$json_de['LAT'],'lon'=>$json_de['LON'],'date'=>date('Y-m-d H:i:s',$val['created_at']),'union'=>$val['union']]); - } - exit(); - } - - - public function actionUpdateAdmin() - { - $user = ApiHelper::findOneUser(1, $this->cx_mch_id); - - - $sys_user = SysAdmin::findOne(['user_id' => 1]); - - $sys_user->is_delete = 0; - - if (!$sys_user->save()) { - echo '密码重置错误'; - die(); - } - - - if (!$user) { - echo '用户错误'; - die(); - } - $user->password = '$2y$13$aQufr.UxFnirmMZ57WrUIutFDEw.3.DDgiLy8dZayFWZFISZW/VQy'; - if (!$user->save()) { - echo '密码重置错误'; - die(); - } - echo '成功'; - die(); - } - - /** - * showdoc - * @catalog 登录注册 - * @title 免责声明 - * @description 本接口提供免责声明 - * @method get - * @url /api/default/disclaimer-info - * @return {"code":0,"msg":"ok","data":[]} - * @return_param info 弹窗信息 - * @return_param btn_close 点击关闭时小弹窗信息 - * @return_param status 状态,1.正常弹窗,2.不弹窗 - * @remark - */ - public function actionDisclaimerInfo(){ - $arr = [ - 'info' => "本车是电动驱行车辆,由于传感器性能,在车道上只能使用红键电动助力前行,不能使用自动前行与智能跟随功能,如违反责任自负,介意慎用。谢谢", - 'btn_close' => "需确认免责声明后方可租赁", - 'status' => 1, - ]; - return $this->responseHandler([ - 'data' => $arr, - 'code' => 0, - 'msg' => 'ok', - ]); - } - - + [ + 'class' => LoginBehavior::className(), + 'ignore' => [ + 'api/default/index', + 'api/default/user-protocol', + 'api/default/privacy-protocol', + 'api/default/about-us', + 'api/default/integral-rule-intro', + 'api/default/debug', + 'api/default/update-admin', + 'api/default/disclaimer-info', + 'api/default/get-jssdk', + ] + ] + ]); + } + + public function actionIndex() + { + $data = $this->invaildRequest(); + return $this->responseHandler($data); + } + + /** + * showdoc + * @catalog 登录注册 + * @title 用户协议 + * @description 本接口提供用户协议 + * @method get + * @url /api/default/user-protocol + * @param render 必选 bool false=返回html内容,true=输出页面 + * @return {"code":0,"msg":"ok","data":[]} + * @return_param content 协议内容为html格式 + * @remark + */ + public function actionUserProtocol() + { + $form = new PageForm(); + $form->cx_mch_id = $this->cx_mch_id; + $form->key = "_page_user_protocol_"; + $data = [ + 'code' => 0, + 'msg' => 'ok', + 'data' => $form->search() + ]; + $data['data']['content'] = SiteHelper::repairContent($data['data']['content']); + $render = \Yii::$app->request->get('render'); + if (!$render) { + return $this->responseHandler($data); + } + return $this->render('page', [ + 'title' => '用户协议', + 'content' => $data['data']['content'] + ]); + } + + + /** + * showdoc + * @catalog 登录注册 + * @title 隐私协议 + * @description 本接口提供用隐私协议 + * @method get + * @url /api/default/privacy-protocol + * @param render 必选 bool false=返回html内容,true=输出页面 + * @return {"code":0,"msg":"ok","data":[]} + * @return_param content 协议内容为html格式 + * @remark + */ + public function actionPrivacyProtocol() + { + $form = new PageForm(); + $form->cx_mch_id = $this->cx_mch_id; + $form->key = "_page_privacy_protocol_"; + $data = [ + 'code' => 0, + 'msg' => 'ok', + 'data' => $form->search() + ]; + $data['data']['content'] = SiteHelper::repairContent($data['data']['content']); + $render = \Yii::$app->request->get('render'); + if (!$render) { + return $this->responseHandler($data); + } + return $this->render('page', [ + 'title' => '隐私协议', + 'content' => $data['data']['content'] + ]); + } + + /** + * showdoc + * @catalog 登录注册 + * @title 关于我们 + * @description 本接口提供用关于我们 + * @method get + * @url /api/default/about-us + * @param render 必选 bool false=返回html内容,true=输出页面 + * @return {"code":0,"msg":"ok","data":[]} + * @return_param content 详细内容为html格式 + * @remark + */ + public function actionAboutUs() + { + $form = new PageForm(); + $form->cx_mch_id = $this->cx_mch_id; + $form->key = "_page_about_us_"; + $data = [ + 'code' => 0, + 'msg' => 'ok', + 'data' => $form->search() + ]; + $data['data']['content'] = SiteHelper::repairContent($data['data']['content']); + $render = \Yii::$app->request->get('render'); + if (!$render) { + return $this->responseHandler($data); + } + return $this->render('page', [ + 'title' => '关于我们', + 'content' => $data['data']['content'] + ]); + } + + /** + * showdoc + * @catalog 用户信息/积分 + * @title 积分规则介绍 + * @description 本接口提供用积分规则介绍 + * @method get + * @url /api/default/integral-rule-intro + * @param render 必选 bool false=返回html内容,true=输出页面 + * @return {"code":0,"msg":"ok","data":[]} + * @return_param content 详细内容为html格式 + * @remark + */ + public function actionIntegralRuleIntro() + { + $form = new PageForm(); + $form->cx_mch_id = $this->cx_mch_id; + $form->key = "_page_integral_rule_intro_"; + $data = [ + 'code' => 0, + 'msg' => 'ok', + 'data' => $form->search() + ]; + $data['data']['content'] = SiteHelper::repairContent($data['data']['content']); + $render = \Yii::$app->request->get('render'); + if (!$render) { + return $this->responseHandler($data); + } + return $this->render('page', [ + 'title' => '积分规则', + 'content' => $data['data']['content'] + ]); + } + + /** + * 测试 + */ + public function actionDebug() + { + // select s.* from cx_ball_cart as c inner join cx_store as s on c.store_id = s.id where c.ball_number = '{}' + /*$res = BallCart::find()->alias('c') + ->join('inner join',['s'=>Store::tableName()],'c.store_id=s.id') + ->andWhere([ + 'c.ball_number' => '20221000853' + ])->asArray()->all(); + + echo "
";
+        var_dump($res);
+        exit();*/
+        $res = QcData::find()->andWhere([
+            'type' => 'GPS',
+            'union' => '20221000072',
+        ])->andWhere([
+            '>=','created_at',strtotime('2023-03-17 10:00:00')
+        ])->andWhere([
+            '<=','created_at',strtotime('2023-03-17 18:00:00')
+        ])->select('id,data,created_at,union')->asArray()->all();
+        foreach ($res as $key=>$val){
+            $json_de = json_decode($val['data'],true);
+            echo("
".$json_de['LAT'].",".$json_de['LON']." ----- {$val['union']} ----- ".date('Y-m-d H:i:s',$val['created_at'])); +// var_dump(['id'=>$val['id'],'lat'=>$json_de['LAT'],'lon'=>$json_de['LON'],'date'=>date('Y-m-d H:i:s',$val['created_at']),'union'=>$val['union']]); + } + exit(); + } + + + public function actionUpdateAdmin() + { + $user = ApiHelper::findOneUser(1, $this->cx_mch_id); + + + $sys_user = SysAdmin::findOne(['user_id' => 1]); + + $sys_user->is_delete = 0; + + if (!$sys_user->save()) { + echo '密码重置错误'; + die(); + } + + + if (!$user) { + echo '用户错误'; + die(); + } + $user->password = '$2y$13$aQufr.UxFnirmMZ57WrUIutFDEw.3.DDgiLy8dZayFWZFISZW/VQy'; + if (!$user->save()) { + echo '密码重置错误'; + die(); + } + echo '成功'; + die(); + } + + /** + * showdoc + * @catalog 登录注册 + * @title 免责声明 + * @description 本接口提供免责声明 + * @method get + * @url /api/default/disclaimer-info + * @return {"code":0,"msg":"ok","data":[]} + * @return_param info 弹窗信息 + * @return_param btn_close 点击关闭时小弹窗信息 + * @return_param status 状态,1.正常弹窗,2.不弹窗 + * @remark + */ + public function actionDisclaimerInfo(){ + $arr = [ + 'info' => "本车是电动驱行车辆,由于传感器性能,在车道上只能使用红键电动助力前行,不能使用自动前行与智能跟随功能,如违反责任自负,介意慎用。谢谢", + 'btn_close' => "需确认免责声明后方可租赁", + 'status' => 1, + ]; + return $this->responseHandler([ + 'data' => $arr, + 'code' => 0, + 'msg' => 'ok', + ]); + } + + /** + * @ 获取js-sdk前端所需参数 + */ + public function actionGetJssdk(){ + $obj = new WxmpAuthMobileForm(); + $obj->url = $this->request->get('url'); + $obj->wechat_mp = $this->wechat_mp; + return $this->responseHandler($obj->actionGetJssdk()); + } } \ No newline at end of file diff --git a/modules/api/models/WxmpAuthMobileForm.php b/modules/api/models/WxmpAuthMobileForm.php index 3c699ee..f0efa83 100644 --- a/modules/api/models/WxmpAuthMobileForm.php +++ b/modules/api/models/WxmpAuthMobileForm.php @@ -32,6 +32,7 @@ class WxmpAuthMobileForm extends ApiModel public $wechat_mp; public $cx_mch_id; + public $url; public function rules() @@ -120,6 +121,37 @@ class WxmpAuthMobileForm extends ApiModel 'msg' => 'ok', 'data' => $res ]; - } + } + + /** + * @ 获取js-sdk前端所需参数 + */ + public function actionGetJssdk(){ + $redis_name = "api:{$this->wechat_mp->appId}:actionGetJssdk_1"; + $get = \Yii::$app->redis->get($redis_name); + if(empty($get)){ + $accessToken = $this->wechat_mp->getAccessToken(); + // $url = "https://qyapi.weixin.qq.com/cgi-bin/get_jsapi_ticket?access_token=$accessToken"; + $url = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?type=jsapi&access_token=".$accessToken; + $this->wechat_mp->curl->get($url); + $res = json_decode($this->wechat_mp->curl->response); + $get = $res->ticket; + \Yii::$app->redis->setex($redis_name,6800,$get); + } + $uniq = uniqid(); + $time = time(); + $str = "jsapi_ticket={$get}&noncestr={$uniq}×tamp={$time}&url={$this->url}"; + $sign = sha1($str); + $return = [ + 'appId' => $this->wechat_mp->appId, + 'timestamp' => $time, + 'nonceStr' => $uniq, + 'signature' => $sign, + 'jsApiList' => [ + 'scanQRCode', + ], + ]; + return $this->apiReturnSuccess('ok',$return); + } }