feat(shopro_huifu): 完善进件功能支持编辑模式 - 修改Onboard控制器中的saveDraft方法,增加onboardId参数以支持编辑现有记录 - 在前端模板中优化用户和角色显示,添加条件渲染和样式类 - 新增resolveRoleLabel方法用于解析角色标签,优化角色标签显示逻辑 - 调整表单数据处理流程,确保编辑模式下正确获取用户和角色信息 - 增强数据验证逻辑,防止非法操作和数据不一致问题 ```
59 行
2.0 KiB
PHP
59 行
2.0 KiB
PHP
<?php
|
|
|
|
namespace addons\shopro_huifu\library\onboard;
|
|
|
|
use addons\shopro_huifu\model\Onboard;
|
|
use think\Db;
|
|
|
|
class HuifuOnboardAdminService
|
|
{
|
|
public function saveDraft($userId, $roleType, $roleRefId, array $formData, $onboardId = 0)
|
|
{
|
|
$onboardId = intval($onboardId);
|
|
if ($onboardId > 0) {
|
|
$row = Onboard::get($onboardId);
|
|
if (!$row) {
|
|
throw new \InvalidArgumentException('进件记录不存在');
|
|
}
|
|
$userId = intval($row['user_id']);
|
|
$roleType = (string) $row['role_type'];
|
|
$roleRefId = intval($row['role_ref_id']);
|
|
} else {
|
|
$userId = intval($userId);
|
|
$roleRefId = intval($roleRefId);
|
|
if ($userId <= 0) {
|
|
throw new \InvalidArgumentException('请选择用户');
|
|
}
|
|
if (!in_array($roleType, ['promoter', 'regional_agent'], true)) {
|
|
throw new \InvalidArgumentException('请选择进件角色');
|
|
}
|
|
$this->assertRoleBinding($userId, $roleType, $roleRefId);
|
|
}
|
|
|
|
$service = new HuifuOnboardService();
|
|
return $service->saveDraft($userId, $roleType, $roleRefId, $formData, $onboardId);
|
|
}
|
|
|
|
protected function assertRoleBinding($userId, $roleType, $roleRefId)
|
|
{
|
|
if ($roleType === 'promoter') {
|
|
if ($roleRefId !== $userId) {
|
|
throw new \InvalidArgumentException('分销商角色参数无效');
|
|
}
|
|
$agent = Db::name('shopro_commission_agent')->where('user_id', $userId)->find();
|
|
if (!$agent) {
|
|
throw new \InvalidArgumentException('该用户不是分销商,无法创建分销商进件');
|
|
}
|
|
return;
|
|
}
|
|
|
|
$agent = Db::name('shopro_regional_agent')
|
|
->where('id', $roleRefId)
|
|
->where('user_id', $userId)
|
|
->find();
|
|
if (!$agent) {
|
|
throw new \InvalidArgumentException('区域公司与用户不匹配');
|
|
}
|
|
}
|
|
}
|