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.
829 lines
36 KiB
829 lines
36 KiB
<?php
|
|
namespace apps\drp\controllers;
|
|
use apps\base\controllers\FrontendController;
|
|
|
|
class UserController extends FrontendController {
|
|
public $weObj;
|
|
private $wechat;
|
|
protected $user_id;
|
|
protected $action;
|
|
protected $back_act = '';
|
|
private $drp = null;
|
|
/**
|
|
* 构造函数
|
|
*/
|
|
public function __construct() {
|
|
parent::__construct();
|
|
// 属性赋值
|
|
$this->user_id = $_SESSION['user_id'];
|
|
$this->action = ACTION_NAME;
|
|
$this->con = CONTROLLER_NAME;
|
|
$this->app = APP_NAME ;
|
|
|
|
if($this->app == 'drp' && $this->con == 'user' && $this->action == 'index'){
|
|
|
|
}elseif($this->app == 'drp'){
|
|
$filter = 1;
|
|
$this->assign('filter', $filter);
|
|
}
|
|
$this->checkLogin();
|
|
// 分销商信息
|
|
$this->drp = get_drp($this->user_id);
|
|
// 用户信息
|
|
$info = get_user_default($this->user_id);
|
|
$this->assign('drp', $this->drp);
|
|
$this->assign('info', $info);
|
|
}
|
|
/**
|
|
* 未登录验证
|
|
*/
|
|
private function checkLogin() {
|
|
// 是否登陆
|
|
if(!$this->user_id){
|
|
$url = urlencode(__HOST__ . $_SERVER['REQUEST_URI']);
|
|
if(IS_POST) {
|
|
$url = urlencode($_SERVER['HTTP_REFERER']);
|
|
}
|
|
ecs_header("Location: ".U('user/login/index',array('back_act'=>$url)));
|
|
exit;
|
|
}
|
|
// 分销状态
|
|
$drp_audit_status = drp_audit_status($this->user_id);
|
|
|
|
// 不是分销商
|
|
if(!$drp_audit_status){
|
|
ecs_header("Location: ".(U('drp/index/index')));
|
|
exit;
|
|
}
|
|
|
|
}
|
|
public function actionIndex(){
|
|
$sql = "SELECT user_money FROM " .$GLOBALS['ecs']->table('users').
|
|
" WHERE user_id = '$this->user_id'";
|
|
$surplus_amount = $GLOBALS['db']->getOne($sql); //可提佣金
|
|
$totals = $this->get_drp_money(0); //累计佣金
|
|
$today_total = $this->get_drp_money(1); //今日收入
|
|
$total_amount = $this->get_drp_money(2); //总销售额
|
|
|
|
$this->assign('surplus_amount', $surplus_amount);
|
|
$select_url = U('drp/index/category');
|
|
$this->assign('select_url', $select_url);
|
|
$url = U('drp/shop/index',array('id'=>$this->drp['drp_id'],'u'=>$_SESSION['user_id']));//我的微店
|
|
$this->assign('url', $url);
|
|
$sql="SELECT value FROM {pre}drp_config WHERE code='withdraw'";
|
|
$withdraw=$this->db->getOne($sql);
|
|
$this->assign('withdraw', $this->htmlOut($withdraw));
|
|
$this->assign('totals', $totals[0]['totals']?$totals[0]['totals']:0);
|
|
$this->assign('today_total', $today_total[0]['totals']?$today_total[0]['totals']:0);
|
|
$this->assign('total_amount', $total_amount[0]['totals']?$total_amount[0]['totals']:0);
|
|
$this->assign('page_title', '分销中心');
|
|
$category = get_child_tree();
|
|
$sql = "SELECT cat_id FROM " . $GLOBALS['ecs']->table('drp_shop') .
|
|
" WHERE user_id = $this->user_id";
|
|
|
|
$res = $GLOBALS['db']->getOne($sql);
|
|
$res = explode(',',$res);
|
|
|
|
$sql = "select cat_id from {pre}cat_recommend where recommend_type = 3";
|
|
$recommend = $GLOBALS['db']->getAll($sql);
|
|
$ress = array();
|
|
foreach ($recommend as $kk => $vv){
|
|
$ress[] = $vv['cat_id'];
|
|
}
|
|
|
|
foreach ($category as $k => $v){
|
|
if(in_array($category[$k]['id'],$ress)){
|
|
if(in_array($v['id'],$res)){
|
|
$category[$k]['is_drp'] = 1;
|
|
|
|
}else{
|
|
$category[$k]['is_drp'] = 0;
|
|
}
|
|
}else{
|
|
unset($category[$k]);
|
|
}
|
|
}
|
|
|
|
$this->assign('category', array_slice($category,0,5));
|
|
$this->assign('uid',$this->user_id);
|
|
$this->display('distribution_user');
|
|
}
|
|
|
|
private function get_drp_money($type){
|
|
|
|
if($type === 0){
|
|
$where = "";
|
|
}else{
|
|
if($type === 1){
|
|
$nowtime = gmtime();
|
|
$t = getdate($nowtime);
|
|
$today_zero_time = mktime(0, 0, 0, $t['mon'], $t['mday'], $t['year']);
|
|
$where = " AND time >= $today_zero_time";
|
|
}else{
|
|
$sql = "SELECT sum(goods_amount) as totals FROM " . $GLOBALS['ecs']->table('order_info') . " o" .
|
|
" LEFT JOIN " . $GLOBALS['ecs']->table('affiliate_log') . " a ON o.order_id = a.order_id" .
|
|
" WHERE a.user_id = " . $_SESSION['user_id'];
|
|
return $GLOBALS['db']->query($sql);
|
|
}
|
|
|
|
}
|
|
$sql = "SELECT sum(money) as totals FROM " . $GLOBALS['ecs']->table('affiliate_log') .
|
|
" WHERE user_id = " . $_SESSION['user_id'] .
|
|
"$where";
|
|
return $GLOBALS['db']->query($sql);
|
|
}
|
|
// 佣金明细
|
|
public function actionDrplog(){
|
|
$sql = "SELECT order_id FROM " . $GLOBALS['ecs']->table('drp_log') . " ORDER BY log_id DESC" ;
|
|
$last_oid = $GLOBALS['db']->getOne($sql);
|
|
$last_oid = $last_oid?$last_oid:0;
|
|
|
|
$sql = "SELECT o.order_id FROM {pre}order_info " ." o".
|
|
" LEFT JOIN".$GLOBALS['ecs']->table('users')." u ON o.user_id = u.user_id".
|
|
" WHERE o.user_id > 0 AND (u.parent_id > 0 AND o.is_separate = 0 OR o.is_separate > 0) ".
|
|
" and o.order_id > $last_oid" ;
|
|
|
|
$up_oid = $GLOBALS['db']->getAll($sql);
|
|
$affiliate = unserialize($GLOBALS['_CFG']['affiliate']);
|
|
empty($affiliate) && $affiliate = array();
|
|
if($up_oid){
|
|
$separate_by = $affiliate['config']['separate_by'];
|
|
$affiliate['config']['level_point_all'] = (float)$affiliate['config']['level_point_all'];
|
|
$affiliate['config']['level_money_all'] = (float)$affiliate['config']['level_money_all'];
|
|
if ($affiliate['config']['level_point_all'])
|
|
{
|
|
$affiliate['config']['level_point_all'] /= 100;
|
|
}
|
|
if ($affiliate['config']['level_money_all'])
|
|
{
|
|
$affiliate['config']['level_money_all'] /= 100;
|
|
}
|
|
foreach ($up_oid as $kk => $vv){
|
|
$row = $GLOBALS['db']->getRow("SELECT o.order_sn, o.parent_id, o.is_separate, (o.goods_amount - o.discount) AS goods_amount, o.user_id FROM " . $GLOBALS['ecs']->table('order_info') . " o".
|
|
" LEFT JOIN " . $GLOBALS['ecs']->table('users') . " u ON o.user_id = u.user_id".
|
|
" WHERE order_id = ".$vv['order_id']);
|
|
$is = $row['is_separate'];
|
|
|
|
$money = round($affiliate['config']['level_money_all'] * $row['goods_amount'],2);
|
|
$integral = integral_to_give(array('order_id' => $vv['order_id'], 'extension_code' => ''));
|
|
$point = round($affiliate['config']['level_point_all'] * intval($integral['rank_points']), 0);
|
|
$num = count($affiliate['item']);
|
|
for ($i=0; $i < $num; $i++)
|
|
{
|
|
$affiliate['item'][$i]['level_point'] = (float)$affiliate['item'][$i]['level_point'];
|
|
$affiliate['item'][$i]['level_money'] = (float)$affiliate['item'][$i]['level_money'];
|
|
if ($affiliate['item'][$i]['level_point'])
|
|
{
|
|
$perp = ($affiliate['item'][$i]['level_point']/ 100);
|
|
}
|
|
if ($affiliate['item'][$i]['level_money'])
|
|
{
|
|
$per = ($affiliate['item'][$i]['level_money'] /100);
|
|
}
|
|
$setmoney = round($money * $per, 2);
|
|
$setpoint = round($point * $perp, 0);
|
|
$row = $GLOBALS['db']->getRow("SELECT o.parent_id as user_id,u.user_name FROM " . $GLOBALS['ecs']->table('users') . " o" .
|
|
" LEFT JOIN" . $GLOBALS['ecs']->table('users') . " u ON o.parent_id = u.user_id".
|
|
" WHERE o.user_id = '$row[user_id]'"
|
|
);
|
|
|
|
$this->writeDrpLog($vv['order_id'], $row['user_id'], $row['user_name'], $setmoney, $setpoint, $i,$is,$separate_by);
|
|
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
$sql = "SELECT o.order_id FROM {pre}order_info as o " .
|
|
" LEFT JOIN {pre}drp_log as d ON d.order_id = o.order_id AND o.is_separate != d.is_separate";
|
|
//order_info order_id不在drp——log的id 自营的
|
|
$up_oid = $GLOBALS['db']->getAll($sql);
|
|
$affiliate = unserialize($GLOBALS['_CFG']['affiliate']);
|
|
empty($affiliate) && $affiliate = array();
|
|
if($up_oid){
|
|
|
|
foreach ($up_oid as $kk => $vv){
|
|
$row = $GLOBALS['db']->getRow("SELECT o.order_sn, o.parent_id, o.is_separate, (o.goods_amount - o.discount) AS goods_amount, o.user_id FROM " . $GLOBALS['ecs']->table('order_info') . " o".
|
|
" LEFT JOIN " . $GLOBALS['ecs']->table('users') . " u ON o.user_id = u.user_id".
|
|
" WHERE order_id = ".$vv['order_id']);
|
|
$is = $row['is_separate'];
|
|
|
|
$num = count($affiliate['item']);
|
|
for ($i=0; $i < $num; $i++)
|
|
{
|
|
$row = $GLOBALS['db']->getRow("SELECT o.parent_id as user_id,u.user_name FROM " . $GLOBALS['ecs']->table('users') . " o" .
|
|
" LEFT JOIN" . $GLOBALS['ecs']->table('users') . " u ON o.parent_id = u.user_id".
|
|
" WHERE o.user_id = '$row[user_id]'"
|
|
);
|
|
|
|
$this->upDrpLog($vv['order_id'],$is);
|
|
|
|
}
|
|
|
|
}
|
|
}
|
|
$page = I('post.page', 1, 'intval');
|
|
$size = '10';
|
|
$status = I('status',2,'intval');
|
|
|
|
if($status == 2){
|
|
//全部
|
|
$where = "";
|
|
|
|
}else {
|
|
//已分成 OR 等待处理
|
|
$where = " AND a.is_separate = " . $status . "";
|
|
}
|
|
if(IS_AJAX){
|
|
|
|
$sql = "SELECT o.order_sn, a.time,a.user_id,a.time,a.money,a.point,a.separate_type,IFNULL(w.nickname,u.user_name),a.is_separate FROM " . $GLOBALS['ecs']->table('drp_log') . " a".
|
|
" LEFT JOIN " . $GLOBALS['ecs']->table('order_info') . " o ON o.order_id = a.order_id" .
|
|
" LEFT JOIN".$GLOBALS['ecs']->table('users')." u ON o.user_id = u.user_id".
|
|
" LEFT JOIN".$GLOBALS['ecs']->table('wechat_user')." w ON w.ect_uid = u.user_id".
|
|
" WHERE a.user_id = $_SESSION[user_id] AND o.pay_status = 2".
|
|
" $where ".
|
|
" ORDER BY o.order_id DESC";
|
|
$resall = $GLOBALS['db']->query($sql);
|
|
|
|
$countall =count($resall);
|
|
$res = $GLOBALS['db']->selectLimit($sql, $size, ($page - 1) * $size);
|
|
foreach ($res as $k => $v){
|
|
$res[$k]['time'] = date("Y-m-d ",($v['time']+date('Z')));
|
|
$res[$k]['is_separate'] = ($v['is_separate'] == '1')?'已分成':'等待处理';
|
|
|
|
}
|
|
die(json_encode(array('list' => $res, 'totalPage' => ceil($countall/$size))));
|
|
}
|
|
|
|
$this->assign('page_title', '佣金明细');
|
|
$this->display('distribution_money');
|
|
}
|
|
//分类
|
|
public function actionCategory(){
|
|
$page = I('post.page', 1, 'intval');
|
|
$size = '5';
|
|
$status = I('status')?I('status'):0;;
|
|
$category = get_child_tree();
|
|
|
|
$sql = "SELECT cat_id FROM " . $GLOBALS['ecs']->table('drp_shop') .
|
|
" WHERE user_id = $this->user_id";
|
|
|
|
$res = $GLOBALS['db']->getOne($sql);
|
|
$res = explode(',',$res);
|
|
foreach ($category as $k => $v){
|
|
if(in_array($v['id'],$res)){
|
|
$category[$k]['is_drp'] = 1;
|
|
}else{
|
|
$category[$k]['is_drp'] = 0;
|
|
}
|
|
}
|
|
|
|
if(IS_AJAX){
|
|
if($status == 0){
|
|
foreach ($category as $ke => $val){
|
|
if($val['is_drp'] == 1){
|
|
unset($category[$ke]);
|
|
}
|
|
}
|
|
}
|
|
if($status == 1){
|
|
foreach ($category as $ke => $val){
|
|
if($val['is_drp'] == 0){
|
|
unset($category[$ke]);
|
|
}
|
|
}
|
|
}
|
|
die(json_encode(array('category'=>$category,'totalPage'=>1)));
|
|
}
|
|
$this->assign('page_title', '全部分类');
|
|
$this->display('distribution_shop');
|
|
}
|
|
//AJAX修改分类
|
|
public function actionAjaxeditcat(){
|
|
$cat_id = I('cat_id');
|
|
if(IS_POST){
|
|
$sql = "SELECT cat_id FROM " . $GLOBALS['ecs']->table('drp_shop') .
|
|
" WHERE user_id = $this->user_id";
|
|
$res = $GLOBALS['db']->getOne($sql);
|
|
$array = explode(',',$res);
|
|
if(in_array($cat_id,$array)){
|
|
foreach ($array as $k => $v){
|
|
if($v == $cat_id){
|
|
unset($array[$k]);
|
|
}
|
|
}
|
|
$res = implode(",",$array);
|
|
}else{
|
|
$res = $res . $cat_id .",";
|
|
}
|
|
$data['cat_id'] = $res;
|
|
$where['user_id'] = $_SESSION['user_id'];
|
|
$this->model->table('drp_shop')->data($data)->where($where)->update();
|
|
echo json_encode(array('status'=>1));
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 我的名片
|
|
*/
|
|
public function actionUserCard() {
|
|
$uid = I('request.u');
|
|
$uid = empty($uid) ? $_SESSION['user_id'] : $uid;
|
|
$info = get_drp($uid);
|
|
$this->assign('info', $info);
|
|
$url = 'http://'.$_SERVER['HTTP_HOST'].U('shop/index',array('id'=>$info['drp_id'],'u'=>$this->user_id));
|
|
//二维码内容
|
|
$str = '';
|
|
// 纠错级别:L、M、Q、H
|
|
$errorCorrectionLevel = 'L';
|
|
// 点的大小:1到10
|
|
$matrixPointSize = 4;
|
|
$file = ROOT_PATH.'data/attached/qrcode/';
|
|
$name = 'userid_'.$this->user_id.$errorCorrectionLevel . $matrixPointSize . '.png';
|
|
if(!file_exists($name)) {
|
|
$filename = $file . $name;
|
|
$code = \libraries\QRcode::png($url, $filename, $errorCorrectionLevel, $matrixPointSize, 2);
|
|
}
|
|
$this->assign('ewm', __ROOT__.'data/attached/qrcode/'.$name);
|
|
$this->assign('page_title',$info['username'].'的名片');
|
|
$this->display('distribution_card');
|
|
|
|
// $this->actionGetConfig();
|
|
/* if(is_object($this->weObj) && !empty($uid)) {
|
|
//获取店铺信息
|
|
$info = get_drp($uid);
|
|
|
|
//临时二维码
|
|
$path = ROOT_PATH.'data/attached/qrcode/card_'.$uid.'.png';
|
|
|
|
if(!file_exists($path) || (strtotime("-28 day")-@filectime($path))>0) {
|
|
|
|
//删除过期图片
|
|
@unlink ($path);
|
|
$ticket = $this->weObj->getQRCode((int)$uid, 0, 2592000);
|
|
$img = $this->weObj->getQRUrl($ticket['ticket']);
|
|
|
|
//保存图片到本地
|
|
$contents = \libraries\Http::doGet($img);
|
|
file_put_contents($path, $contents);
|
|
}
|
|
$this->assign('ewm', __ROOT__.'data/attached/qrcode/card_'.$uid.'.png');
|
|
|
|
//SDK
|
|
$access_token = $this->weObj->checkAuth($this->wechat['appid'],$this->wechat['appsecret']);
|
|
$ticket = $this->weObj->getJsTicket($this->wechat['appid']);
|
|
$time = gmtime()+8*3600;
|
|
$url = "jsapi_ticket=".$ticket."&noncestr=ectouch×tamp=".$time."&url="."http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
|
|
$arr = array(
|
|
'share_url' => U('user/card',array('uid'=>$uid)),
|
|
'imgUrl' => $info['headimgurl'],
|
|
'title' => $info['shop_name'],
|
|
'desc' => '新道新承诺,双盈大家乐!',
|
|
'appid' => $this->wechat['appid'],
|
|
'noncestr' => 'ectouch', //任意改动
|
|
'timestamp' => $time,
|
|
'signature' => sha1($url)
|
|
);
|
|
$this->assign('info', $info);
|
|
$this->assign('wx',$arr);
|
|
$this->assign('page_title',$info['username'].'的名片');
|
|
$this->display('distribution_card');
|
|
|
|
}else{
|
|
$this->redirect(U('user/index'));
|
|
}*/
|
|
}
|
|
/*
|
|
* 团队
|
|
*/
|
|
public function actionTeam() {
|
|
if(IS_AJAX) {
|
|
$uid = I('user_id') ? I('user_id'): $this->user_id;
|
|
$page = I('page', 1) - 1;
|
|
$limit = " LIMIT $page,6";
|
|
$sql = "SELECT s.status, s.audit, u.user_id, IFNULL(u.user_name, w.nickname) as name, w.headimgurl, FROM_UNIXTIME(u.reg_time, '%Y-%m-%d') as time,
|
|
IFNULL((select sum(log.money) as money from {pre}affiliate_log as log left join {pre}order_info as o
|
|
on log.order_id=o.order_id where o.user_id=u.user_id and log.user_id=".$uid."),0) as money
|
|
FROM {pre}users as u
|
|
LEFT JOIN {pre}wechat_user as w ON u.user_id=w.ect_uid
|
|
LEFT JOIN {pre}drp_shop as s ON u.user_id=s.user_id
|
|
WHERE s.status=1 and s.audit=1 and u.parent_id='$uid'
|
|
ORDER BY u.reg_time desc". $limit;
|
|
|
|
$next = $this->model->query($sql);
|
|
|
|
//所有记录
|
|
$list = $this->model->query($sql);
|
|
die(json_encode(array('info'=>$next, 'uid'=>$uid, 'totalPage'=>ceil(count($list)/6))));
|
|
}
|
|
$this->assign('page_title','我的团队');
|
|
$this->assign('next_id',I('user_id',''));
|
|
$this->display('distribution_team');
|
|
}
|
|
/*
|
|
* 从下线获取的佣金-详情
|
|
*/
|
|
public function actionTeamDetail() {
|
|
$uid = I('uid','');
|
|
|
|
if(empty($uid)) {
|
|
$this->redirect(U('drp/user/index'));
|
|
}
|
|
$sql = "SELECT u.user_id, IFNULL(u.user_name, w.nickname) as name, w.headimgurl, FROM_UNIXTIME(u.reg_time, '%Y-%m-%d') as time,
|
|
IFNULL((select sum(sl.money) from {pre}affiliate_log as sl
|
|
left join {pre}order_info as so on sl.order_id=so.order_id
|
|
where so.user_id='$uid' and sl.user_id='$this->user_id'),0) as sum_money,
|
|
IFNULL((select sum(nl.money) from {pre}affiliate_log as nl
|
|
left join {pre}order_info as no on nl.order_id=no.order_id
|
|
where nl.time>'".mktime(0,0,0)."' and no.user_id='$uid' and nl.user_id='$this->user_id'),0) as now_money,
|
|
(select count(h.user_id) from {pre}users as h LEFT JOIN {pre}drp_shop as s on s.user_id=h.user_id where s.status=1 and s.audit=1 and parent_id='$uid' ) as next_num
|
|
FROM {pre}users as u
|
|
LEFT JOIN {pre}wechat_user as w ON u.user_id=w.ect_uid
|
|
WHERE u.user_id='$uid'";
|
|
$this->assign('info',$this->db->getRow($sql));
|
|
$shopid = model()->table('drp_shop')->field('id')->where(array('user_id'=>$uid, 'status'=>1,'audit'=>1))->find();
|
|
$this->assign('shopid',$shopid['id']);
|
|
$this->assign('page_title','团队详情');
|
|
$this->display('distribution_team_detail');
|
|
}
|
|
//新手必看
|
|
public function actionNew(){
|
|
|
|
$sql = "SELECT a.title,a.content FROM " . $GLOBALS['ecs']->table('article') . " a".
|
|
" LEFT JOIN " . $GLOBALS['ecs']->table('article_cat') . " o ON o.cat_id = a.cat_id" .
|
|
" WHERE a.is_open = 1 and o.cat_id = 1000 order by a.add_time desc ";
|
|
$drp_article = $this->db->query($sql);
|
|
foreach( $drp_article as $k=>$v){
|
|
$drp_article[$k]['order'] = ($k+1);
|
|
}
|
|
$this->assign('drp_article', $drp_article);
|
|
$this->assign('page_title', '新手必看');
|
|
$this->display('distribution_new');
|
|
}
|
|
/*
|
|
* 排行榜
|
|
*/
|
|
public function actionRankList() {
|
|
|
|
$uid = I('uid') ? I('uid'): $this->user_id;
|
|
$all =$GLOBALS['cache']->get('ranklist'.$uid);
|
|
if(!$all) {
|
|
$sql = "SELECT d.user_id, w.nickname, w.headimgurl, u.user_name,
|
|
IFNULL((select sum(money) from {pre}affiliate_log where user_id=d.user_id),0) as money
|
|
FROM {pre}drp_shop as d
|
|
LEFT JOIN {pre}users as u ON d.user_id=u.user_id
|
|
LEFT JOIN {pre}wechat_user as w ON d.user_id=w.ect_uid
|
|
LEFT JOIN {pre}affiliate_log as log ON log.user_id=d.user_id
|
|
where d.audit=1 and d.status=1
|
|
GROUP BY d.user_id
|
|
ORDER BY money desc ";
|
|
$all = $this->model->query($sql);
|
|
if ($all) {
|
|
foreach ($all as $key => $val) {
|
|
if ($key === 0) {
|
|
$all[$key]['img'] = __TPL__ . 'img/fx-one.png';
|
|
} else if ($key === 1) {
|
|
$all[$key]['img'] = __TPL__ . 'img/fx-two.png';
|
|
} else if ($key === 2) {
|
|
$all[$key]['img'] = __TPL__ . 'img/fx-stree.png';
|
|
} else {
|
|
$all[$key]['span'] = $key + 1;
|
|
}
|
|
}
|
|
$GLOBALS['cache']->set('ranklist' . $uid, $all);
|
|
}
|
|
}
|
|
if(IS_AJAX) {
|
|
|
|
$page = I('page',1,'intval')-1;
|
|
//总条数
|
|
$list = array_slice($all,$page*6,6);
|
|
die(json_encode(array('list' => $list, 'totalPage' => ceil(count($all) / 6))));
|
|
}
|
|
//用户排名
|
|
|
|
$rank = copy_array_column($all,'user_id');
|
|
$rank = array_search($uid,$rank);
|
|
$rank = $rank === false ? '--' : $rank+1;
|
|
$this->assign('rank',$rank);
|
|
$this->assign('page_title','分销排行');
|
|
$this->display('distribution_ranklist');
|
|
}
|
|
/**
|
|
* 获取公众号配置
|
|
*
|
|
* @param string $orgid
|
|
* @return array
|
|
*/
|
|
private function actionGetConfig() {
|
|
$orgid = $this->model->table('wechat')->field('orgid')->one();
|
|
$wxinfo = model()->table('wechat')
|
|
->field('id, token, appid, appsecret, encodingaeskey')
|
|
->where(array('orgid'=>$orgid, 'status'=>1))
|
|
->find();
|
|
$this->wechat = $wxinfo;
|
|
if (!empty($wxinfo)) {
|
|
$this->weObj = new \vendor\Wechat($wxinfo);
|
|
}
|
|
}
|
|
/**
|
|
* 店铺设置
|
|
*/
|
|
public function actionShopConfig() {
|
|
$sql="SELECT * FROM {pre}drp_shop WHERE user_id=$this->user_id";
|
|
$drp_info=$this->db->getRow($sql);
|
|
$info=array();
|
|
$info['shop_name']= $drp_info['shop_name'];
|
|
$info['real_name']= $drp_info['real_name'];
|
|
$info['qq']= $drp_info['qq'];
|
|
if(empty($drp_info['shop_img'])){
|
|
$info['shop_img']=__TPL__.'img/user-shop.png';
|
|
}else{
|
|
$info['shop_img'] ='./data/attached/drp_logo/' . $drp_info['shop_img'];
|
|
}
|
|
$info['mobile']= $drp_info['mobile'];
|
|
$this->assign('info',$info);
|
|
if (IS_POST) {
|
|
$data = I('');
|
|
if($data['mobile']){
|
|
$preg=preg_match('#^13[\d]{9}$|^14[5,7]{1}\d{8}$|^15[^4]{1}\d{8}$|^17[0,6,7,8]{1}\d{8}$|^18[\d]{9}$#', $data['mobile']) ? true : false;
|
|
if($preg==FALSE){
|
|
show_message('手机号码格式不正确');
|
|
|
|
}
|
|
}
|
|
if (empty($data['shop_name'])) {
|
|
show_message('店铺名不能为空');
|
|
}
|
|
if (empty($data['real_name'])) {
|
|
show_message('真实姓名不能为空');
|
|
}
|
|
if (empty($data['mobile'])) {
|
|
show_message('手机号码不能为空');
|
|
}
|
|
if (!empty($_FILES['shop_img']['name'])) {
|
|
$result =$this->ectouchUpload('shop_img','drp_logo');
|
|
if ($result['error'] > 0) {
|
|
show_message($result['message']);
|
|
}
|
|
$data['shop_img'] = $result['message']['shop_img']['savename'];
|
|
}
|
|
$where['user_id'] = $_SESSION['user_id'];
|
|
$this->model->table('drp_shop')->data($data)->where($where)->update();
|
|
show_message('修改成功', '分销中心', U('drp/user/index'),'success');
|
|
}
|
|
$this->assign('page_title','店铺设置');
|
|
$this->display('shop_config');
|
|
}
|
|
/*
|
|
* 分销订单列表
|
|
* */
|
|
public function actionOrder()
|
|
{
|
|
$sql = "SELECT order_id FROM " . $GLOBALS['ecs']->table('drp_log') . " ORDER BY log_id DESC" ;
|
|
$last_oid = $GLOBALS['db']->getOne($sql);
|
|
$last_oid = $last_oid?$last_oid:0;
|
|
|
|
$sql = "SELECT o.order_id FROM {pre}order_info " ." o".
|
|
" LEFT JOIN".$GLOBALS['ecs']->table('users')." u ON o.user_id = u.user_id".
|
|
" WHERE o.user_id > 0 AND (u.parent_id > 0 AND o.is_separate = 0 OR o.is_separate > 0) ".
|
|
" and o.order_id > $last_oid" ;
|
|
|
|
$up_oid = $GLOBALS['db']->getAll($sql);
|
|
$affiliate = unserialize($GLOBALS['_CFG']['affiliate']);
|
|
empty($affiliate) && $affiliate = array();
|
|
if($up_oid){
|
|
$separate_by = $affiliate['config']['separate_by'];
|
|
$affiliate['config']['level_point_all'] = (float)$affiliate['config']['level_point_all'];
|
|
$affiliate['config']['level_money_all'] = (float)$affiliate['config']['level_money_all'];
|
|
if ($affiliate['config']['level_point_all'])
|
|
{
|
|
$affiliate['config']['level_point_all'] /= 100;
|
|
}
|
|
if ($affiliate['config']['level_money_all'])
|
|
{
|
|
$affiliate['config']['level_money_all'] /= 100;
|
|
}
|
|
foreach ($up_oid as $kk => $vv){
|
|
$oid = (int)$vv['order_id'];
|
|
$row = $GLOBALS['db']->getRow("SELECT o.order_sn, o.parent_id, o.is_separate, (o.goods_amount - o.discount) AS goods_amount, o.user_id FROM " . $GLOBALS['ecs']->table('order_info') . " o".
|
|
" LEFT JOIN " . $GLOBALS['ecs']->table('users') . " u ON o.user_id = u.user_id".
|
|
" WHERE order_id = '$oid'");
|
|
$is = $row['is_separate'];
|
|
$money = round($affiliate['config']['level_money_all'] * $row['goods_amount'],2);
|
|
$integral = integral_to_give(array('order_id' => $oid, 'extension_code' => ''));
|
|
$point = round($affiliate['config']['level_point_all'] * intval($integral['rank_points']), 0);
|
|
$num = count($affiliate['item']);
|
|
for ($i=0; $i < $num; $i++)
|
|
{
|
|
$affiliate['item'][$i]['level_point'] = (float)$affiliate['item'][$i]['level_point'];
|
|
$affiliate['item'][$i]['level_money'] = (float)$affiliate['item'][$i]['level_money'];
|
|
if ($affiliate['item'][$i]['level_point'])
|
|
{
|
|
$perp = ($affiliate['item'][$i]['level_point']/ 100);
|
|
}
|
|
if ($affiliate['item'][$i]['level_money'])
|
|
{
|
|
$per = ($affiliate['item'][$i]['level_money']/ 100);
|
|
}
|
|
$setmoney = round($money * $per, 2);
|
|
$setpoint = round($point * $perp, 0);
|
|
$row = $GLOBALS['db']->getRow("SELECT o.parent_id as user_id,u.user_name FROM " . $GLOBALS['ecs']->table('users') . " o" .
|
|
" LEFT JOIN" . $GLOBALS['ecs']->table('users') . " u ON o.parent_id = u.user_id".
|
|
" WHERE o.user_id = '$row[user_id]'"
|
|
);
|
|
|
|
$this->writeDrpLog($oid, $row['user_id'], $row['user_name'], $setmoney, $setpoint, $i,$is,$separate_by);
|
|
|
|
}
|
|
}
|
|
|
|
}
|
|
$sql = "SELECT o.order_id FROM {pre}order_info as o " .
|
|
" LEFT JOIN {pre}drp_log as d ON d.order_id = o.order_id AND o.is_separate != d.is_separate";
|
|
//order_info order_id不在drp——log的id 自营的
|
|
$up_oid = $GLOBALS['db']->getAll($sql);
|
|
$affiliate = unserialize($GLOBALS['_CFG']['affiliate']);
|
|
empty($affiliate) && $affiliate = array();
|
|
if($up_oid){
|
|
|
|
foreach ($up_oid as $kk => $vv){
|
|
$row = $GLOBALS['db']->getRow("SELECT o.order_sn, o.parent_id, o.is_separate, (o.goods_amount - o.discount) AS goods_amount, o.user_id FROM " . $GLOBALS['ecs']->table('order_info') . " o".
|
|
" LEFT JOIN " . $GLOBALS['ecs']->table('users') . " u ON o.user_id = u.user_id".
|
|
" WHERE order_id = ".$vv['order_id']);
|
|
$is = $row['is_separate'];
|
|
|
|
$num = count($affiliate['item']);
|
|
for ($i=0; $i < $num; $i++)
|
|
{
|
|
$row = $GLOBALS['db']->getRow("SELECT o.parent_id as user_id,u.user_name FROM " . $GLOBALS['ecs']->table('users') . " o" .
|
|
" LEFT JOIN" . $GLOBALS['ecs']->table('users') . " u ON o.parent_id = u.user_id".
|
|
" WHERE o.user_id = '$row[user_id]'"
|
|
);
|
|
|
|
$this->upDrpLog($vv['order_id'],$is);
|
|
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
|
|
$page = I('post.page', 1, 'intval');
|
|
$size = '5';
|
|
$status = I('status',2,'intval');
|
|
|
|
if($status == 2){
|
|
//全部
|
|
$where = "";
|
|
|
|
}else {
|
|
//已分成 OR 等待处理
|
|
$where = " AND o.is_separate = " . $status . "";
|
|
}
|
|
if(IS_AJAX){
|
|
$sql = "SELECT o.*, a.money, IFNULL(w.nickname,u.user_name) as user_name, a.point, a.drp_level FROM " . $GLOBALS['ecs']->table('drp_log') . " a".
|
|
" LEFT JOIN " . $GLOBALS['ecs']->table('order_info') . " o ON o.order_id = a.order_id" .
|
|
" LEFT JOIN".$GLOBALS['ecs']->table('users')." u ON o.user_id = u.user_id".
|
|
" LEFT JOIN".$GLOBALS['ecs']->table('wechat_user')." w ON w.ect_uid = u.user_id".
|
|
" WHERE a.user_id = $_SESSION[user_id] AND o.pay_status = 2".
|
|
|
|
" $where ".
|
|
" ORDER BY order_id DESC";
|
|
|
|
$resall = $GLOBALS['db']->query($sql);
|
|
$countall =count($resall);
|
|
$res = $GLOBALS['db']->selectLimit($sql, $size, ($page - 1) * $size);
|
|
if ($res) {
|
|
|
|
|
|
foreach ($res as $key => $value) {
|
|
$level_per = ((float)$affiliate['item'][$value['drp_level']]['level_money'])*($affiliate['config']['level_money_all']);
|
|
$level_per = $level_per/100;
|
|
|
|
$goods_list = $this->getOrderGoods($value['order_id']);
|
|
$total_goods_price = 0;
|
|
foreach ($goods_list as $key => $val) {
|
|
$goods_list[$key]['price'] = $val['goods_price'];
|
|
$goods_list[$key]['subtotal'] = price_format($value['total_fee'], false);
|
|
$goods_list[$key]['goods_number'] = $val['goods_number'];
|
|
$goods_list[$key]['goods_thumb'] = get_image_path($val['goods_thumb']);
|
|
$goods_list[$key]['url'] = U('goods/index/index',array('id'=>$val['goods_id']));
|
|
$goods_list[$key]['this_good_drpmoney'] = (round($val['goods_price']*$level_per/100,2));
|
|
$total_goods_price += $val['goods_price'];
|
|
$goods_list[$key]['this_good_per'] = $level_per."%";
|
|
}
|
|
|
|
foreach ($goods_list as $key => $val) {
|
|
$goods_list[$key]['goods_price'] = price_format($val['goods_price'], false);
|
|
}
|
|
|
|
$orders[] = array(
|
|
'user_name' => $value['user_name'],
|
|
'order_sn' => $value['order_sn'],
|
|
'order_time' => date("Y-m-d H:i:s",$value['add_time']+date('Z')),
|
|
'url' => U('drp/user/order_detail', array('order_id' => $value['order_id'])),
|
|
'is_separate' => $value['is_separate'],
|
|
'goods' => $goods_list,
|
|
'goods_count' => $goods_list?count($goods_list):0,
|
|
'total_orders_drpmoney' => price_format((round($value['goods_amount']*$level_per/100,2)), false),
|
|
'this_good_per' => $level_per."%"
|
|
);
|
|
}
|
|
}
|
|
die(json_encode(array('orders'=>$orders,'totalPage'=>ceil($countall/$size))));
|
|
}
|
|
|
|
$this->assign('page_title', "分销订单");
|
|
$this->display('drp_orders');
|
|
}
|
|
private function writeDrpLog($oid, $uid, $username, $money, $point,$i,$is, $separate_by)
|
|
{
|
|
$time = gmtime();
|
|
$sql = "INSERT INTO " . $GLOBALS['ecs']->table('drp_log') . "( order_id, user_id, user_name, time, money, point, drp_level,is_separate, separate_type)".
|
|
" VALUES ( '$oid', '$uid', '$username', '$time', '$money', '$point','$i','$is', $separate_by)";
|
|
if ($oid)
|
|
{
|
|
$GLOBALS['db']->query($sql);
|
|
}
|
|
}
|
|
private function upDrpLog($oid, $is)
|
|
{
|
|
$time = gmtime();
|
|
$sql = "UPDATE {pre}drp_log SET `is_separate` = $is WHERE order_id = $oid ";
|
|
if ($oid)
|
|
{
|
|
$GLOBALS['db']->query($sql);
|
|
}
|
|
}
|
|
|
|
public function actionOrderdetail(){
|
|
|
|
$oid = (int)$_REQUEST['order_id'];
|
|
|
|
$sql = "SELECT o.*, a.money, IFNULL(w.nickname,u.user_name) as user_name, a.point, a.drp_level FROM " . $GLOBALS['ecs']->table('drp_log') . " a".
|
|
" LEFT JOIN " . $GLOBALS['ecs']->table('order_info') . " o ON o.order_id = a.order_id" .
|
|
" LEFT JOIN".$GLOBALS['ecs']->table('users')." u ON o.user_id = u.user_id".
|
|
" LEFT JOIN".$GLOBALS['ecs']->table('wechat_user')." w ON w.ect_uid = u.user_id".
|
|
" WHERE a.user_id = $_SESSION[user_id] AND o.order_id = $oid AND o.pay_status = 2";
|
|
$res = $GLOBALS['db']->getRow($sql);
|
|
if(!$res){
|
|
ecs_header("Location: ".(U('drp/user/index')));
|
|
}
|
|
|
|
$goods_list = $this->getOrderGoods($res['order_id']);
|
|
$affiliate = unserialize($GLOBALS['_CFG']['affiliate']);
|
|
empty($affiliate) && $affiliate = array();
|
|
$level_per = ((float)$affiliate['item'][$res['drp_level']]['level_money'])*($affiliate['config']['level_money_all'] /= 100);
|
|
foreach ($goods_list as $key => $val) {
|
|
$goods_list[$key]['price'] = $val['goods_price'];
|
|
$goods_list[$key]['goods_number'] = $val['goods_number'];
|
|
$goods_list[$key]['goods_thumb'] = get_image_path($val['goods_thumb']);
|
|
$goods_list[$key]['goods_url'] = U('goods/index/index', array('id' => $val['goods_id']));
|
|
}
|
|
foreach ($goods_list as $key => $val) {
|
|
$goods_list[$key]['this_good_drpmoney'] = (round($val['goods_price']*$level_per/100,2));
|
|
$goods_list[$key]['this_good_per'] = $level_per."%";
|
|
$goods_list[$key]['goods_price'] = price_format($val['goods_price'], false);
|
|
}
|
|
$orders = array(
|
|
'user_name' => $res['user_name'],
|
|
'order_sn' => $res['order_sn'],
|
|
'order_time' => date("Y-m-d H:i:s",($res['add_time']+date('Z'))),
|
|
'is_separate' => $res['is_separate'],
|
|
'goods' => $goods_list,
|
|
'goods_count' => $goods_list?count($goods_list):0,
|
|
'total_orders_drpmoney' => price_format((($res['goods_amount']-$res['discount'])*$level_per/100), false),
|
|
'this_good_per' => $level_per."%"
|
|
);
|
|
|
|
$this->assign('order', $orders);
|
|
$this->assign('page_title', '分销订单详情');
|
|
$this->display('drp_order_detail');
|
|
}
|
|
|
|
private function getOrderGoods($order_id = 0){
|
|
if($order_id > 0){
|
|
|
|
$sql = "select og.rec_id,og.goods_id,og.goods_name,og.goods_attr,og.goods_number,og.goods_price, g.goods_thumb from {pre}order_goods as og join {pre}goods as g on og.goods_id = g.goods_id where og.order_id=$order_id";
|
|
$goodsArr = model()->query($sql);
|
|
return $goodsArr;
|
|
|
|
}
|
|
}
|
|
|
|
/**
|
|
* html代码输出
|
|
*/
|
|
private function htmlOut($str)
|
|
{
|
|
if (function_exists('htmlspecialchars_decode')) {
|
|
$str = htmlspecialchars_decode($str);
|
|
} else {
|
|
$str = html_entity_decode($str);
|
|
}
|
|
$str = stripslashes($str);
|
|
return $str;
|
|
}
|
|
|
|
}
|
|
|