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.

391 lines
14 KiB
PHP

<?php
namespace Admin\Controller;
use User\Api\UserApi as UserApi;
use OSS\OssClient;
use OSS\Core\OSsException;
use Think\Controller;
/**
* 后台首页控制器
* @author 麦当苗儿 <zuojiazi@vip.qq.com>
*/
class PartnerController extends ThinkController
{
private $modelName = 'Partner';
//列表
public function lists()
{
$model = M($this->modelName, 'tab_');
$map = [];
$id = intval(I('id', 0));
if (!empty($id)) {
$map['tab_partner.id'] = $id;
$parameter['id'] = $id;
}
if (isset($_REQUEST['status']) && $_REQUEST['status'] !== '') {
$status = intval($_REQUEST['status']);
$map['tab_partner.status'] = $status;
$parameter['status'] = $status;
}
if (!empty(I('company_type'))) {
$map['company_type'] = I('company_type');
}
if (!empty(I('partner'))) {
$map['partner'] = ['like', '%' . I('partner') . '%'];
}
if (!empty(I('timestart'))) {
$timestart = strtotime(I('timestart'));
$map['_string'] = "contract_start_time >= {$timestart}";
}
if (!empty(I('timeend'))) {
$timeend = strtotime(I('timeend') . ' 23:59:59');
if (!empty($map['_string'])) {
$map['_string'] .= " and ";
}
$map['_string'] .= " contract_end_time < {$timeend}";
}
$page = intval(I('get.p', 0));
$page = $page ? $page : 1; //默认显示第一页数据
$row = intval(I('row', 0));
$row = empty($row) ? 10 : $row;//每页条数
$is_export= false;
if (isset($_REQUEST['export']) && $_REQUEST['export']==1){
$is_export = true;
}
//获取分页数据
$query = $model->alias('p')
->where($map)
->order("id desc");
if($is_export){
$partners = $query
->field("p.*,IFNULL(d.advance_amount,'--') advance_amount")
->join("left join tab_partner_divide_warn d ON d.partner_id = p.id AND d.status = 1")
->select();
}else{
$partners = $query
->field("p.*")
->page($page,$row)
->select();
}
//获取公司id
$partner_ids = array_column($partners, 'id');
$partner_ids = $partner_ids ? $partner_ids : [0];
$game_map['partner_id'] = ["in",$partner_ids];
$games = M("game","tab_")->alias('g')
->field("g.game_type_name,g.relation_game_name,g.original_package_name,g.partner_id,g.relation_game_id as id")
->where($game_map)
->group('relation_game_id')
->select();
$game_ids = array_column($games, 'id');
$game_ids = $game_ids ? $game_ids : [0];
$cp_game_ratio_map['game_id'] = ["in", $game_ids];
$cp_game_ratio_map['is_del'] = '0';
//获取游戏比例
$gameradiores = M("cp_game_ratio","tab_")
->alias("cg")
->join("tab_game ga ON cg.game_id = ga.id")
->field("cg.ratio,cg.instanceof,cg.game_id,cg.begin_total_amount")
->where($cp_game_ratio_map)
->group('relation_game_id,begin_total_amount')
->select();
// dd($cp_game_ratio_map);
$parseGameRadiores = array();//合作方分成比例
foreach ($gameradiores as $key =>$val) {
$val['row'] = 1;
$val['my_ratio'] = 100 - $val['ratio'];
if ($val['begin_total_amount'] == 0) {
$val['name'] = '默认比例';
if (isset($parseGameRadiores[$val['game_id']])) {
$parseGameRadiores[$val['game_id']] = [];
}
} else {
if($val['instanceof']=='1'){
$val['name']="月流水≥".$val['begin_total_amount'];
}else{
$val['name']="月流水>".$val['begin_total_amount'];
}
}
$parseGameRadiores[$val['game_id']][] = $val;
}
$myGameRadiores = $parseGameRadiores;//我方分成比例
foreach ($myGameRadiores as $key => &$val) {
foreach ($val as $k => &$v) {
$v['ratio'] = 100 - $v['ratio'];
}
}
$parseGames = array();
foreach ($games as $key =>$val) {
$val['game_ratio'] = $parseGameRadiores[$val['id']];
$val['my_game_ratio'] = $myGameRadiores[$val['id']];
if(array_key_exists($val['id'],$parseGameRadiores)){//游戏有比例
$row2 = array_sum(array_column($val['game_ratio'], 'row')) ;
$val['row'] = empty($row2) ? 1: $row2;
} else {
$val["row"] = 1;
}
$val['original_package_name'] = $val['original_package_name'] ?: '-';
$parseGames[$val['partner_id']][] = $val;
}
$parseData = array();
foreach ($partners as $key =>$value) {
$tmpr = D("CompanyRelation")->getCompanyRelation(1,$value['id']);
$value['is_collection'] = $tmpr['collection'];
$value['settlement_type'] = $tmpr['settlement_type'];
$value['invoice_type'] = $tmpr['invoice_type'];
$value['invoice_content'] = $tmpr['invoice_content'];
$value['game'] = $parseGames[$value['id']];
$value['has_advance_charge'] = $value['has_advance_charge'] ? '是' : '否';
$value['channel_rate'] *= 100;
$value['invoice_rate'] *= 100;
$value['company_type'] = $value['company_type'] == 2 ? '个人' : '公司';
$contract_start_time = $value['contract_start_time'] ?
time_format($value['contract_start_time'], 'Y/m/d') : '-';
$contract_end_time = $value['contract_end_time'] ?
time_format($value['contract_end_time'], 'Y/m/d') : '-';
$value['contract_time'] = $contract_start_time . '-' . $contract_end_time;
$validity_start_time = $value['validity_start_time'] ?
time_format($value['validity_start_time'], 'Y/m/d') : '-';
$validity_end_time = $value['validity_end_time'] ?
time_format($value['validity_end_time'], 'Y/m/d') : '-';
$value['validity_time'] = $validity_start_time . '-' . $validity_end_time;
$row2 = array_sum(array_column($value['game'], 'row')) ;
$value['row'] = empty($row2) ? 1: $row2;
$parseData[] = $value;
}
dd($parseData);
if($is_export){
$this->assign('listData', $parseData);
$GetData = $_GET;
unset($GetData['export']);
addOperationLog(['op_type'=>3,'key'=>getNowDate(),'url'=>U(CONTROLLER_NAME.'/'.ACTION_NAME,$GetData),'menu'=>"游戏-游戏管理-合作方管理-导出"]);
$this->display("export");
die();
}
/* 查询记录总数 */
$count = $model
->where($map)
->count();
//分页
$parameter['p'] = $page;
$parameter['row'] = $row;
$page = set_pagination($count, $row, $parameter);
if ($page) {
$this->assign('_page', $page);
}
$this->checkListOrCountAuthRestMap($map,[]);
$this->assign('listData', $parseData);
$this->assign('count', $count);
$this->assign('commonset', M('Kuaijieicon')->where(['url' => 'Partner/lists'])->find());
$this->meta_title = '合作方管理';
$this->display();
}
//添加
public function add()
{
if ($_POST) {
$save = I("post.");
$this->checkData($save);
$save['uid'] = UID;
$save['create_time'] = time();
$res = $model->add($save);
if ($res) {
\Think\Log::actionLog('Partner/add', 'partner', $res);
//操作日志
addOperationLog(array(
"op_type"=>0,
"key"=>$save['partner'],
"url"=>U("Partner/lists",array("partner"=>$save['partner']))
));
$this->success('保存成功', U('lists'));
} else {
$this->error('保存失败');
}
} else {
$this->assign('commonset', M('Kuaijieicon')->where(['url' => 'Partner/add'])->find());
$this->meta_title = '新增合作方';
$this->display();
}
}
//编辑
public function edit()
{
$model = M($this->modelName, 'tab_');
if ($_POST) {
$save = I("post.");
$this->checkData($save);
$res = $model->save($save);
if ($res === false) {
$this->error('保存失败');
} else {
\Think\Log::actionLog('Partner/edit', 'partner', $id);
addOperationLog(array(
"op_type"=>1,
"key"=>$save['partner'],
"url"=>U("Partner/lists",array("partner"=>$save['partner']))
));
$this->success('保存成功', U('lists'));
}
} else {
$id = intval(I('get.id', 0));
$map['id'] = $id;
$data = $model
->find($id);
if (empty($data)) {
$this->error('数据异常', U('lists'));
}
if ($data['contract_start_time']) {
$data['contract_start_time'] = date('Y-m-d', $data['contract_start_time']);
}else{
$data['contract_start_time']='';
}
if ($data['contract_end_time']) {
$data['contract_end_time'] = date('Y-m-d', $data['contract_end_time']);
}else{
$data['contract_end_time']='';
}
if ($data['validity_start_time']) {
$data['validity_start_time'] = date('Y-m-d', $data['validity_start_time']);
}else{
$data['validity_start_time']='';
}
if ($data['validity_end_time']) {
$data['validity_end_time'] = date('Y-m-d', $data['validity_end_time']);
}else{
$data['validity_end_time']='';
}
$data['channel_rate'] *= 100;//存的是小数,显示百分比
$data['invoice_rate'] *= 100;//存的是小数,显示百分比
// dd($data);
$this->assign('data', $data);
$action = I('action');
$this->assign('action', $action);
$this->assign('commonset', M('Kuaijieicon')->where(['url' => 'Partner/edit'])->find());
$this->meta_title = $action ? '查看合作方' : '编辑合作方';
$this->display($action);
}
}
//删除
public function del()
{
if (!empty($_POST['ids'])) {
if (!is_array($_POST['ids'])) {
$this->error('参数异常');
}
$id = implode(',', $_POST['ids']);
} else {
$id = intval(I('get.id', 0));
if ($id == 0) {
$this->error('参数异常');
}
}
@$yres = M($this->modelName, 'tab_')->field("partner")->find($id)['partner'];
$res = M($this->modelName, 'tab_')->delete($id);
if ($res === false) {
$this->error('删除失败');
}
addOperationLog(array(
"op_type"=>2,
"key"=>$yres,
"url"=>U("Partner/lists")
));
$this->success('删除成功', U('lists'));
}
protected function checkData(&$save)
{
$partner = trim($save['partner']);
$status = intval($save['status']);
if (empty($partner)) {
$this->error('请输入合作方名称');
}
if (!strlen(I('is_sign_contract'))) {
$this->error('请选择是否签署合同');
}
if (empty(I('company_type'))) {
$this->error('请输入公司性质');
}
if (!strlen(I('has_game_evidence'))) {
$this->error('请选择是否有游戏资质');
}
$model = M($this->modelName, 'tab_');
$map['partner'] = $partner;
$res = $model->where($map)->field("id")->find();
if ($res) {
if(isset($save['id'])){
if($save['id'] !=$res['id']){
$this->error('合作方已存在');
}
}else{
$this->error('合作方已存在');
}
}
if(!empty(I('link_phone')) && !checkPhone(I('link_phone'))) {
$this->error('联系电话格式不正确');
}
if(!empty(I('reg_phone')) && !checkPhone(I('reg_phone'))) {
$this->error('注册电话格式不正确');
}
if(!empty(I('channel_rate'))) {
if(!checkNumber(I('channel_rate'))){
$this->error('渠道费率格式不对');
}else{
$save['channel_rate'] = ($save['channel_rate'] ?: 0)/100;
}
}
if(!empty(I('invoice_rate'))) {
if(!checkNumber(I('invoice_rate'))){
$this->error('开票税点格式不对');
}else{
$save['invoice_rate'] = ($save['invoice_rate'] ?: 0)/100;
}
}
if(!empty(I('server_fee')) && !checkNumber(I('server_fee'))) {
$this->error('服务器费用格式不对');
}
$time = time();
$save['contract_start_time'] = strtotime($save['contract_start_time']);
$save['contract_end_time'] = strtotime($save['contract_end_time']);
$save['validity_start_time'] = strtotime($save['validity_start_time']);
$save['validity_end_time'] = strtotime($save['validity_end_time']);
$save['last_up_time'] = $time;
}
}