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
PHP

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<?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;
}
}