Commit 263b6b0b by 朱继来

调整订单权限

parent b28228ce
......@@ -397,11 +397,6 @@ Class OrderController extends Controller
$info = $this->getOrderInfo($request, 1);
$info['title'] = '订单列表';
// 若为京东自营、自营客服等角色,则跳转到自营列表
if (in_array($info['role'], Config('perm_args.self_roles'))) {
return redirect('self_order');
}
return view('orderlist', $info);
}
......@@ -447,51 +442,31 @@ Class OrderController extends Controller
$map['sale_id'] = $map['order_send'];
// 订单查看权限
if (strpos($info['role'], ',') !== false) { // 多角色情况下
$res = $perm->checkUserRoles($request, $info['role']);
$info['role'] = $res['role_id'];
// 若无指定客服,则返回客服组里的所有订单
if (!$map['order_send']) {
$map['sale_id'] = $res['sale_id'];
} else if (!in_array($map['order_send'], $res['sale_id'])) { // 若指定客服不存在与客服组,则不能筛选
$map['sale_id'] = -1;
} else {
$map['sale_id'] = $map['order_send'];
}
} else if (in_array($info['role'], Config('perm_args.kefu_order'))) { // 交易员、联营客服(线销一组、二组、三组客服)、自营客服、自营内部采购
$map['sale_id'] = $request->user->userId; // 筛选自己的订单
} else if (in_array($info['role'], Config('perm_args.manager_order'))) { // 线销一组、二组、三组主管、交易主管(查看自己及其下组员的订单)
$sale_ids = $perm->getGroupSalesId($request, $info['role']);
if ($info['role'] == 2) {
$sale_ids = $perm->getSubSaleId($request->user->userId); // 获取下级人员
// 若无指定客服,则返回客服组里的所有订单
// 若无指定客服,则返回下级的所有订单
if (!$map['order_send']) {
$map['sale_id'] = $sale_ids;
} else if (!in_array($map['order_send'], $sale_ids)) { // 若指定客服不存在与客服组,则不能筛选
} else if (!in_array($map['order_send'], $sale_ids)) { // 若指定客服不存在与下级人员,则不能筛选
$map['sale_id'] = -1;
} else {
$map['sale_id'] = $map['order_send'];
}
}
// 自营客服权限
if ($tid == 2 && $info['role'] == 6) {
$map['check_jd_order'] = 1; // 只允许查看京东自营订单
} else if ($info['role'] == 3) {
$map['sale_id'] = $request->user->userId; // 筛选自己的订单
}
// 非尽调账号显示真实数据
if ($info['role'] != 13) {
if ($request->user->email != 'vpadmin@ichunt.com') {
$map['is_fake'] = 0;
} else {
// $map['vp_time_set'] = strtotime(Config('website.vp_time_set')); // 竞调账号根据时间展示订单
}
$map['order_goods_type'] = $tid;
$size = 10;
if ($tid == 1) {
$map['order_type_filter'] = in_array($info['role'], [1, 13]) ? [1, 2, 3, 4] : [1, 4]; // 管理员和尽调账号可以查看平台、ERP、京东订单
$map['order_type_filter'] = in_array($request->user->email, ['admin@ichunt.com', 'vpadmin@ichunt.com']) ? [1, 2, 3, 4] : [1, 4]; // 管理员和尽调账号可以查看平台、ERP、京东订单
} else if ($tid == 2) {
$size = 20;
$map['order_type_filter'] = [1, 3, 4]; // 1.网站 3.京东 4.象牙宝
......@@ -510,54 +485,9 @@ Class OrderController extends Controller
public function getOrderInfo($request, $tid=1)
{
$info = $this->_search($request, $tid);
$key = Config('perm_args.redis_search_sales')[$tid];
$redis = Redis::connection('read');
$sale_list = $redis->get($key);
if (!$sale_list) {
// 获取所有的业务员 (包括经理、交易员、客服、测试)
$perm = new PermController;
$sale_list = [];
if ($tid == 1) {
$search_sales = Config('perm_args.search_joint_sales');
} else {
$search_sales = Config('perm_args.search_self_sales');
$sale_list[] = (object) array('userId'=>1000, 'name'=>'admin', 'status'=>0);
}
if ($search_sales) {
foreach ($search_sales as $v) {
$role_name = array_keys(Config('perm_args.roles'), $v);
$temp = $perm->getRoleUsers($request, $role_name[0]);
$sale_list = array_merge($sale_list, $temp);
}
}
$sale_list = $this->assoc_unique($sale_list);
$expire = Config('perm_args.redis_search_sales_expire'); // 缓存两小时
Redis::setex($key, $expire, json_encode($sale_list));
} else {
$sale_list = json_decode($sale_list);
}
// if ($tid == 1) {
// $manager = $perm->getRoleUsers($request, '经理');
// $test = $perm->getRoleUsers($request, '测试');
// $sales = $perm->getRoleUsers($request, '交易员');
// $kefu = $perm->getRoleUsers($request, '客服');
// $sale_list = array_merge($manager, $sales, $test, $kefu);
// } else if ($tid == 2) {
// $manager = $perm->getRoleUsers($request, '自营客服主管');
// $test = $perm->getRoleUsers($request, '测试');
// $assistant = $perm->getRoleUsers($request, '自营客服主管助理');
// $purchase = $perm->getRoleUsers($request, '自营内部采购');
// $kefu = $perm->getRoleUsers($request, '自营客服');
// $sale_list = array_merge($manager, $test, $assistant, $purchase, $kefu);
// }
$perm = new PermController;
$sale_list = $perm->getUserByPositionId([62, 63, 64, 65]); // 获取所有的销售
//获取订单列表
$url = Config('website.api_domain').'order/getAllOrder';
......@@ -756,11 +686,10 @@ Class OrderController extends Controller
}
} else {
$perm = new PermController;
$info['buyers'] = $perm->getRoleUsers($request, '采购员');
$info['buyers'] = $perm->getUserByPositionId(39); // 获取采购员, ID - 39
$key = Config('perm_args.redis_search_sales')[1];
$redis = Redis::connection('read');
$sale_list = json_decode($redis->get($key));
$perm = new PermController;
$sale_list = $perm->getUserByPositionId([62, 63, 64, 65], 0); // 获取所有的销售 (过滤已离职的)
$info['cc_sales'] = $sale_list ? array_merge($info['buyers'], $sale_list) : $info['buyers'];
}
......@@ -782,8 +711,6 @@ Class OrderController extends Controller
}
$CmsModel = new CmsModel();
$name_data = $CmsModel->getBatchUserName($data);
......
......@@ -263,43 +263,43 @@
}
// 获取主管及其下对应组员的sale_id
public function getGroupSalesId($request, $role_id)
{
$sale_id = [];
// public function getGroupSalesId($request, $role_id)
// {
// $sale_id = [];
// 主管ID
$manager_role_name = array_keys(Config('perm_args.roles'), $role_id);
// // 主管ID
// $manager_role_name = array_keys(Config('perm_args.roles'), $role_id);
if ($manager_role_name) {
$manager_sales = $this->getRoleUsers($request, $manager_role_name[0]);
// if ($manager_role_name) {
// $manager_sales = $this->getRoleUsers($request, $manager_role_name[0]);
if ($manager_sales) {
foreach ($manager_sales as $v) {
$sale_id[] = $v->userId;
}
}
}
// if ($manager_sales) {
// foreach ($manager_sales as $v) {
// $sale_id[] = $v->userId;
// }
// }
// }
// 线销主管对应的客服
$manager_to_kefu = Config('perm_args.manager_to_kefu');
// // 线销主管对应的客服
// $manager_to_kefu = Config('perm_args.manager_to_kefu');
if (!in_array($role_id, array_keys($manager_to_kefu))) return 0;
// if (!in_array($role_id, array_keys($manager_to_kefu))) return 0;
$sub_id = $manager_to_kefu[$role_id];
$role_name = array_keys(Config('perm_args.roles'), $sub_id);
// $sub_id = $manager_to_kefu[$role_id];
// $role_name = array_keys(Config('perm_args.roles'), $sub_id);
if (!$role_name) return 0;
// if (!$role_name) return 0;
$sales = $this->getRoleUsers($request, $role_name[0]);
// $sales = $this->getRoleUsers($request, $role_name[0]);
if ($sales) {
foreach ($sales as $v) {
$sale_id[] = $v->userId;
}
}
// if ($sales) {
// foreach ($sales as $v) {
// $sale_id[] = $v->userId;
// }
// }
return $sale_id;
}
// return $sale_id;
// }
/**
* 多角色情况下
......@@ -310,38 +310,38 @@
* @param [type] $role_id [description]
* @return [type] [description]
*/
public function checkUserRoles($request, $role_id)
{
$roles = explode(',', $role_id);
// public function checkUserRoles($request, $role_id)
// {
// $roles = explode(',', $role_id);
$data = [];
$data['role_id'] = min($roles); // 默认最小值
$data['sale_id'] = $request->user->userId; // 默认只能查看自己的订单数据
// $data = [];
// $data['role_id'] = min($roles); // 默认最小值
// $data['sale_id'] = $request->user->userId; // 默认只能查看自己的订单数据
$master = array_intersect($roles, Config('perm_args.check_all_order')); // 交集,是否能查看所有订单
// $master = array_intersect($roles, Config('perm_args.check_all_order')); // 交集,是否能查看所有订单
if ($master) {
$data['role_id'] = min($master); // 设置最小值的角色 (因为系统页面都是单角色判断)
$data['sale_id'] = 0;
// if ($master) {
// $data['role_id'] = min($master); // 设置最小值的角色 (因为系统页面都是单角色判断)
// $data['sale_id'] = 0;
return $data;
}
// return $data;
// }
$intersect = array_intersect($roles, Config('perm_args.manager_order')); // 交集,获取线销主管
// $intersect = array_intersect($roles, Config('perm_args.manager_order')); // 交集,获取线销主管
if ($intersect) {
$data['role_id'] = min($intersect); // 设置最小值的角色
// if ($intersect) {
// $data['role_id'] = min($intersect); // 设置最小值的角色
foreach ($intersect as $v) {
$sale_ids[] = $this->getGroupSalesId($request, $v);
}
// foreach ($intersect as $v) {
// $sale_ids[] = $this->getGroupSalesId($request, $v);
// }
$arr = array_reduce($sale_ids, 'array_merge', array()); // 转一维数组
$data['sale_id'] = array_merge(array_unique($arr)); // 去重后,再重新索引
}
// $arr = array_reduce($sale_ids, 'array_merge', array()); // 转一维数组
// $data['sale_id'] = array_merge(array_unique($arr)); // 去重后,再重新索引
// }
return $data;
}
// return $data;
// }
// 获取角色对应的主管邮箱
public function getManager($request)
......@@ -369,4 +369,59 @@
return $email;
}
/* 订单系统权限调整 --- 20200511 */
// 获取指定职位的用户ID
public function getUserByPositionId($position_id, $status = '')
{
$map = [];
if (is_array($position_id)) { // 数组
// $map[] = ['in' => ['position_id' => $position_id]];
$str = implode(',', $position_id);
$map[] = [DB::raw("position_id in ({$str})"), '1'];
} else {
$map['position_id'] = $position_id;
}
$status !== '' && $map['status'] = $status; // 0-在职用户,1-离职用户
return DB::table('user_info')->where($map)->select('userId', 'name', 'position_id', 'position_name', 'department_id', 'department_name', 'status')->get();
}
// 获取下级所有人员
public function getSubSaleId($userId)
{
$sale_ids = [];
array_unshift($sale_ids, $userId); // 将当前用户添加到数组
$user_info = DB::table('user_info')->where('userId', $userId)->select('department_id')->first(); // 用户信息
if (!$user_info->department_id) return $sale_ids;
// 获取当前用户下级部门
$department = DB::table('user_department')
->where('parent_id', $user_info->department_id)
->select('department_id', 'department_name')
->get();
if (!$department) {
$tmp = DB::table('user_info')->where('department_id', $user_info->department_id)->lists('userId');
$sale_ids = array_merge($sale_ids, $tmp);
} else {
// 获取下级部门的人员
foreach ($department as $v) {
$tmp = DB::table('user_info')->where('department_id', $v->department_id)->lists('userId');
$sale_ids = array_merge($sale_ids, $tmp);
}
}
return array_unique($sale_ids); // 去重返回
}
}
\ No newline at end of file
<?php
return [
// 用户角色
'roles' => [
'管理员' => 1,
'经理' => 2,
'交易员' => 3,
// '客服' => 4,
'测试' => 5,
'京东自营' => 6,
'自营客服' => 7,
'运营助理' => 8,
'财务' => 9,
'自营客服主管' => 10,
'自营客服主管助理' => 11,
'自营内部采购' => 12,
'尽调' => 13,
'线销一组主管' => 14,
'线销一组客服' => 15,
'线销二组主管' => 16,
'线销二组客服' => 17,
'线销三组主管' => 18,
'线销三组客服' => 19,
'运营' => 20,
'产品' => 21,
'交易主管' => 22,
],
// 'roles' => [
// '管理员' => 1,
// '经理' => 2,
// '交易员' => 3,
// // '客服' => 4,
// '测试' => 5,
// '京东自营' => 6,
// '自营客服' => 7,
// '运营助理' => 8,
// '财务' => 9,
// '自营客服主管' => 10,
// '自营客服主管助理' => 11,
// '自营内部采购' => 12,
// '尽调' => 13,
// '线销一组主管' => 14,
// '线销一组客服' => 15,
// '线销二组主管' => 16,
// '线销二组客服' => 17,
// '线销三组主管' => 18,
// '线销三组客服' => 19,
// '运营' => 20,
// '产品' => 21,
// '交易主管' => 22,
// ],
// 线销主管 =》 线销客服
'manager_to_kefu' => [
14 => 15,
16 => 17,
18 => 19,
22 => 3,
],
// 'manager_to_kefu' => [
// 14 => 15,
// 16 => 17,
// 18 => 19,
// 22 => 3,
// ],
// 筛选自己的订单
'kefu_order' => [3, 7, 12, 15, 17, 19],
// 'kefu_order' => [3, 7, 12, 15, 17, 19],
// 主管角色,查看自己及其组员订单
'manager_order' => [14, 16, 18, 22],
// 'manager_order' => [14, 16, 18, 22],
// 查看所有订单角色
'check_all_order' => [1, 2, 5, 20, 21],
// 'check_all_order' => [1, 2, 5, 20, 21],
// 审单时权限 (用于调价权限 changeOrder.blade.php)
'is_manager_perm' => [1, 2, 10, 11, 14, 16, 18, 22],
// 'is_manager_perm' => [1, 2, 10, 11, 14, 16, 18, 22],
// 筛选业务员 -- 联营列表
'search_joint_sales' => [3, 5, 14, 15, 16, 17, 18, 19, 22],
// // 筛选业务员 -- 联营列表
// 'search_joint_sales' => [3, 5, 14, 15, 16, 17, 18, 19, 22],
// 筛选业务员 -- 自营列表 (包含联营、自营客服、交易员、主管)
'search_self_sales' => [3, 5, 7, 10, 11, 12, 14, 15, 16, 17, 18, 19, 22],
// // 筛选业务员 -- 自营列表 (包含联营、自营客服、交易员、主管)
// 'search_self_sales' => [3, 5, 7, 10, 11, 12, 14, 15, 16, 17, 18, 19, 22],
// 缓存筛选业务员
'redis_search_sales' => [
1 => 'search_joint_sales',
2 => 'search_self_sales',
],
// // 缓存筛选业务员
// 'redis_search_sales' => [
// 1 => 'search_joint_sales',
// 2 => 'search_self_sales',
// ],
'redis_search_sales_expire' => 7200, // 缓存两小时
// 'redis_search_sales_expire' => 7200, // 缓存两小时
// 客服经理 (固定,用于推送业务员页面)
'kefu_manager' => [
(object)['userId'=>1445, 'name'=>'张娟', 'status'=>0],
// (object)['userId'=>1582, 'name'=>'滕欢欢', 'status'=>0],
],
// 'kefu_manager' => [
// (object)['userId'=>1445, 'name'=>'张娟', 'status'=>0],
// // (object)['userId'=>1582, 'name'=>'滕欢欢', 'status'=>0],
// ],
// 自营角色 无法查看联营订单
'self_roles' => [6, 7, 10, 11, 12],
// 'self_roles' => [6, 7, 10, 11, 12],
// 菜单key
'perm_menus_data' => 'order_menus_href_data',
'perm_menus_data_expire' => 7200,
// 用户角色
'roles' => [
'管理员' => 1,
'查看下级' => 2,
'查看自己' => 3,
'查看订单' => 4,
],
];
......@@ -568,7 +568,7 @@
@include('detail.addGoodsNoSkuid')
<script>
var is_manager = "{{ in_array($role, Config('perm_args.is_manager_perm')) ? true : false }}";
var is_manager = "{{ in_array($role, [1, 2]) ? true : false }}";
var isNewClient = "{{isset($isNewClient) ? $isNewClient : 0}}";
// var order_amount = "{{$order_info['order_amount']}}";
......
......@@ -633,21 +633,21 @@
@if ($order_info['order_remark'])
<tr>
<td>订单备注信息:</td>
<td colspan="17">{{$order_info['order_remark']}}</td>
<td colspan="18">{{$order_info['order_remark']}}</td>
</tr>
@endif
@if ($order_temp_info['kefu_remark'])
<tr>
<td>客服备注信息:</td>
<td colspan="16">{{$order_temp_info['kefu_remark']}}</td>
<td colspan="18">{{$order_temp_info['kefu_remark']}}</td>
</tr>
@endif
@if ($order_info['order_goods_type'] == 2 && $order_temp_info['business_type'] == 1)
<tr>
<td>项目需求描述:</td>
<td colspan="16">{{$order_temp_info['sample_demand_desc']}}</td>
<td colspan="18">{{$order_temp_info['sample_demand_desc']}}</td>
</tr>
@endif
</tfoot>
......
......@@ -143,7 +143,8 @@
</dl>
@endif
@if (!in_array($role, [7, 15, 17, 19]))
<!-- 非'查看自己'权限展示 -->
@if (!in_array($role, [3]))
<dl>
<dt>推送业务员:</dt>
<dd>
......@@ -223,20 +224,6 @@
</dl>
@endif
</td>
<!-- <td width="15%">
<dl>
<dt class="search-btn">
<button class="nbtn searchOrder">搜索</button>
</dt>
@if (in_array('export', $userPerms))
<dt>
<button class="nbtn exportExcel" style="background: #23c6c8 !important;">导出</button>
</dt>
@endif
</dl>
</td> -->
</tr>
</table>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment