更新代码
This commit is contained in:
391
app/Admin/Controllers/UserController.php
Normal file
391
app/Admin/Controllers/UserController.php
Normal file
@@ -0,0 +1,391 @@
|
||||
<?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('设置失败');
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user