123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299 |
- <?php
- /**
- * @copyright Copyright (c) 2017 https://www.sapixx.com All rights reserved.
- * @license Licensed (http://www.apache.org/licenses/LICENSE-2.0).
- * @author pillar<ltmn@qq.com>
- * 小程序管理
- */
- namespace app\system\controller\passport;
- use app\common\facade\WechatProgram;
- use app\common\model\SystemMemberMiniappOrder;
- use app\common\model\SystemMiniapp;
- use app\common\model\SystemMemberMiniappCode;
- use app\common\facade\Qrcode;
- use think\facade\Request;
- use app\common\facade\Upload;
- class Miniapp extends Common{
- protected $program;
- public function initialize() {
- parent::initialize();
- if($this->user->lock_config){
- $this->error('你账户锁定配置权限');
- }
- if($this->user->parent_id){
- $this->error('无权限访问,只有创始人身份才允许使用.');
- }
- if(!$this->member_miniapp_id){
- $this->error('未找到所属应用,请先开通应用.');
- }
- if ($this->member_miniapp->miniapp->types == 'mp' || $this->member_miniapp->miniapp->types == 'app'){
- $this->error('非小程序应用',url('system/passport.setting/index'));
- }
- if($this->member_miniapp->miniapp->is_openapp){
- $this->error('非SaaS应用请自行配置应用',url('system/passport.setting/index'));
- }
- $this->program = WechatProgram::isTypes($this->member_miniapp_id);
- if(!$this->program){
- $this->error('小程序还未授权,禁止操作');
- }
- }
-
- /**
- * 提交审核
- * @access public
- */
- public function submitPass(){
- $getcate = $this->program->code->getCategory(); //小程序权限目录
- if($getcate['errcode'] == -1){
- $this->error($getcate['errmsg']);
- }
- $page = $this->program->code->getPage(); //小程序页面
- if($page['errcode'] != 0){
- $this->error($page['errmsg']);
- }
- $cate = [];
- foreach ($getcate['category_list'] as $key => $value) {
- $cate[$key]['name'] = empty($value['third_class']) ? $value['first_class'].'-'.$value['second_class'] : $value['first_class'].'-'.$value['second_class'].'-'.$value['third_class'];
- $cate[$key]['id'] = empty($value['third_id']) ? $value['first_id'].'-'.$value['second_id'] : $value['first_id'].'-'.$value['second_id'].'-'.$value['third_id'];
- }
- $view['cate'] = $cate;
- $view['page'] = $page['page_list'];
- $view['id'] = $this->member_miniapp_id;
- return view()->assign($view);
- }
-
- /**
- * 以下部分是微信小程序官方操作
- * ###########################################
- * 设置域名
- */
- public function domain(){
- if(request()->isAjax()){
- $rel = SystemMemberMiniappCode::where(['member_miniapp_id'=>$this->member_miniapp_id,'member_id' => $this->user->id])->find();
- if(!empty($rel) && $rel->is_commit == 3 && $rel->state == 1){
- return enjson(0,'审核中小程序禁止设置业务域名');
- }
- $url['action'] = 'set';
- $url['requestdomain'] = ['https://res.'.Request::rootDomain(),'https://'.$this->web['url']];
- $url['wsrequestdomain'] = ['wss://res.'.Request::rootDomain(),'wss://'.$this->web['url']];
- $url['uploaddomain'] = $url['requestdomain'];
- $url['downloaddomain'] = $url['requestdomain'];
- $miniapp = WechatProgram::isTypes($this->member_miniapp_id);
- if(!$miniapp){
- return enjson(0,'小程序还未授权,禁止操作');
- }
- $rel = $this->program->domain->modify($url);
- if($rel['errcode'] > 0){
- return enjson(0,'服务器域名:'.$rel['errmsg']);
- }
- $this->program->domain->setWebviewDomain([Request::scheme().'://'.Request::rootDomain()]); //设置业务域名
- $data['is_commit'] = 2;
- $data['member_miniapp_id'] = $this->member_miniapp_id;
- $data['member_id'] = $this->user['id'];
- SystemMemberMiniappCode::edit(['member_miniapp_id'=>$this->member_miniapp_id,'member_id' =>$this->user->id],$data);
- return enjson(200,'设置域名成功');
- }
- }
- /**
- * 上传代码
- */
- public function upCode(){
- if(request()->isAjax()){
- $rel = SystemMemberMiniappCode::where(['member_miniapp_id'=>$this->member_miniapp_id,'member_id' => $this->user->id])->find();
- if(!empty($rel) && $rel->is_commit == 3 && $rel->state == 1){
- return enjson(0,'审核中小程序禁止上传代码');
- }
- //读取小程序信息
- $app = SystemMiniapp::where(['id'=>$this->member_miniapp->miniapp_id,'is_lock'=>0])->find();
- if(empty($app)){
- return json(['code'=>200,'msg'=>'小程序不存在或暂停服务']);
- }
- //上传参数
- $miniapp = WechatProgram::isTypes($this->member_miniapp_id);
- if(!$miniapp){
- return json(['code'=>0,'msg'=>'小程序还未授权,禁止操作']);
- }
- $extJson = [
- 'extAppid' => $this->member_miniapp->miniapp_appid,
- 'ext' => [
- "name" => $this->member_miniapp->appname,
- "attr" => [
- 'host' => 'https://'.Request::host(),
- 'miniapp' => $this->member_miniapp->service_id,
- ],
- ],
- "window" => ['navigationBarTitleText' => $this->member_miniapp->appname]
- ];
- $miniapp = $this->program->code->commit($app->template_id,json_encode($extJson),$app->version,$app->describe);
- //更新信息
- $data['is_commit'] = 3;
- $data['member_miniapp_id'] = $this->member_miniapp_id;
- $data['member_id'] = $this->user->id;
- SystemMemberMiniappCode::edit(['member_miniapp_id'=>$this->member_miniapp_id,'member_id' =>$this->user->id],$data);
- return json(['code'=>200,'msg'=>'上传代码成功']);
- }
- }
- /**
- * 拉取二维码
- */
- public function getQrcode(){
- if(request()->isAjax()){
- $miniapp = WechatProgram::isTypes($this->member_miniapp_id);
- if(!$miniapp){
- return enjson(0,'小程序还未授权,禁止操作');
- }
- try {
- $qrcode = $this->program->code->getQrCode();
- } catch (\Exception $e) {
- return enjson(0,'小程序还未授权,禁止操作');
- }
- $data['trial_qrcode'] = Qrcode::saveQcode($qrcode,'miniapp_'.$this->member_miniapp_id);
- $data['member_miniapp_id'] = $this->member_miniapp_id;
- $data['member_id'] = $this->user->id;
- SystemMemberMiniappCode::edit(['member_miniapp_id'=>$this->member_miniapp_id,'member_id' =>$this->user->id],$data);
- return enjson(200,'读取体验二维码成功');
- }else{
- return enjson(0,'读取体验二维码失败');
- }
- }
- /**
- * 提交审核
- */
- public function addPass(){
- if(request()->isAjax()){
- $param = [
- 'cate' => $this->request->param('cate'),
- 'scene' => $this->request->param('scene/a'),
- 'other_scene_desc' => $this->request->param('other_scene_desc/s'),
- 'method' => $this->request->param('method/a'),
- 'has_audit_team' => $this->request->param('has_audit_team/d'),
- 'audit_desc' => $this->request->param('has_audit_team/d'),
- 'feedback_info' => $this->request->param('feedback_info/s'),
- 'imgs' => $this->request->param('imgs/a',[]),
- ];
- $validate = $this->validate($param,'open.addpass');
- if(true !== $validate){
- return json(['code'=>0,'msg'=>$validate]);
- }
- //UGC内容生成
- $ugc = [];
- if($param['scene'][0] || ($param['scene'][0] == 0 && count($param['scene']) >= 2)){
- $ugc['scene'] = $param['scene'];
- if(in_array(5,$param['scene']) && empty($param['other_scene_desc'])){
- return enjson(0,'其它UGC场景的必须填写UGC说明');
- }
- if(in_array(5,$param['scene'])){
- $ugc['other_scene_desc'] = $param['other_scene_desc'];
- }
- if($param['scene'][0] == 0){
- unset($param['scene'][0]);
- $param['scene'] = array_values($param['scene']);
- }
- $ugc['scene'] = $param['scene'];
- $ugc['method'] = $param['method'];
- $ugc['has_audit_team'] = $param['has_audit_team'];
- $ugc['audit_desc'] = $param['audit_desc'];
- }
- $miniapp = WechatProgram::isTypes($this->member_miniapp_id);
- if(!$miniapp){
- return json(['code'=>0,'msg'=>'小程序还未授权,禁止操作']);
- }
- //上传小程序截图
- $preview_info = [];
- if(!empty($param['imgs'])){
- $data = Upload::uploadWechatWeapp($this->member_miniapp_id,$param['imgs']);
- if(!empty($data)){
- $preview_info['pic_id_list'] = array_column($data,'media_id');
- }
- }
- //读取分类
- /**
- * $getcate = $this->program->code->getCategory();
- * if($getcate['errcode'] == -1){
- * $this->error($getcate['errmsg']);
- * }
- * $itemlist = [array_merge(["address"=> $param['page'],"tag"=> $param['tag'],"title"=> $param['name']],$getcate['category_list'][$param['cate']])];
- */
- //提交审核单
- $rel = $this->program->code->submitAudit([],$preview_info,$ugc,$param['feedback_info']);
- if($rel['errcode'] != 0){
- return json(['code'=>0,'msg'=>'提交审核:'.$rel['errmsg']]);
- }
- $code_data['is_commit'] = 3;
- $code_data['state'] = 1;
- $code_data['member_miniapp_id'] = $this->member_miniapp_id;
- $code_data['member_id'] = $this->user->id;
- $code_data['auditid'] = $rel['auditid'];
- SystemMemberMiniappCode::edit(['member_miniapp_id' => $this->member_miniapp_id,'member_id' => $this->user->id],$code_data);
- return json(['code'=>200,'msg'=>'成功提交审核','url'=>url('system/passport.setting/index')]);
- }else{
- return json(['code'=>0,'msg'=>'读取体验二维码失败']);
- }
- }
- /**
- * 强制撤销审核
- * @access public
- */
- public function restPass(){
- if(request()->isAjax()){
- $miniapp = WechatProgram::isTypes($this->member_miniapp_id);
- if(!$miniapp){
- return json(['code'=>0,'msg'=>'小程序还未授权,禁止操作']);
- }
- $rel = $this->program->code->withdrawAudit();
- if($rel['errcode'] == 0){
- $data['is_commit'] = 2;
- $data['state'] = 0;
- $data['member_miniapp_id'] = $this->member_miniapp_id;
- $data['member_id'] = $this->user->id;
- SystemMemberMiniappCode::edit(['member_miniapp_id'=>$this->member_miniapp_id,'member_id' => $this->user->id],$data);
- return json(['code'=>200,'msg'=>'撤回成功']);
- }else{
- return json(['code'=>0,'msg'=>'撤回失败:'.$rel['errmsg']]);
- }
- }else{
- return json(['code'=>0,'msg'=>'读取体验二维码失败']);
- }
- }
- /**
- * 发布小程序
- */
- public function sendApp(){
- if(request()->isAjax()){
- $rel = WechatProgram::isTypes($this->member_miniapp_id)->code->release();
- switch ($rel['errcode']) {
- case 0:
- //修改发布状态
- SystemMemberMiniappCode::edit(['member_miniapp_id' => $this->member_miniapp_id,'member_id' =>$this->user->id],['is_commit' => 4,'state' => 0,'member_miniapp_id'=>$this->member_miniapp_id,'member_id'=>$this->user->id]);
- //同步本地版本
- SystemMemberMiniappOrder::where(['id' => $this->member_miniapp->miniapp_order_id])->update(['update_var' => $this->member_miniapp->miniapp->template_id]);
- return json(['code'=>200,'msg'=>'发布成功']);
- break;
- case 85019:
- return json(['code'=>0,'msg'=>'没有审核版本']);
- break;
- case 85020:
- return json(['code'=>0,'msg'=>'审核状态未满足发布']);
- break;
- case -1:
- return json(['code'=>0,'msg'=>'系统繁忙']);
- break;
- default:
- return json(['code'=>0,'msg'=>$rel['errmsg']]);
- break;
- }
- }else{
- return json(['code'=>0,'msg'=>'小程序发布失败']);
- }
- }
- }
|