|
@@ -384,53 +384,109 @@ class Customer extends Start_Controller {
|
|
|
}
|
|
}
|
|
|
//取得信息列表
|
|
//取得信息列表
|
|
|
$info_list = $this->customer->find_all($where,'id,shop,source,name,email,phone,country,level,money,num,numphone,time,count,type',$order_str,$start,$perpage);
|
|
$info_list = $this->customer->find_all($where,'id,shop,source,name,email,phone,country,level,money,num,numphone,time,count,type',$order_str,$start,$perpage);
|
|
|
- foreach ($info_list as $key=>$value)
|
|
|
|
|
|
|
+
|
|
|
|
|
+ // ========== 性能优化:全表缓存替代循环内逐条查询(消除N+1问题)==========
|
|
|
|
|
+ // shop/country/typeclass 都是几百条的小表,直接全表查出来放内存,比逐条查或IN都高效
|
|
|
|
|
+
|
|
|
|
|
+ // 全量加载shop表,构建 id => shopname 映射
|
|
|
|
|
+ $shop_map = [];
|
|
|
|
|
+ $shop_rows = $this->shop->find_all('1=1', 'id,shopname');
|
|
|
|
|
+ foreach ($shop_rows as $row) {
|
|
|
|
|
+ $shop_map[$row['id']] = $row['shopname'];
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 全量加载typeclass表,构建 id => title 映射
|
|
|
|
|
+ $source_map = [];
|
|
|
|
|
+ $source_rows = $this->typeclass->find_all('1=1', 'id,title');
|
|
|
|
|
+ foreach ($source_rows as $row) {
|
|
|
|
|
+ $source_map[$row['id']] = $row['title'];
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 全量加载country表,构建 id => name 映射
|
|
|
|
|
+ $country_map = [];
|
|
|
|
|
+ $country_rows = $this->country->find_all('1=1', 'id,name');
|
|
|
|
|
+ foreach ($country_rows as $row) {
|
|
|
|
|
+ $country_map[$row['id']] = $row['name'];
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // level值映射表(替代原来的if-elseif链)
|
|
|
|
|
+ $level_map = [
|
|
|
|
|
+ 1 => '网红',
|
|
|
|
|
+ 2 => '批发',
|
|
|
|
|
+ 3 => '店铺转线下',
|
|
|
|
|
+ 4 => '线下其他',
|
|
|
|
|
+ 5 => '店内客户',
|
|
|
|
|
+ ];
|
|
|
|
|
+
|
|
|
|
|
+ // 循环内仅做内存字典查找,不再发起数据库查询
|
|
|
|
|
+ foreach ($info_list as $key => $value)
|
|
|
{
|
|
{
|
|
|
- $shop = $this->shop->read($value['shop']);
|
|
|
|
|
- $info_list[$key]['shop'] = $shop['shopname'];
|
|
|
|
|
- $source = $this->typeclass->read($value['source']);
|
|
|
|
|
- $info_list[$key]['source'] = $source['title'];
|
|
|
|
|
- if($value['country'] != 0)
|
|
|
|
|
- {
|
|
|
|
|
- $country = $this->country->read($value['country']);
|
|
|
|
|
- $info_list[$key]['country'] = $country['name'];
|
|
|
|
|
- }
|
|
|
|
|
- else
|
|
|
|
|
- {
|
|
|
|
|
|
|
+ // 店铺名称映射
|
|
|
|
|
+ $info_list[$key]['shop'] = isset($shop_map[$value['shop']]) ? $shop_map[$value['shop']] : '';
|
|
|
|
|
+ // 来源映射
|
|
|
|
|
+ $info_list[$key]['source'] = isset($source_map[$value['source']]) ? $source_map[$value['source']] : '';
|
|
|
|
|
+ // 国家映射
|
|
|
|
|
+ if ($value['country'] != 0) {
|
|
|
|
|
+ $info_list[$key]['country'] = isset($country_map[$value['country']]) ? $country_map[$value['country']] : '未知';
|
|
|
|
|
+ } else {
|
|
|
$info_list[$key]['country'] = "未知";
|
|
$info_list[$key]['country'] = "未知";
|
|
|
}
|
|
}
|
|
|
- if($value['level'] == 1)
|
|
|
|
|
- {
|
|
|
|
|
- $info_list[$key]['level'] = "网红";
|
|
|
|
|
- }
|
|
|
|
|
- else if($value['level'] == 2)
|
|
|
|
|
- {
|
|
|
|
|
- $info_list[$key]['level'] = "批发";
|
|
|
|
|
- }
|
|
|
|
|
- else if($value['level'] == 3)
|
|
|
|
|
- {
|
|
|
|
|
- $info_list[$key]['level'] = "店铺转线下";
|
|
|
|
|
- }
|
|
|
|
|
- else if($value['level'] == 4)
|
|
|
|
|
- {
|
|
|
|
|
- $info_list[$key]['level'] = "线下其他";
|
|
|
|
|
- }
|
|
|
|
|
- else if($value['level'] == 5)
|
|
|
|
|
- {
|
|
|
|
|
- $info_list[$key]['level'] = "店内客户";
|
|
|
|
|
- }
|
|
|
|
|
- else
|
|
|
|
|
- {
|
|
|
|
|
- $info_list[$key]['level'] = "未定义";
|
|
|
|
|
- }
|
|
|
|
|
- if($value['time'] != 0)
|
|
|
|
|
- {
|
|
|
|
|
- $info_list[$key]['time'] = date('Y-m-d',$value['time']);
|
|
|
|
|
- }
|
|
|
|
|
- else
|
|
|
|
|
- {
|
|
|
|
|
|
|
+ // 客户等级映射
|
|
|
|
|
+ $info_list[$key]['level'] = isset($level_map[$value['level']]) ? $level_map[$value['level']] : '未定义';
|
|
|
|
|
+ // 时间格式化
|
|
|
|
|
+ if ($value['time'] != 0) {
|
|
|
|
|
+ $info_list[$key]['time'] = date('Y-m-d', $value['time']);
|
|
|
|
|
+ } else {
|
|
|
$info_list[$key]['time'] = "无";
|
|
$info_list[$key]['time'] = "无";
|
|
|
}
|
|
}
|
|
|
|
|
+ // ========== 以下为原代码(注释保留)==========
|
|
|
|
|
+ // $shop = $this->shop->read($value['shop']);
|
|
|
|
|
+ // $info_list[$key]['shop'] = $shop['shopname'];
|
|
|
|
|
+ // $source = $this->typeclass->read($value['source']);
|
|
|
|
|
+ // $info_list[$key]['source'] = $source['title'];
|
|
|
|
|
+ // if($value['country'] != 0)
|
|
|
|
|
+ // {
|
|
|
|
|
+ // $country = $this->country->read($value['country']);
|
|
|
|
|
+ // $info_list[$key]['country'] = $country['name'];
|
|
|
|
|
+ // }
|
|
|
|
|
+ // else
|
|
|
|
|
+ // {
|
|
|
|
|
+ // $info_list[$key]['country'] = "未知";
|
|
|
|
|
+ // }
|
|
|
|
|
+ // if($value['level'] == 1)
|
|
|
|
|
+ // {
|
|
|
|
|
+ // $info_list[$key]['level'] = "网红";
|
|
|
|
|
+ // }
|
|
|
|
|
+ // else if($value['level'] == 2)
|
|
|
|
|
+ // {
|
|
|
|
|
+ // $info_list[$key]['level'] = "批发";
|
|
|
|
|
+ // }
|
|
|
|
|
+ // else if($value['level'] == 3)
|
|
|
|
|
+ // {
|
|
|
|
|
+ // $info_list[$key]['level'] = "店铺转线下";
|
|
|
|
|
+ // }
|
|
|
|
|
+ // else if($value['level'] == 4)
|
|
|
|
|
+ // {
|
|
|
|
|
+ // $info_list[$key]['level'] = "线下其他";
|
|
|
|
|
+ // }
|
|
|
|
|
+ // else if($value['level'] == 5)
|
|
|
|
|
+ // {
|
|
|
|
|
+ // $info_list[$key]['level'] = "店内客户";
|
|
|
|
|
+ // }
|
|
|
|
|
+ // else
|
|
|
|
|
+ // {
|
|
|
|
|
+ // $info_list[$key]['level'] = "未定义";
|
|
|
|
|
+ // }
|
|
|
|
|
+ // if($value['time'] != 0)
|
|
|
|
|
+ // {
|
|
|
|
|
+ // $info_list[$key]['time'] = date('Y-m-d',$value['time']);
|
|
|
|
|
+ // }
|
|
|
|
|
+ // else
|
|
|
|
|
+ // {
|
|
|
|
|
+ // $info_list[$key]['time'] = "无";
|
|
|
|
|
+ // }
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
//$gmcs = $this->fullorder->find_count("email = '".$value['email']."' time > '$timetk' and time < '$timetj'");
|
|
//$gmcs = $this->fullorder->find_count("email = '".$value['email']."' time > '$timetk' and time < '$timetj'");
|
|
|
//$info_list[$key]['num'] = $gmcs;
|
|
//$info_list[$key]['num'] = $gmcs;
|
|
|
$info_list[$key]['numphone'] = ($value['num'] > 0)?sprintf("%01.2f",$value['money']/$value['num']):0;
|
|
$info_list[$key]['numphone'] = ($value['num'] > 0)?sprintf("%01.2f",$value['money']/$value['num']):0;
|