Browse Source

// add shar

release_toaliyun_real
xhxu 3 years ago
parent
commit
8a33e545a0
2 changed files with 239 additions and 35 deletions
  1. +8
    -7
      mallinkBApi/src/main/java/com/iformall/controller/WxProfitSharingReceiverApplyController.java
  2. +231
    -28
      mallinkService/src/main/java/com/iformall/service/impl/WxProfitSharingReceiverApplyServiceImpl.java

+ 8
- 7
mallinkBApi/src/main/java/com/iformall/controller/WxProfitSharingReceiverApplyController.java View File

@@ -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())){


+ 231
- 28
mallinkService/src/main/java/com/iformall/service/impl/WxProfitSharingReceiverApplyServiceImpl.java View File

@@ -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 {


Loading…
Cancel
Save