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

314 lines
14 KiB

<?php
defined('IN_IA') or exit('Access Denied');
class Areaagent_WeliamController {
/**
* 代理列表
*/
public function agentIndex() {
global $_W, $_GPC;
//校验代理入口文件
$cityagent = IA_ROOT . '/web/cityagent.php';
$mcityagent = PATH_MODULE . '/web/cityagent.php';
if (!file_exists($cityagent) || md5_file($cityagent) != md5_file($mcityagent)) {
copy($mcityagent, $cityagent);
}
$pindex = max(1, intval($_GPC['page']));
$psize = 10;
$where = array();
if (!empty($_GPC['agentname'])) {
$where['agentname'] = $_GPC['agentname'];
}
if (!empty($_GPC['status'])) {
if($_GPC['status'] == 1){
$where['status'] = 1;
}else{
$where['status'] = 0;
}
}
$agentes = Area::getAllAgent($pindex - 1, $psize, $where);
$agents = $agentes['data'];
if (!empty($agents)) {
foreach ($agents as $key => $value) {
$group = Area::getSingleGroup($value['groupid']);
$agents[$key]['groupname'] = $group['name'];
}
}
$pager = wl_pagination($agentes['count'], $pindex, $psize);
include wl_template('area/agentIndex');
}
public function agentImport() {
global $_W, $_GPC;
if ($_W['ispost']) {
$level = intval($_GPC['districtslevel']);
$groupid = intval($_GPC['groupid']);
$estimatetime = strtotime($_GPC['estimatetime']);
$allarea = pdo_getall(PDO_NAME . "area", array('displayorder' => 0, 'level' => $level), array('id', 'name'));
foreach ($allarea as $item) {
$hasarea = pdo_getcolumn(PDO_NAME . 'oparea', array('uniacid' => $_W['uniacid'], 'areaid' => $item['id']), 'id');
if ($hasarea) {
continue;
}
$agent = array(
'uniacid' => $_W['uniacid'],
'groupid' => $groupid,
'agentname' => $item['name'] . '代理',
'username' => Util::createSalt(12),
'password' => '12345678',
'salt' => Util::createSalt(8),
'status' => 1,
'joindate' => time(),
'joinip' => $_W['clientip'],
'starttime' => time(),
'endtime' => $estimatetime
);
$agent['password'] = Util::encryptedPassword($agent['password'], $agent['salt']);
pdo_insert(PDO_NAME . 'agentusers', $agent);
pdo_insert(PDO_NAME . 'oparea', array('uniacid' => $_W['uniacid'], 'aid' => pdo_insertid(), 'level' => $level, 'status' => 1, 'areaid' => $item['id']));
}
show_json(1, '代理一键导入成功。');
}
$allgroups = Area::getAllGroup(0, 100, 1);
$allgroup = $allgroups['data'];
include wl_template('area/agentImport');
}
/**
* 代理编辑
*/
public function agentEdit() {
global $_W, $_GPC;
WeliamWeChat::startTrans();//事务开启
$settings = Setting::wlsetting_read('base');
if (checksubmit('submit')) {
$agent = $_GPC['agent'];
if (empty($_GPC['districts'])) {
WeliamWeChat::rollback();//事务回滚
wl_message('您需要选择代理区域');
}
if (empty($_GPC['id'])) {
load()->model('user');
if (!preg_match(REGULAR_USERNAME, $agent['username'])) {
WeliamWeChat::rollback();//事务回滚
wl_message('必须输入用户名,格式为 3-15 位字符,可以包括汉字、字母(不区分大小写)、数字、下划线和句点。');
}
if (User::agentuser_single(array('username' => $agent['username']))) {
WeliamWeChat::rollback();//事务回滚
wl_message('非常抱歉,此用户名已经被注册,你需要更换注册名称!');
}
if (istrlen($agent['password']) < 8) {
WeliamWeChat::rollback();//事务回滚
wl_message('必须输入密码,且密码长度不得低于8位。');
}
$agent['joindate'] = time();
$agent['joinip'] = $_W['clientip'];
$agent['starttime'] = time();
$agent['salt'] = Util::createSalt(8);
$agent['password'] = Util::encryptedPassword($agent['password'], $agent['salt']);
$agent['username'] = trim($agent['username']);
} else {
load()->model('user');
if (!preg_match(REGULAR_USERNAME, $agent['username'])) {
WeliamWeChat::rollback();//事务回滚
wl_message('用户名格式为 3-15 位字符,可以包括汉字、字母(不区分大小写)、数字、下划线和句点。');
}
if (!empty($_GPC['password']) && istrlen($_GPC['password']) < 8) {
WeliamWeChat::rollback();//事务回滚
wl_message('必须输入密码,且密码长度不得低于8位。');
}
if (!empty($_GPC['password'])) {
$agent['salt'] = Util::createSalt(8);
$agent['password'] = Util::encryptedPassword($_GPC['password'], $agent['salt']);
}
}
$agent['agentname'] = trim($agent['agentname']);
$agent['realname'] = trim($agent['realname']);
$agent['mobile'] = trim($agent['mobile']);
$agent['status'] = $_GPC['status'];
$agent['endtime'] = strtotime($agent['endtime']);
$agent['percent'] = serialize($_GPC['percent']);
$agentid = Area::editAgent($agent, $_GPC['id']);
$result = Area::save_agent_area($_GPC['districts'], $_GPC['districtslevel'], $agentid);
if ($result) {
Cache::deleteCache('area', 'terarea' . $_W['uniacid']);
WeliamWeChat::commit();
wl_message('保存成功!', web_url('area/areaagent/agentIndex'), 'success');
} else {
WeliamWeChat::rollback();//事务回滚
wl_message('保存失败!', referer(), 'error');
}
}
$agent = Area::getSingleAgent(intval($_GPC['id']));
$allgroups = Area::getAllGroup(0, 100, 1);
$allgroup = $allgroups['data'];
$m['openid'] = $agent['cashopenid'];
if ($m['openid']) {
$member = Util::getSingelData('nickname', PDO_NAME . 'member', array('openid' => $m['openid']));
$m['nickname'] = $member['nickname'];
}
//区域操作
$AreaTab = tablename(PDO_NAME . "area");
$orderBy = " ORDER BY id ASC ";
//获取一级省/直辖市
$province = pdo_fetchall("SELECT id,name FROM " . $AreaTab . " WHERE level = 1 AND (displayorder = 0 OR displayorder = {$_W['uniacid']}) " . $orderBy);
if ($_GPC['id']) {
//id存在 修改操作
$area = pdo_get(PDO_NAME . 'oparea', array('uniacid' => $_W['uniacid'], 'aid' => intval($_GPC['id'])));
$province_id = $area['areaid'];//省/直辖市id
$city_id = $area['areaid'];//市id
$district_id = $area['areaid'];//区/县id
$town_id = $area['areaid'];//镇/乡id
//逆推 获取当前代理商的省/市/区/镇的信息
if ($area['level'] >= 4) {
$district_id = pdo_fetchcolumn("SELECT pid FROM " . $AreaTab . " WHERE level = 4 AND id = {$town_id} AND (displayorder = 0 OR displayorder = {$_W['uniacid']}) ");
$town = pdo_fetchall("SELECT id,name FROM " . $AreaTab . " WHERE level = 4 AND pid = {$district_id} AND (displayorder = 0 OR displayorder = {$_W['uniacid']}) " . $orderBy);
}
if ($area['level'] >= 3) {
$city_id = pdo_fetchcolumn("SELECT pid FROM " . $AreaTab . " WHERE level = 3 AND id = {$district_id} AND (displayorder = 0 OR displayorder = {$_W['uniacid']}) ");
$district = pdo_fetchall("SELECT id,name FROM " . $AreaTab . " WHERE level = 3 AND pid = {$city_id} AND (displayorder = 0 OR displayorder = {$_W['uniacid']}) " . $orderBy);
}
if ($area['level'] >= 2) {
$province_id = pdo_fetchcolumn("SELECT pid FROM " . $AreaTab . " WHERE level = 2 AND id = {$city_id} AND (displayorder = 0 OR displayorder = {$_W['uniacid']}) ");
$city = pdo_fetchall("SELECT id,name FROM " . $AreaTab . " WHERE level = 2 AND pid = {$province_id} AND (displayorder = 0 OR displayorder = {$_W['uniacid']}) " . $orderBy);
}
} else {
//获取第一个省/直辖市 下所有的市
$city = pdo_fetchall("SELECT id,name FROM " . $AreaTab . " WHERE level = 2 AND pid = {$province[0]['id']} AND (displayorder = 0 OR displayorder = {$_W['uniacid']}) " . $orderBy);
//获取第一个市 下所有的区/县
$district = pdo_fetchall("SELECT id,name FROM " . $AreaTab . " WHERE level = 3 AND pid = {$city[0]['id']} AND (displayorder = 0 OR displayorder = {$_W['uniacid']}) " . $orderBy);
//获取第一个区/县 下所有的镇/乡
$town = pdo_fetchall("SELECT id,name FROM " . $AreaTab . " WHERE level = 4 AND pid = {$district[0]['id']} AND (displayorder = 0 OR displayorder = {$_W['uniacid']}) " . $orderBy);
}
include wl_template('area/agentEdit');
}
public function agentDel() {
global $_W, $_GPC;
$id = $_GPC['id'] ?: $_GPC['ids'];
$items = pdo_getall('wlmerchant_agentusers', array('id' => $id, 'uniacid' => $_W['uniacid']), array('id'));
foreach ($items as $item) {
pdo_delete('wlmerchant_agentusers', array('id' => $item['id']));
pdo_delete('wlmerchant_oparea', array('aid' => $item['id']));
}
show_json(1, array('url' => referer()));
}
public function agentManage() {
global $_W, $_GPC;
$agent = Area::getSingleAgent(intval($_GPC['id']));
if (empty($agent)) {
wl_message('未找到代理信息,请重试');
}
$cookie = array();
$cookie['id'] = $agent['id'];
$cookie['uniacid'] = $agent['uniacid'];
$cookie['hash'] = md5($agent['password'] . $agent['salt']);
$session = base64_encode(json_encode($cookie));
isetcookie('__wlagent_staff_session', '', -10000);//删除员工登录信息
$res = isetcookie('__wlagent_session', $session, 7 * 86400, true);
header('location: ' . $_W['siteroot'] . "web/cityagent.php?p=dashboard&ac=dashboard&do=index&");
}
public function getArea() {
global $_W, $_GPC;
$nodes = Area::address_tree_in_use();
die(json_encode($nodes));
}
/**
* Comment: 获取对应的地区信息
* Author: zzw
*/
public function getAreaInfo() {
global $_W, $_GPC;
$id = $_GPC['id'];
$lv = $_GPC['lv'];
$info = pdo_fetchall("SELECT id,name FROM " . tablename(PDO_NAME . "area") . " WHERE pid = {$id} AND `level` = {$lv} AND (displayorder = 0 OR displayorder = {$_W['uniacid']}) ");
wl_json(1, '下级区域信息', $info);
}
/**
* Comment: 批量启用,禁用代理商
* Author: zzw
* Date: 2021/1/20 10:54
*/
public function changeStatus(){
global $_W,$_GPC;
//参数信息获取
$ids = $_GPC['ids'];
$status = $_GPC['status'];
//修改状态
pdo_update(PDO_NAME."agentusers",['status'=>$status],['id IN'=>$ids]);
show_json(1,'修改成功');
}
//////////////////////////代理分组//////////////////////////////
/**
* 代理分组列表
*/
public function groupIndex() {
global $_W, $_GPC;
$pindex = max(1, intval($_GPC['page']));
$psize = 10;
$groupes = Area::getAllGroup($pindex - 1, $psize);
$groups = $groupes['data'];
$pager = wl_pagination($groupes['count'], $pindex, $psize);
$plugins = App::get_apps(0, 'agent');
include wl_template('area/groupIndex');
}
/**
* 代理分组编辑
*/
public function groupEdit() {
global $_W, $_GPC;
if (checksubmit('submit')) {
$arr['name'] = trim($_GPC['name']);
$arr['isdefault'] = $_GPC['isdefault'];
$arr['enabled'] = $_GPC['enabled'];
$arr['package'] = iserializer($_GPC["plugins"]);
if (empty($arr['name']))
wl_message('分组名称不能为空');
if (Area::editGroup($arr, intval($_GPC['id']))) {
wl_message('代理分组更新成功', web_url('area/areaagent/groupIndex'), 'success');
} else {
wl_message('代理分组更新失败', web_url('area/areaagent/groupIndex'), 'error');
}
}
$category = Area::getSingleGroup(intval($_GPC['id']));
$plugins = App::get_apps(0, 'agent');
include wl_template('area/groupEdit');
}
/**
* 删除代理分组
*/
public function groupDelete() {
global $_W, $_GPC;
$id = intval($_GPC['id']);
$isuse = pdo_getcolumn(PDO_NAME . 'agentusers', array('groupid' => $id, 'uniacid' => $_W['uniacid']), 'id');
if (!empty($isuse)) {
show_json(0, '当前分组使用中,无法删除');
}
pdo_delete(PDO_NAME . 'agentusers_group', array('id' => $id, 'uniacid' => $_W['uniacid']));
show_json(1, '分组删除成功');
}
}