客户维护销售订单

This commit is contained in:
“wanyongkang”
2024-03-22 11:17:35 +08:00
parent d1d8d34657
commit 33853e839f
3 changed files with 357 additions and 3 deletions

View File

@@ -6,6 +6,7 @@ use app\manager\model\Manager;
use app\manager\model\ProductOrder;
use app\manager\model\User;
use fastphp\base\Controller;
use app\manager\model\FollowRecord;
class SellInfo extends Controller
{
@@ -20,6 +21,7 @@ class SellInfo extends Controller
$user_model = new User;
$manager_model = new Manager;
$product_order_model = new ProductOrder;
$follow_record_model = new FollowRecord;
$manager_info = $manager_model->getOne(['id' => $this->userinfo['OperaterID']]);
$where = [];
if (!$manager_info['IsRoot']) {
@@ -57,6 +59,10 @@ class SellInfo extends Controller
$time_where2 .= " UpdateTime>='" . $date3 . "' and UpdateTime<='" . $date4 . "' ";
$time_where_today .= " UpdateTime>='" . date("Y-m-d") . "' and UpdateTime<='" . $date2 . "' ";
//跟进记录时间
$follow_time_where = " create_time>='" . $date1 . "' and create_time<='" . $date2 . "' ";
//获取用户列表
$user_list = $user_model->getAllManagerUser($where);
foreach ($user_list as $info) {
@@ -71,6 +77,165 @@ class SellInfo extends Controller
}
$user_where = ['UserId' => ['in', $user_id_list]];
$register_where = ['UserId' => ['in', $register_id_list]];
//获取所有产品的营业额
$all_sell_money = $follow_record_model->getSellInfo($where,$follow_time_where);
$sell_money_list = [];
foreach ($all_sell_money as $sell_info) {
$sell_money_list[$sell_info['product_type'].'_'.$sell_info['sell_type']] += $sell_info['sell_money'];
}
//蘑菇条件单独摘出来
$mogu_time_where1 = $time_where1.' AND `ProductId`=18';
//获取本月蘑菇消费额
// $cost_mogu = $product_order_model->getAllMoney($mogu_time_where1, $user_where);
//获取本月蘑菇总退款
// $refund_cost_mogu = $product_order_model->getRefund($mogu_time_where1, $user_where);
//获取所有消费额
$cost_data = $product_order_model->getAllMoney('', $user_where);
//获取本月所有消费额
// $all_cost_data = $product_order_model->getAllMoney($time_where1);
//获取本月该客户经理所有的消费额
$user_cost_data = $product_order_model->getAllMoney($time_where1, $user_where);
//获取上月该客户经理所有的消费额
// $user_last_month_cost_data = $product_order_model->getAllMoney($time_where2, $user_where);
//获取今天该客户经理所有的消费额
$user_today_cost_data = $product_order_model->getAllMoney($time_where2_today, ['UserId' => ['in', $today_register_id_list]]);
//获取本月该客户经理所有新注册的消费额
$register_cost_data = $product_order_model->getAllMoney($time_where1, $register_where);
//获取本月总退款
// $refund_cost_data = $product_order_model->getRefund($time_where1, $user_where);
//总消费营业额
// $all_cost = $all_cost_data['money'] ?? 0;
$user_cost = $user_cost_data['money'] ?? 0;
$all_cost_num = $all_cost_data['num'] ?? 0;
$user_cost_num = $user_cost_data['num'] ?? 0;
// $mogu_cost = $cost_mogu['money']??0;
// $mogu_refund_cost = $refund_cost_mogu['money']??0;
//上月
$user_last_month_cost = $user_last_month_cost_data['money'] ?? 0;
//注册
$user_register_count = count($register_id_list);
$user_register_cost_count = $register_cost_data ? $register_cost_data['num'] : 0;
// $sell_percent = ($all_cost ? round($user_cost / $all_cost * 100, 2) : 0);
$cost_percent = ($all_cost_num ? round($user_cost_num / $all_cost_num * 100, 2) : 0);
$cost_register = ($user_register_count ? round($user_register_cost_count / $user_register_count * 100, 2) : 0);
$cost_old_user = (($all_cost_num - $user_register_count) ? round(($user_cost_num - $user_register_cost_count) / ($cost_data['num'] - $user_register_cost_count) * 100, 2) : 0);
// $com_cost = round(($user_cost - $user_last_month_cost), 2);
$com_percent = ($user_last_month_cost ? round(($user_cost - $user_last_month_cost) / $user_last_month_cost * 100, 2) : 0);
$today_new_user = ($user_today_cost_data ? $user_today_cost_data['num'] : 0) . "/" . count($today_register_id_list);
// $refund = ($refund_cost_data ? $refund_cost_data['money'] : 0);
//蘑菇
// $cost_mogu_data = round($mogu_cost-$mogu_refund_cost,2);
//其他营业额
// $cost_not_mogu_data = round($user_cost-$cost_mogu_data-$refund,2);
// $data['cost_mogu'] = "蘑菇营业额($cost_mogu_data)";
// $data['cost_not_mogu'] = "其他营业额($cost_not_mogu_data)";
// $data['sell_percent'] = "我的营业额($user_cost)/总营业额($all_cost)=" . $sell_percent . '%';
$data['other_order_active'] = "其他IP产品:" . $sell_money_list['other_order_1'];
$data['mogu_order_active'] = "蘑菇IP产品:" . $sell_money_list['mogu_order_1'];
$data['recharge_active'] = "IP充值:" . $sell_money_list['recharge_1'];
$data['http_active'] = "HTTP充值:" . $sell_money_list['http_1'];
$data['ros_active'] = "ROS订单:" . $sell_money_list['ros_1'];
$data['jinqiao_active'] = "金桥订单:" . $sell_money_list['jinqiao_1'];
$data['other_order_not_active'] = "其他IP产品:" . $sell_money_list['other_order_0'];
$data['mogu_order_not_active'] = "蘑菇IP产品:" . $sell_money_list['mogu_order_0'];
$data['recharge_not_active'] = "IP充值:" . $sell_money_list['recharge_0'];
$data['http_not_active'] = "HTTP充值:" . $sell_money_list['http_0'];
$data['ros_not_active'] = "ROS订单:" . $sell_money_list['ros_0'];
$data['jinqiao_not_active'] = "金桥订单:" . $sell_money_list['jinqiao_0'];
$data['cost_percent'] = "需维护的已消费客户($user_cost_num)/总的已消费客户($all_cost_num)=" . $cost_percent . '%';
$data['cost_register'] = "新注册客户购买率$user_register_cost_count/$user_register_count=" . $cost_register . '%';
$data['cost_old_user'] = "老客户购买率" . ($user_cost_num - $user_register_cost_count) . "/" . ($cost_data['num'] - $user_register_cost_count) . '=' . $cost_old_user . '%';
// $data['com_cost'] = "同比增加金额=" . $com_cost;
$data['com_percent'] = "同比增加百分比=" . $com_percent . '%';
$data['today_new_user'] = "今日新赠客户" . $today_new_user;
// $data['refund'] = "总退款金额" . $refund;
\result($data);
}
/**
* @description: 获取单个客户经理的销售信息
* @param {*}
* @return {*}
*/
public function getOneManager()
{
ini_set('display_errors', 'Off');
$user_model = new User;
$manager_model = new Manager;
$product_order_model = new ProductOrder;
$follow_record_model = new FollowRecord;
$manager_info = $manager_model->getOne(['id' => $this->userinfo['OperaterID']]);
$where = [];
if (!$manager_info['IsRoot']) {
$where['ManagerId'] = $this->userinfo['OperaterID'];
} else {
if (!empty($_GET['manager_id'])) {
$where['ManagerId'] = $_GET['manager_id'];
}
}
$user_id_list = [];
$register_id_list = [];
$today_register_id_list = [];
$data = [];
$time_where1 = '';
$time_where2 = '';
$time_where_today = '';
$time_where2_today = '';
$date1 = date("Y-m-01", time());
$date2 = date("Y-m-d H:i:s", time());
$flag = date("d", time()) == date("t", time());
$date3 = date("Y-m-01", strtotime("-1 month"));
$date4 = $flag ? date("Y-m-t H:i:s", strtotime("-1 month")) : date("Y-m-d H:i:s", strtotime("-1 month"));
if (isset($_GET['sell_month'])) {
$date1 = date('Y-m-01', strtotime($_GET['sell_month']));
$date2 = date("Y-m-t 23:59:59", strtotime($_GET['sell_month']));
$date3 = date("Y-m-01", strtotime($_GET['sell_month'] . " -1 month"));
$date4 = date("Y-m-t 23:59:59", strtotime($_GET['sell_month'] . " -1 month"));
}
//本月
$time_where1 .= " UpdateTime>='" . $date1 . "' and UpdateTime<='" . $date2 . "' ";
$time_where2 .= " UpdateTime>='" . $date3 . "' and UpdateTime<='" . $date4 . "' ";
$time_where_today .= " UpdateTime>='" . date("Y-m-d") . "' and UpdateTime<='" . $date2 . "' ";
//跟进记录时间
$follow_time_where = " create_time>='" . $date1 . "' and create_time<='" . $date2 . "' ";
//获取用户列表
$user_list = $user_model->getAllManagerUser($where);
foreach ($user_list as $info) {
$user_id_list[] = $info['Id'];
//本月注册用户
if (strtotime($info['CreateTime']) >= strtotime($date1) && strtotime($info['CreateTime']) <= strtotime($date2)) {
$register_id_list[] = $info['Id'];
}
if (strtotime($info['CreateTime']) >= strtotime(date("Y-m-d")) && strtotime($info['CreateTime']) <= strtotime($date2)) {
$today_register_id_list[] = $info['Id'];
}
}
$user_where = ['UserId' => ['in', $user_id_list]];
$register_where = ['UserId' => ['in', $register_id_list]];
//获取所有产品的营业额
$all_sell_money = $follow_record_model->getSellInfo($where,$follow_time_where);
$sell_money_list = [];
foreach ($all_sell_money as $sell_info) {
$sell_money_list[$sell_info['product_type'].'_'.$sell_info['sell_type']] += $sell_info['sell_money'];
}
//蘑菇条件单独摘出来
$mogu_time_where1 = $time_where1.' AND `ProductId`=18';
//获取本月蘑菇消费额
@@ -118,6 +283,18 @@ class SellInfo extends Controller
$cost_mogu_data = round($mogu_cost-$mogu_refund_cost,2);
//其他营业额
$cost_not_mogu_data = round($user_cost-$cost_mogu_data-$refund,2);
$data['other_order_active'] = "其他IP产品:" . $sell_money_list['other_order_1'];
$data['mogu_order_active'] = "蘑菇IP产品:" . $sell_money_list['mogu_order_1'];
$data['recharge_active'] = "IP充值:" . $sell_money_list['recharge_1'];
$data['http_active'] = "HTTP充值:" . $sell_money_list['http_1'];
$data['ros_active'] = "ROS订单:" . $sell_money_list['ros_1'];
$data['jinqiao_active'] = "金桥订单:" . $sell_money_list['jinqiao_1'];
$data['other_order_not_active'] = "其他IP产品:" . $sell_money_list['other_order_0'];
$data['mogu_order_not_active'] = "蘑菇IP产品:" . $sell_money_list['mogu_order_0'];
$data['recharge_not_active'] = "IP充值:" . $sell_money_list['recharge_0'];
$data['http_not_active'] = "HTTP充值:" . $sell_money_list['http_0'];
$data['ros_not_active'] = "ROS订单:" . $sell_money_list['ros_0'];
$data['jinqiao_not_active'] = "金桥订单:" . $sell_money_list['jinqiao_0'];
$data['cost_mogu'] = "蘑菇营业额($cost_mogu_data)";
$data['cost_not_mogu'] = "其他营业额($cost_not_mogu_data)";
@@ -133,7 +310,6 @@ class SellInfo extends Controller
\result($data);
}
/**
* @description: 获取所有销售管理信息
* @param {*}

View File

@@ -5,7 +5,7 @@
* @Author: kangkang
* @Date: 2020-10-13 19:52:37
* @LastEditors: “wanyongkang” “937888580@qq.com”
* @LastEditTime: 2024-03-19 17:59:11
* @LastEditTime: 2024-03-22 11:14:21
*/
namespace app\manager\controller;
@@ -23,6 +23,10 @@ use enum\user\User as UserEnum;
use fastphp\base\Controller;
use Qiniu\Auth;
use Qiniu\Storage\UploadManager;
use app\order\model\UserChargeOrder;
use app\http\model\Recharge as httpRechargeModel;
use app\ros\model\Order as RosOrderModel;
use app\jinqiao\model\Order as JinqiaoOrderModel;
class UserFollow extends Controller
{
@@ -275,6 +279,27 @@ class UserFollow extends Controller
foreach ($data as $info){
$manager_info = $manager_model->getOne(['id'=>$info['op_user']],'RealName');
$info['op_user'] = $manager_info['RealName'];
switch($info['product_type']) {
case 'other_order':
$info['product_type'] = '其他IP产品订单';
break;
case 'mogu_order':
$info['product_type'] = '蘑菇IP订单';
break;
case 'recharge':
$info['product_type'] = 'IP充值';
break;
case 'http':
$info['product_type'] = 'HTTP充值';
break;
case 'ros':
$info['product_type'] = '软路由订单';
break;
case 'jinqiao':
$info['product_type'] = '金桥投屏订单';
break;
}
$info['sell_type'] = $info['sell_type']?'主动':'被动';
$list[] = $info;
}
\result($list);
@@ -326,6 +351,27 @@ class UserFollow extends Controller
foreach ($list as &$info) {
$info['follow_status']=$user_enum::$FollowStatus[$info['follow_status']];
$info['manager'] = $manager_id_list[$info['op_user']]['RealName'];
switch($info['product_type']) {
case 'other_order':
$info['product_type'] = '其他IP产品订单';
break;
case 'mogu_order':
$info['product_type'] = '蘑菇IP订单';
break;
case 'recharge':
$info['product_type'] = 'IP充值';
break;
case 'http':
$info['product_type'] = 'HTTP充值';
break;
case 'ros':
$info['product_type'] = '软路由订单';
break;
case 'jinqiao':
$info['product_type'] = '金桥投屏订单';
break;
}
$info['sell_type'] = $info['sell_type']?'主动':'被动';
}
$data = [
@@ -391,6 +437,124 @@ class UserFollow extends Controller
$data = $_POST;
$info = [];
if (!isset($_FILES['file'])) {
echo json_encode(
[
'Code' => 30000,
'msg' => '请上传文件'
]
);
die;
}
$follow_rcord = new FollowRecord;
//验证领取销售信息
$sell_info = [
'order_id' => null,
'product_type' => null,
'sell_money' => 0,
'sell_type' => 0,
];
if ($data['product_type'] == 'other_order' || $data['product_type'] == 'mogu_order') {
$sell_where = [
'UserId' => $data['user_id'],
'PaymentAmount' => $data['sell_money'],
'CreateTime' => ['>',date('Y-m-d',time()-10800)],
];
$product_order_model = new ProductOrder;
$is_ver = $product_order_model->getOne($sell_where);
if ($is_ver) {
$sell_info['order_id'] = $is_ver['Id'];
$sell_info['product_type'] = $data['product_type'];
$sell_info['sell_money'] = $data['sell_money'];
$sell_info['sell_type'] = $data['sell_type'];
}
}
if ($data['product_type'] == 'recharge') {
$sell_where = [
'UserId' => $data['user_id'],
'PaymentAmount' => $data['sell_money'],
'CreateTime' => ['>',date('Y-m-d',time()-10800)],
];
$charge_model = new UserChargeOrder;
$is_ver = $charge_model->getOne($sell_where);
if ($is_ver) {
$sell_info['order_id'] = $is_ver['Id'];
$sell_info['product_type'] = $data['product_type'];
$sell_info['sell_money'] = $data['sell_money'];
$sell_info['sell_type'] = $data['sell_type'];
}
}
if ($data['product_type'] == 'http') {
$sell_where = [
'user_id' => $data['user_id'],
'pay_money' => $data['sell_money'],
'create_time' => ['>',date('Y-m-d',time()-10800)],
];
$charge_model = new httpRechargeModel;
$is_ver = $charge_model->getOne($sell_where);
if ($is_ver) {
$sell_info['order_id'] = $is_ver['id'];
$sell_info['product_type'] = $data['product_type'];
$sell_info['sell_money'] = $data['sell_money'];
$sell_info['sell_type'] = $data['sell_type'];
}
}
if ($data['product_type'] == 'ros') {
$sell_where = [
'user_id' => $data['user_id'],
'real_price' => $data['sell_money'],
'create_time' => ['>',date('Y-m-d',time()-10800)],
];
$charge_model = new RosOrderModel;
$is_ver = $charge_model->getOne($sell_where);
if ($is_ver) {
$sell_info['order_id'] = $is_ver['id'];
$sell_info['product_type'] = $data['product_type'];
$sell_info['sell_money'] = $data['sell_money'];
$sell_info['sell_type'] = $data['sell_type'];
}
}
if ($data['product_type'] == 'jinqiao') {
$sell_where = [
'user_id' => $data['user_id'],
'money' => $data['sell_money'],
'create_time' => ['>',date('Y-m-d',time()-10800)],
];
$charge_model = new JinqiaoOrderModel;
$is_ver = $charge_model->getOne($sell_where);
if ($is_ver) {
$sell_info['order_id'] = $is_ver['id'];
$sell_info['product_type'] = $data['product_type'];
$sell_info['sell_money'] = $data['sell_money'];
$sell_info['sell_type'] = $data['sell_type'];
}
}
if ($follow_rcord->getOne(['order_id' => $sell_info['order_id'],'product_type' => $sell_info['product_type']])){
echo json_encode(
[
'Code' => 30000,
'msg' => '该订单已经被其他客户经理领取'
]
);
die;
}
if ( $sell_info['order_id'] == null){
echo json_encode(
[
'Code' => 30000,
'msg' => '订单信息不正确'
]
);
die;
}
$file = $_FILES['file'];
$size_limit = 30 * 1024 * 1024;
@@ -415,11 +579,13 @@ class UserFollow extends Controller
list($ret, $err) = $uploadMgr->putFile($token, $file_key, $file_filePath, null, 'application/octet-stream', true, null, 'v2');
$info['file'] = 'http://ywsc.juip.com/'.$file_key;
$follow_rcord = new FollowRecord;
$user_model = new User;
$user_enum = new UserEnum;
$user_model->updateOne(['Id' => $data['user_id']], ['follow_status' => $data['status']]);
$follow_rcord->updateOne(['user_id' => $data['user_id']], ['active' => 0]);
if (empty($data['id'])) {
$info['user_id'] = $data['user_id'];
@@ -427,6 +593,10 @@ class UserFollow extends Controller
$info['follow_status'] = $data['status'];
$info['record'] = $data['old_status'] . '=>' . $user_enum::$FollowStatus[$data['status']];
$info['remark'] = $data['remark'];
$info['order_id'] = $sell_info['order_id'];
$info['product_type'] = $sell_info['product_type'];
$info['sell_money'] = $sell_info['sell_money'];
$info['sell_type'] = $sell_info['sell_type'];
$follow_rcord->add($info);
} else {
$info['follow_status'] = $data['status'];

View File

@@ -35,4 +35,12 @@ class FollowRecord extends Model
];
return $this->field('user_id,follow_status')->where($where)->fetchAll();
}
//获取营业销售信息
public function getSellInfo($where1 = [], $where2 = '') {
return $this->field('product_type,sell_money,sell_type')
->where($where1)
->where($where2)
->fetchAll();
}
}