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.

370 lines
12 KiB

<?php
namespace app\base\controller\user\admin;
use app\distribution\logic\Commission;
use app\distribution\model\DistributionCommissionLog;
use app\integral\logic\Integral;
use app\integral\model\IntegralLog;
use app\money\logic\Money;
use app\money\model\MoneyLog;
use app\money\model\MoneyMy;
use excel\Excel;
use think\App;
use think\facade\View;
use think\Validate;
class User extends Base
{
/**
* 用户列表
* @return array|mixed|string
*/
public function user()
{
$search = input('get.');
autoSearch(['time', 'nick_name', 'mobile_phone'], $search);
$user_model = new \app\base\model\user\User();
$where = [['uid', '=', UID]];
$hasWhere = [];
if ($search['time']) {
$time = explode('-', $search['time']);
$where[] = ['create_time', 'between time', [$time[0], $time[1]]];
}
if ($search['mobile_phone'] !== null && $search['mobile_phone'] !== '') {//手机号
$where[] = ['mobile_phone', 'like', '%' . $search['mobile_phone'] . '%'];
}
if ($search['nick_name'] !== null && $search['nick_name'] !== '') {//昵称
$hasWhere[] = ['nick_name', 'like', '%' . $search['nick_name'] . '%'];
}
$where = $user_model->whereChange($where);
session('where',$where);
session('hasWhere',$hasWhere);
$dataList = $user_model::hasWhere('userInfo', $hasWhere)->with(['userInfo', 'userMoney', 'userCommission', 'userIntegral'])
->where($where)->order('id desc')->paginate([
'list_rows' => 20,
'page' => array_key_exists("page", $search) ? (string)$search['page'] : "1",
'query' => $search
], false)
->each(function ($item, $key) {
$item['money'] = $item['money'] ?? 0;
$item['commission'] = $item['commission'] ?? 0;
$item['integral'] = $item['integral'] ?? 0;
return $item;
});
$attach = [
'total_html' => [['用户总数', $dataList->total()]],
];
View::assign('attach', $attach);
// dump($dataList->toArray());exit();
View::assign('dataList', $dataList);
View::assign('search', $search);
return View::fetch();
}
/**
* 用户列表导出
* @return mixed
*/
public function userExport()
{
$where = session('where');
$hasWhere = session('hasWhere');
$user_model = new \app\base\model\user\User();
$dataList = $user_model::hasWhere('userInfo', $hasWhere)->with(['userInfo', 'userMoney', 'userCommission', 'userIntegral'])
->where($where)->order('id desc')->select()
->each(function ($item, $key) {
return $item;
});
foreach ($dataList as $key => $value) {
$data[$key] = [
$value['id'], //ID
$value['mobile_phone'], //手机号
$value['nick_name'], //昵称
$value['create_time'], //注册时间
];
};
$fileName = "用户列表";
$headArr = ["ID", "手机号", '昵称', "注册时间"];
$msg = '';
$excel_class = new Excel();
$res = $excel_class->excelExport($fileName, $headArr, $data, $msg);
return $res;
}
/**
* 用户详情
*/
public function userDetail()
{
$vip_model = new \app\base\model\user\User();
if (request()->isPost()) {
$data = input('post.');
$res = $vip_model->dataUpdate($data);
if (!$res) {
return sendErrorMessage();
}
return sendSuccessMessage();
} else {
$id = input('param.id', 0);
$data = $vip_model->with(['userInfo', 'userMoney', 'userCommission', 'userIntegral'])->where(['id' => $id])->find();
$data['gender_text'] = $data['gender_text'];
View::assign('data', $data);
return View::fetch('userdetail');
}
}
/**
* 用户余额明细
*/
public function userMoneyDetails()
{
$search = input('get.');
autoSearch(['time', 'type', 'order_number'], $search);
$money_log_model = new MoneyLog();
$user_id = input('param.user_id', 0);
$where = [
['uid', '=', UID],
['user_id', '=', $user_id]
];
if ($search['time']) {
$time = explode('-', $search['time']);
$where[] = ['create_time', 'between time', [$time[0], $time[1]]];
}
if ($search['type'] != '' && $search['type'] != null) {
$where['type'] = ['type', '=', $search['type']];
}
if ($search['order_number']) {
$where[] = ['relation_order_number', 'like', '%' . $search['order_number'] . '%'];
}
session('where', $where);
$page = array_key_exists("page", $search) ? (string)$search['page'] : "1";
$dataList = $money_log_model
->where($where)->order('id desc')
->paginate(['list_rows' => 50, 'page' => $page], false)->each(function ($item, $key) {
return $item;
});
View::assign('dataList', $dataList);
View::assign('search', $search);
return View::fetch('moneydetails');
}
/**
* 增加用户余额
*/
public function userMoneyRaise()
{
if (request()->isPost()) {
$data = input('post.');
//写日志变更记录
$money_service = new \app\money\service\Money();
return $money_service->change($data['user_id'], 7, $data['money'], '后台增加');
} else {
$user_id = input('param.user_id');
$source = input('param.source');
View::assign('source', $source);
View::assign('user_id', $user_id);
return View::fetch('moneyraise');
}
}
/**
* 减少用户余额
*/
public function userMoneyReduce()
{
if (request()->isPost()) {
$data = input('post.');
if ($data['current_money'] < $data['money']) {
return sendErrorMessage(1, '减少的余额数,不能大于当前余额!');
}
//写日志变更记录
$money_service = new \app\money\service\Money();
return $money_service->change($data['user_id'], 8, -$data['money'], '后台减少');
} else {
$user_id = input('param.user_id');
$source = input('param.source');
//获取当前余额
$money_my_model = new MoneyMy();
$current_money = $money_my_model->getOneData(['user_id' => $user_id], 'money');
$current_money = $current_money ?? 0;
View::assign('current_money', $current_money);
View::assign('source', $source);
View::assign('user_id', $user_id);
return View::fetch('moneyreduce');
}
}
/**
* 用户佣金明细
*/
public function userIncomeDetails()
{
$search = input('get.');
autoSearch(['time', 'type', 'order_number'], $search);
$user_id = input('param.user_id', 0);
$distribution_log_model = new DistributionCommissionLog();
$where = [
['uid', '=', UID],
['user_id', '=', $user_id]
];
if ($search['time']) {
$time = explode('-', $search['time']);
$where[] = ['create_time', 'between time', [$time[0], $time[1]]];
}
if ($search['type'] != '' && $search['type'] != null) {
$where['type'] = ['type', '=', $search['type']];
}
if ($search['order_number']) {
$where[] = ['relation_order_number', 'like', '%' . $search['order_number'] . '%'];
}
session('where', $where);
$page = array_key_exists("page", $search) ? (string)$search['page'] : "1";
$dataList = $distribution_log_model
->where($where)->order('id desc')
->paginate(['list_rows' => 50, 'page' => $page], false)->each(function ($item, $key) {
return $item;
});
View::assign('dataList', $dataList);
View::assign('search', $search);
return View::fetch('incomedetails');
}
/**
* 增加用户佣金
*/
public function userIncomeRaise()
{
if (request()->isPost()) {
$data = input('post.');
//写日志变更记录
$commission_service = new \app\distribution\service\Commission();
return $commission_service->change($data['user_id'], 5, $data['commission'], '后台增加');
} else {
$user_id = input('param.user_id');
$source = input('param.source');
View::assign('source', $source);
View::assign('user_id', $user_id);
return View::fetch('incomeraise');
}
}
/**
* 减少用户佣金
*/
public function userIncomeReduce()
{
if (request()->isPost()) {
$data = input('post.');
//写日志变更记录
$commission_service = new \app\distribution\service\Commission();
return $commission_service->change($data['user_id'], 6, -$data['commission'], '后台减少');
} else {
$user_id = input('param.user_id');
$source = input('param.source');
View::assign('source', $source);
View::assign('user_id', $user_id);
return View::fetch('incomereduce');
}
}
/**
* 用户积分明细
*/
public function userIntegralDetails()
{
$search = input('get.');
autoSearch(['time', 'type', 'order_number'], $search);
View::assign('search', $search);
$user_id = input('param.user_id', 0);
$integral_log_model = new IntegralLog();
$where = [
['uid', '=', UID],
['user_id', '=', $user_id]
];
if ($search['time']) {
$time = explode('-', $search['time']);
$where[] = ['create_time', 'between time', [$time[0], $time[1]]];
}
if ($search['type'] != '' && $search['type'] != null) {
$where['type'] = ['type', '=', $search['type']];
}
if ($search['order_number']) {
$where[] = ['relation_order_number', 'like', '%' . $search['order_number'] . '%'];
}
session('where', $where);
$page = array_key_exists("page", $search) ? (string)$search['page'] : "1";
$dataList = $integral_log_model
->where($where)->order('id desc')
->paginate(['list_rows' => 50, 'page' => $page], false)->each(function ($item, $key) {
return $item;
});
View::assign('dataList', $dataList);
return View::fetch('integraldetails');
}
/**
* 增加用户积分
*/
public function userIntegralRaise()
{
if (request()->isPost()) {
$data = input('post.');
//写日志变更记录
$integral_service = new \app\integral\service\Integral();
return $integral_service->change($data['user_id'], 4, $data['integral'], '后台增加');
} else {
$user_id = input('param.user_id');
$source = input('param.source');
View::assign('source', $source);
View::assign('user_id', $user_id);
return View::fetch('integralraise');
}
}
/**
* 减少用户积分
*/
public function userIntegralReduce()
{
if (request()->isPost()) {
$data = input('post.');
//写日志变更记录
$integral_service = new \app\integral\service\Integral();
return $integral_service->change($data['user_id'], 5, -$data['integral'], '后台减少');
} else {
$user_id = input('param.user_id');
$source = input('param.source');
//获取当前余额
View::assign('source', $source);
View::assign('user_id', $user_id);
return View::fetch('integralreduce');
}
}
}