|
@@ -105,6 +105,7 @@ class AgentApply extends Validate
|
|
|
return $this;
|
|
|
}
|
|
|
|
|
|
+
|
|
|
/**
|
|
|
* 检查代理商身份是否存在且启用
|
|
|
* @param mixed $value
|
|
@@ -193,7 +194,7 @@ class AgentApply extends Validate
|
|
|
* @param array $requiredFields 需要验证的字段
|
|
|
* @return bool|string
|
|
|
*/
|
|
|
- protected function validateAreaIds($data, $requiredFields = ['province_id', 'city_id', 'district_id'])
|
|
|
+ public function validateAreaIds($data, $requiredFields = ['province_id', 'city_id', 'district_id'])
|
|
|
{
|
|
|
$areaModel = new \app\common\model\Area();
|
|
|
|
|
@@ -298,4 +299,147 @@ class AgentApply extends Validate
|
|
|
'message' => $requirementInfo['message']
|
|
|
];
|
|
|
}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取可修改的字段列表(根据申请类型)
|
|
|
+ * @param string $applyType
|
|
|
+ * @return array
|
|
|
+ */
|
|
|
+ public static function getUpdatableFields($applyType)
|
|
|
+ {
|
|
|
+ if ($applyType == ApplyModel::APPLY_TYPE_PERSONAL) {
|
|
|
+ // 个人申请可修改字段:真实姓名、身份证号、手机号、身份证照片
|
|
|
+ return [
|
|
|
+ 'real_name', 'id_card', 'mobile', 'id_card_front', 'id_card_back'
|
|
|
+ ];
|
|
|
+ } else {
|
|
|
+ // 企业申请可修改字段:企业名称、法人信息、法人身份证、营业执照
|
|
|
+ return [
|
|
|
+ 'company_name', 'legal_person', 'legal_mobile', 'legal_id_card',
|
|
|
+ 'legal_id_front', 'legal_id_back', 'business_license'
|
|
|
+ ];
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 过滤出可更新的字段
|
|
|
+ * @param array $data
|
|
|
+ * @param string $applyType
|
|
|
+ * @return array
|
|
|
+ */
|
|
|
+ public function filterUpdatableFields($data, $applyType)
|
|
|
+ {
|
|
|
+ $allowedFields = self::getUpdatableFields($applyType);
|
|
|
+
|
|
|
+ // 过滤出允许更新且有值的字段
|
|
|
+ $filteredData = [];
|
|
|
+ foreach ($data as $field => $value) {
|
|
|
+ if (in_array($field, $allowedFields) && $value !== '' && $value !== null) {
|
|
|
+ $filteredData[$field] = $value;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return $filteredData;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 验证更新字段(手动验证,避免正则表达式问题)
|
|
|
+ * @param array $data 已过滤的数据
|
|
|
+ * @param string $applyType
|
|
|
+ * @return bool|string
|
|
|
+ */
|
|
|
+ public function validateUpdateFields($data, $applyType)
|
|
|
+ {
|
|
|
+ if (empty($data)) {
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 手动验证每个字段,避免框架验证器的正则表达式问题
|
|
|
+ foreach ($data as $field => $value) {
|
|
|
+ $result = $this->validateField($field, $value);
|
|
|
+ if ($result !== true) {
|
|
|
+ return $result;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 验证单个字段
|
|
|
+ * @param string $field
|
|
|
+ * @param mixed $value
|
|
|
+ * @return bool|string
|
|
|
+ */
|
|
|
+ private function validateField($field, $value)
|
|
|
+ {
|
|
|
+ switch ($field) {
|
|
|
+ case 'real_name':
|
|
|
+ case 'legal_person':
|
|
|
+ $len = mb_strlen($value);
|
|
|
+ if ($len < 2 || $len > 30) {
|
|
|
+ return $this->getFieldName($field) . '长度必须在2-30个字符之间';
|
|
|
+ }
|
|
|
+ break;
|
|
|
+
|
|
|
+ case 'company_name':
|
|
|
+ $len = mb_strlen($value);
|
|
|
+ if ($len < 2 || $len > 100) {
|
|
|
+ return $this->getFieldName($field) . '长度必须在2-100个字符之间';
|
|
|
+ }
|
|
|
+ break;
|
|
|
+
|
|
|
+ case 'id_card':
|
|
|
+ case 'legal_id_card':
|
|
|
+ if (!preg_match('/^[1-9]\d{5}(18|19|20)\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/', $value)) {
|
|
|
+ return $this->getFieldName($field) . '格式不正确';
|
|
|
+ }
|
|
|
+ break;
|
|
|
+
|
|
|
+ case 'mobile':
|
|
|
+ case 'legal_mobile':
|
|
|
+ if (!preg_match('/^1\d{10}$/', $value)) {
|
|
|
+ return $this->getFieldName($field) . '格式不正确';
|
|
|
+ }
|
|
|
+ break;
|
|
|
+
|
|
|
+ case 'id_card_front':
|
|
|
+ case 'id_card_back':
|
|
|
+ case 'legal_id_front':
|
|
|
+ case 'legal_id_back':
|
|
|
+ case 'business_license':
|
|
|
+ if (mb_strlen($value) > 255) {
|
|
|
+ return $this->getFieldName($field) . '路径过长';
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ }
|
|
|
+
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取字段中文名称
|
|
|
+ * @param string $field
|
|
|
+ * @return string
|
|
|
+ */
|
|
|
+ private function getFieldName($field)
|
|
|
+ {
|
|
|
+ $fieldNames = [
|
|
|
+ 'real_name' => '真实姓名',
|
|
|
+ 'id_card' => '身份证号',
|
|
|
+ 'mobile' => '手机号',
|
|
|
+ 'id_card_front' => '身份证正面照片',
|
|
|
+ 'id_card_back' => '身份证反面照片',
|
|
|
+ 'company_name' => '企业名称',
|
|
|
+ 'legal_person' => '法人姓名',
|
|
|
+ 'legal_mobile' => '法人手机号',
|
|
|
+ 'legal_id_card' => '法人身份证号',
|
|
|
+ 'legal_id_front' => '法人身份证正面照片',
|
|
|
+ 'legal_id_back' => '法人身份证反面照片',
|
|
|
+ 'business_license' => '营业执照照片'
|
|
|
+ ];
|
|
|
+
|
|
|
+ return $fieldNames[$field] ?? $field;
|
|
|
+ }
|
|
|
}
|
|
|
+
|