```
feat(split): 完善分账接收方列表展示功能 - 添加用户信息查询和展示,包括昵称、手机号等用户详情 - 增加汇付进件状态显示和账号匹配校验功能 - 优化前端表格界面,新增用户关联信息、进件核对状态等列 - 改进数据格式化处理,提供更详细的分账接收方信息展示 - 更新表单提示文案,明确用户ID填写规则和要求 ```
这个提交包含在:
@@ -5,6 +5,8 @@ namespace app\admin\controller\shopro\split;
|
||||
use app\admin\controller\shopro\Base;
|
||||
use addons\shopro\library\split\Config as SplitConfig;
|
||||
use addons\shopro\library\split\ProfitSharingService;
|
||||
use app\admin\model\shopro\user\User as ShopUser;
|
||||
use think\Db;
|
||||
|
||||
class Receiver extends Base
|
||||
{
|
||||
@@ -23,6 +25,7 @@ class Receiver extends Base
|
||||
list($where, $sort, $order, $offset, $limit) = $this->custombuildparams();
|
||||
$total = $this->model->where($where)->count();
|
||||
$list = $this->model->where($where)->order($sort, $order)->limit($offset, $limit)->select();
|
||||
$list = $this->formatReceiverList($list);
|
||||
return $this->success('操作成功', null, ['total' => $total, 'rows' => $list]);
|
||||
}
|
||||
$this->assignconfig('splitHuifuOnly', (new SplitConfig())->isHuifuMode());
|
||||
@@ -67,6 +70,142 @@ class Receiver extends Base
|
||||
$this->success('操作成功');
|
||||
}
|
||||
|
||||
protected function formatReceiverList($list)
|
||||
{
|
||||
$rows = [];
|
||||
$userIds = [];
|
||||
foreach ($list as $item) {
|
||||
$data = is_array($item) ? $item : $item->toArray();
|
||||
$roleId = intval($data['role_id'] ?? 0);
|
||||
if ($roleId > 0) {
|
||||
$userIds[] = $roleId;
|
||||
}
|
||||
}
|
||||
$userIds = array_values(array_unique($userIds));
|
||||
$users = [];
|
||||
if ($userIds) {
|
||||
$userRows = ShopUser::where('id', 'in', $userIds)->field('id,nickname,mobile')->select();
|
||||
foreach ($userRows as $user) {
|
||||
$u = is_array($user) ? $user : $user->toArray();
|
||||
$users[intval($u['id'])] = $u;
|
||||
}
|
||||
}
|
||||
|
||||
$onboardMap = [];
|
||||
if ($userIds) {
|
||||
try {
|
||||
$onboardRows = Db::name('shopro_huifu_onboard')
|
||||
->where('user_id', 'in', $userIds)
|
||||
->order('id desc')
|
||||
->select();
|
||||
foreach ($onboardRows as $ob) {
|
||||
$uid = intval($ob['user_id']);
|
||||
if (!isset($onboardMap[$uid])) {
|
||||
$onboardMap[$uid] = $ob;
|
||||
}
|
||||
}
|
||||
} catch (\Throwable $e) {
|
||||
$onboardMap = [];
|
||||
}
|
||||
}
|
||||
|
||||
foreach ($list as $item) {
|
||||
$data = is_array($item) ? $item : $item->toArray();
|
||||
$roleId = intval($data['role_id'] ?? 0);
|
||||
$user = $roleId > 0 && isset($users[$roleId]) ? $users[$roleId] : null;
|
||||
$onboard = $roleId > 0 && isset($onboardMap[$roleId]) ? $onboardMap[$roleId] : null;
|
||||
|
||||
$data['user_id'] = $roleId;
|
||||
$data['user_nickname'] = is_array($user) ? trim((string) ($user['nickname'] ?? '')) : '';
|
||||
$data['user_mobile'] = is_array($user) ? trim((string) ($user['mobile'] ?? '')) : '';
|
||||
$data['user_display'] = $this->formatUserDisplay($roleId, $user);
|
||||
$data['role_id_text'] = $roleId > 0 ? (string) $roleId : '0(通用)';
|
||||
|
||||
$onboardHuifuId = trim((string) ($onboard['huifu_id'] ?? ''));
|
||||
$receiverAccount = trim((string) ($data['receiver_account'] ?? ''));
|
||||
$data['onboard_huifu_id'] = $onboardHuifuId;
|
||||
$data['onboard_status'] = $onboard['onboard_status'] ?? '';
|
||||
$data['onboard_status_text'] = $this->formatOnboardStatus($onboard['onboard_status'] ?? '');
|
||||
$data['account_match'] = ($onboardHuifuId !== '' && $receiverAccount !== '' && $onboardHuifuId === $receiverAccount) ? 1 : 0;
|
||||
$data['account_match_text'] = $this->formatAccountMatch($roleId, $onboardHuifuId, $receiverAccount);
|
||||
|
||||
$data['channel_text'] = ($data['channel'] ?? '') === 'huifu' ? '汇付' : '微信';
|
||||
$data['role_type_text'] = $this->roleTypeLabel($data['role_type'] ?? '');
|
||||
$data['status_text'] = ($data['status'] ?? '') === 'forbidden' ? '禁用' : '正常';
|
||||
$data['createtime_text'] = !empty($data['createtime'])
|
||||
? date('Y-m-d H:i:s', $data['createtime'])
|
||||
: '-';
|
||||
|
||||
$rows[] = $data;
|
||||
}
|
||||
|
||||
return $rows;
|
||||
}
|
||||
|
||||
protected function formatUserDisplay($roleId, $user)
|
||||
{
|
||||
if ($roleId <= 0) {
|
||||
return '—(规则模式通用接收方)';
|
||||
}
|
||||
if (!is_array($user)) {
|
||||
return '用户#' . $roleId . '(未找到)';
|
||||
}
|
||||
$nickname = trim((string) ($user['nickname'] ?? ''));
|
||||
$mobile = trim((string) ($user['mobile'] ?? ''));
|
||||
if ($nickname !== '' && $mobile !== '') {
|
||||
return $nickname . '(' . $mobile . ')';
|
||||
}
|
||||
if ($nickname !== '') {
|
||||
return $nickname;
|
||||
}
|
||||
if ($mobile !== '') {
|
||||
return $mobile;
|
||||
}
|
||||
return '用户#' . $roleId;
|
||||
}
|
||||
|
||||
protected function formatOnboardStatus($status)
|
||||
{
|
||||
$map = [
|
||||
'draft' => '草稿',
|
||||
'submitting' => '提交中',
|
||||
'basic_ok' => '基础进件完成',
|
||||
'busi_pending' => '业务开通中',
|
||||
'approved' => '已通过',
|
||||
'rejected' => '已驳回',
|
||||
'failed' => '失败',
|
||||
];
|
||||
$status = trim((string) $status);
|
||||
return $status !== '' ? ($map[$status] ?? $status) : '—';
|
||||
}
|
||||
|
||||
protected function formatAccountMatch($roleId, $onboardHuifuId, $receiverAccount)
|
||||
{
|
||||
if ($roleId <= 0) {
|
||||
return '—';
|
||||
}
|
||||
if ($onboardHuifuId === '' && $receiverAccount === '') {
|
||||
return '未配置';
|
||||
}
|
||||
if ($onboardHuifuId === '') {
|
||||
return '未进件';
|
||||
}
|
||||
if ($receiverAccount === '') {
|
||||
return '未填账号';
|
||||
}
|
||||
return $onboardHuifuId === $receiverAccount ? '与进件一致' : '与进件不一致';
|
||||
}
|
||||
|
||||
protected function roleTypeLabel($type)
|
||||
{
|
||||
$map = [
|
||||
'platform' => '平台',
|
||||
'promoter' => '推广员',
|
||||
'regional_agent' => '区域公司',
|
||||
];
|
||||
return $map[$type] ?? ($type ?: '-');
|
||||
}
|
||||
|
||||
public function syncWx($ids = null)
|
||||
{
|
||||
$row = $this->model->get($ids);
|
||||
|
||||
在新工单中引用
屏蔽一个用户