diff --git a/mallinkBApi/src/main/java/com/iformall/controller/WxProfitSharingReceiverApplyController.java b/mallinkBApi/src/main/java/com/iformall/controller/WxProfitSharingReceiverApplyController.java index a23387535..51d274428 100644 --- a/mallinkBApi/src/main/java/com/iformall/controller/WxProfitSharingReceiverApplyController.java +++ b/mallinkBApi/src/main/java/com/iformall/controller/WxProfitSharingReceiverApplyController.java @@ -47,13 +47,14 @@ public class WxProfitSharingReceiverApplyController extends BaseController { } receiverAdd.updateTenantInfo(merchant); - if(receiverAdd.getPlat() == null){ - receiverAdd.setPlat(EnumAppPlat.WX.getCode()); - } - EnumAppPlat enumPlat = EnumAppPlat.getByCode(receiverAdd.getPlat()); - if(enumPlat == null){ - return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(), "平台不合法"); - } + receiverAdd.setPlat(EnumAppPlat.WX.getCode()); +// if(receiverAdd.getPlat() == null){ +// receiverAdd.setPlat(EnumAppPlat.WX.getCode()); +// } +// EnumAppPlat enumPlat = EnumAppPlat.getByCode(receiverAdd.getPlat()); +// if(enumPlat == null){ +// return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(), "平台不合法"); +// } WxProfitSharingReceiver receiver = wxProfitSharingReceiverService.findReceiver(merchant, merchant.getId(), EnumAppPlat.WX, EnumProfitSharingType.PROFIT_SHARING_TYPE_WECHAT_v2); if(receiver != null && MerchantImportStatus.improt_success.getCode().equals(receiver.getWxImportStatus())){ diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxProfitSharingReceiverApplyServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxProfitSharingReceiverApplyServiceImpl.java index 0e0451953..51a7602e0 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxProfitSharingReceiverApplyServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxProfitSharingReceiverApplyServiceImpl.java @@ -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 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 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 getMerchantMediaIds(JSONArray array){ + List 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 {