Files
juipphp/app/manager/controller/SetUser.php

232 lines
7.7 KiB
PHP
Raw Normal View History

2020-11-17 14:30:54 +08:00
<?php
/*
* @Descripttion:
* @version:
* @Author: kangkang
* @Date: 2020-10-13 19:52:37
* @LastEditors: kangkang
* @LastEditTime: 2020-11-16 16:59:56
*/
namespace app\manager\controller;
use app\manager\model\Manager;
use app\manager\model\ProductOrder;
use app\manager\model\User;
use enum\user\User as UserEnum;
use fastphp\base\Controller;
class SetUser extends Controller
{
/**
* @description: 获取管理员列表
* @param {*}
* @return {*}
*/
public function getManagerList()
{
$manager_model = new Manager;
$list = $manager_model->getAllList();
\result($list, '', 30000);
}
/**
* @description: 给客户经理自动分配用户
* @param {*}
* @return {*}
*/
public function autoSet()
{
$manager_list = json_decode(file_get_contents("php://input"), true)['manager_list'];
if (empty($manager_list)) {
die;
}
$manager_model = new Manager;
$cost_user_id = [];
$manager_list = $manager_model->getAllList(['id' => ['in', $manager_list]]);
$product_order_model = new ProductOrder;
$user_model = new User;
$userid = [];
//获取到上个月今天为止所有消费客户
$user_cost = $product_order_model->getCost();
$count = count($user_cost);
$manager_count = count($manager_list);
for ($i = 0; $i < ($count / 2); $i++) {
//根据管理员人数来进行等量分配,第一个用户和最后一个用户相互搭配、依次分给客户经理
$jingli_key = $manager_list[$i % $manager_count]['id'];
$userid[$jingli_key][] = $user_cost[$i]['UserId'];
$userid[$jingli_key][] = $user_cost[($count - $i - 1)]['UserId'];
$cost_user_id[] = $user_cost[$i]['UserId'];
$cost_user_id[] = $user_cost[($count - $i - 1)]['UserId'];
}
//获取所有为处理的用户 然后再进行随机分配
$user_not_cost = $user_model->getList(['Id' => ['NOT IN', $cost_user_id]], 'Id');
$user_not_cost_id = [];
for ($i = 0; $i < count($user_not_cost); $i++) {
//根据管理员人数来进行等量分配,依次分给客户经理
$jingli_key = $manager_list[$i % $manager_count]['id'];
$user_not_cost_id[$jingli_key][] = $user_not_cost[$i]['Id'];
}
//处理消费过的用户
foreach ($manager_list as $manager) {
$user_model->updateOne(['id' => ['in', $userid[$manager['id']]]], ['ManagerId' => $manager['id'], 'ManagerName' => $manager['RealName']]);
$user_model->updateOne(['id' => ['in', $user_not_cost_id[$manager['id']]]], ['ManagerId' => $manager['id'], 'ManagerName' => $manager['RealName']]);
}
\result();
}
/**
* @description: 获取客户经理拥有的用户
* @param {*}
* @return {*}
*/
public function getManagerUser()
{
if (!isset($_GET['manager_id'])) {
die;
}
$page = 0;
$search_info = '';
$last_month = date("Y-m-d H:i:s", strtotime("-1 month"));
$new_month = date("Y-m-d H:i:s", time());
$manager_id = $_GET['manager_id'];
$where = [];
if (isset($_GET['page'])) {
$page = ($_GET['page'] - 1) * 50;
}
if (!empty($_GET['search_info'])) {
$search_info = $_GET['search_info'];
$where['LoginCode'] = $search_info;
}
$where['ManagerId'] = $manager_id;
$user_model = new User;
$product_order_model = new ProductOrder;
$manager_user = $user_model->getListPage($where, 'Id,LoginCode,CreateTime,ManagerName', 'id desc', "$page,50");
$user_id_list = [];
$manager_user_list = [];
foreach ($manager_user as $key => $val) {
$user_id_list[] = $val['Id'];
$val['cost'] = 0;
$manager_user_list[$val['Id']] = $val;
}
$user_cost = $product_order_model->getMonthCost($user_id_list);
foreach ($user_cost as $k => $v) {
$manager_user_list[$v['UserId']]['cost'] = $v['money'];
}
$data = [
'list' => array_merge($manager_user_list),
'count' => $user_model->getCount(['ManagerId' => $manager_id])['count'],
];
\result($data);
}
/**
* @description: 获取所有管理员有多少用户
* @param {*}
* @return {*}
*/
public function getAllManagerUserCount()
{
$screen = [];
$user_model = new User;
$screen_result = [];
if (isset($_GET['screen'])) {
$screen = $_GET['screen'];
$product_order_model = new ProductOrder;
//获取所有符合条件的数据
$order_list = $product_order_model->getScreenMonthCost($screen);
$user_id_list = [];
foreach($order_list as $k=>$v){
$user_id_list[] = $v['UserId'];
}
$where = [
'follow_status' => $screen['follow_status'],
'id' => ['in',$user_id_list]
];
//获取结果
$screen_result = $user_model->getScreenUserCount($where);
}
$data = [];
$list = $user_model->getAllManagerUserCount();
$result_list = [];
$manager_jingli_list = [];
//将managerid作为key 方便后边判断赋值
foreach($list as $info){
$info['screen_num'] = 0;
$result_list[$info['ManagerId']] = $info;
$temp['value'] = $info['ManagerId'];
$temp['label'] = $info['ManagerName'];
$manager_jingli_list[] = $temp;
}
if(!empty($screen_result)){
//为筛选结果赋值
foreach($screen_result as $info){
if(isset($result_list[$info['ManagerId']])){
$result_list[$info['ManagerId']]['screen_num'] = $info['count_num'];
}
}
}
$follow_status = UserEnum::getFormatList(UserEnum::$FollowStatus);
$data = [
'list' => array_merge($result_list),
'follow_status' => $follow_status,
'manager_jingli_list' => $manager_jingli_list
];
\result($data);
}
/**
* @description: 执行外分 将指定客户经理的部分用户分配出去
* @param {*}
* @return {*}
*/
public function waifen()
{
$screen = [];
if (isset($_GET['screen'])) {
$user_model = new User;
$manager_model = new Manager;
$screen = $_GET['screen'];
$manager_id = $screen['jingli_id'];
$manager_main = $_GET['manager_id'];
$manager_name = $manager_model->getOne(['id'=>$manager_id])['RealName'];
$num = $_GET['num'];
$product_order_model = new ProductOrder;
//获取所有符合条件的数据
$order_list = $product_order_model->getScreenMonthCost($screen);
$user_id_list = [];
foreach($order_list as $k=>$v){
$user_id_list[] = $v['UserId'];
}
$where = [
'follow_status' => $screen['follow_status'],
'Id' => ['in',$user_id_list],
'ManagerId' => $manager_main
];
$data = [
'ManagerId' => $manager_id,
'ManagerName' => $manager_name
];
// dump($where);
// dump($data);
//获取结果
$result = $user_model->setManager($where,$data,$num);
if($result){
\result();
} else {
die;
}
}
}
}