From 483ccbce5550b2f573f4d1e250bdc567ae9833e5 Mon Sep 17 00:00:00 2001 From: xhxu Date: Tue, 16 Aug 2022 16:36:01 +0800 Subject: [PATCH] // sharing --- ...xProfitSharingReceiverApplyController.java | 31 +- .../po/WxProfitSharingReceiverApply.java | 32 +- .../EnumSharingReceiverApplymentState.java | 48 +- .../enums/EnumSharingReceiverContactType.java | 4 +- .../enums/EnumSharingReceiverIdDocType.java | 30 +- .../EnumSharingReceiverQualificationGth.java | 86 +++ .../EnumSharingReceiverQualificationQy.java | 86 +++ .../EnumSharingReceiverSalesScenesType.java | 72 +++ .../WxProfitSharingReceiverApplyService.java | 9 +- ...ProfitSharingReceiverApplyServiceImpl.java | 561 +++++++++++++++++- .../WxProfitSharingReceiverApplyMapper.xml | 8 +- 11 files changed, 931 insertions(+), 36 deletions(-) create mode 100644 mallinkService/src/main/java/com/iformall/enums/EnumSharingReceiverQualificationGth.java create mode 100644 mallinkService/src/main/java/com/iformall/enums/EnumSharingReceiverQualificationQy.java create mode 100644 mallinkService/src/main/java/com/iformall/enums/EnumSharingReceiverSalesScenesType.java diff --git a/mallinkBApi/src/main/java/com/iformall/controller/WxProfitSharingReceiverApplyController.java b/mallinkBApi/src/main/java/com/iformall/controller/WxProfitSharingReceiverApplyController.java index 6d87620c3..0be82d273 100644 --- a/mallinkBApi/src/main/java/com/iformall/controller/WxProfitSharingReceiverApplyController.java +++ b/mallinkBApi/src/main/java/com/iformall/controller/WxProfitSharingReceiverApplyController.java @@ -55,14 +55,41 @@ public class WxProfitSharingReceiverApplyController extends BaseController { if(receiverApply == null){ return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(), "该商户进件数据异常,请联系管理员"); } - if(receiverApply.getApplymentState().intValue() > 0){ + if(receiverApply.getApplymentState() != null && !EnumSharingReceiverApplymentState.getUpdList().contains(receiverApply.getApplymentState())){ return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(), "该商户进件流程中,无法修改"); } }else{ WxProfitSharingReceiverApply receiverApply = wxProfitSharingReceiverApplyService.selectByPlat(merchant,merchant.getId(),EnumAppPlat.WX); + if(receiverApply != null){ + if(receiverApply.getApplymentState() != null && !EnumSharingReceiverApplymentState.getUpdList().contains(receiverApply.getApplymentState())){ + return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(), "该商户进件流程中,无法修改"); + } + receiverAdd.setId(receiverApply.getId()); + } + } + + return wxProfitSharingReceiverApplyService.saveOrUpdate(receiverAdd); + } + + @ApiOperation("详情") + @GetMapping("/getReceiverApply") + public ResultData getReceiverApply(Long merchantId) { + log.debug("[" + getIpAddr() + "] merchantProfitSharingReceiver::getReceiverApply"); + if(merchantId == null){ + return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "商户ID不能为空"); + } + WxMerchant merchant = wxMerchantService.selectById(merchantId); + if(merchant == null || EnumMerchantStatus.NOT_VALID.getCode().equals(merchant.getStatus())){ + return new ResultData(ErrorCode.MERCHANT_INFO_NOT_VALID.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())){ + return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(), "该商户已进件成功"); + } + + WxProfitSharingReceiverApply receiverApply = wxProfitSharingReceiverApplyService.detailByPlat(merchant,merchant.getId(),EnumAppPlat.WX); - return new ResultData(receiverAdd); + return new ResultData(receiverApply); } } diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxProfitSharingReceiverApply.java b/mallinkService/src/main/java/com/iformall/domain/po/WxProfitSharingReceiverApply.java index 6196927fa..924359d8b 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxProfitSharingReceiverApply.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxProfitSharingReceiverApply.java @@ -1,10 +1,16 @@ package com.iformall.domain.po; +import com.alibaba.fastjson.JSONObject; +import com.aliyun.openservices.shade.io.netty.util.internal.logging.InternalLogger; +import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import com.iformall.domain.po.base.TenantEntity; +import com.iformall.enums.EnumSharingReceiverOrganizationType; import lombok.Data; import lombok.EqualsAndHashCode; import org.apache.commons.lang3.StringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import java.util.Date; @@ -25,8 +31,10 @@ public class WxProfitSharingReceiverApply extends TenantEntity { private Integer organizationType; @io.swagger.annotations.ApiModelProperty(value="是否金融机构",name="financeInstitution") private Integer financeInstitution; - @io.swagger.annotations.ApiModelProperty(value="营业执照/登记证书信息",name="businessLicenseInfo") + @io.swagger.annotations.ApiModelProperty(value="营业执照信息",name="businessLicenseInfo") private String businessLicenseInfo; + @io.swagger.annotations.ApiModelProperty(value="登记证书信息",name="certificateInfo") + private String certificateInfo; @io.swagger.annotations.ApiModelProperty(value="金融机构许可证信息",name="financeInstitutionInfo") private String financeInstitutionInfo; @io.swagger.annotations.ApiModelProperty(value="EnumSharingReceiverIdHolderType 证件持有人类型",name="idHolderType") @@ -55,8 +63,14 @@ public class WxProfitSharingReceiverApply extends TenantEntity { private String settlementInfo; @io.swagger.annotations.ApiModelProperty(value="商户简称",name="merchantShortname") private String merchantShortname; + @io.swagger.annotations.ApiModelProperty(value="客服电话",name="servicePhone") + private String servicePhone; + @io.swagger.annotations.ApiModelProperty(value="经营场景",name="salesInfo") + private String salesInfo; @io.swagger.annotations.ApiModelProperty(value="特殊资质([])",name="qualifications") private String qualifications; + @io.swagger.annotations.ApiModelProperty(value="补充材料",name="additionInfo") + private String additionInfo; @io.swagger.annotations.ApiModelProperty(value="补充材料([])",name="businessAdditionPics") private String businessAdditionPics; @io.swagger.annotations.ApiModelProperty(value="补充说明",name="businessAdditionDesc") @@ -96,4 +110,20 @@ public class WxProfitSharingReceiverApply extends TenantEntity { @io.swagger.annotations.ApiModelProperty(value="",name="updateTime") private Date updateTime; + @io.swagger.annotations.ApiModelProperty(value="是否完成主题资质",name="finishMain") + @TableField(exist = false) + private Boolean finishMain; + @io.swagger.annotations.ApiModelProperty(value="是否完成经营信息",name="finishBusiness") + @TableField(exist = false) + private Boolean finishBusiness; + @io.swagger.annotations.ApiModelProperty(value="是否完成行业资质",name="finishSettlement") + @TableField(exist = false) + private Boolean finishSettlement; + @io.swagger.annotations.ApiModelProperty(value="是否完成结算帐号",name="finishBankAccount") + @TableField(exist = false) + private Boolean finishBankAccount; + @io.swagger.annotations.ApiModelProperty(value="是否完成超级管理员",name="finishBankAccount") + @TableField(exist = false) + private Boolean finishContact; + } diff --git a/mallinkService/src/main/java/com/iformall/enums/EnumSharingReceiverApplymentState.java b/mallinkService/src/main/java/com/iformall/enums/EnumSharingReceiverApplymentState.java index 86e0f756d..889d97f2e 100644 --- a/mallinkService/src/main/java/com/iformall/enums/EnumSharingReceiverApplymentState.java +++ b/mallinkService/src/main/java/com/iformall/enums/EnumSharingReceiverApplymentState.java @@ -1,26 +1,31 @@ package com.iformall.enums; +import java.util.ArrayList; +import java.util.List; + /** * 申请状态 - * CHECKING:资料校验中 - * ACCOUNT_NEED_VERIFY:待账户验证 - * AUDITING:审核中 - * REJECTED:已驳回 - * NEED_SIGN:待签约 - * FINISH:完成 - * FROZEN:已冻结 - * CANCELED:已作废 + * 1、APPLYMENT_STATE_EDITTING(编辑中):提交申请发生错误导致,请尝试重新提交。 + * 2、APPLYMENT_STATE_AUDITING(审核中):申请单正在审核中,超级管理员用微信打开“签约链接”,完成绑定微信号后,申请单进度将通过微信公众号通知超级管理员,引导完成后续步骤。 + * 3、APPLYMENT_STATE_REJECTED(已驳回):请按照驳回原因修改申请资料,超级管理员用微信打开“签约链接”,完成绑定微信号,后续申请单进度将通过微信公众号通知超级管理员。 + * 4、APPLYMENT_STATE_TO_BE_CONFIRMED(待账户验证):请超级管理员使用微信打开返回的“签约链接”,根据页面指引完成账户验证。 + * 5、APPLYMENT_STATE_TO_BE_SIGNED(待签约):请超级管理员使用微信打开返回的“签约链接”,根据页面指引完成签约。 + * 6、APPLYMENT_STATE_SIGNING(开通权限中):系统开通相关权限中,请耐心等待。 + * 7、APPLYMENT_STATE_FINISHED(已完成):商户入驻申请已完成。 + * 8、APPLYMENT_STATE_CANCELED(已作废):申请单已被撤销。 */ public enum EnumSharingReceiverApplymentState { - CHECKING(1, "CHECKING", "资料校验中"), - ACCOUNT_NEED_VERIFY(2, "ACCOUNT_NEED_VERIFY", "待账户验证"), - AUDITING(3, "AUDITING", "审核中"), - REJECTED(4, "REJECTED", "已驳回"), - NEED_SIGN(5, "NEED_SIGN", "待签约"), - FINISH(6, "FINISH", "完成"), - FROZEN(7, "FROZEN", "已冻结"), - CANCELED(8, "CANCELED", "已作废"), + APPLYMENT_STATE_EDITTING(1,"APPLYMENT_STATE_EDITTING","编辑中"), +// APPLYMENT_STATE_CHECKING(2, "CHECKING", "资料校验中"), + APPLYMENT_STATE_AUDITING(3, "APPLYMENT_STATE_AUDITING", "审核中"), + APPLYMENT_STATE_REJECTED(4, "APPLYMENT_STATE_REJECTED", "已驳回"), + APPLYMENT_STATE_TO_BE_CONFIRMED(5, "APPLYMENT_STATE_TO_BE_CONFIRMED", "待账户验证"), + APPLYMENT_STATE_TO_BE_SIGNED(6, "APPLYMENT_STATE_TO_BE_SIGNED", "待签约"), + APPLYMENT_STATE_SIGNING(7, "APPLYMENT_STATE_SIGNING", "开通权限中"), + APPLYMENT_STATE_FINISHED(8, "APPLYMENT_STATE_FINISHED", "完成"), +// APPLYMENT_STATE_FROZEN(9, "FROZEN", "已冻结"), + APPLYMENT_STATE_CANCELED(10, "APPLYMENT_STATE_CANCELED", "已作废"), ; public static EnumSharingReceiverApplymentState getEnum(Integer code) { @@ -62,4 +67,15 @@ public enum EnumSharingReceiverApplymentState { public String getMessage() { return message; } + + /** + * 获取可修改的状态 + * @return + */ + public static List getUpdList(){ + List list = new ArrayList<>(); + list.add(EnumSharingReceiverApplymentState.APPLYMENT_STATE_EDITTING.getCode()); + list.add(EnumSharingReceiverApplymentState.APPLYMENT_STATE_REJECTED.getCode()); + return list; + } } diff --git a/mallinkService/src/main/java/com/iformall/enums/EnumSharingReceiverContactType.java b/mallinkService/src/main/java/com/iformall/enums/EnumSharingReceiverContactType.java index 313026c0f..e7d017c14 100644 --- a/mallinkService/src/main/java/com/iformall/enums/EnumSharingReceiverContactType.java +++ b/mallinkService/src/main/java/com/iformall/enums/EnumSharingReceiverContactType.java @@ -7,8 +7,8 @@ package com.iformall.enums; */ public enum EnumSharingReceiverContactType { - LEGAL(65, "65", "法人"), - SUPER(66, "66", "经办人"), + LEGAL(1, "LEGAL", "法人"), + SUPER(2, "SUPER", "经办人"), ; public static EnumSharingReceiverContactType getEnum(Integer code) { diff --git a/mallinkService/src/main/java/com/iformall/enums/EnumSharingReceiverIdDocType.java b/mallinkService/src/main/java/com/iformall/enums/EnumSharingReceiverIdDocType.java index 96edc36dd..b460c084d 100644 --- a/mallinkService/src/main/java/com/iformall/enums/EnumSharingReceiverIdDocType.java +++ b/mallinkService/src/main/java/com/iformall/enums/EnumSharingReceiverIdDocType.java @@ -1,23 +1,26 @@ package com.iformall.enums; +import java.util.ArrayList; +import java.util.List; + /** * 经营者/法人证件类型 - * IDENTIFICATION_TYPE_MAINLAND_IDCARD:中国大陆居民-身份证 + * IDENTIFICATION_TYPE_IDCARD:中国大陆居民-身份证 * IDENTIFICATION_TYPE_OVERSEA_PASSPORT:其他国家或地区居民-护照 - * IDENTIFICATION_TYPE_HONGKONG:中国香港居民--来往内地通行证 - * IDENTIFICATION_TYPE_MACAO:中国澳门居民--来往内地通行证 - * IDENTIFICATION_TYPE_TAIWAN:中国台湾居民--来往大陆通行证 + * IDENTIFICATION_TYPE_HONGKONG_PASSPORT:中国香港居民-来往内地通行证 + * IDENTIFICATION_TYPE_MACAO_PASSPORT:中国澳门居民-来往内地通行证 + * IDENTIFICATION_TYPE_TAIWAN_PASSPORT:中国台湾居民-来往大陆通行证 * IDENTIFICATION_TYPE_FOREIGN_RESIDENT:外国人居留证 * IDENTIFICATION_TYPE_HONGKONG_MACAO_RESIDENT:港澳居民证 * IDENTIFICATION_TYPE_TAIWAN_RESIDENT:台湾居民证 */ public enum EnumSharingReceiverIdDocType { - IDENTIFICATION_TYPE_MAINLAND_IDCARD(1, "IDENTIFICATION_TYPE_MAINLAND_IDCARD", "中国大陆居民-身份证"), + IDENTIFICATION_TYPE_IDCARD(1, "IDENTIFICATION_TYPE_IDCARD", "中国大陆居民-身份证"), IDENTIFICATION_TYPE_OVERSEA_PASSPORT(2, "IDENTIFICATION_TYPE_OVERSEA_PASSPORT", "其他国家或地区居民-护照"), - IDENTIFICATION_TYPE_HONGKONG(3, "IDENTIFICATION_TYPE_HONGKONG", "中国香港居民--来往内地通行证"), - IDENTIFICATION_TYPE_MACAO(4, "IDENTIFICATION_TYPE_MACAO", "中国澳门居民--来往内地通行证"), - IDENTIFICATION_TYPE_TAIWAN(5, "IDENTIFICATION_TYPE_TAIWAN", "中国台湾居民--来往大陆通行证"), + IDENTIFICATION_TYPE_HONGKONG_PASSPORT(3, "IDENTIFICATION_TYPE_HONGKONG_PASSPORT", "中国香港居民--来往内地通行证"), + IDENTIFICATION_TYPE_MACAO_PASSPORT(4, "IDENTIFICATION_TYPE_MACAO_PASSPORT", "中国澳门居民--来往内地通行证"), + IDENTIFICATION_TYPE_TAIWAN_PASSPORT(5, "IDENTIFICATION_TYPE_TAIWAN_PASSPORT", "中国台湾居民--来往大陆通行证"), IDENTIFICATION_TYPE_FOREIGN_RESIDENT(6, "IDENTIFICATION_TYPE_FOREIGN_RESIDENT", "外国人居留证"), IDENTIFICATION_TYPE_HONGKONG_MACAO_RESIDENT(7, "IDENTIFICATION_TYPE_HONGKONG_MACAO_RESIDENT", "港澳居民证"), IDENTIFICATION_TYPE_TAIWAN_RESIDENT(8, "IDENTIFICATION_TYPE_TAIWAN_RESIDENT", "台湾居民证"), @@ -62,4 +65,15 @@ public enum EnumSharingReceiverIdDocType { public String getMessage() { return message; } + + public static List getOtherNeddBack(){ + List list = new ArrayList<>(); + list.add(IDENTIFICATION_TYPE_HONGKONG_PASSPORT.getCode()); + list.add(IDENTIFICATION_TYPE_MACAO_PASSPORT.getCode()); + list.add(IDENTIFICATION_TYPE_TAIWAN_PASSPORT.getCode()); + list.add(IDENTIFICATION_TYPE_FOREIGN_RESIDENT.getCode()); + list.add(IDENTIFICATION_TYPE_HONGKONG_MACAO_RESIDENT.getCode()); + list.add(IDENTIFICATION_TYPE_TAIWAN_RESIDENT.getCode()); + return list; + } } diff --git a/mallinkService/src/main/java/com/iformall/enums/EnumSharingReceiverQualificationGth.java b/mallinkService/src/main/java/com/iformall/enums/EnumSharingReceiverQualificationGth.java new file mode 100644 index 000000000..7b1713cd2 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/enums/EnumSharingReceiverQualificationGth.java @@ -0,0 +1,86 @@ +package com.iformall.enums; + +/** + * 个体户行业属性及特殊资质 + */ +public enum EnumSharingReceiverQualificationGth { + + TYPE_1(1, "719", "餐饮",false,"建议提供:《食品经营许可证》或《餐饮服务许可证》"), + TYPE_2(2, "719", "电商平台",false,"无需特殊资质"), + TYPE_3(3, "719", "零售",false,"若涉及烟草售卖,需提供《烟草专卖零售许可证》"), + TYPE_4(4, "719", "食品生鲜",false,"建议提供:《食品经营许可证》或《食品生产许可证》或供销协议+合作方资质"), + TYPE_7(7, "719", "咨询/娱乐票务",false,"无需特殊资质"), + TYPE_10(10, "719", "房产中介",false,"无需特殊资质"), + TYPE_11(11, "719", "宠物医院",true,"《动物诊疗许可证》"), + TYPE_12(12, "719", "共享服务",true,"需提供资金监管协议。\n" + + "协议要求:\n" + + "1、主体与商业银行签订;\n" + + "2、内容针对交易资金使用和偿付进行监管;\n" + + "3、协议须在有效期内;\n" + + "4、结算账户须与资金监管账户一致。"), + TYPE_13(13, "719", "休闲娱乐/旅游服务",false,"无需特殊资质"), + TYPE_14(14, "719", "游艺厅/KTV",true,"《娱乐场所经营许可证》或《文化经营许可证》"), + TYPE_15(15, "719", "网吧",true,"《网络文化经营许可证》"), + TYPE_16(16, "719", "院线影城",true,"《电影放映经营许可证》"), + TYPE_17(17, "719", "演出赛事",true,"《营业性演出许可证》"), + TYPE_18(18, "719", "居民生活服务",false,"无需特殊资质"), + TYPE_19(19, "719", "景区/酒店",false,"无需特殊资质"), + TYPE_21(21, "719", "铁路客运",true,"收费授权证明文件(如授权证明书或合同)"), + TYPE_26(26, "719", "机票/票务代理",true,"《航空公司营业执照》或《航空公司机票代理资格证》"), + TYPE_31(31, "719", "培训机构",true,"若贵司具备以下资质,建议提供:\n" + + "1、《办学许可证》或相关批文\n" + + "2、驾校培训,提供有“驾驶员培训”项目的《道路运输经营许可证》"), + TYPE_34(34, "719", "保健器械/医疗器械/非处方药品",true,"互联网售药提供《互联网药品信息服务资格证书》+《药品经营许可证》;\n" + + "线下门店卖药提供《药品经营许可证》;\n" + + "医疗器械提供《医疗器械经营企业许可证》"), + TYPE_35(35, "719", "私立/民营医院/诊所",true,"《医疗机构执业许可证》\n" + + "中医诊所提供《中医诊所备案证》"), + TYPE_40(40, "719", "其他缴费",true,"收费授权证明文件(如授权证明书或合同)"), + TYPE_56(56, "719", "停车缴费",false,"建议提供停车收费资质"), + + ; + + public static EnumSharingReceiverQualificationGth getEnum(Integer code) { + for (EnumSharingReceiverQualificationGth value : values()) { + if (value.getCode().equals(code)) { + return value; + } + } + return null; + } + + private Integer code; + private String settlementId; + private String name; + private boolean flag; + private String message; + + EnumSharingReceiverQualificationGth(Integer code, String settlementId, String name, + boolean flag,String message) { + this.code = code; + this.settlementId = settlementId; + this.name = name; + this.flag = flag; + this.message = message; + } + + public Integer getCode() { + return code; + } + + public String getSettlementId() { + return settlementId; + } + + public String getName() { + return name; + } + + public boolean isFlag() { + return flag; + } + + public String getMessage() { + return message; + } +} diff --git a/mallinkService/src/main/java/com/iformall/enums/EnumSharingReceiverQualificationQy.java b/mallinkService/src/main/java/com/iformall/enums/EnumSharingReceiverQualificationQy.java new file mode 100644 index 000000000..2cafa49ba --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/enums/EnumSharingReceiverQualificationQy.java @@ -0,0 +1,86 @@ +package com.iformall.enums; + +/** + * 企业行业属性及特殊资质 + */ +public enum EnumSharingReceiverQualificationQy { + + TYPE_1(1, "716", "餐饮",false,"建议提供:《食品经营许可证》或《餐饮服务许可证》"), + TYPE_2(2, "716", "电商平台",false,"无需特殊资质"), + TYPE_3(3, "716", "零售",false,"若涉及烟草售卖,需提供《烟草专卖零售许可证》"), + TYPE_4(4, "716", "食品生鲜",false,"建议提供:《食品经营许可证》或《食品生产许可证》或供销协议+合作方资质"), + TYPE_7(7, "716", "咨询/娱乐票务",false,"无需特殊资质"), + TYPE_10(10, "716", "房产中介",false,"无需特殊资质"), + TYPE_11(11, "716", "宠物医院",true,"《动物诊疗许可证》"), + TYPE_12(12, "716", "共享服务",true,"需提供资金监管协议。\n" + + "协议要求:\n" + + "1、主体与商业银行签订;\n" + + "2、内容针对交易资金使用和偿付进行监管;\n" + + "3、协议须在有效期内;\n" + + "4、结算账户须与资金监管账户一致。"), + TYPE_13(13, "716", "休闲娱乐/旅游服务",false,"无需特殊资质"), + TYPE_14(14, "716", "游艺厅/KTV",true,"《娱乐场所经营许可证》或《文化经营许可证》"), + TYPE_15(15, "716", "网吧",true,"《网络文化经营许可证》"), + TYPE_16(16, "716", "院线影城",true,"《电影放映经营许可证》"), + TYPE_17(17, "716", "演出赛事",true,"《营业性演出许可证》"), + TYPE_18(18, "716", "居民生活服务",false,"无需特殊资质"), + TYPE_19(19, "716", "景区/酒店",false,"无需特殊资质"), + TYPE_21(21, "716", "铁路客运",true,"收费授权证明文件(如授权证明书或合同)"), + TYPE_26(26, "716", "机票/票务代理",true,"《航空公司营业执照》或《航空公司机票代理资格证》"), + TYPE_31(31, "716", "培训机构",true,"若贵司具备以下资质,建议提供:\n" + + "1、《办学许可证》或相关批文\n" + + "2、驾校培训,提供有“驾驶员培训”项目的《道路运输经营许可证》"), + TYPE_34(34, "716", "保健器械/医疗器械/非处方药品",true,"互联网售药提供《互联网药品信息服务资格证书》+《药品经营许可证》;\n" + + "线下门店卖药提供《药品经营许可证》;\n" + + "医疗器械提供《医疗器械经营企业许可证》"), + TYPE_35(35, "716", "私立/民营医院/诊所",true,"《医疗机构执业许可证》\n" + + "中医诊所提供《中医诊所备案证》"), + TYPE_40(40, "716", "其他缴费",true,"收费授权证明文件(如授权证明书或合同)"), + TYPE_56(56, "716", "停车缴费",false,"建议提供停车收费资质"), + + ; + + public static EnumSharingReceiverQualificationQy getEnum(Integer code) { + for (EnumSharingReceiverQualificationQy value : values()) { + if (value.getCode().equals(code)) { + return value; + } + } + return null; + } + + private Integer code; + private String settlementId; + private String name; + private boolean flag; + private String message; + + EnumSharingReceiverQualificationQy(Integer code, String settlementId, String name, + boolean flag, String message) { + this.code = code; + this.settlementId = settlementId; + this.name = name; + this.flag = flag; + this.message = message; + } + + public Integer getCode() { + return code; + } + + public String getSettlementId() { + return settlementId; + } + + public String getName() { + return name; + } + + public boolean isFlag() { + return flag; + } + + public String getMessage() { + return message; + } +} diff --git a/mallinkService/src/main/java/com/iformall/enums/EnumSharingReceiverSalesScenesType.java b/mallinkService/src/main/java/com/iformall/enums/EnumSharingReceiverSalesScenesType.java new file mode 100644 index 000000000..864961d6e --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/enums/EnumSharingReceiverSalesScenesType.java @@ -0,0 +1,72 @@ +package com.iformall.enums; + +import java.util.ArrayList; +import java.util.List; + +/** + * 经营场景类型 + * SALES_SCENES_STORE:线下场所 + * SALES_SCENES_MP:公众号 + * SALES_SCENES_MINI_PROGRAM:小程序 + * SALES_SCENES_WEB:互联网网站 + * SALES_SCENES_APP:APP + * SALES_SCENES_WEWORK:企业微信 + */ +public enum EnumSharingReceiverSalesScenesType { + + SALES_SCENES_STORE(1, "SALES_SCENES_STORE", "线下场所"), + SALES_SCENES_MP(2, "SALES_SCENES_MP", "公众号"), + SALES_SCENES_MINI_PROGRAM(3, "SALES_SCENES_MINI_PROGRAM", "小程序"), + SALES_SCENES_WEB(4, "SALES_SCENES_WEB", "互联网网站"), + SALES_SCENES_APP(5, "SALES_SCENES_APP", "APP"), + SALES_SCENES_WEWORK(6, "SALES_SCENES_WEWORK", "企业微信"), + ; + + public static EnumSharingReceiverSalesScenesType getEnum(Integer code) { + for (EnumSharingReceiverSalesScenesType value : values()) { + if (value.getCode().equals(code)) { + return value; + } + } + return null; + } + + public static EnumSharingReceiverSalesScenesType getEnum(String codeStr) { + for (EnumSharingReceiverSalesScenesType value : values()) { + if (value.getCodeStr().equals(codeStr)) { + return value; + } + } + return null; + } + + private Integer code; + private String codeStr; + private String message; + + EnumSharingReceiverSalesScenesType(Integer code, String codeStr, String message) { + this.code = code; + this.codeStr = codeStr; + this.message = message; + } + + public Integer getCode() { + return code; + } + + public String getCodeStr() { + return codeStr; + } + + public String getMessage() { + return message; + } + + public static List getAllCode() { + List list = new ArrayList<>(); + for (EnumSharingReceiverSalesScenesType value : values()) { + list.add(value.getCode()); + } + return list; + } +} diff --git a/mallinkService/src/main/java/com/iformall/service/WxProfitSharingReceiverApplyService.java b/mallinkService/src/main/java/com/iformall/service/WxProfitSharingReceiverApplyService.java index 00a186337..880f89832 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxProfitSharingReceiverApplyService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxProfitSharingReceiverApplyService.java @@ -1,6 +1,7 @@ package com.iformall.service; import com.github.pagehelper.PageInfo; +import com.iformall.common.ResultData; import com.iformall.domain.po.WxMerchant; import com.iformall.domain.po.WxProfitSharingReceiverApply; import com.iformall.domain.po.base.TenantEntity; @@ -19,5 +20,11 @@ public interface WxProfitSharingReceiverApplyService { WxProfitSharingReceiverApply selectById(Long id); - WxProfitSharingReceiverApply selectByPlat(TenantEntity tenantEntity, Long merid, EnumAppPlat wx); + WxProfitSharingReceiverApply selectByPlat(TenantEntity tenantEntity, Long merchantId, EnumAppPlat plat); + + WxProfitSharingReceiverApply detailByPlat(TenantEntity tenantEntity, Long merchantId, EnumAppPlat plat); + + ResultData saveOrUpdate(WxProfitSharingReceiverApply receiverAdd); + + } 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 c6d4240f6..d7dc78ffd 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxProfitSharingReceiverApplyServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxProfitSharingReceiverApplyServiceImpl.java @@ -1,19 +1,26 @@ package com.iformall.service.impl; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; +import com.iformall.common.IdWorker; +import com.iformall.common.ResultData; import com.iformall.domain.po.*; import com.iformall.domain.po.base.TenantEntity; -import com.iformall.enums.EnumAppPlat; -import com.iformall.enums.EnumSharingReceiverApplyStatus; +import com.iformall.enums.*; import com.iformall.mapper.WxProfitSharingReceiverApplyMapper; import com.iformall.service.WxProfitSharingReceiverApplyService; +import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.Date; +import java.util.List; + @Service public class WxProfitSharingReceiverApplyServiceImpl implements WxProfitSharingReceiverApplyService { @@ -34,14 +41,560 @@ public class WxProfitSharingReceiverApplyServiceImpl implements WxProfitSharingR } @Override - public WxProfitSharingReceiverApply selectByPlat(TenantEntity tenantEntity, Long merchantId, EnumAppPlat wx) { + public WxProfitSharingReceiverApply selectByPlat(TenantEntity tenantEntity, Long merchantId, EnumAppPlat plat) { WxProfitSharingReceiverApply receiverApply = new WxProfitSharingReceiverApply(); receiverApply.updateTenantInfo(tenantEntity); receiverApply.setMerchantId(merchantId); - receiverApply.setPlat(wx.getCode()); + receiverApply.setPlat(plat.getCode()); receiverApply.setStatus(EnumSharingReceiverApplyStatus.PROFIT_RECEIVER_APPLY_STATUS_VALID.getCode()); return wxProfitSharingReceiverApplyMapper.selectOne(new QueryWrapper<>(receiverApply)); } + @Override + public WxProfitSharingReceiverApply detailByPlat(TenantEntity tenantEntity, Long merchantId, EnumAppPlat plat) { + WxProfitSharingReceiverApply receiverApply = this.selectByPlat(tenantEntity, merchantId, plat); + if(receiverApply != null){ + receiverApply.setFinishMain(this.isFinishMain(receiverApply)); + receiverApply.setFinishBusiness(this.isFinishBankAccount(receiverApply)); + receiverApply.setFinishSettlement(this.isFinishSettlement(receiverApply)); + receiverApply.setFinishBankAccount(this.isFinishBankAccount(receiverApply)); + receiverApply.setFinishContact(this.isFinishContact(receiverApply)); + } + return receiverApply; + } + + @Override + public ResultData saveOrUpdate(WxProfitSharingReceiverApply receiverAdd) { + Date now = new Date(); + if(receiverAdd.getId() == null){ + final IdWorker idWorker = IdWorker.get(); + receiverAdd.setId(idWorker.nextId()); + receiverAdd.setOutRequestNo(receiverAdd.getId().toString()); + receiverAdd.setCreateTime(now); + receiverAdd.setUpdateTime(now); + wxProfitSharingReceiverApplyMapper.insert(receiverAdd); + }else{ + receiverAdd.setUpdateTime(now); + wxProfitSharingReceiverApplyMapper.updateById(receiverAdd); + } + return new ResultData(receiverAdd); + } + + + //------------------------------------------------------------------------------------------------------------------ + + private boolean isFinishMain(WxProfitSharingReceiverApply record){ + if(record == null){ + logger.info("申请单为null"); + return false; + } + EnumSharingReceiverOrganizationType enumOrganizationType = EnumSharingReceiverOrganizationType.getEnum(record.getOrganizationType()); + if(enumOrganizationType == null){ + logger.info("未选择主体类型"); + return false; + } + if(!EnumSharingReceiverOrganizationType.GETI.equals(enumOrganizationType) + && !EnumSharingReceiverOrganizationType.QIYE.equals(enumOrganizationType)){ + logger.info("目前只支持个体工商户/企业"); + return false; + } + if(record.getFinanceInstitution() != null && EnumYesOrNo.YES.getCode().equals(record.getFinanceInstitution())){ + logger.info("目前不支持金融机构"); + return false; + } + + if(StringUtils.isBlank(record.getBusinessLicenseInfo())){ + logger.info("未填写营业执照信息"); + return false; + } + JSONObject businessLicenseInfoObject = JSONObject.parseObject(record.getBusinessLicenseInfo()); + String license_copy = businessLicenseInfoObject.getString("license_copy"); + if(StringUtils.isBlank(license_copy)){ + logger.info("未上传营业执照照片"); + return false; + } + String license_number = businessLicenseInfoObject.getString("license_number"); + if(StringUtils.isBlank(license_number)){ + logger.info("未填写营业执照注册号"); + return false; + } + String merchant_name = businessLicenseInfoObject.getString("merchant_name"); + if(StringUtils.isBlank(merchant_name)){ + logger.info("未填写商户名称"); + return false; + } + String legal_person = businessLicenseInfoObject.getString("legal_person"); + if(StringUtils.isBlank(legal_person)){ + logger.info("未填写个体户经营者/法人姓名"); + return false; + } + + EnumSharingReceiverIdDocType enumIdDocType = EnumSharingReceiverIdDocType.getEnum(record.getIdDocType()); + if(enumIdDocType == null){ + logger.info("未选择证件类型"); + return false; + } + if(EnumSharingReceiverIdDocType.IDENTIFICATION_TYPE_IDCARD.equals(enumIdDocType)){ + if(StringUtils.isBlank(record.getIdCardInfo())){ + logger.info("未填写身份证信息"); + return false; + } + JSONObject idCardInfoObject = JSONObject.parseObject(record.getIdCardInfo()); + String id_card_copy = idCardInfoObject.getString("id_card_copy"); + if(StringUtils.isBlank(id_card_copy)){ + logger.info("未上传身份证人像面照片"); + return false; + } + String id_card_national = idCardInfoObject.getString("id_card_national"); + if(StringUtils.isBlank(id_card_national)){ + logger.info("未上传身份证国徽面照片"); + return false; + } + String id_card_name = idCardInfoObject.getString("id_card_name"); + if(StringUtils.isBlank(id_card_name)){ + logger.info("未填写身份证姓名"); + return false; + } + String id_card_number = idCardInfoObject.getString("id_card_number"); + if(StringUtils.isBlank(id_card_number)){ + logger.info("未填写身份证号码"); + return false; + } + if(EnumSharingReceiverOrganizationType.QIYE.equals(enumOrganizationType)){ + String id_card_address = idCardInfoObject.getString("id_card_address"); + if(StringUtils.isBlank(id_card_address)){ + logger.info("未填写身份证居住地址"); + return false; + } + } + String card_period_begin = idCardInfoObject.getString("card_period_begin"); + if(StringUtils.isBlank(card_period_begin)){ + logger.info("未填写身份证有效期开始时间"); + return false; + } + String card_period_end = idCardInfoObject.getString("card_period_end"); + if(StringUtils.isBlank(card_period_end)){ + logger.info("未填写身份证有效期结束时间"); + return false; + } + }else{ + if(StringUtils.isBlank(record.getIdDocInfo())){ + logger.info("未填写其他证件信息"); + return false; + } + JSONObject idDocInfoObject = JSONObject.parseObject(record.getIdDocInfo()); + String id_doc_copy = idDocInfoObject.getString("id_doc_copy"); + if(StringUtils.isBlank(id_doc_copy)){ + 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)){ + logger.info("未上传证件反面照片"); + return false; + } + } + String id_doc_name = idDocInfoObject.getString("id_doc_name"); + if(StringUtils.isBlank(id_doc_name)){ + logger.info("未填写证件姓名"); + return false; + } + String id_doc_number = idDocInfoObject.getString("id_doc_number"); + if(StringUtils.isBlank(id_doc_number)){ + logger.info("未填写证件号码"); + return false; + } + if(EnumSharingReceiverOrganizationType.QIYE.equals(enumOrganizationType)){ + String id_doc_address = idDocInfoObject.getString("id_doc_address"); + if(StringUtils.isBlank(id_doc_address)){ + logger.info("未填写证件居住地址"); + return false; + } + } + String doc_period_begin = idDocInfoObject.getString("doc_period_begin"); + if(StringUtils.isBlank(doc_period_begin)){ + logger.info("未填写证件有效期开始时间"); + return false; + } + String doc_period_end = idDocInfoObject.getString("doc_period_end"); + if(StringUtils.isBlank(doc_period_end)){ + logger.info("未填写证件有效期结束时间"); + return false; + } + } + + if(EnumSharingReceiverOrganizationType.QIYE.equals(enumOrganizationType)){ + if(record.getOwner() == null){ + logger.info("未选择经营者/法人是否为受益人"); + return false; + } + if(!EnumYesOrNo.YES.getCode().equals(record.getOwner())){ + if(StringUtils.isBlank(record.getUboInfoList())){ + logger.info("未填写最终受益人"); + return false; + } + JSONArray jsonArray = JSONArray.parseArray(record.getUboInfoList()); + if(jsonArray == null || jsonArray.isEmpty()){ + logger.info("未填写最终受益人"); + return false; + } + for(int i = 0;i < jsonArray.size();i++){ + JSONObject uboInfoObject = jsonArray.getJSONObject(i); + int n = i + 1; + Integer ubo_id_doc_type = uboInfoObject.getInteger("ubo_id_doc_type"); + EnumSharingReceiverIdDocType enumUboIdDocType = EnumSharingReceiverIdDocType.getEnum(ubo_id_doc_type); + if(enumUboIdDocType == null){ + logger.info("最终受益人信息列表第"+n+"个未选择证件类型"); + return false; + } + String ubo_id_doc_copy = uboInfoObject.getString("ubo_id_doc_copy"); + if(StringUtils.isBlank(ubo_id_doc_copy)){ + 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)){ + logger.info("最终受益人信息列表第"+n+"个未上传证件反面照片"); + return false; + } + } + String ubo_id_doc_name = uboInfoObject.getString("ubo_id_doc_name"); + if(StringUtils.isBlank(ubo_id_doc_name)){ + logger.info("最终受益人信息列表第"+n+"个未填写证件姓名"); + return false; + } + String ubo_id_doc_number = uboInfoObject.getString("ubo_id_doc_number"); + if(StringUtils.isBlank(ubo_id_doc_number)){ + logger.info("最终受益人信息列表第"+n+"个未填写证件号码"); + return false; + } + String ubo_id_doc_address = uboInfoObject.getString("ubo_id_doc_address"); + if(StringUtils.isBlank(ubo_id_doc_address)){ + logger.info("最终受益人信息列表第"+n+"个未填写证件居住地"); + return false; + } + String ubo_period_begin = uboInfoObject.getString("ubo_period_begin"); + if(StringUtils.isBlank(ubo_period_begin)){ + logger.info("最终受益人信息列表第"+n+"个未填写证件有效期开始时间"); + return false; + } + String ubo_period_end = uboInfoObject.getString("ubo_period_end"); + if(StringUtils.isBlank(ubo_period_end)){ + logger.info("最终受益人信息列表第"+n+"个未填写证件有效期结束时间"); + return false; + } + } + } + } + + return true; + } + + private boolean isFinishBusiness(WxProfitSharingReceiverApply record){ + if(record == null){ + logger.info("申请单为null"); + return false; + } + EnumSharingReceiverOrganizationType enumOrganizationType = EnumSharingReceiverOrganizationType.getEnum(record.getOrganizationType()); + if(enumOrganizationType == null){ + logger.info("未选择主体类型"); + return false; + } + if(StringUtils.isBlank(record.getMerchantShortname())){ + logger.info("未填写商户简称"); + return false; + } + if(StringUtils.isBlank(record.getServicePhone())){ + logger.info("未填写客服电话"); + return false; + } + if(StringUtils.isBlank(record.getSalesInfo())){ + logger.info("未填写经营场景"); + return false; + } + JSONObject salesInfoObject = JSONObject.parseObject(record.getSalesInfo()); + JSONArray sales_scenes_type = salesInfoObject.getJSONArray("sales_scenes_type"); + if(sales_scenes_type == null || sales_scenes_type.isEmpty()){ + logger.info("未选择经营场景类型"); + return false; + } + + List salesScenesTypes = sales_scenes_type.toJavaList(Integer.class); + if(!EnumSharingReceiverSalesScenesType.getAllCode().containsAll(salesScenesTypes)){ + logger.info("经营场景类型错误"); + return false; + } + if(salesScenesTypes.contains(EnumSharingReceiverSalesScenesType.SALES_SCENES_STORE.getCode())){ + JSONObject biz_store_info = salesInfoObject.getJSONObject("biz_store_info"); + if(biz_store_info == null){ + logger.info("未填写线下场所场景"); + return false; + } + String biz_store_name = biz_store_info.getString("biz_store_name"); + if(StringUtils.isBlank(biz_store_name)){ + logger.info("未填写线下场所名称"); + return false; + } + String biz_address_code = biz_store_info.getString("biz_address_code"); + if(StringUtils.isBlank(biz_address_code)){ + logger.info("未填写线下场所省市编码"); + return false; + } + JSONArray store_entrance_pic = biz_store_info.getJSONArray("store_entrance_pic"); + if(store_entrance_pic == null || store_entrance_pic.isEmpty()){ + logger.info("未上传线下场所门头照片"); + return false; + } + JSONArray indoor_pic = biz_store_info.getJSONArray("indoor_pic"); + if(indoor_pic == null || indoor_pic.isEmpty()){ + logger.info("未上传线下场所内部照片"); + return false; + } + + } + if(salesScenesTypes.contains(EnumSharingReceiverSalesScenesType.SALES_SCENES_MP.getCode())){ + JSONObject mp_info = salesInfoObject.getJSONObject("mp_info"); + if(mp_info == null){ + logger.info("未填写公众号场景"); + return false; + } + String mp_appid = mp_info.getString("mp_appid"); + String mp_sub_appid = mp_info.getString("mp_sub_appid"); + if(StringUtils.isBlank(mp_appid) && StringUtils.isBlank(mp_sub_appid)){ + logger.info("未填写对应公众号APPID"); + return false; + } + JSONArray mp_pics = mp_info.getJSONArray("mp_pics"); + if(mp_pics == null || mp_pics.isEmpty()){ + logger.info("未上传公众号页面截图"); + return false; + } + + } + if(salesScenesTypes.contains(EnumSharingReceiverSalesScenesType.SALES_SCENES_MINI_PROGRAM.getCode())){ + JSONObject mini_program_info = salesInfoObject.getJSONObject("mini_program_info"); + if(mini_program_info == null){ + logger.info("未填写小程序场景"); + return false; + } + String mini_program_appid = mini_program_info.getString("mini_program_appid"); + String mini_program_sub_appid = mini_program_info.getString("mini_program_sub_appid"); + if(StringUtils.isBlank(mini_program_appid) && StringUtils.isBlank(mini_program_sub_appid)){ + logger.info("未填写对应小程序APPID"); + return false; + } + + } + if(salesScenesTypes.contains(EnumSharingReceiverSalesScenesType.SALES_SCENES_WEB.getCode())){ + JSONObject web_info = salesInfoObject.getJSONObject("web_info"); + if(web_info == null){ + logger.info("未填写互联网网站场景"); + return false; + } + String domain = web_info.getString("domain"); + if(StringUtils.isBlank(domain)){ + logger.info("未填写互联网网站域名"); + return false; + } + } + if(salesScenesTypes.contains(EnumSharingReceiverSalesScenesType.SALES_SCENES_APP.getCode())){ + JSONObject app_info = salesInfoObject.getJSONObject("app_info"); + if(app_info == null){ + logger.info("未填写APP场景"); + return false; + } + String app_appid = app_info.getString("app_appid"); + String app_sub_appid = app_info.getString("app_sub_appid"); + if(StringUtils.isBlank(app_appid) && StringUtils.isBlank(app_sub_appid)){ + logger.info("未填写应用APPID"); + return false; + } + JSONArray app_pics = app_info.getJSONArray("app_pics"); + if(app_pics == null || app_pics.isEmpty()){ + logger.info("未上传APP页面截图"); + return false; + } + } + if(salesScenesTypes.contains(EnumSharingReceiverSalesScenesType.SALES_SCENES_WEWORK.getCode())){ + JSONObject wework_info = salesInfoObject.getJSONObject("wework_info"); + if(wework_info == null){ + logger.info("未填写企业微信场景"); + return false; + } + String sub_corp_id = wework_info.getString("sub_corp_id"); + if(StringUtils.isBlank(sub_corp_id)){ + logger.info("未填写商家企业微信CorpID"); + return false; + } + JSONArray wework_pics = wework_info.getJSONArray("wework_pics"); + if(wework_pics == null || wework_pics.isEmpty()){ + logger.info("未上传企业微信页面截图"); + return false; + } + } + + return true; + } + + private boolean isFinishSettlement(WxProfitSharingReceiverApply record){ + if(record == null){ + logger.info("申请单为null"); + return false; + } + EnumSharingReceiverOrganizationType enumOrganizationType = EnumSharingReceiverOrganizationType.getEnum(record.getOrganizationType()); + if(enumOrganizationType == null){ + logger.info("未选择主体类型"); + return false; + } + + if(StringUtils.isBlank(record.getSettlementInfo())){ + logger.info("未填写结算规则"); + return false; + } + JSONObject settlementInfoObject = JSONObject.parseObject(record.getSettlementInfo()); + String settlement_id = settlementInfoObject.getString("settlement_id"); + if(StringUtils.isBlank(settlement_id)){ + logger.info("未填写入驻结算规则ID"); + return false; + } + String qualification_type = settlementInfoObject.getString("qualification_type"); + if(StringUtils.isBlank(qualification_type)){ + logger.info("未填写所属行业"); + return false; + } + + return true; + } + + private boolean isFinishBankAccount(WxProfitSharingReceiverApply record){ + if(record == null){ + logger.info("申请单为null"); + return false; + } + EnumSharingReceiverOrganizationType enumOrganizationType = EnumSharingReceiverOrganizationType.getEnum(record.getOrganizationType()); + if(enumOrganizationType == null){ + logger.info("未选择主体类型"); + return false; + } + + if(StringUtils.isBlank(record.getAccountInfo())){ + logger.info("未填写结算银行账户"); + return false; + } + JSONObject accountInfoObject = JSONObject.parseObject(record.getAccountInfo()); + String bank_account_type = accountInfoObject.getString("bank_account_type"); + if(StringUtils.isBlank(bank_account_type)){ + logger.info("未选择结算账户类型"); + return false; + } + String account_name = accountInfoObject.getString("account_name"); + if(StringUtils.isBlank(account_name)){ + logger.info("未填写开户名称"); + return false; + } + String account_bank = accountInfoObject.getString("account_bank"); + if(StringUtils.isBlank(account_bank)){ + logger.info("未填写开户银行"); + return false; + } + + String bank_address_code = accountInfoObject.getString("bank_address_code"); + if(StringUtils.isBlank(bank_address_code)){ + logger.info("未填写开户银行省市编码"); + return false; + } + + String account_number = accountInfoObject.getString("account_number"); + if(StringUtils.isBlank(account_number)){ + logger.info("未填写银行帐号"); + return false; + } + + return true; + } + + private boolean isFinishContact(WxProfitSharingReceiverApply record){ + if(record == null){ + logger.info("申请单为null"); + return false; + } + EnumSharingReceiverOrganizationType enumOrganizationType = EnumSharingReceiverOrganizationType.getEnum(record.getOrganizationType()); + if(enumOrganizationType == null){ + logger.info("未选择主体类型"); + return false; + } + + if(StringUtils.isBlank(record.getContactInfo())){ + logger.info("未填写超级管理员信息"); + return false; + } + JSONObject contactInfoObject = JSONObject.parseObject(record.getContactInfo()); + Integer contact_type = contactInfoObject.getInteger("contact_type"); + EnumSharingReceiverContactType enumContactType = EnumSharingReceiverContactType.getEnum(contact_type); + if(enumContactType == null){ + logger.info("未选择管理员类型"); + return false; + } + String contact_name = contactInfoObject.getString("contact_name"); + if(StringUtils.isBlank(contact_name)){ + logger.info("未填写超级管理员姓名"); + return false; + } + if(EnumSharingReceiverContactType.SUPER.equals(enumContactType)){ + Integer contact_id_doc_type = contactInfoObject.getInteger("contact_id_doc_type"); + EnumSharingReceiverIdDocType enumIdDocType = EnumSharingReceiverIdDocType.getEnum(contact_id_doc_type); + if(enumIdDocType == null){ + logger.info("未选择超级管理员证件类型"); + return false; + } + String contact_id_number = contactInfoObject.getString("contact_id_number"); + if(StringUtils.isBlank(contact_id_number)){ + logger.info("未填写超级管理员证件号码"); + return false; + } + String contact_id_doc_copy = contactInfoObject.getString("contact_id_doc_copy"); + if(StringUtils.isBlank(contact_id_doc_copy)){ + 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)){ + logger.info("未上传超级管理员证件反面照片"); + return false; + } + } + String contact_period_begin = contactInfoObject.getString("contact_period_begin"); + if(StringUtils.isBlank(contact_period_begin)){ + logger.info("未填写超级管理员证件有效期开始时间"); + return false; + } + String contact_period_end = contactInfoObject.getString("contact_period_end"); + if(StringUtils.isBlank(contact_period_end)){ + logger.info("未填写超级管理员证件有效期结束时间"); + return false; + } + String business_authorization_letter = contactInfoObject.getString("business_authorization_letter"); + if(StringUtils.isBlank(business_authorization_letter)){ + logger.info("未上传业务办理授权函"); + return false; + } + } + String mobile_phone = contactInfoObject.getString("mobile_phone"); + if(StringUtils.isBlank(mobile_phone)){ + logger.info("未填写超级管理员联系手机"); + return false; + } + String contact_email = contactInfoObject.getString("contact_email"); + if(StringUtils.isBlank(contact_email)){ + logger.info("未填写超级管理员联系邮箱"); + return false; + } + + return true; + } + } diff --git a/mallinkService/src/main/resources/mapper/WxProfitSharingReceiverApplyMapper.xml b/mallinkService/src/main/resources/mapper/WxProfitSharingReceiverApplyMapper.xml index 10662e152..cbc5beede 100644 --- a/mallinkService/src/main/resources/mapper/WxProfitSharingReceiverApplyMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxProfitSharingReceiverApplyMapper.xml @@ -11,6 +11,7 @@ + @@ -25,7 +26,10 @@ + + + @@ -52,10 +56,10 @@ `id`,`tenant_id`,`parent_tenant_id`,`merchant_id`,`plat`, - `out_request_no`,`organization_type`,`finance_institution`,`business_license_info`,`finance_institution_info`, + `out_request_no`,`organization_type`,`finance_institution`,`business_license_info`,`certificate_info`,`finance_institution_info`, `id_holder_type`,`id_doc_type`,`authorize_letter`,`authorize_letter_copy`,`id_card_info`,`id_doc_info`, `owner`,`ubo_info_list`,`account_info`,`contact_info`,`sales_scene_info`,`settlement_info`, - `merchant_shortname`,`qualifications`,`business_addition_pics`,`business_addition_desc`, + `merchant_shortname`,`service_phone`,`sales_info`,`qualifications`,`addition_info`,`business_addition_pics`,`business_addition_desc`, `applyment_id`,`applyment_state`,`applyment_state_desc`,`sign_state`,`sign_url`, `sub_mchid`,`account_validation`,`audit_detail`,`legal_validation_url`,`legal_validation_qrcode`, `verify_result`,`verify_fail_reason`,`status`,`create_time`,`update_time`