Merge branch 'hotfix/user' into develop
This commit is contained in:
@@ -10,12 +10,16 @@ use app\crm\logic\CustomerLogic;
|
|||||||
use app\crm\model\Channel;
|
use app\crm\model\Channel;
|
||||||
use app\crm\model\Country;
|
use app\crm\model\Country;
|
||||||
use app\crm\model\Customer;
|
use app\crm\model\Customer;
|
||||||
|
use app\crm\model\Tag;
|
||||||
use app\crm\model\CustomerHis;
|
use app\crm\model\CustomerHis;
|
||||||
use app\crm\model\Follow;
|
use app\crm\model\Follow;
|
||||||
use app\crm\utils\Util;
|
use app\crm\utils\Util;
|
||||||
use config\constants\Constants;
|
use config\constants\Constants;
|
||||||
use support\Request;
|
use support\Request;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @method mixed complexQuery(array $params)
|
||||||
|
*/
|
||||||
class CustomerService
|
class CustomerService
|
||||||
{
|
{
|
||||||
|
|
||||||
@@ -37,6 +41,8 @@ class CustomerService
|
|||||||
$follow = $params['follow'] ?? '';
|
$follow = $params['follow'] ?? '';
|
||||||
$follow_last = $params['follow_last'] ?? '';
|
$follow_last = $params['follow_last'] ?? '';
|
||||||
$tagId = $params['tag_id'] ?? [];
|
$tagId = $params['tag_id'] ?? [];
|
||||||
|
$sort = $params['sort'] ?? null;
|
||||||
|
$sortId = $params['sort_id'] ?? null;
|
||||||
$countryId = $params['country_id'] ?? '';
|
$countryId = $params['country_id'] ?? '';
|
||||||
$where = [];
|
$where = [];
|
||||||
$user_id =$params['user_id'];
|
$user_id =$params['user_id'];
|
||||||
@@ -72,7 +78,7 @@ class CustomerService
|
|||||||
$where[] = ['follow_last', '>', strtotime('-7 day')];
|
$where[] = ['follow_last', '>', strtotime('-7 day')];
|
||||||
}
|
}
|
||||||
|
|
||||||
$query = Customer::where($where);
|
$query = Customer::select('crm_customer.*')->where($where);
|
||||||
|
|
||||||
if(!empty($tagId)){
|
if(!empty($tagId)){
|
||||||
//查询有$tagId 里任意一个标签的客户
|
//查询有$tagId 里任意一个标签的客户
|
||||||
@@ -115,7 +121,34 @@ class CustomerService
|
|||||||
$query->withTrashed();
|
$query->withTrashed();
|
||||||
}
|
}
|
||||||
|
|
||||||
$customer = $query->orderBy('id','desc')->paginate($perPage, ['*'], 'page', $page);
|
if ($sort == 'tag_group') {
|
||||||
|
// 排序:按关联的 crm_tag.sort 最小值升序,其次按客户ID倒序
|
||||||
|
$minSortSub = Tag::selectRaw('MIN(crm_tag.sort) AS min_sort, crm_customer_tag.customer_id')
|
||||||
|
->join('crm_customer_tag', 'crm_customer_tag.tag_id', '=', 'crm_tag.id')
|
||||||
|
->whereNull('crm_tag.deleted_at')
|
||||||
|
->when(!empty($sortId), function ($q) use ($sortId) {
|
||||||
|
$q->where('crm_tag.group_id', $sortId);
|
||||||
|
})
|
||||||
|
->groupBy('crm_customer_tag.customer_id');
|
||||||
|
|
||||||
|
$query->leftJoinSub($minSortSub, 'tag_min', function ($join) {
|
||||||
|
$join->on('crm_customer.id', '=', 'tag_min.customer_id');
|
||||||
|
});
|
||||||
|
|
||||||
|
$query = $query->orderByRaw('tag_min.min_sort IS NULL')
|
||||||
|
->orderBy('tag_min.min_sort', 'asc')
|
||||||
|
->orderBy('crm_customer.id', 'desc');
|
||||||
|
}elseif ($sort == 'follow_last') {
|
||||||
|
$query = $query->orderBy('crm_customer.follow_last', 'desc');
|
||||||
|
}elseif ($sort == 'follow_next') {
|
||||||
|
$query = $query->orderBy('crm_customer.follow_next', 'asc');
|
||||||
|
$query = $query->orderByRaw('crm_customer.follow_next IS NULL, crm_customer.follow_next ASC');
|
||||||
|
}elseif ($sort == 'id' || empty($sort)) {
|
||||||
|
$query = $query->orderBy('crm_customer.id', 'desc');
|
||||||
|
}
|
||||||
|
|
||||||
|
$customer = $query->paginate($perPage, ['*'], 'page', $page);
|
||||||
|
|
||||||
foreach ($customer as &$item) {
|
foreach ($customer as &$item) {
|
||||||
$item = $this->getCustomer($item);
|
$item = $this->getCustomer($item);
|
||||||
if($seas == 'seas'){
|
if($seas == 'seas'){
|
||||||
|
|||||||
Reference in New Issue
Block a user