Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
杨树贤
/
liexin_supplier
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Snippets
Settings
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit
e87e12f3
authored
Jul 13, 2022
by
杨树贤
Browse files
Options
_('Browse Files')
Download
Email Patches
Plain Diff
优化黑名单
parent
5fbcd9a6
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
116 additions
and
42 deletions
app/Http/Controllers/Api/SupplierApiController.php
app/Http/Controllers/Sync/SupplierSyncController.php
app/Http/Services/CompanyService.php
app/Http/Services/SyncSupplierService.php
app/Http/Validators/SupplierValidator.php
resources/views/script/supplier/SupplierBaseScript.blade.php
resources/views/web/SupplierDetail.blade.php
resources/views/web/SupplierList.blade.php
app/Http/Controllers/Api/SupplierApiController.php
View file @
e87e12f3
...
...
@@ -300,7 +300,9 @@ class SupplierApiController extends Controller
$supplierId
=
$request
->
get
(
'supplier_id'
);
$region
=
$request
->
get
(
'region'
);
$model
=
new
SupplierChannelModel
();
$regionType
=
$region
==
SupplierChannelModel
::
REGION_CN
?
1
:
2
;
$unitedCompanyInfo
=
(
new
CompanyService
())
->
getUnitedCompanyInfo
(
$supplierName
,
$taxNumber
,
$regionType
);
//如果是编辑操作,则要忽略非当前
if
(
$supplierId
)
{
$originSupplierName
=
$model
->
where
(
'supplier_id'
,
$supplierId
)
->
value
(
'supplier_name'
);
...
...
@@ -318,13 +320,26 @@ class SupplierApiController extends Controller
if
(
$existedSupplierName
)
{
$this
->
response
(
-
1
,
'供应商已存在,请重新输入或者咨询审批人'
);
}
//还要去检测是否是一体化黑名单
//新增的时候要先去检验下一体化的数据,如果是实体黑名单用户,那么就不允许新增
//还要校验提交上来的公司是否有合法信息
$unitedInfo
=
$unitedCompanyInfo
[
'united_company_info'
];
if
(
$unitedInfo
)
{
if
(
$unitedInfo
[
'is_entity'
]
==
1
)
{
$this
->
response
(
-
3
,
'该供应商已经被一体化系统加入黑名单,不能新增'
);
}
if
(
$unitedInfo
[
'company_category'
]
!=
''
)
{
if
(
$unitedInfo
[
'company_category'
]
!=
'普通供应商'
)
{
$this
->
response
(
-
3
,
'该供应商已经被一体化系统加入黑名单,不能新增'
);
}
}
}
}
$company
=
[];
//判断用户选的地区是不是需要校验的,不需要直接返回即可
if
(
in_array
(
$region
,
config
(
'field.NeedCheckCompanyRegion'
)))
{
$regionType
=
$region
==
SupplierChannelModel
::
REGION_CN
?
1
:
2
;
//还要去请求天眼查获取资料
$company
=
(
new
CompanyService
())
->
getCompanyInfo
(
$supplierName
,
$taxNumber
,
$regionType
)
;
$company
=
$unitedCompanyInfo
[
'company'
]
;
if
(
!
$company
)
{
$this
->
response
(
-
2
,
'公司未进行工商注册,请修改后重新提交'
);
}
...
...
app/Http/Controllers/Sync/SupplierSyncController.php
View file @
e87e12f3
...
...
@@ -20,6 +20,7 @@ class SupplierSyncController extends BaseSyncController
'company_name'
,
'init_nature'
,
'company_nature'
,
'company_category'
,
]);
$rules
=
[
...
...
@@ -28,6 +29,7 @@ class SupplierSyncController extends BaseSyncController
"company_name"
=>
"required"
,
"init_nature"
=>
'required'
,
"company_nature"
=>
"required"
,
"company_category"
=>
"required"
,
];
$validator
=
Validator
::
make
(
$rules
,
$rules
);
...
...
app/Http/Services/CompanyService.php
View file @
e87e12f3
...
...
@@ -12,12 +12,44 @@ use Illuminate\Support\Facades\DB;
class
CompanyService
{
//获取一体化的所有信息
public
function
getUnitedCompanyInfo
(
$supplierName
,
$taxNumber
,
$regionType
=
1
)
{
$params
=
[
'company_name'
=>
$supplierName
,
'region'
=>
$regionType
,
'company_type'
=>
2
,
'company_tax_no'
=>
$taxNumber
,
];
$url
=
config
(
'website.UnitedDataDomain'
)
.
'/sync/Company/getCompanyInfoByName'
;
$result
=
curl
(
$url
,
$params
);
$result
=
json_decode
(
$result
,
true
);
$unitedCompanyInfo
=
[];
if
(
array_get
(
$result
,
'code'
)
===
0
)
{
$unitedCompanyInfo
[
'united_company_info'
]
=
!
empty
(
$result
[
'data'
][
'companyInfo'
])
?
$result
[
'data'
][
'companyInfo'
]
:
[];
$company
=
[];
$companyInfoList
=
array_get
(
array_get
(
$result
[
'data'
],
'tycList'
),
'company_info_list'
);
if
(
!
empty
(
$companyInfoList
))
{
$companyInfo
=
$companyInfoList
[
0
];
$company
=
[
'supplier_name'
=>
$companyInfo
[
'com_name'
]
==
$supplierName
?
$companyInfo
[
'com_name'
]
:
$companyInfo
[
'en_com_name'
],
'registered_capital'
=>
(
int
)
$companyInfo
[
'registered_capital'
],
'supplier_address'
=>
$companyInfo
[
'com_address'
],
'tax_number'
=>
$companyInfo
[
'tyc_info'
][
'tax_number'
],
'phone'
=>
$companyInfo
[
'tyc_info'
][
'phone_number'
],
];
}
$unitedCompanyInfo
[
'company'
]
=
$company
;
}
return
$unitedCompanyInfo
;
}
public
function
getCompanyInfo
(
$supplierName
,
$taxNumber
,
$regionType
=
1
)
{
$params
=
[
'company_name'
=>
$supplierName
,
'region'
=>
$regionType
,
'company_type'
=>
1
,
'company_type'
=>
2
,
'company_tax_no'
=>
$taxNumber
,
];
$url
=
config
(
'website.UnitedDataDomain'
)
.
'/sync/Company/getCompanyInfoByName'
;
...
...
app/Http/Services/SyncSupplierService.php
View file @
e87e12f3
...
...
@@ -145,6 +145,7 @@ class SyncSupplierService
* "company_name":"\u6d4b\u8bd5\u516c\u53f8",//公司名
* "init_nature":"1234567",//初鉴性质
* "company_nature":"1234567"//公司真实性质
* "company_category":"普通供应商"//公司类别,只要不是普"通供应商",就是要拉黑的
* }
**/
//接收一体化系统处理好的供应商数据,可能是第一次新增返回的数据,也可能是一体化那边修改的数据需要同步到供应商
...
...
@@ -152,26 +153,34 @@ class SyncSupplierService
{
$groupCode
=
array_get
(
$syncResult
,
'group_code'
);
$sourceSn
=
array_get
(
$syncResult
,
'source_sn'
);
$supplierId
=
$sourceSn
;
if
(
$supplierId
)
{
$supplier
=
SupplierChannelModel
::
where
(
'supplier_id'
,
$supplierId
)
->
first
();
$supplier
=
!
empty
(
$supplier
)
?
$supplier
->
toArray
()
:
[];
$redis
=
new
RedisModel
();
$redis
->
hset
(
'supplier_sync_backup'
,
$supplierId
,
json_encode
(
$supplier
));
$companyCategory
=
array_get
(
$syncResult
,
'company_category'
,
''
);
$isEntity
=
array_get
(
$syncResult
,
'is_entity'
,
0
);
$supplier
=
SupplierChannelModel
::
where
(
'supplier_id'
,
$sourceSn
)
->
orWhere
(
'group_code'
,
$groupCode
)
->
first
();
$supplier
=
!
empty
(
$supplier
)
?
$supplier
->
toArray
()
:
[];
$supplierId
=
$supplier
[
'supplier_id'
];
if
(
$companyCategory
!=
''
)
{
//实体名单和黑名单都要拉黑,如果不属于黑名单,那么就要将状态改成审核中
if
(
$companyCategory
!=
'普通供应商'
)
{
$data
[
'status'
]
=
SupplierChannelModel
::
STATUS_BLOCK
;
}
elseif
(
$isEntity
)
{
$data
[
'status'
]
=
SupplierChannelModel
::
STATUS_BLOCK
;
}
else
{
$data
[
'status'
]
=
SupplierChannelModel
::
STATUS_IN_REVIEW
;
}
}
$data
[
'sync_united_status'
]
=
SupplierChannelModel
::
SYNC_UNITED_STATUS_OK
;
$data
[
'group_code'
]
=
$groupCode
;
$data
[
'company_nature'
]
=
$syncResult
[
'company_nature'
];
$data
[
'company_category'
]
=
$companyCategory
;
//$sourceSn不为空的话,就是代表这是第一次新增的供应商,所以会回传供应商id过来
if
(
$sourceSn
)
{
$data
[
'supplier_name'
]
=
$syncResult
[
'company_name'
];
return
SupplierChannelModel
::
where
(
'supplier_id'
,
$supplierId
)
->
update
([
'supplier_name'
=>
$syncResult
[
'company_name'
],
'sync_united_status'
=>
SupplierChannelModel
::
SYNC_UNITED_STATUS_OK
,
'group_code'
=>
$groupCode
,
'company_nature'
=>
$syncResult
[
'company_nature'
],
]);
->
update
(
$data
);
}
else
{
return
SupplierChannelModel
::
where
(
'group_code'
,
$groupCode
)
->
update
([
'sync_united_status'
=>
SupplierChannelModel
::
SYNC_UNITED_STATUS_OK
,
'group_code'
=>
$groupCode
,
'company_nature'
=>
$syncResult
[
'company_nature'
],
]);
->
update
(
$data
);
}
}
...
...
app/Http/Validators/SupplierValidator.php
View file @
e87e12f3
...
...
@@ -25,16 +25,37 @@ class SupplierValidator
return
null
;
}
$isAdd
=
empty
(
$supplier
[
'supplier_id'
])
?
true
:
false
;
//新增的时候要先去检验下一体化的数据,如果是实体黑名单用户,那么就不允许新增
$regionType
=
$validateData
[
'region'
]
==
SupplierChannelModel
::
REGION_CN
?
1
:
2
;
//还要校验提交上来的公司是否有合法信息
$unitedCompanyInfo
=
(
new
CompanyService
())
->
getUnitedCompanyInfo
(
$validateData
[
'supplier_name'
],
$validateData
[
'tax_number'
],
$regionType
);
$unitedInfo
=
$unitedCompanyInfo
[
'united_company_info'
];
if
(
$unitedInfo
&&
$isAdd
)
{
if
(
$unitedInfo
[
'is_entity'
]
==
1
)
{
return
'该供应商已经被一体化系统加入黑名单,不能新增'
;
}
if
(
$unitedInfo
[
'company_category'
]
!=
''
)
{
if
(
$unitedInfo
[
'company_category'
]
!=
'普通供应商'
)
{
return
'该供应商已经被一体化系统加入黑名单,不能新增'
;
}
}
}
//没有忽略校验的权限并且供应商地区属于内地和港台才会去校验天眼查
if
(
!
checkPerm
(
'IgnoreCompanyCheck'
)
&&
in_array
(
$validateData
[
'region'
],
config
(
'field.NeedCheckCompanyRegion'
)))
{
$needCheckFlag
=
false
;
//新增的校验,然后修改的话,如果没有集团编码,并且是标准添加(非标准添加,即是特殊权限添加,不需要校验),也要去校验
if
(
empty
(
$validateData
[
'supplier_id'
])
)
{
if
(
$isAdd
)
{
$needCheckFlag
=
true
;
}
if
(
!
empty
(
$validateData
[
'supplier_id'
])
)
{
if
(
!
$isAdd
)
{
$supplier
=
SupplierChannelModel
::
where
(
'supplier_id'
,
$validateData
[
'supplier_id'
])
->
first
()
->
toArray
();
if
(
empty
(
$supplier
[
'group_code'
])
&&
$supplier
[
'is_standard_add'
]
==
1
)
{
...
...
@@ -42,11 +63,7 @@ class SupplierValidator
}
}
if
(
$needCheckFlag
)
{
$regionType
=
$validateData
[
'region'
]
==
SupplierChannelModel
::
REGION_CN
?
1
:
2
;
//还要校验提交上来的公司是否有合法信息
$companyInfo
=
(
new
CompanyService
())
->
getCompanyInfo
(
$validateData
[
'supplier_name'
],
$validateData
[
'tax_number'
],
$regionType
);
$companyInfo
=
$unitedCompanyInfo
[
'company'
];
if
(
empty
(
$companyInfo
))
{
return
'公司未进行工商注册,请修改后重新提交'
;
}
...
...
@@ -97,7 +114,6 @@ class SupplierValidator
'cn_delivery_time'
=>
'regex:/^\d+\-\d$/'
,
'us_delivery_time'
=>
'regex:/^\d+\-\d$/'
,
'shipping_address'
=>
'max:100'
,
//'billing_period_detail' => 'required|max:100',
'return_address'
=>
'max:100'
,
'return_consignee'
=>
'max:50'
,
'return_phone'
=>
'max:50'
,
...
...
@@ -126,7 +142,7 @@ class SupplierValidator
//只有在提交供应商是正式的时候,才会去校验附件
//校验附件这块,新增和修改判断的逻辑不一样
if
(
empty
(
$supplierId
)
)
{
if
(
$isAdd
)
{
$attachmentFields
=
array_unique
(
array_get
(
$validateData
,
'field_name'
,
[]));
}
else
{
$attachmentFields
=
SupplierAttachmentsModel
::
where
(
'supplier_id'
,
...
...
@@ -149,10 +165,6 @@ class SupplierValidator
}
}
// if (!in_array('billing_information', $attachmentFields) && $validateData['currency'] == 1) {
// $errorMessageList[] = '如果选择币种为人民币,开票资料必须上传';
// }
if
(
$validateData
[
'supplier_type'
]
==
SupplierChannelModel
::
SUPPLIER_TYPE_OFFICIAL
&&
!
in_array
(
$validateData
[
'supplier_group'
],
[
SupplierChannelModel
::
SUPPLIER_TYPE_OFFICIAL
,
SupplierChannelModel
::
SUPPLIER_GROUP_PROXY
]))
{
if
(
!
in_array
(
'quality_assurance_agreement'
,
$attachmentFields
))
{
...
...
@@ -173,7 +185,7 @@ class SupplierValidator
}
}
if
(
!
$supplierI
d
)
{
if
(
$isAd
d
)
{
//附件信息校验
foreach
(
$validateData
[
'validity_type'
]
as
$key
=>
$type
)
{
//最后一个跳过,因为是模板里的数据
...
...
@@ -224,7 +236,7 @@ class SupplierValidator
//联系人校验
if
(
empty
(
$supplierId
)
)
{
if
(
$isAdd
)
{
$rules
=
array_merge
(
$rules
,
$contactRuler
);
}
else
{
//修改的时候,还要去判断联系人是否有
...
...
@@ -275,7 +287,7 @@ class SupplierValidator
}
}
if
(
!
empty
(
$supplierId
)
)
{
if
(
!
$isAdd
)
{
//还要去判断当前提交人是否存在与其关联的联系人没有完善
$codeId
=
request
()
->
user
->
codeId
;
$notCompleteContacts
=
(
new
SupplierContactModel
())
->
getNotCompletedContacts
(
$supplierId
,
$codeId
);
...
...
resources/views/script/supplier/SupplierBaseScript.blade.php
View file @
e87e12f3
...
...
@@ -60,6 +60,10 @@
self
.
next
().
find
(
'p'
).
text
(
res
.
err_msg
);
$
(
'#supplier_name'
).
prop
(
'disabled'
,
false
);
}
}
else
if
(
res
.
err_code
===
-
3
)
{
layer
.
msg
(
res
.
err_msg
,
{
icon
:
5
});
self
.
next
().
find
(
'p'
).
text
(
res
.
err_msg
);
$
(
'#supplier_name'
).
prop
(
'disabled'
,
false
);
}
else
{
//这个code代表供应商名称已经存在,自然要检测
layer
.
msg
(
res
.
err_msg
,
{
icon
:
5
});
...
...
resources/views/web/SupplierDetail.blade.php
View file @
e87e12f3
...
...
@@ -89,9 +89,9 @@
</button>
@endif
@if($supplier['status']==\App\Model\SupplierChannelModel::STATUS_BLOCK
&&
checkPerm('CancelBlockSupplier'))
<button
type=
"button"
style=
"margin-bottom: 25px;margin-top: 5px"
id=
"cancel_block_supplier"
class=
"layui-btn layui-btn"
>
取消拉黑
</button>
{{--
<button
type=
"button"
style=
"margin-bottom: 25px;margin-top: 5px"
id=
"cancel_block_supplier"
--
}}
{{
--
class=
"layui-btn layui-btn"
>
取消拉黑--}}
{{--
</button>
--}}
@endif
@endif
@if (checkPerm('PrintSupplier'))
...
...
resources/views/web/SupplierList.blade.php
View file @
e87e12f3
...
...
@@ -30,9 +30,9 @@
{{-- 申请审核--}}
{{-- </button>--}}
@if(checkPerm('BlockSupplier'))
<button type="
button
" class="
layui
-
btn
layui
-
btn
-
sm
" id="
block_supplier
">
拉黑
</button>
{{-- <button type="
button
" class="
layui
-
btn
layui
-
btn
-
sm
" id="
block_supplier
">--}}
{{-- 拉黑--}}
{{-- </button>--}}
@endif
@if(request()->user->userId==1000)
<button type="
button
" class="
layui
-
btn
layui
-
btn
-
sm
" title="
该操作可以将供应商同步到供应商
" id="
sync_supplier_to_erp
">
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment