You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

213 lines
6.6 KiB
PHTML

2 years ago
<?php
namespace Admin\Controller;
use User\Api\UserApi as UserApi;
/**
* 后台首页控制器
* @author 麦当苗儿 <zuojiazi@vip.qq.com>
*/
class AppController extends ThinkController {
const model_name = 'App';
public function lists(){
$this->m_title = 'APP助手上传';
$this->assign('commonset',M('Kuaijieicon')->where(['url'=>'App/lists','status'=>1])->find());
parent::lists(self::model_name,$_GET["p"]);
}
public function add($value='')
{
if(IS_POST){
if(empty($_POST['file_name'])){
$this->error('未上传游戏原包');
}
$d = D('App')->find();
$source = A('App','Event');
if(empty($d)){
$source->add_source();
}
else{
$this->error('游戏已存在原包',U('App/lists'));
}
}
else{
$this->meta_title = '新增游戏原包';
$this->m_title = 'APP助手上传';
$this->assign('commonset',M('Kuaijieicon')->where(['url'=>'App/lists','status'=>1])->find());
$this->display();
}
}
public function del($model = null, $ids=null){
if ( empty($ids) ) {
$this->error("请选择数据");
}
$souce=M("App","tab_");
$map['id']=array("in",$ids);
$list=$souce->where($map)->select();
foreach ($list as $key => $value) {
@unlink($value['file_url']);
}
if($souce->where($map)->delete()){
$this->success("删除成功!");
} else {
$this->error('删除失败!');
}
}
public function edit($id){
$map['id']=$id;
if(IS_POST){
if(empty($_POST['file_name'])){
$this->error('未上传游戏原包');
}
if($_POST['id'] == 4 || $_POST['id'] == 6) {
if(empty($_POST['bao_name'])) {
$this->error('包名不能为空');
}
}
$d = D('App')->where($map)->find();
$source = A('App','Event');
if(empty($d)){
$source->add_source();
}
else{
$source->update_source($d['id'],$d['file_name']);
}
}
else{
$d = M('App',"tab_")->where($map)->find();
$this->meta_title = '更新APP注释';
$remark = implode('@@@',json_decode($d['remark']));
$d['remark'] = str_replace("@@@","\r\n",$remark);
$this->assign("data",$d);
$this->m_title = 'APP助手上传';
$this->assign('commonset',M('Kuaijieicon')->where(['url'=>'App/lists','status'=>1])->find());
$this->display();
}
}
public function app_package($id=0) {
if (!is_numeric($id) || $id<1) {$this->error('参数错误');}
$data = D('AppApply')->field('id')->where(['app_id'=>$id])->select();
$ids = array_column($data,'id');
R('Apply/app_package',array('ids'=>$ids));
}
public function get_app_pack($source_url='',$sdk_version=1){
//获取ios版本
if($source_url==''||!file_exists($source_url)){
$this->ajaxReturn('app上传地址无效请刷新页面重新上传');
}
if($sdk_version==1){
$newname = "and_app_package_for_version.apk";
$versionpath = '';
$newvpath = '';
}else{
$newname = "ios_app_package_for_version.ipa";
$versionpath = 'Payload/XiGuMobileGame.app/Info.Plist';
$newvpath = 'ios_version';
}
$to = "./Uploads/App/" . $newname;
$cp = copy($source_url, $to);
if($cp==false){
$newname = $source_url;
}else{
@unlink($source_url);
}
$jsonreturn['status'] = 0;
$jsonreturn['data'] = '';
if(!$cp){
$jsonreturn['info'] = 'app复制失败请刷新页面重新上传';
$this->ajaxReturn($jsonreturn);
}
//安卓不自动获取版本号
if($sdk_version==1){
$jsonreturn['status'] = 1;
$jsonreturn['info'] = '获取成功';
$jsonreturn['newpath'] = $newname;
$this->ajaxReturn($jsonreturn);
}
$zip = new \ZipArchive;
$open = $zip->open($to, \ZipArchive::CREATE);
if(!$open){
$jsonreturn['info'] = 'app打开失败请刷新页面重新上传';
$this->ajaxReturn($jsonreturn);
}else{
for($i = 0; $i < $zip->numFiles; $i++) {
$path = $zip->getNameIndex($i);
if($path==$versionpath){
$jieya = $zip->extractTo('Uploads/App/'.$newvpath, array($zip->getNameIndex($i)));
$zip->close();
$content = file_get_contents('Uploads/App/'.$newvpath.'/'.$path);
if(empty($content)){
$jsonreturn['info'] = 'app获取信息失败请确认app正确并刷新重新上传';
$this->ajaxReturn($jsonreturn);
}else{
$xmla = "/<!-[\s\S]*?-->/si";//去除xml注释
$xml= preg_replace($xmla ,'', $content);
$xxml = preg_replace("/\s+/", " ", $xml);
$BundleVersion = '/CFBundleVersion<\/key> <string>(.*?)<\/string>/si';//BundleVersion
preg_match_all($BundleVersion , $xxml , $user_permission);
if(!$user_permission[1][0]){
$jsonreturn['info'] = 'app版本获取失败请确认app正确并刷新重新上传';
$this->ajaxReturn($jsonreturn);
}else{
$jsonreturn['status'] = 1;
$jsonreturn['info'] = '获取成功';
$jsonreturn['data'] = $user_permission[1][0];
$jsonreturn['newpath'] = $newname;
$this->ajaxReturn($jsonreturn);
}
}
}
}
$jsonreturn['info'] = 'app获取信息失败请确认app正确并刷新重新上传';
$this->ajaxReturn($jsonreturn);
}
}
public function hex_to_str($hex_str='') {
if(empty($hex_str)) {return '';}
$str = '';
for($i=0;$i<strlen($hex_str)-1;$i+=2) {
$str.=chr(hexdec($hex_str[$i].$hex_str[$i+1]));
}
return $str;
}
}