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.

1006 lines
37 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 Qiniu\Storage\UploadManager;
use User\Api\UserApi as UserApi;
use OSS\OssClient;
use OSS\Core\OSsException;
use Qiniu\Storage\BucketManager;
use Qiniu\Auth;
use Think\Controller;
use BaiduBce\BceClientConfigOptions;
use BaiduBce\Util\Time;
use BaiduBce\Util\MimeTypes;
use BaiduBce\Http\HttpHeaders;
use BaiduBce\Services\Bos\BosClient;
use BaiduBce\Services\Bos\CannedAcl;
use BaiduBce\Services\Bos\BosOptions;
use BaiduBce\Auth\SignOptions;
use BaiduBce\Log\LogFactory;
use Admin\Model\ApplyModel;
/**
* 后台首页控制器
*
* @author 麦当苗儿 <zuojiazi@vip.qq.com>
*/
class ApplyController extends ThinkController
{
const model_name = 'Apply';
public function lists()
{
if (isset($_REQUEST['game_name'])) {
if ($_REQUEST['game_name'] == '全部') {
unset($_REQUEST['game_name']);
} else {
$map['game_id'] = get_game_id($_REQUEST['game_name']);
unset($_REQUEST['game_name']);
}
}
if (isset($_REQUEST['promote_name'])) {
if ($_REQUEST['promote_name'] == '全部') {
unset($_REQUEST['promote_name']);
} else if ($_REQUEST['promote_name'] == '自然注册') {
$map['promote_id'] = array("elt", 0);
unset($_REQUEST['promote_name']);
} else {
$map['promote_id'] = get_promote_id($_REQUEST['promote_name']);
unset($_REQUEST['promote_name']);
}
}
if (isset($_REQUEST['time-start']) && isset($_REQUEST['time-end'])) {
$map['apply_time'] = array('BETWEEN', array(strtotime($_REQUEST['time-start']), strtotime($_REQUEST['time-end']) + 24 * 60 * 60 - 1));
unset($_REQUEST['time-start']);
unset($_REQUEST['time-end']);
}
if (isset($_REQUEST['start']) && isset($_REQUEST['end'])) {
$map['apply_time'] = array('BETWEEN', array(strtotime($_REQUEST['start']), strtotime($_REQUEST['end']) + 24 * 60 * 60 - 1));
unset($_REQUEST['start']);
unset($_REQUEST['end']);
}
parent ::lists(self::model_name, $_GET["p"], $map);
}
public function app_lists($p = 0)
{
$page = intval($p);
$page = $page ? $page : 1; //默认显示第一页数据
if (isset($_REQUEST['row'])) {
$row = $_REQUEST['row'];
} else {
$row = 10;
}
"" == I('status') || $map['status'] = I('status');
//"" == I('app_version') || $map['app_version'] = I('app_version');
"" == I('promote_id') || $map['promote_id'] = I('promote_id');
"" == I('enable_status') || $map['enable_status'] = I('enable_status');
if (empty($_GET['type']) || $_GET['type'] == 1) {
$map['app_version'] = 1;
} else {
$map['app_version'] = 2;
}
//为数据权限添加
setPowerPromoteIds($map);
$data = M('app_apply', 'tab_')
-> where($map)
-> order('apply_time desc')
-> page($page, $row)
-> select();
$count = M('app_apply', 'tab_') -> where($map) -> count();
//分页
$page = set_pagination($count, $row);
if ($page) {
$this -> assign('_page', $page);
}
$this -> assign('list_data', $data);
$this -> meta_title = 'APP分包';
$this -> m_title = '游戏盒子APP分包';
$this -> assign('commonset', M('Kuaijieicon') -> where(['url' => 'Apply/app_lists', 'status' => 1]) -> find());
$show_data_power = (is_administrator()|| session('user_auth')['show_data']);
$this->assign('show_data_power', $show_data_power);
$this -> display();
}
public function and_lists()
{
if (isset($_REQUEST['game_name'])) {
if ($_REQUEST['game_name'] == '全部') {
unset($_REQUEST['game_name']);
} else {
$map['game_id'] = get_game_id($_REQUEST['game_name']);
unset($_REQUEST['game_name']);
}
}
if (is_numeric($_REQUEST['game_id']) && $_REQUEST['game_id'] > 0) {
$map['game_id'] = $_REQUEST['game_id'];
unset($_REQUEST['game_id']);
}
if (is_numeric($_REQUEST['promote_id']) && $_REQUEST['promote_id'] > 0) {
$map['tab_apply.promote_id'] = $_REQUEST['promote_id'];
unset($_REQUEST['promote_id']);
}
if (isset($_REQUEST['promote_account'])) {
$map['account'] = get_promote_id($_REQUEST['promote_account']);
unset($_REQUEST['promote_account']);
}
if (isset($_REQUEST['status'])) {
if ($_REQUEST['status'] == '全部') {
unset($_REQUEST['status']);
} else {
$map['status'] = $_REQUEST['status'];
unset($_REQUEST['status']);
}
}
if (isset($_REQUEST['enable_status'])) {
if ($_REQUEST['enable_status'] == '全部') {
unset($_REQUEST['enable_status']);
} elseif ($_REQUEST['enable_status'] == 0) {
//$map['dow_url'] = '';
$map['enable_status'] = $_REQUEST['enable_status'];
unset($_REQUEST['enable_status']);
} else {
//$map['dow_url']=array('neq','');
$map['enable_status'] = $_REQUEST['enable_status'];
unset($_REQUEST['enable_status']);
}
}
if (isset($_REQUEST['dow_status'])) {
if ($_REQUEST['dow_status'] == '全部') {
unset($_REQUEST['dow_status']);
} else {
$map['tab_apply.dow_status'] = $_REQUEST['dow_status'];
unset($_REQUEST['dow_status']);
}
}
if (I('get.type', 1) == 1) {
$map['tab_apply.sdk_version'] = 1;
} else {
$map['tab_apply.sdk_version'] = 2;
$this -> assign('show_status', 1);
}
$applyModel = new ApplyModel();
$fields = "tab_apply.*,tab_game.ratio as game_ratio,tab_game.money as game_money";
$join = "LEFT JOIN tab_game ON tab_apply.game_id = tab_game.id";
$order = "id desc";
//为数据权限添加
setPowerPromoteIds($map);
$data = $applyModel->joinList($fields, $join, $map, $order);
$this -> meta_title = '游戏分包列表';
$this -> assign('_page', $data['page']);
$listdata = $data['data'];
$launchmodel = M('apply_launch', 'tab_');
foreach ($listdata as $k => $v) {
$listdata[$k]['launch_count'] = $launchmodel -> where(['apply_id' => $v['id']]) -> count();
}
$this -> assign('list_data', $listdata);
$this -> m_title = '游戏分包';
$this -> assign('commonset', M('Kuaijieicon') -> where(['url' => 'Apply/and_lists', 'status' => 1]) -> find());
$show_data_power = (is_administrator()|| session('user_auth')['show_data']);
$this->assign('show_data_power', $show_data_power);
$this -> display();
//parent::order_lists(self::model_name,$_GET["p"],$map);
}
public function ios_lists()
{
if (isset($_REQUEST['game_name'])) {
if ($_REQUEST['game_name'] == '全部') {
unset($_REQUEST['game_name']);
} else {
$map['game_id'] = get_game_id($_REQUEST['game_name']);
unset($_REQUEST['game_name']);
}
}
if (isset($_REQUEST['promote_account'])) {
$map['account'] = get_promote_id($_REQUEST['promote_account']);
unset($_REQUEST['promote_account']);
}
if (isset($_REQUEST['status'])) {
if ($_REQUEST['status'] == '全部') {
unset($_REQUEST['status']);
} else {
$map['status'] = $_REQUEST['status'];
unset($_REQUEST['status']);
}
}
if (isset($_REQUEST['pack_status'])) {
if ($_REQUEST['pack_status'] == '全部') {
unset($_REQUEST['pack_status']);
} elseif ($_REQUEST['pack_status'] == 0) {
$map['pack_url'] = '';
} else {
$map['pack_url'] = array('neq', '');
unset($_REQUEST['pack_status']);
}
}
if (isset($_REQUEST['dow_status'])) {
if ($_REQUEST['dow_status'] == '全部') {
unset($_REQUEST['dow_status']);
} else {
$map['dow_status'] = $_REQUEST['dow_status'];
unset($_REQUEST['dow_status']);
}
}
$map['sdk_version'] = 2;
parent ::order_lists(self::model_name, $_GET["p"], $map);
}
public function edit($id = null)
{
$id || $this -> error('请选择要编辑的用户!');
$model = M('Model') -> getByName(self::model_name); /*通过Model名称获取Model完整信息*/
$model = D('Model') -> find($model['id']);
$model || $this -> error('模型不存在!');
if (IS_POST) {
$Model = D(parse_name(get_table_name($model['id']), 1));
// 获取模型的字段信息
$Model = $this -> checkAttr($Model, $model['id']);
if ($Model -> create() && $Model -> save()) {
$this -> success('保存' . $model['title'] . '成功!', U('lists?model=' . $model['name']));
} else {
$this -> error($Model -> getError());
}
} else {
$fields = get_model_attribute($model['id']);
//获取数据
$data = D(get_table_name($model['id'])) -> find($id);
$map['promote_id'] = $data['promote_id'];
$map['game_id'] = $data['game_id'];
$sett_da = M('settlement', 'tab_') -> where($map) -> find();
$data || $this -> error('数据不存在!');
$this -> assign('model', $model);
$this -> assign('fields', $fields);
$this -> assign('data', $data);
$this -> assign('sett_da', $sett_da);
$this -> meta_title = '编辑' . $model['title'];
$this -> display($model['template_edit'] ? $model['template_edit'] : '');
}
}
public function set_status($model = 'Apply')
{
parent ::set_status($model);
}
public function android_set()
{
$data = M('apply','tab_')->where(['id'=>['in',$_REQUEST['ids']]])->select();
foreach ($data as $key => $value) {
addOperationLog(['op_type'=>1,'key'=>$value['game_name'].$value['promote_account'],'op_name'=>'审核游戏分包','url'=>U('Apply/and_lists'),'menu'=>'推广员-推广员管理-游戏分包-审核游戏分包']);
}
$this -> set_status();
}
public function ios_set()
{
$this -> set_status();
}
//app审核
public function app_audit($ids)
{
$map['id'] = ['in', $ids];
$data['status'] = 1;
$data['dispose_id'] = UID;
$data['dispose_time'] = time();
$res = M('app_apply', 'tab_') -> where($map) -> setField($data);
if ($res !== false) {
$this -> success('审核成功');
} else {
$this -> error('审核失败');
}
}
public function app_package($ids = null)
{
if (!is_array($ids)) {
$ids = [$ids];
}
try {
$ids || $this -> error("打包数据不存在", U('Apply/app_lists'), 1);
static $a = 0;//无数据或没审核
static $b = 0;//原包不存在
static $c = 0;//成功
static $d = 0;//操作失败
static $e = 0;//分包失败
foreach ($ids as $key => $value) {
$apply_data = M('app_apply', 'tab_') -> find($value);
//验证数据正确性
if (empty($apply_data) || $apply_data["status"] != 1) {
$a ++;
continue;
}
#获取原包数据
$source_file = M('app', 'tab_') -> find($apply_data['app_id']);
//验证原包是否存在
if (empty($source_file) || !file_exists($source_file['file_url'])) {
$b ++;
continue;
}
if ($apply_data['app_version'] == 1) {
$app_type = ".apk";
$url_ver = "META-INF/mch.properties";
} else {
$app_type = ".ipa";
$url_ver = "Payload/XiGuMobileGame.app/_CodeSignature/mch.txt";
}
$newname = "app_package" . $apply_data["app_id"] . "-" . $apply_data['promote_id'] . $app_type;
$to = "./Uploads/GamePack/" . $newname;
copy($source_file['file_url'], $to);
#打包新路径
$zip = new \ZipArchive;
$res = $zip -> open($to, \ZipArchive::CREATE);
if ($res == true) {
#打包数据
$pack_data = array(
"promote_id" => $apply_data['promote_id'],
"promote_account" => get_promote_name($apply_data["promote_id"]),
);
$zip -> addFromString($url_ver, json_encode($pack_data));
$zip -> close();
if (get_tool_status("oss_storage") == 1) {
$to = "http://" . C("oss_storage.bucket") . "." . C("oss_storage.domain") . "/GamePack/" . $newname;
$to = str_replace('-internal', '', $to);
$new_to = "./Uploads/GamePack/" . $newname;
$updata['savename'] = $newname;
$updata['path'] = $new_to;
$this -> upload_game_pak_oss($updata);
@unlink($new_to);
} elseif (get_tool_status("qiniu_storage") == 1) {
$this -> dleteQiNiuFile($newname);
$url = $this -> upQiNiuFile($newname, $to);
@unlink($to);
$to = "http://" . $url;
} elseif (get_tool_status("cos_storage") == 1) {
$cos = A('Cos');
// $cos -> cosupload("", "/App/" . $newname, 2);
$cos_res = $cos -> cosupload($to, "/App/" . $newname);
if (strlen($cos_res) > 10) {
@unlink($to);
$to = $cos_res;
} else {
$this -> error("Cos参数错误");
}
}
if ($apply_data['app_version'] == 2) {
$plist_url = A('Plist') -> create_plist_app('1', $apply_data['promote_id'], 'app', $to);
$apply_data['plist_url'] = $plist_url;
}
$apply_data['dow_url'] = $to;
$apply_data['enable_status'] = 1;
$res = M('app_apply', 'tab_') -> save($apply_data);
if ($res !== false) {
$c ++;
} else {
$d ++;
}
} else {
$e ++;
}
}
$f = $a + $b + $d + $e;
$this -> success('成功' . $c . ',失败' . $f);
} catch (\Exception $e) {
$this -> error($e -> getMessage());
}
}
public function app_del($ids = null)
{
$map['id'] = ['in', $ids];
$res = M('app_apply', 'tab_') -> where($map) -> delete();
if ($res !== false) {
\Think\Log ::actionLog('Apply/app_del', 'Apply', 1);
$this -> success('删除成功');
} else {
$this -> error('删除失败');
}
}
public function android_del($model = null, $ids = null)
{
\Think\Log ::actionLog('Apply/android_del', 'Apply', 1);
$this -> del($model, $ids);
}
public function ios_del($model = null, $ids = null)
{
\Think\Log ::actionLog('Apply/ios_del', 'Apply', 1);
$this -> del($model, $ids);
}
public function del($model = null, $ids = null)
{
$source = D(self::model_name);
$ids || $this -> error("请选择要操作的数据!");
$id = array_unique((array) $ids);
$map = array('id' => array('in', $id));
$list = $source -> where($map) -> select();
$iospacket = M('iospacket');
foreach ($list as $key => $value) {
$ios_map['game_id'] = $value['game_id'];
$ios_map['channelid'] = $value['promote_id'];
$iospacket -> where($ios_map) -> delete();
if (substr($value['pack_url'], 0, 4) == 'http') {
if (strpos($value['pack_url'], 'bcebos') !== false) { //$value['pack_url']这个字符串是否包含'bcebos'.'bcebos'可以判断是否为bos存储
$objectname = basename($value['pack_url']);
$this -> delete_bos($objectname); //删除bos里的原包
} elseif (strpos($value['pack_url'], 'oss') !== false) {
$objectname = basename($value['pack_url']);
$this -> delete_oss($objectname);
}
}
$file_url = "./Uploads/GamePack/" . basename($value['pack_url']);
unlink($file_url);
}
$data = M('apply','tab_')->where(['id'=>['in',$_REQUEST['ids']]])->select();
foreach ($data as $key => $value) {
addOperationLog(['op_type'=>1,'key'=>$value['game_name'].$value['promote_account'],'op_name'=>'审核游戏分包','url'=>U('Apply/and_lists'),'menu'=>'推广员-推广员管理-游戏分包-审核游戏分包']);
}
$model = M('Model') -> getByName(self::model_name); /*通过Model名称获取Model完整信息*/
parent ::del($model["id"], $ids);
}
public function allpackage($ids = null, $p = 1, $type = 1)
{
$ids || $this -> error("打包数据不存在", U('Apply/and_lists'), 1);
$successNum = 0;
$errorNuem = 0;
foreach ($ids as $key => $value) {
$apply_data = M('apply', 'tab_') -> find($value);
$source_file = $this -> game_source($apply_data["game_id"], 1);
if (substr($source_file['file_url'], 0, 2) == "..") {
$source_file['file_url'] = substr($source_file['file_url'], '1', strlen($source_file['file_url']));
}
if (empty($apply_data) || $apply_data["status"] != 1) {
$errorNuem ++;
continue;
} else if (empty($source_file) || !file_exists($source_file['file_url'])) {//验证原包是否存在
$errorNuem ++;
continue;
} else {
$map['id'] = $value;
$map['status'] = 1;
M('apply', 'tab_') -> where($map) -> setField(['enable_status'=>2, 'pack_url'=>'', 'plist_url'=>'']);
M('apply_launch', 'tab_') -> where(['apply_id'=>$value]) -> setField('launch_packge', 0);
$successNum ++;
}
}
$data = M('apply','tab_')->where(['id'=>['in',$ids]])->select();
foreach ($data as $key => $value) {
addOperationLog(['op_type'=>1,'key'=>$value['game_name'].$value['promote_account'],'op_name'=>'打包游戏分包','url'=>U('Promote/lists'),'menu'=>'推广员-推广员管理-游戏分包-打包游戏分包']);
}
$msg = "已加入打包队列,刷新此页面可查看当前打包状态;\r\n加入成功:" . $successNum . "个。" . "失败:" . $errorNuem . "";
$this -> success($msg, U('Apply/and_lists', array('p' => $p, 'type' => $type)));
exit;
}
public function iosallpackage($ids = null)
{
$ids || $this -> error("打包数据不存在", U('Apply/ios_lists'), 1);
foreach ($ids as $key => $value) {
$apply_data = M('apply', 'tab_') -> find($value);
$source_file = $this -> game_source($apply_data["game_id"], 1);
if (substr($source_file['file_url'], 0, 2) == "..") {
$source_file['file_url'] = substr($source_file['file_url'], '1', strlen($source_file['file_url']));
}
if (empty($source_file) || !file_exists($source_file['file_url'])) {//验证原包是否存在
continue;
} else {
$map['id'] = $value;
$map['status'] = 1;
M('apply', 'tab_') -> where($map) -> setField('enable_status', 2);
}
}
$this -> success("已加入打包队列,刷新此页面可查看当前打包状态", U('Apply/ios_lists', array('type' => 2)));
exit;
}
public function package($ids = null)
{
// try{
$url = U('Apply/and_lists', array('p' => $_GET['p'], 'type' => $_GET['type'], 'promote_id' => $_GET['promote_id'], 'game_id' => $_GET['game_id'], 'status' => $_GET['status'], 'dow_status' => $_GET['dow_status'], 'enable_status' => $_GET['enable_status']));
$ids || $this -> error("打包数据不存在", $url);
$apply_data = D('Apply') -> find($ids);
//验证数据正确性
if (empty($apply_data) || $apply_data["status"] != 1) {
$this -> error("未审核或数据错误", $url);
exit();
}
#获取原包数据
$source_file = $this -> game_source($apply_data["game_id"], 1);
if (substr($source_file['file_url'], 0, 2) == "..") {
$source_file['file_url'] = substr($source_file['file_url'], '1', strlen($source_file['file_url']));
}
//验证原包是否存在
if (empty($source_file) || !file_exists($source_file['file_url'])) {
$this -> error("游戏原包不存在", $url);
exit();
}
M('apply', 'tab_') -> where(['id' => $ids]) -> setField(['enable_status'=>2, 'pack_url'=>'', 'plist_url'=>'']);
M('apply_launch', 'tab_')->where(['apply_id'=>$ids])->setField('launch_packge', 0);
\Think\Log ::actionLog('Apply/package', 'Apply', $ids);
$this -> success("已加入打包队列,刷新此页面可查看当前打包状态", $url);
exit;
}
public function iosPackage($ids = null)
{
$ids || $this -> error("打包数据不存在", U('Apply/ios_lists'));
$apply_data = D('Apply') -> find($ids);
//验证数据正确性
if (empty($apply_data) || $apply_data["status"] != 1) {
$this -> error("未审核或数据错误", U('Apply/ios_lists'));
exit();
}
#获取原包数据
$source_file = $this -> game_source($apply_data["game_id"], 1);
if (substr($source_file['file_url'], 0, 2) == "..") {
$source_file['file_url'] = substr($source_file['file_url'], '1', strlen($source_file['file_url']));
}
//验证原包是否存在
if (empty($source_file) || !file_exists($source_file['file_url'])) {
$this -> error("游戏原包不存在", U('Apply/ios_lists'));
exit();
}
M('apply', 'tab_') -> where(['id' => $ids]) -> setField('enable_status', 2);
$this -> error("已加入打包队列,刷新此页面可查看当前打包状态", U('Apply/ios_lists'));
exit;
}
public function ios_upload()
{
$data['promote_id'] = $_REQUEST['promote_id'];
$data['game_id'] = $_REQUEST['game_id'];
$data['game_name'] = $_REQUEST['game_name'];
$this -> assign('data', $data);
$this -> display();
}
public function qiniu_ios_upload($promote_id, $game_id)
{
if (get_tool_status("qiniu_storage") == 1) {
$map['channelid'] = $promote_id;
$map['game_id'] = $game_id;
$find = M('iospacket') -> where($map) -> find();
if (file_exists("./Uploads/Ios/" . $find['channelpath']) && !empty($find['channelpath'])) {
$newname = "game_package" . $find["game_id"] . "-" . $find['channelid'] . ".ipa";
$to = "./Uploads/Ios/" . $find['channelpath'];
$this -> dleteQiNiuFile($newname);
$url = $this -> upQiNiuFile($newname, $to);
if (empty($url)) {
$this -> error('七牛错误,请检查七牛配置,并确保七牛空间权限正确!');
}
unset($map['channelid']);
$map['promote_id'] = $promote_id;
$data['pack_url'] = $url;
$result = M('apply', 'tab_') -> where($map) -> save($data);
if ($result !== false) {
@unlink($to);
$this -> AjaxReturn(['status' => 1, 'msg' => '上传成功']);
} else {
$this -> AjaxReturn(['status' => 0, 'msg' => '上传失败']);
}
} else {
$this -> AjaxReturn(['status' => 0, 'msg' => '文件不存在或已上传云空间']);
}
} else {
$this -> AjaxReturn(['status' => 0, 'msg' => '未开启七牛上传']);
}
}
//写入文件
private function wite_text($txt, $name)
{
$myfile = fopen($name, "w") or die("Unable to open file!");
fwrite($myfile, $txt);
fclose($myfile);
}
/**
*上传到OSS
*/
public function upload_game_pak_oss($return_data = null)
{
/**
* 根据Config配置得到一个OssClient实例
*/
try {
Vendor('OSS.autoload');
$ossClient = new \OSS\OssClient(C("oss_storage.accesskeyid"), C("oss_storage.accesskeysecr"), C("oss_storage.domain"));
} catch (OssException $e) {
$this -> error($e -> getMessage());
}
$bucket = C('oss_storage.bucket');
// if(preg_match('/.apk/',$return_data['savename']) ){
$oss_name = "GamePack";
// }else{
// $oss_name="IosGamePack";
// }
$oss_file_path = $oss_name . "/" . $return_data["savename"];
$avatar = $return_data["path"];
try {
$this -> multiuploadFile($ossClient, $bucket, $oss_file_path, $avatar);
return true;
} catch (OssException $e) {
/* 返回JSON数据 */
$this -> error($e -> getMessage());
}
}
/**
*删除OSS
*/
public function delete_oss($objectname)
{
/**
* 根据Config配置得到一个OssClient实例
*/
try {
Vendor('OSS.autoload');
$ossClient = new \OSS\OssClient(C("oss_storage.accesskeyid"), C("oss_storage.accesskeysecr"), C("oss_storage.domain"));
} catch (OssException $e) {
$this -> error($e -> getMessage());
}
$bucket = C('oss_storage.bucket');
$objectname = "GamePack/" . $objectname;
$ossClient -> deleteObject($bucket, $objectname);
}
/**
*上传到BOS
*/
public function upload_bos($return_data = null)
{
/**
* 根据Config配置得到一个OssClient实例
*/
try {
$BOS_TEST_CONFIG =
array(
'credentials' => array(
'accessKeyId' => C("bos_storage.AccessKey"),
'secretAccessKey' => C("bos_storage.SecretKey"),
),
'endpoint' => C("bos_storage.domain"),
);
require VENDOR_PATH . 'BOS/BaiduBce.phar';
$client = new BosClient($BOS_TEST_CONFIG);
} catch (Exception $e) {
$this -> error($e -> getMessage());
}
$bucket = C('bos_storage.bucket');
$bos_file_path = "GamePack/" . $return_data["savename"]; //在bos的路径
$avatar = $return_data["path"];
try {
$client -> putObjectFromFile($bucket, $bos_file_path, $avatar);
} catch (Exception $e) {
$this -> error($e -> getMessage());
}
}
/*
删除bos的object
*/
public function delete_bos($name)
{
/**
* 根据Config配置得到一个OssClient实例
*/
try {
$BOS_TEST_CONFIG =
array(
'credentials' => array(
'accessKeyId' => C("bos_storage.AccessKey"),
'secretAccessKey' => C("bos_storage.SecretKey"),
),
'endpoint' => C("bos_storage.domain"),
);
require VENDOR_PATH . 'BOS/BaiduBce.phar';
$client = new BosClient($BOS_TEST_CONFIG);
} catch (Exception $e) {
$this -> error($e -> getMessage());
}
$bucket = C('bos_storage.bucket');
//$path ="icon/". $name; //在bos的路径
$path = "GamePack/" . $name;
$client -> deleteObject($bucket, $path);
}
/**
*修改申请信息
*/
public function updateinfo($id, $pack_url, $promote, $plist_url)
{
$model = M('Apply', "tab_");
$data['id'] = $id;
$data['pack_url'] = $pack_url;
$data['dow_url'] = '/index.php?s=/Home/Down/down_file/game_id/' . $promote['game_id'] . '/promote_id/' . $promote['promote_id'];
$data['dow_status'] = 1;
$data['dispose_id'] = UID;
$data['enable_status'] = 1;
$data['dispose_time'] = NOW_TIME;
$data['plist_url'] = $plist_url;
$res = $model -> save($data);
return $res;
}
public function game_source($game_id, $type)
{
$model = D('GameSource');
$map['game_id'] = $game_id;
$map['type'] = $type;
$data = $model -> where($map) -> find();
if($data['file_type']=='1'){
$path = './Uploads/SourcePack/';
}else{
$path = './Uploads/Ios/original/';
}
$data['file_url'] = $path.$data['file_name'];
return $data;
}
public function multiuploadFile($ossClient, $bucket, $url, $file)
{
//$file = __FILE__;
$options = array();
try {
#初始化分片上传文件
$uploadId = $ossClient -> initiateMultipartUpload($bucket, $url);
//$ossClient->multiuploadFile($bucket, $url, $file, $options);
} catch (OssException $e) {
printf(__FUNCTION__ . ": initiateMultipartUpload FAILED\n");
printf($e -> getMessage() . "\n");
return;
}
/*
* step 2. 上传分片
*/
$partSize = 5 * 1000 * 1024;
$uploadFile = $file;
$uploadFileSize = filesize($uploadFile);
$pieces = $ossClient -> generateMultiuploadParts($uploadFileSize, $partSize);
$responseUploadPart = array();
$uploadPosition = 0;
$isCheckMd5 = true;
foreach ($pieces as $i => $piece) {
$fromPos = $uploadPosition + (integer) $piece[$ossClient ::OSS_SEEK_TO];
$toPos = (integer) $piece[$ossClient ::OSS_LENGTH] + $fromPos - 1;
$upOptions = array(
$ossClient ::OSS_FILE_UPLOAD => $uploadFile,
$ossClient ::OSS_PART_NUM => ($i + 1),
$ossClient ::OSS_SEEK_TO => $fromPos,
$ossClient ::OSS_LENGTH => $toPos - $fromPos + 1,
$ossClient ::OSS_CHECK_MD5 => $isCheckMd5,
);
if ($isCheckMd5) {
$contentMd5 = \OSS\Core\OssUtil ::getMd5SumForFile($uploadFile, $fromPos, $toPos);
$upOptions[$ossClient ::OSS_CONTENT_MD5] = $contentMd5;
}
//2. 将每一分片上传到OSS
try {
$responseUploadPart[] = $ossClient -> uploadPart($bucket, $url, $uploadId, $upOptions);
} catch (OssException $e) {
printf(__FUNCTION__ . ": initiateMultipartUpload, uploadPart - part#{$i} FAILED\n");
printf($e -> getMessage() . "\n");
return;
}
//printf(__FUNCTION__ . ": initiateMultipartUpload, uploadPart - part#{$i} OK\n");
}
$uploadParts = array();
foreach ($responseUploadPart as $i => $eTag) {
$uploadParts[] = array(
'PartNumber' => ($i + 1),
'ETag' => $eTag,
);
}
/**
* step 3. 完成上传
*/
try {
$ossClient -> completeMultipartUpload($bucket, $url, $uploadId, $uploadParts);
} catch (OssException $e) {
printf(__FUNCTION__ . ": completeMultipartUpload FAILED\n");
printf($e -> getMessage() . "\n");
return;
}
}
/**
* 获取七牛上传token
*/
public function getQiNiuToken()
{
$this -> dleteQiNiuFile($_REQUEST['key']);
Vendor('Qiniu.autoload');
$config = C('qiniu_storage');
$accessKey = $config['AccessKey'];
$secretKey = $config['SecretKey'];
$Qiniu = new Auth($accessKey, $secretKey);
$bucket = $config['bucket'];
//定义上传后返回客户端的值
$policy = array(
'returnBody' => '{"name":$(fname),"size":$(fsize),"key":$(key)}',
);
//生成上传token
$result['uptoken'] = $Qiniu -> uploadToken($bucket, null, 3600, $policy);
$this -> ajaxReturn($result);
}
/**
* 删除七牛空间文件
*
* @param $key
*
* @return mixed
*/
public function dleteQiNiuFile($key)
{
Vendor('Qiniu.autoload');
$config = C('qiniu_storage');
$accessKey = $config['AccessKey'];
$secretKey = $config['SecretKey'];
$auth = new Auth($accessKey, $secretKey);
//初始化BucketManager
$bucketMgr = new BucketManager($auth);
$bucket = C('qiniu_storage.bucket');
$res = $bucketMgr -> delete($bucket, $key);
return $res;
}
/**
* 七牛上传
*
* @param $newName 上传到七牛的文件名称
* @param $filePath 文件路径
*/
public function upQiNiuFile($newName, $filePath)
{
Vendor('Qiniu.autoload');
//读取七牛配置
$config = C('qiniu_storage');
$accessKey = $config['AccessKey'];
$secretKey = $config['SecretKey'];
//实例化鉴权对象
$auth = new Auth($accessKey, $secretKey);
$bucket = $config['bucket'];
//生成token
$token = $auth -> uploadToken($bucket);
//实例化上传类
$uploadMgr = new UploadManager();
//上传附件
list($ret, $err) = $uploadMgr -> putFile($token, $newName, $filePath);
if ($ret) {
return $url = $config['domain'] . '/' . $newName;
} else {
return '';
}
}
public function set_config_auto_audit($val = '', $config_key = '')
{
$config['value'] = $val;
$res = M('config') -> where(array('name' => $config_key)) -> save($config);
S('DB_CONFIG_DATA', null);
if ($res !== false) {
if ($val == 0) {
addOperationLog(['op_type'=>1,'key'=>getNowDate(),'op_name'=>'关闭自动审核','url'=>U('Apply/and_lists'),'menu'=>'推广员-推广员管理-游戏分包-关闭自动审核']);
} else if ($val == 1) {
addOperationLog(['op_type'=>1,'key'=>getNowDate(),'op_name'=>'开启自动审核','url'=>U('Apply/and_lists'),'menu'=>'推广员-推广员管理-游戏分包-开启自动审核']);
}
$this -> success('操作成功');
} else {
$this -> error('操作失败');
}
}
/**
* 设置分成比例
*
* @author 小纯洁
*/
public function setRatio()
{
$applyModel = new ApplyModel();
$data['game_id'] = $_POST['game_id'];
$data['promote_id'] = $_POST['promote_id'];
$data['field'] = $_POST['field'];
$data['value'] = $_POST['value'];
if ($applyModel -> setRatio($data)) {
$this -> success("修改成功");
} else {
$this -> error("修改失败");
}
}
/**
* 投放平台列表
*
* @author 鹿文学
*/
public function launch_list($p = 1)
{
$aid = intval($_GET['aid']);
if (is_numeric($aid) && $aid > 0) {
$page = intval($p);
$page = $page ? $page : 1; //默认显示第一页数据
if (isset($_REQUEST['row'])) {
$row = $_REQUEST['row'];
} else {
$row = 10;
}
$launchmodel = M('apply_launch', 'tab_');
$map['apply_id'] = $aid;
$data = $launchmodel
// 查询条件
-> where($map)
/* 默认通过id逆序排列 */
-> order('platform_id,launch_time desc')
/* 数据分页 */
-> page($page, $row)
/* 执行查询 */
-> select();
/* 查询记录总数 */
$count = $launchmodel -> where($map) -> count();
//分页
$page = set_pagination($count, $row);
if ($page) {
$this -> assign('_page', $page);
}
$this -> assign('list_data', $data);
}
$this -> display();
}
}