mirror of
https://github.com/crmeb/CRMEB.git
synced 2026-10-28 13:31:04 +00:00
feat(用户列表): 地址列优先展示默认收货地址
批量取用户默认收货地址按 uid 索引,无默认地址时回退微信省市,避免逐行点查
This commit is contained in:
parent
c28a941257
commit
48ae01d903
@ -46,4 +46,17 @@ class UserAddressDao extends BaseDao
|
||||
{
|
||||
return $this->search($where)->field($field)->page($page, $limit)->order('is_default DESC,id DESC')->select()->toArray();
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量获取多个用户的默认地址,按 uid 索引
|
||||
* @param array $uids
|
||||
* @return array
|
||||
*/
|
||||
public function getDefaultAddressMapByUids(array $uids): array
|
||||
{
|
||||
if (!$uids) {
|
||||
return [];
|
||||
}
|
||||
return $this->getColumn([['uid', 'in', array_unique($uids)], ['is_default', '=', 1], ['is_del', '=', 0]], 'province,city,district,detail', 'uid');
|
||||
}
|
||||
}
|
||||
|
||||
@ -95,6 +95,16 @@ class UserAddressServices extends BaseService
|
||||
return $this->dao->getOne(['uid' => $uid, 'is_default' => 1, 'is_del' => 0], $field);
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量获取多个用户的默认地址,按 uid 索引
|
||||
* @param array $uids
|
||||
* @return array
|
||||
*/
|
||||
public function getDefaultAddressMapByUids(array $uids): array
|
||||
{
|
||||
return $this->dao->getDefaultAddressMapByUids($uids);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取条数
|
||||
* @param array $where
|
||||
|
||||
@ -571,9 +571,14 @@ class UserServices extends BaseService
|
||||
$levelName = app()->make(SystemUserLevelServices::class)->getUsersLevel(array_unique(array_column($list, 'level')));
|
||||
$userLevel = app()->make(UserLevelServices::class)->getUsersLevelInfo($uids);
|
||||
$spread_names = $this->dao->getColumn([['uid', 'in', array_unique(array_column($list, 'spread_uid'))]], 'nickname', 'uid');
|
||||
$defaultAddressMap = app()->make(UserAddressServices::class)->getDefaultAddressMapByUids($uids);
|
||||
foreach ($list as &$item) {
|
||||
if (empty($item['addres'])) {
|
||||
if (!empty($item['country']) || !empty($item['province']) || !empty($item['city'])) {
|
||||
// 优先展示用户默认收货地址,无默认地址时回退微信用户省市
|
||||
$defaultAddress = $defaultAddressMap[$item['uid']] ?? null;
|
||||
if ($defaultAddress) {
|
||||
$item['addres'] = $defaultAddress['province'] . $defaultAddress['city'] . $defaultAddress['district'] . $defaultAddress['detail'];
|
||||
} elseif (!empty($item['country']) || !empty($item['province']) || !empty($item['city'])) {
|
||||
$item['addres'] = $item['country'] . $item['province'] . $item['city'];
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user