0
0
Files
Babyclass/app/Admin/Controllers/UserController.php
2020-08-04 10:09:42 +08:00

392 lines
14 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
namespace App\Admin\Controllers;
use App\Models\Seller;
use App\User;
use Illuminate\Http\Request;
use RuLong\Identity\Models\Identity;
use RuLong\Identity\Models\IdentityLog;
use RuLong\UserRelation\Models\UserRelation;
use Validator;
class UserController extends Controller
{
public function index(Request $request)
{
$user_id = $request->user_id;
$mobile = $request->mobile;
$nickname = $request->nickname;
$identity = $request->identity;
$parent_id = $request->parent_id;
$start = $request->start;
$end = $request->end;
$is_salesman = $request->is_salesman;
$orderField = $request->orderField;
$orderDirection = $request->orderDirection;
$numPerPage = $request->numPerPage ?: 30;
$users = User::with('organ')->when($mobile, function ($query) use ($mobile) {
return $query->where('mobile', 'like', "%{$mobile}%");
})->when($user_id, function ($query) use ($user_id) {
return $query->where('id', $user_id);
})->when(is_numeric($is_salesman), function ($query) use ($is_salesman) {
return $query->where('is_salesman', $is_salesman);
})->when($nickname, function ($query) use ($nickname) {
return $query->whereHas('info', function ($query) use ($nickname) {
$query->where('nickname', 'like', "%{$nickname}%");
});
})->when(is_numeric($identity), function ($query) use ($identity) {
$query->whereHas('identity', function ($query) use ($identity) {
$query->where('identity_id', $identity);
});
})->when($parent_id, function ($query) use ($parent_id) {
$query->whereHas('relation', function ($query) use ($parent_id) {
$query->where('parent_id', $parent_id);
});
})->when($start && $end, function ($query) use ($start, $end) {
return $query->whereBetween('created_at', [$start, date('Y-m-d', strtotime("+1 days", strtotime($end)))]);
})->when($start && !$end, function ($query) use ($start) {
return $query->where('created_at', '>=', $start);
})->when(!$start && $end, function ($query) use ($end) {
return $query->where('created_at', '<=', date('Y-m-d', strtotime("+1 days", strtotime($end))));
})->when($orderField, function ($query) use ($orderField, $orderDirection) {
$query->orderBy($orderField, $orderDirection);
})->with(['info', 'lastLogin'])->withCount('logins')->orderBy('created_at', 'desc')->paginate($numPerPage);
$identitys = Identity::get();
return view('Admin::users.index', compact('users', 'identitys'));
}
public function edit(User $user)
{
return view('Admin::users.edit', compact('user'));
}
public function update(Request $request, User $user)
{
$validator = Validator::make($request->all(), [
'password' => 'nullable|between:6,32',
], [
'password.between' => '登录密码长度应在:min-:max位之间',
]);
if ($validator->fails()) {
return $this->error($validator->errors()->first());
}
if ($user->update($request->all())) {
return $this->success('修改成功', 'close');
} else {
return $this->error();
}
}
/**
* 软删除
* @Author:<C.Jason>
* @Date:2018-11-02T13:44:52+0800
* @param User $user [description]
* @return [type] [description]
*/
public function destroy(User $user)
{
if ($user->delete()) {
return $this->success();
} else {
return $this->error();
}
}
/**
* 回收站
* @Author:<C.Jason>
* @Date:2018-11-02T13:43:57+0800
* @return [type] [description]
*/
public function recycle(Request $request)
{
$mobile = $request->mobile;
$nickname = $request->nickname;
$orderField = $request->orderField;
$orderDirection = $request->orderDirection;
$numPerPage = $request->numPerPage ?: 30;
$users = User::onlyTrashed()->when($mobile, function ($query) use ($mobile) {
return $query->where('mobile', 'like', "%{$mobile}%");
})->when($nickname, function ($query) use ($nickname) {
return $query->whereHas('info', function ($query) use ($nickname) {
$query->where('nickname', 'like', "%{$nickname}%");
});
})->when($orderField, function ($query) use ($orderField, $orderDirection) {
$query->orderBy($orderField, $orderDirection);
})->with(['info', 'lastLogin'])->withCount('logins')->paginate($numPerPage);
return view('Admin::users.recycle', compact('users'));
}
/**
* 清空回收站
* 未考虑删除关联数据的问题
* @Author:<C.Jason>
* @Date:2018-11-02T13:41:40+0800
* @return [type] [description]
*/
public function clean()
{
if (User::onlyTrashed()->forceDelete()) {
return $this->success();
} else {
return $this->error();
}
}
/**
* 还原
* @Author:<C.Jason>
* @Date:2018-11-02T13:43:47+0800
* @param [type] $user [description]
* @return [type] [description]
*/
public function resume($user)
{
if (User::withTrashed()->where('id', $user)->restore()) {
return $this->success();
} else {
return $this->error();
}
}
/**
* 彻底删除单条目
* @Author:<C.Jason>
* @Date:2018-11-02T13:43:36+0800
* @param [type] $user [description]
* @return [type] [description]
*/
public function delete($user)
{
if (User::withTrashed()->where('id', $user)->forceDelete()) {
return $this->success();
} else {
return $this->error();
}
}
/**
* 线下开通身份
* @Author:<Leady>
* @Date:2018-11-20T15:32:24+0800
* @param Request $request [description]
* @param [type] $user [description]
* @return [type] [description]
*/
public function identity(User $user)
{
if ($user->seller_id) {
$identity = Identity::where('id', '>', $user->identity->identity_id)->get();
} else {
$identity = Identity::where('id', '>', $user->identity->identity_id)->whereIn('id', [1, 2])->get();
}
return view('Admin::users.identity', compact('user', 'identity'));
}
/**
* 开通身份执行事件
* @Author:<Leady>
* @Date:2018-11-20T15:34:36+0800
* @param Request $request [description]
* @return [type] [description]
*/
public function identityrun(Request $request, User $user)
{
$identity_id = $request->identity_id ?? '';
$pay = $request->pay ?? '';
$max_key = $request->max_key ?? '0';
if (!$identity_id) {
return $this->error('请选择要变更的身份');
}
$user->identityUpdate($identity_id, 'AdminUp', $pay, $max_key);
return $this->success('变更成功', 'close');
}
/**
* 缴费用户列表
* @Author:<Leady>
* @Date:2018-11-26T12:03:39+0800
* @param Request $request [description]
* @return [type] [description]
*/
public function paycostUser(Request $request)
{
$numPerPage = $request->numPerPage ?: 30;
$identity = $request->identity;
$mobile = $request->mobile;
$nickname = $request->nickname;
$lists = IdentityLog::where('channel', 'AdminUp')
->when(is_numeric($identity), function ($query) use ($identity) {
$query->where('after', $identity);
})
->when($mobile, function ($query) use ($mobile) {
$query->whereHas('user_obj', function ($query) use ($mobile) {
$query->where('mobile', 'like', "%{$mobile}%");
});
})
->when($nickname, function ($query) use ($nickname) {
$query->whereHas('user_obj', function ($query) use ($nickname) {
return $query->whereHas('info', function ($query) use ($nickname) {
$query->where('nickname', 'like', "%{$nickname}%");
});
});
})->orderBy('created_at', 'desc')->paginate($numPerPage);
$identitys = Identity::get();
return view('Admin::users.paycostuser', compact('lists', 'identitys'));
}
/**
* 缴费用户确认返款
* @Author:<Leady>
* @Date:2018-11-26T12:03:30+0800
* @param Request $request [description]
* @param IdentityLog $log [description]
* @return [type] [description]
*/
public function rebates(Request $request, IdentityLog $log)
{
return view('Admin::users.rebates', compact('log'));
}
/**
* 缴费用户确认返款
* @Author:<Leady>
* @Date:2018-11-26T12:03:30+0800
* @param Request $request [description]
* @param IdentityLog $log [description]
* @return [type] [description]
*/
public function rebatesdo(Request $request, IdentityLog $log)
{
$log->other = array_merge($log->other, ['rebates' => '已返款', 'rebates_remark' => $request->rebates_remark]);
if ($log->save()) {
return $this->success('操作成功', 'close');
} else {
return $this->error();
}
}
/**
* 更改上级ID
* @Author:<Leady>
* @Date:2018-11-20T15:32:24+0800
* @param Request $request [description]
* @param [type] $user [description]
* @return [type] [description]
*/
public function parent(User $user)
{
return view('Admin::users.parent', compact('user'));
}
/**
* 更改上级ID执行事件
* @Author:<Leady>
* @Date:2018-11-20T15:34:36+0800
* @param Request $request [description]
* @return [type] [description]
*/
public function parentrun(Request $request, User $user)
{
$parent_id = $request->parent_id ?? '';
if (!$parent_id || !is_numeric($parent_id)) {
return $this->error('请输入正确的编号');
}
$parent = UserRelation::where('user_id', (int) $parent_id)->first();
if ($parent) {
$user = $user->relation;
$bloodline = $parent->bloodline . $parent_id . ','; //改变后血缘线
$oldblood = $user->bloodline . $user->user_id . ','; //目标替换血缘线
$newblood = $bloodline . $user->user_id . ','; //目标新血缘线
$layer_cha = ($parent->layer + 1) - $user->layer;
$user->layer += $layer_cha;
$user->parent_id = $parent_id;
$user->bloodline = $bloodline;
$user->save();
$user->user->update(['seller_id' => $parent->user->seller_id]);
$childs = UserRelation::where('bloodline', 'like', '%,' . $user->user_id . ',%')->get();
foreach ($childs as $key => $child) {
$child->bloodline = str_replace($oldblood, $newblood, $child->bloodline);
$child->layer += $layer_cha;
$child->save();
$child->user->update(['seller_id' => $parent->user->seller_id]);
}
} else {
return $this->error('推荐人不存在');
}
return $this->success('变更成功', 'close');
}
public function direct(User $user)
{
// if ($user->direct != 2) {
// return $this->error('状态不正确');
// }
// $payment_vip = \App\Models\VipPament::where('user_id', $user->id)->where('state', 'SUCCESS')->first();
// \App\Bonus\Direct::settlement($user, ['orderid' => 'vip' . $payment_vip->id]);
return $this->success('执行完毕');
}
public function bloodview(User $user)
{
$lists = $user->relation->list2tree('user_id', 'parent_id', 'children', $user->id);
$root = [
"text" => $user->id . ' - ' . $user->info->nickname . '' . ($user->identity->identity_id > 0 ? '已激活' : '未激活') . '',
"children" => $lists,
];
return view('Admin::users.bloodview', compact('root'));
}
//更改组织
public function seller(Request $request, User $user)
{
$sellers = Seller::where('type', 'organ')->whereNotIn('id', [$user->seller_id])->get();
return view('Admin::users.seller', compact('user', 'sellers'));
}
//更改组织执行
public function sellerdo(Request $request, User $user)
{
$seller_id = $request->organ_id;
if (!$seller_id || !is_numeric($seller_id)) {
return $this->error('请选择组织');
}
$seller = Seller::find($seller_id);
if ($seller) {
$uids = UserRelation::where('bloodline', 'like', "%," . $user->id . ",%")
->orWhere('user_id', $user->id)
->pluck('user_id')
->toArray();
User::whereIn('id', $uids)->update(['seller_id' => $seller->id]);
} else {
return $this->error('组织不存在');
}
return $this->success('变更成功', 'close');
}
//设置取消业务员
public function salesman(Request $request, User $user)
{
$value = $request->value;
if ($user->update(['is_salesman' => $value])) {
return $this->success('设置成功');
} else {
return $this->error('设置失败');
}
}
}