diff --git a/app/manager/controller/SellInfo.php b/app/manager/controller/SellInfo.php index b260ee5..af4c15e 100644 --- a/app/manager/controller/SellInfo.php +++ b/app/manager/controller/SellInfo.php @@ -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 {*} diff --git a/app/manager/controller/UserFollow.php b/app/manager/controller/UserFollow.php index 29caba6..db54eb2 100644 --- a/app/manager/controller/UserFollow.php +++ b/app/manager/controller/UserFollow.php @@ -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']; diff --git a/app/manager/model/FollowRecord.php b/app/manager/model/FollowRecord.php index daf2563..32cc7ed 100644 --- a/app/manager/model/FollowRecord.php +++ b/app/manager/model/FollowRecord.php @@ -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(); + } }