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);
+ }
}