|
|
|
@@ -28,10 +28,7 @@ import org.slf4j.LoggerFactory; |
|
|
|
import org.springframework.beans.factory.annotation.Autowired; |
|
|
|
import org.springframework.stereotype.Service; |
|
|
|
|
|
|
|
import java.util.Date; |
|
|
|
import java.util.HashMap; |
|
|
|
import java.util.List; |
|
|
|
import java.util.Map; |
|
|
|
import java.util.*; |
|
|
|
|
|
|
|
|
|
|
|
@Service |
|
|
|
@@ -169,6 +166,90 @@ public class WxProfitSharingReceiverApplyServiceImpl implements WxProfitSharingR |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* |
|
|
|
* @param |
|
|
|
* { |
|
|
|
* "id":********, |
|
|
|
* "organizationType":,//4个体,2企业 |
|
|
|
* "businessLicenseInfo":"",//json格式在下面 转成字符串 |
|
|
|
* "idDocType":,//1身份证 那一堆 |
|
|
|
* "idCardInfo":"",//(和idDocInfo 2选1)如果选择身份证 详细信息传这个 json格式在下面 转成字符串 |
|
|
|
* "idDocInfo":"",//(和idCardInfo 2选1)如果选择非身份证 详细信息传这个 json格式在下面 转成字符串 |
|
|
|
* "owner":,//主体为企业时,必传,其他不传 1是 0否 |
|
|
|
* "uboInfoList":""//当owner传0时 此字段必填 json格式在下面 转成字符串 |
|
|
|
* } |
|
|
|
* //businessLicenseInfo |
|
|
|
* { |
|
|
|
* "license_copy_info":{//营业执照 |
|
|
|
* "url":"", |
|
|
|
* "media_id":"" |
|
|
|
* }, |
|
|
|
* "license_number":"",//营业执照注册号 |
|
|
|
* "merchant_name":"",//商户名称 |
|
|
|
* "legal_person":"",//经营者/法人姓名 |
|
|
|
* "license_address":"",//注册地址 |
|
|
|
* "period_type":,//1=定期 2=长期 |
|
|
|
* "period_begin":"",//有效期限开始日期 |
|
|
|
* "period_end":""//有效期限结束日期,长期直接传“长期” |
|
|
|
* } |
|
|
|
* //idCardInfo |
|
|
|
* { |
|
|
|
* "id_card_copy_info":{//身份证人像照片 |
|
|
|
* "url":"", |
|
|
|
* "media_id":"" |
|
|
|
* }, |
|
|
|
* "id_card_national_info":{//身份证国徽照片 |
|
|
|
* "url":"", |
|
|
|
* "media_id":"" |
|
|
|
* }, |
|
|
|
* "id_card_name":"",//身份证姓名 |
|
|
|
* "id_card_number":"",//身份证号码 |
|
|
|
* "id_card_address":"",//身份证居住地址 |
|
|
|
* "card_period_type":,//1=定期 2=长期 |
|
|
|
* "card_period_begin":"",//身份证有效期开始时间 |
|
|
|
* "card_period_end":""//身份证有效期结束时间 |
|
|
|
* } |
|
|
|
* //idDocInfo |
|
|
|
* { |
|
|
|
* "id_doc_copy_info":{//证件正面照片 |
|
|
|
* "url":"", |
|
|
|
* "media_id":"" |
|
|
|
* }, |
|
|
|
* "id_doc_copy_back_info":{//证件反面照片 护照可不填 |
|
|
|
* "url":"", |
|
|
|
* "media_id":"" |
|
|
|
* }, |
|
|
|
* "id_doc_name":"",//证件姓名 |
|
|
|
* "id_doc_number":"",//证件号码 |
|
|
|
* "id_doc_address":"",//证件居住地址 |
|
|
|
* "doc_period_type":,//1=定期 2=长期 |
|
|
|
* "doc_period_begin":"",//证件有效期开始时间 |
|
|
|
* "doc_period_end":""//证件有效期结束时间 |
|
|
|
* } |
|
|
|
* //uboInfoList |
|
|
|
* [{ |
|
|
|
* "ubo_id_doc_type":,//证件类型 |
|
|
|
* "ubo_id_doc_copy_info":{//证件正面照片 |
|
|
|
* "url":"", |
|
|
|
* "media_id":"" |
|
|
|
* }, |
|
|
|
* "ubo_id_doc_copy_back_info":{//证件反面照片(护照不传) |
|
|
|
* "url":"", |
|
|
|
* "media_id":"" |
|
|
|
* }, |
|
|
|
* "ubo_id_doc_name":"",//证件姓名 |
|
|
|
* "ubo_id_doc_number":"",//证件号码 |
|
|
|
* "ubo_id_doc_address":"",//证件地址 |
|
|
|
* "ubo_period_type":,//1=定期 2=长期 |
|
|
|
* "ubo_period_begin":"",//证件有效期开始时间 |
|
|
|
* "ubo_period_end":""//证件有效期结束时间 |
|
|
|
* }, |
|
|
|
* ... |
|
|
|
* ] |
|
|
|
* |
|
|
|
* @return |
|
|
|
*/ |
|
|
|
private boolean isFinishMain(WxProfitSharingReceiverApply record){ |
|
|
|
if(record == null){ |
|
|
|
logger.info("申请单为null"); |
|
|
|
@@ -194,8 +275,8 @@ public class WxProfitSharingReceiverApplyServiceImpl implements WxProfitSharingR |
|
|
|
return false; |
|
|
|
} |
|
|
|
JSONObject businessLicenseInfoObject = JSONObject.parseObject(record.getBusinessLicenseInfo()); |
|
|
|
String license_copy = businessLicenseInfoObject.getString("license_copy"); |
|
|
|
if(StringUtils.isBlank(license_copy)){ |
|
|
|
JSONObject license_copy_info = businessLicenseInfoObject.getJSONObject("license_copy_info"); |
|
|
|
if(StringUtils.isBlank(this.getMerchantMediaId(license_copy_info))){ |
|
|
|
logger.info("未上传营业执照照片"); |
|
|
|
return false; |
|
|
|
} |
|
|
|
@@ -226,13 +307,13 @@ public class WxProfitSharingReceiverApplyServiceImpl implements WxProfitSharingR |
|
|
|
return false; |
|
|
|
} |
|
|
|
JSONObject idCardInfoObject = JSONObject.parseObject(record.getIdCardInfo()); |
|
|
|
String id_card_copy = idCardInfoObject.getString("id_card_copy"); |
|
|
|
if(StringUtils.isBlank(id_card_copy)){ |
|
|
|
JSONObject id_card_copy_info = idCardInfoObject.getJSONObject("id_card_copy_info"); |
|
|
|
if(StringUtils.isBlank(this.getMerchantMediaId(id_card_copy_info))){ |
|
|
|
logger.info("未上传身份证人像面照片"); |
|
|
|
return false; |
|
|
|
} |
|
|
|
String id_card_national = idCardInfoObject.getString("id_card_national"); |
|
|
|
if(StringUtils.isBlank(id_card_national)){ |
|
|
|
JSONObject id_card_national_info = idCardInfoObject.getJSONObject("id_card_national_info"); |
|
|
|
if(StringUtils.isBlank(this.getMerchantMediaId(id_card_national_info))){ |
|
|
|
logger.info("未上传身份证国徽面照片"); |
|
|
|
return false; |
|
|
|
} |
|
|
|
@@ -269,14 +350,14 @@ public class WxProfitSharingReceiverApplyServiceImpl implements WxProfitSharingR |
|
|
|
return false; |
|
|
|
} |
|
|
|
JSONObject idDocInfoObject = JSONObject.parseObject(record.getIdDocInfo()); |
|
|
|
String id_doc_copy = idDocInfoObject.getString("id_doc_copy"); |
|
|
|
if(StringUtils.isBlank(id_doc_copy)){ |
|
|
|
JSONObject id_doc_copy_info = idDocInfoObject.getJSONObject("id_doc_copy_info"); |
|
|
|
if(StringUtils.isBlank(this.getMerchantMediaId(id_doc_copy_info))){ |
|
|
|
logger.info("未上传证件正面照片"); |
|
|
|
return false; |
|
|
|
} |
|
|
|
if(EnumSharingReceiverIdDocType.getOtherNeddBack().contains(enumIdDocType.getCode())){ |
|
|
|
String id_doc_copy_back = idDocInfoObject.getString("id_doc_copy_back"); |
|
|
|
if(StringUtils.isBlank(id_doc_copy_back)){ |
|
|
|
JSONObject id_doc_copy_back_info = idDocInfoObject.getJSONObject("id_doc_copy_back_info"); |
|
|
|
if(StringUtils.isBlank(this.getMerchantMediaId(id_doc_copy_back_info))){ |
|
|
|
logger.info("未上传证件反面照片"); |
|
|
|
return false; |
|
|
|
} |
|
|
|
@@ -334,14 +415,14 @@ public class WxProfitSharingReceiverApplyServiceImpl implements WxProfitSharingR |
|
|
|
logger.info("最终受益人信息列表第"+n+"个未选择证件类型"); |
|
|
|
return false; |
|
|
|
} |
|
|
|
String ubo_id_doc_copy = uboInfoObject.getString("ubo_id_doc_copy"); |
|
|
|
if(StringUtils.isBlank(ubo_id_doc_copy)){ |
|
|
|
JSONObject ubo_id_doc_copy_info = uboInfoObject.getJSONObject("ubo_id_doc_copy_info"); |
|
|
|
if(StringUtils.isBlank(this.getMerchantMediaId(ubo_id_doc_copy_info))){ |
|
|
|
logger.info("最终受益人信息列表第"+n+"个未上传证件正面照片"); |
|
|
|
return false; |
|
|
|
} |
|
|
|
if(!EnumSharingReceiverIdDocType.IDENTIFICATION_TYPE_OVERSEA_PASSPORT.equals(enumUboIdDocType)){ |
|
|
|
String ubo_id_doc_copy_back = uboInfoObject.getString("ubo_id_doc_copy_back"); |
|
|
|
if(StringUtils.isBlank(ubo_id_doc_copy_back)){ |
|
|
|
JSONObject ubo_id_doc_copy_back_info = uboInfoObject.getJSONObject("ubo_id_doc_copy_back_info"); |
|
|
|
if(StringUtils.isBlank(this.getMerchantMediaId(ubo_id_doc_copy_back_info))){ |
|
|
|
logger.info("最终受益人信息列表第"+n+"个未上传证件反面照片"); |
|
|
|
return false; |
|
|
|
} |
|
|
|
@@ -378,6 +459,17 @@ public class WxProfitSharingReceiverApplyServiceImpl implements WxProfitSharingR |
|
|
|
return true; |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* |
|
|
|
* @param |
|
|
|
* { |
|
|
|
* "id":********, |
|
|
|
* "organizationType":,//4个体,2企业 |
|
|
|
* "merchantShortname":"",//商户简称 |
|
|
|
* "servicePhone":""//客服电话 |
|
|
|
* } |
|
|
|
* @return |
|
|
|
*/ |
|
|
|
private boolean isFinishBusiness(WxProfitSharingReceiverApply record){ |
|
|
|
if(record == null){ |
|
|
|
logger.info("申请单为null"); |
|
|
|
@@ -524,6 +616,29 @@ public class WxProfitSharingReceiverApplyServiceImpl implements WxProfitSharingR |
|
|
|
return true; |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* |
|
|
|
* @param |
|
|
|
* { |
|
|
|
* "id":********, |
|
|
|
* "organizationType":,//4个体,2企业 |
|
|
|
* "settlementInfo":"",//json格式在下面 转成字符串 |
|
|
|
* } |
|
|
|
* //settlementInfo |
|
|
|
* { |
|
|
|
* "qualification_id":,//选择行业id |
|
|
|
* "settlement_id":"",//结算规则id |
|
|
|
* "qualification_type":"",//所属行业 |
|
|
|
* "qualifications":[//特殊资质图片 根据所选行业 是否必传 最多5张 |
|
|
|
* { |
|
|
|
* "url":"", |
|
|
|
* "media_id":"" |
|
|
|
* } |
|
|
|
* ... |
|
|
|
* ] |
|
|
|
* } |
|
|
|
* @return |
|
|
|
*/ |
|
|
|
private boolean isFinishSettlement(WxProfitSharingReceiverApply record){ |
|
|
|
if(record == null){ |
|
|
|
logger.info("申请单为null"); |
|
|
|
@@ -560,10 +675,15 @@ public class WxProfitSharingReceiverApplyServiceImpl implements WxProfitSharingR |
|
|
|
} |
|
|
|
if(enumQualificationGth.isFlag()){ |
|
|
|
JSONArray qualifications = settlementInfoObject.getJSONArray("qualifications"); |
|
|
|
if(qualifications == null || qualifications.isEmpty()){ |
|
|
|
List<String> mediaIds = this.getMerchantMediaIds(qualifications); |
|
|
|
if(mediaIds.isEmpty()){ |
|
|
|
logger.info("未上传必要资质["+enumQualificationGth.getMessage()+"]"); |
|
|
|
return false; |
|
|
|
} |
|
|
|
if(mediaIds.size() > 5){ |
|
|
|
logger.info("上传资质数量过多"); |
|
|
|
return false; |
|
|
|
} |
|
|
|
} |
|
|
|
}else if(EnumSharingReceiverOrganizationType.QIYE.equals(enumOrganizationType)){ |
|
|
|
EnumSharingReceiverQualificationQy enumQualificationQy = EnumSharingReceiverQualificationQy.getEnum(qualification_id); |
|
|
|
@@ -573,16 +693,46 @@ public class WxProfitSharingReceiverApplyServiceImpl implements WxProfitSharingR |
|
|
|
} |
|
|
|
if(enumQualificationQy.isFlag()){ |
|
|
|
JSONArray qualifications = settlementInfoObject.getJSONArray("qualifications"); |
|
|
|
if(qualifications == null || qualifications.isEmpty()){ |
|
|
|
List<String> mediaIds = this.getMerchantMediaIds(qualifications); |
|
|
|
if(mediaIds.isEmpty()){ |
|
|
|
logger.info("未上传必要资质["+enumQualificationQy.getMessage()+"]"); |
|
|
|
return false; |
|
|
|
} |
|
|
|
if(mediaIds.size() > 5){ |
|
|
|
logger.info("上传资质数量过多"); |
|
|
|
return false; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
return true; |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* |
|
|
|
* @param |
|
|
|
* { |
|
|
|
* "id":********, |
|
|
|
* "organizationType":,//4个体,2企业 |
|
|
|
* "accountInfo":"",//json格式在下面 转成字符串 |
|
|
|
* } |
|
|
|
* //accountInfo |
|
|
|
* { |
|
|
|
* "bank_account_type":,//账户类型 74对公75对私 |
|
|
|
* "account_name":"",//开户名称 |
|
|
|
* "account_bank_code":,//开户银行选择标识 |
|
|
|
* "account_bank":"",//开户银行 |
|
|
|
* "province_code":,//开户银行省编码 |
|
|
|
* "province_name":"",//开户银行省 |
|
|
|
* "city_code":,//开户银行城市编码 |
|
|
|
* "city_name":"",//开户银行城市名称 |
|
|
|
* "bank_address_code":"",//开户银行省市编码 |
|
|
|
* "bank_branch_id":"",//开户银行联行号 |
|
|
|
* "bank_name":"",//开户银行全称(含支行) |
|
|
|
* "account_number":""//银行账号 |
|
|
|
* } |
|
|
|
* @return |
|
|
|
*/ |
|
|
|
private boolean isFinishBankAccount(WxProfitSharingReceiverApply record){ |
|
|
|
if(record == null){ |
|
|
|
logger.info("申请单为null"); |
|
|
|
@@ -599,8 +749,9 @@ public class WxProfitSharingReceiverApplyServiceImpl implements WxProfitSharingR |
|
|
|
return false; |
|
|
|
} |
|
|
|
JSONObject accountInfoObject = JSONObject.parseObject(record.getAccountInfo()); |
|
|
|
String bank_account_type = accountInfoObject.getString("bank_account_type"); |
|
|
|
if(StringUtils.isBlank(bank_account_type)){ |
|
|
|
Integer bank_account_type = accountInfoObject.getInteger("bank_account_type"); |
|
|
|
EnumSharingReceiverAccountType enumAccountType = EnumSharingReceiverAccountType.getEnum(bank_account_type); |
|
|
|
if(enumAccountType == null){ |
|
|
|
logger.info("未选择结算账户类型"); |
|
|
|
return false; |
|
|
|
} |
|
|
|
@@ -630,6 +781,43 @@ public class WxProfitSharingReceiverApplyServiceImpl implements WxProfitSharingR |
|
|
|
return true; |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* |
|
|
|
* @param |
|
|
|
* { |
|
|
|
* "id":********, |
|
|
|
* "organizationType":,//4个体,2企业 |
|
|
|
* "contactInfo":"",//json格式在下面 转成字符串 |
|
|
|
* } |
|
|
|
* //contactInfo |
|
|
|
* { |
|
|
|
* "contact_type":,//超级管理员类型 1经营者/法人2经办人 |
|
|
|
* "contact_name":"",//超级管理员姓名 |
|
|
|
* "mobile_phone":"",//联系手机 |
|
|
|
* "contact_email":"",//邮箱 |
|
|
|
* |
|
|
|
* "contact_department":"",//超级管理员部门(当选择经办人时传) |
|
|
|
* "contact_job":"",//超级管理员职务(当选择经办人时传) |
|
|
|
* "contact_id_doc_type":,//超级管理员证件类型 身份证 等(当选择经办人时传) |
|
|
|
* "contact_id_number":"",//超级管理员证件号码 (当选择经办人时传) |
|
|
|
* "contact_id_doc_copy_info":{//超级管理员证件正面照片 (当选择经办人时传) |
|
|
|
* "url":"", |
|
|
|
* "media_id":"" |
|
|
|
* }, |
|
|
|
* "contact_id_doc_copy_back_info":{//超级管理员证件反面照片 护照不传 (当选择经办人时传) |
|
|
|
* "url":"", |
|
|
|
* "media_id":"" |
|
|
|
* }, |
|
|
|
* "contact_period_type":,//1=定期 2=长期 (当选择经办人时传) |
|
|
|
* "contact_period_begin":"",//超级管理员证件有效期开始时间 (当选择经办人时传) |
|
|
|
* "contact_period_end":"",//超级管理员证件有效期结束时间 (当选择经办人时传) |
|
|
|
* "business_authorization_letter_info":{//业务办理授权函(当选择经办人时传) |
|
|
|
* "url":"", |
|
|
|
* "media_id":"" |
|
|
|
* } |
|
|
|
* } |
|
|
|
* @return |
|
|
|
*/ |
|
|
|
private boolean isFinishContact(WxProfitSharingReceiverApply record){ |
|
|
|
if(record == null){ |
|
|
|
logger.info("申请单为null"); |
|
|
|
@@ -669,14 +857,14 @@ public class WxProfitSharingReceiverApplyServiceImpl implements WxProfitSharingR |
|
|
|
logger.info("未填写超级管理员证件号码"); |
|
|
|
return false; |
|
|
|
} |
|
|
|
String contact_id_doc_copy = contactInfoObject.getString("contact_id_doc_copy"); |
|
|
|
if(StringUtils.isBlank(contact_id_doc_copy)){ |
|
|
|
JSONObject contact_id_doc_copy_info = contactInfoObject.getJSONObject("contact_id_doc_copy_info"); |
|
|
|
if(StringUtils.isBlank(this.getMerchantMediaId(contact_id_doc_copy_info))){ |
|
|
|
logger.info("未上传超级管理员证件正面照片"); |
|
|
|
return false; |
|
|
|
} |
|
|
|
if(!EnumSharingReceiverIdDocType.IDENTIFICATION_TYPE_OVERSEA_PASSPORT.equals(enumIdDocType)){ |
|
|
|
String contact_id_doc_copy_back = contactInfoObject.getString("contact_id_doc_copy_back"); |
|
|
|
if(StringUtils.isBlank(contact_id_doc_copy_back)){ |
|
|
|
JSONObject contact_id_doc_copy_back_info = contactInfoObject.getJSONObject("contact_id_doc_copy_back_info"); |
|
|
|
if(StringUtils.isBlank(this.getMerchantMediaId(contact_id_doc_copy_back_info))){ |
|
|
|
logger.info("未上传超级管理员证件反面照片"); |
|
|
|
return false; |
|
|
|
} |
|
|
|
@@ -691,8 +879,8 @@ public class WxProfitSharingReceiverApplyServiceImpl implements WxProfitSharingR |
|
|
|
logger.info("未填写超级管理员证件有效期结束时间"); |
|
|
|
return false; |
|
|
|
} |
|
|
|
String business_authorization_letter = contactInfoObject.getString("business_authorization_letter"); |
|
|
|
if(StringUtils.isBlank(business_authorization_letter)){ |
|
|
|
JSONObject business_authorization_letter_info = contactInfoObject.getJSONObject("business_authorization_letter_info"); |
|
|
|
if(StringUtils.isBlank(this.getMerchantMediaId(business_authorization_letter_info))){ |
|
|
|
logger.info("未上传业务办理授权函"); |
|
|
|
return false; |
|
|
|
} |
|
|
|
@@ -719,6 +907,21 @@ public class WxProfitSharingReceiverApplyServiceImpl implements WxProfitSharingR |
|
|
|
return media_id; |
|
|
|
} |
|
|
|
|
|
|
|
private List<String> getMerchantMediaIds(JSONArray array){ |
|
|
|
List<String> list = new ArrayList<>(); |
|
|
|
if(array == null || array.isEmpty()){ |
|
|
|
return list; |
|
|
|
} |
|
|
|
for (int i = 0;i < array.size();i++) { |
|
|
|
JSONObject jsonObject = array.getJSONObject(i); |
|
|
|
String media_id = jsonObject.getString("media_id"); |
|
|
|
if(StringUtils.isNotBlank(media_id)){ |
|
|
|
list.add(media_id); |
|
|
|
} |
|
|
|
} |
|
|
|
return list; |
|
|
|
} |
|
|
|
|
|
|
|
private ResultData applyment4subApplyment(WxProfitSharingReceiverApply receiverApply){ |
|
|
|
WxPayService wxPayService = wxPayAccountService.getWxPayService(receiverApply.getTenantId()); |
|
|
|
try { |
|
|
|
|