增加分佣查询

This commit is contained in:
lccsw
2025-12-10 14:55:10 +08:00
parent f8d43ef20c
commit b65cd6cccf
2 changed files with 148 additions and 0 deletions
@@ -0,0 +1,141 @@
<?php
defined('BASEPATH') or exit('No direct script access allowed');
require_once APPPATH . 'controllers/api/BaseController.php';
class Cmmssn extends BaseController
{
public function __construct()
{
parent::__construct();
$this->load->model('agent/pingan/pingan_users_model', 'pinganUsers');
$this->load->model('agent/pingan/pingan_users_cmmssn_model', 'cmmssn_model');
$this->load->model('receiver/receiver_clues_model');
$this->load->model('receiver/receiver_customers_model');
$this->load->model('receiver/order/receiver_orders_model');
$this->load->model('biz/biz_model');
$this->receiver_clues_model->set_db('ssdb');
$this->receiver_customers_model->set_db('ssdb');
$this->receiver_orders_model->set_db('ssdb');
$this->biz_model->set_db('ssdb');
}
public function index_get()
{
$params = $this->input_param();
$data = $this->cmmssnList($params);
$this->return_response($data);
}
public function export_get()
{
$this->inputs['page'] = 1;
$this->inputs['limit'] = 20000;
$data = $this->cmmssnList($this->inputs);
$this->return_response_list($data);
}
public function index_put()
{
$params = $this->input_param();
$row = $this->cmmssn_model->get(['id' => $params['id']]);
if (!$row) {
$this->return_json('参数错误');
}
if ($row['ifSend']) {
$this->return_json('已设置发放');
}
$updateData = [
'ifSend' => Pingan_users_cmmssn_model::IF_SEND_YES,
'sendTime' => date('Y-m-d H:i:s')
];
$res = $this->cmmssn_model->update($updateData, ['id' => $row['id']]);
if (!$res) {
$this->return_json('保存失败');
}
$this->return_response();
}
private function cmmssnList($params)
{
$list = [];
$page = $params['page'] ?: 1;
$limit = $params['limit'] ?: 10;
$where = [];
if ($params['type']) {
if ($params['type'] == 1) { //线索
$cfType = Pingan_users_cmmssn_model::CF_TYPE_CLUES_OWN . ',' . Pingan_users_cmmssn_model::CF_TYPE_CLUES_TEAM;
} else { //订单
$cfType = Pingan_users_cmmssn_model::CF_TYPE_ORDER_OWN . ',' . Pingan_users_cmmssn_model::CF_TYPE_ORDER_TEAM;
}
$where["cfType in ({$cfType})"] = null;
}
if ($params['username']) {
$where["pinganUserId in (select id from lc_pingan_users where username like '%{$params['username']}%')"] = null;
}
if (strlen($params['ifSend'])) {
$where["ifSend"] = intval($params['ifSend']);
}
$count = $this->cmmssn_model->count($where);
if ($count) {
$rows = $this->cmmssn_model->select($where, 'id desc', $page, $limit);
$bizIdArray = array_unique(array_column($rows, 'bizId'));
$bizIdIds = $bizIdArray ? implode(',', $bizIdArray) : 0;
$where = ["id in ({$bizIdIds})" => null];
$bizMap = $this->biz_model->map('id', 'biz_name', $where, '', '', '', 'id,biz_name');
//获取坐席
$userIdArray = array_unique(array_column($rows, 'pinganUserId'));
$userIds = $userIdArray ? implode(',', $userIdArray) : 0;
$where = ["id in ({$userIds})" => null];
$userMap = $this->pinganUsers->map('id', '', $where, '', '', 'id,centerNumber,username,userCode,orgName');
foreach ($rows as $item) {
$customer = [];
$order = [];
$user = $userMap[$item['pinganUserId']] ? $userMap[$item['pinganUserId']][0] : [];
if (in_array($item['cfType'], [Pingan_users_cmmssn_model::CF_TYPE_CLUES_OWN, Pingan_users_cmmssn_model::CF_TYPE_CLUES_TEAM])) { //线索
$customer = $this->receiver_customers_model->get(['rid' => $item['cfId'], 'un_lock' => Receiver_customers_model::LOCK_STATUS]);
$order = $this->receiver_orders_model->get(['clue_id' => $item['cfId']]);
}
if (in_array($item['cfType'], [Pingan_users_cmmssn_model::CF_TYPE_ORDER_OWN, Pingan_users_cmmssn_model::CF_TYPE_ORDER_TEAM])) { //订单
$order = $this->receiver_orders_model->get(['id' => $item['cfId']]);
$order['customer_id'] && $customer = $this->receiver_customers_model->get(['id' => $order['customer_id']]);
}
if ($limit >= 10000) {
$list[] = [
'mobile' => $customer['mobile'] ?: '',
'bizName' => $bizMap[$item['bizId']] ?: '',
'centerName' => Pingan_users_model::TYPE_CENTER[$user['centerNumber']] ?: '',
'orgName' => $user['orgName'] ?: '',
'userName' => $user['username'] ?: '',
'userCode' => $user['userCode'] ?: '',
'unlockTime' => strtotime($customer['unlock_time']) > 0 ? $customer['unlock_time'] : '',
'orderTime' => $order['order_time'] ?: '',
'money' => $item['money']
];
} else {
$list[] = [
'id' => $item['id'],
'mobile' => $customer['mobile'] ?: '',
'bizName' => $bizMap[$item['bizId']] ?: '',
'centerName' => Pingan_users_model::TYPE_CENTER[$user['centerNumber']] ?: '',
'userName' => $user['username'] ?: '',
'userCode' => $user['userCode'] ?: '',
'orgName' => $user['orgName'] ?: '',
'unlockTime' => strtotime($customer['unlock_time']) > 0 ? $customer['unlock_time'] : '',
'orderTime' => $order['order_time'] ?: '',
'typeCn' => Pingan_users_cmmssn_model::CF_TYPE_CN[$item['cfType']] ?: '',
'money' => $item['money'],
'sendCn' => Pingan_users_cmmssn_model::IF_SEND_CN[$item['ifSend']] ?: '',
'ifSend' => $item['ifSend'],
];
}
}
}
$columns = [];
if ($limit >= 10000) {
$columns = ['线索', '解锁门店', '中心', '机构', '坐席', '坐席工号', '解锁时间', '订单时间', '佣金'];
}
return ['list' => $list, 'count' => $count, 'columns' => $columns];
}
}
@@ -16,6 +16,13 @@ class Pingan_users_cmmssn_model extends HD_Model
self::CF_TYPE_CLUES_OWN => '线索', //自有线索
self::CF_TYPE_CLUES_TEAM => '线索' //团队线索
];
//是否发放
const IF_SEND_NO = 0; //否
const IF_SEND_YES = 1; //是
const IF_SEND_CN = [
self::IF_SEND_NO => '否',
self::IF_SEND_YES => '是'
];
public function __construct()
{