AdminIndexController.php 7.1 KB
<?php
// +----------------------------------------------------------------------
// | bronet [ 以客户为中心 以奋斗者为本 ]
// +----------------------------------------------------------------------
// | Copyright (c) 2013-2017 http://www.bronet.cn All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: Powerless < wzxaini9@gmail.com>
// +----------------------------------------------------------------------

namespace app\user\controller;

use cmf\controller\AdminBaseController;
use think\Db;

/**
 * Class AdminIndexController
 * @package app\user\controller
 *
 * @adminMenuRoot(
 *     'name'   =>'用户管理',
 *     'action' =>'default',
 *     'parent' =>'',
 *     'display'=> true,
 *     'order'  => 10,
 *     'icon'   =>'group',
 *     'remark' =>'用户管理'
 * )
 *
 * @adminMenuRoot(
 *     'name'   =>'用户组',
 *     'action' =>'default1',
 *     'parent' =>'user/AdminIndex/default',
 *     'display'=> true,
 *     'order'  => 10000,
 *     'icon'   =>'',
 *     'remark' =>'用户组'
 * )
 */
class AdminIndexController extends AdminBaseController
{

    /**
     * 后台本站用户列表
     * @adminMenu(
     *     'name'   => '本站用户',
     *     'parent' => 'default1',
     *     'display'=> true,
     *     'hasView'=> true,
     *     'order'  => 10000,
     *     'icon'   => '',
     *     'remark' => '本站用户',
     *     'param'  => ''
     * )
     */
    public function index()
    {
        $where = ['user_type' => 2];
        $where1 = [];
        $where3 = [];
        $param = request()->param();


        $keywordComplex = [];
        if (!empty($param['keyword'])) {
            $keyword = $param['keyword'];
            $keywordComplex['mobile|id'] = $keyword;
        }
        if (!empty($param['start_time'])) {
            $where['create_time'] = ['egt', strtotime($param['start_time'])];
        }
        if (!empty($param['end_time'])) {
            $where1['create_time'] = ['elt', strtotime($param['end_time'])];
        }
        if (!empty($param['min'])) {
            $where['balance'] = ['egt', $param['min']];
        }
        if (!empty($param['max'])) {
            $where1['balance'] = ['elt', $param['max']];
        }

        $p_id = (isset($param['uid'])) ? $param['uid'] : null;
        //下级人员
        if ($p_id) {
            $where3['parent_id'] = ['eq', $p_id];
        }

        $usersQuery = Db::name('user');

        $list = $usersQuery->whereOr($keywordComplex)->where($where)->where($where1)->where($where3)->order("create_time DESC")->paginate(10);
        //获取订单数和会员专区金额统计
        foreach ($list as $k => $item) {
            $uid = $item['id'];
            $role = $item['role'];
            //如果此人为普通会员,只统计其金额总和
            if ($role == 1) {
                $map = [
                    'uid' => ['eq', $item['id']],
                    'pay_type' => ['eq', 3],
                    'step' => ['neq', 1]
                ];
                $data = Db::name('zj_order')->where($map)->field('sum(whole) as whole,sum(whole_num) as whole_num')->select();
                $whole = $data[0]['whole'];
                $whole_num = $data[0]['whole_num'];
                $total = $whole - $whole_num;
            } else {
                //先查此人的下级
                $son_arr = Db::name('user')->where(['parent_id' => $item['id']])->field('id')->select()->toArray();
                if (!empty($son_arr)) {
                    $son_str = '';
                    foreach ($son_arr as $key => $v) {
                        if ($key == count($son_arr) - 1) {
                            $son_str .= $v['id'];
                        } else {
                            $son_str .= $v['id'] . ',';
                        }
                    }
                    $map = [
                        'uid' => ['eq', $son_str],
                        'pay_type' => ['eq', 3],
                        'step' => ['neq', 1]
                    ];
                    $data = Db::name('zj_order')->where($map)->field('sum(whole) as whole,sum(whole_num) as whole_num')->select();
                    $whole = $data[0]['whole'];
                    $whole_num = $data[0]['whole_num'];
                    $total = $whole - $whole_num;
                    print_r($data->toArray());
                } else {
                    $total = 0;
                }
            }
            $item['total'] = $total;
            $list[$k] = $item;
        }


        // 获取分页显示
        $list->appends($param);
        $this->assign('start_time', isset($param['start_time']) ? $param['start_time'] : '');
        $this->assign('end_time', isset($param['end_time']) ? $param['end_time'] : '');
        $this->assign('min', isset($param['min']) ? $param['min'] : '');
        $this->assign('max', isset($param['max']) ? $param['max'] : '');
        $this->assign('keyword', isset($param['keyword']) ? $param['keyword'] : '');
        $this->assign('list', $list->items());
        $this->assign('page', $list->render());
        $this->assign('uid', $p_id);
        // 渲染模板输出
        return $this->fetch();
    }

    /**
     * 本站用户拉黑
     * @adminMenu(
     *     'name'   => '本站用户拉黑',
     *     'parent' => 'index',
     *     'display'=> false,
     *     'hasView'=> false,
     *     'order'  => 10000,
     *     'icon'   => '',
     *     'remark' => '本站用户拉黑',
     *     'param'  => ''
     * )
     */
    public function ban()
    {
        $id = input('param.id', 0, 'intval');
        if ($id) {
            $result = Db::name("user")->where(["id" => $id, "user_type" => 2])->setField('user_status', 0);
            if ($result) {
                $this->success("会员拉黑成功!", "adminIndex/index");
            } else {
                $this->error('会员拉黑失败,会员不存在,或者是管理员!');
            }
        } else {
            $this->error('数据传入失败!');
        }
    }

    /**
     * 本站用户启用
     * @adminMenu(
     *     'name'   => '本站用户启用',
     *     'parent' => 'index',
     *     'display'=> false,
     *     'hasView'=> false,
     *     'order'  => 10000,
     *     'icon'   => '',
     *     'remark' => '本站用户启用',
     *     'param'  => ''
     * )
     */
    public function cancelBan()
    {
        $id = input('param.id', 0, 'intval');
        if ($id) {
            Db::name("user")->where(["id" => $id, "user_type" => 2])->setField('user_status', 1);
            $this->success("会员启用成功!", '');
        } else {
            $this->error('数据传入失败!');
        }
    }

    /**
     * 用户积分详情
     */
    public function balance()
    {
        if ($this->request->param()) {
            $id = input('param.id');
            $all = Db::name('zj_integral_log')->where('uid', $id)->paginate(20);
            $this->assign('list', $all);
            $this->assign('page', $all->render());
            return $this->fetch();
        }
    }
}