| @@ -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); | |||
| } | |||
| } | |||
| @@ -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; | |||
| } | |||
| @@ -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<Integer> getUpdList(){ | |||
| List<Integer> list = new ArrayList<>(); | |||
| list.add(EnumSharingReceiverApplymentState.APPLYMENT_STATE_EDITTING.getCode()); | |||
| list.add(EnumSharingReceiverApplymentState.APPLYMENT_STATE_REJECTED.getCode()); | |||
| return list; | |||
| } | |||
| } | |||
| @@ -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) { | |||
| @@ -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<Integer> getOtherNeddBack(){ | |||
| List<Integer> 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; | |||
| } | |||
| } | |||
| @@ -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; | |||
| } | |||
| } | |||
| @@ -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; | |||
| } | |||
| } | |||
| @@ -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<Integer> getAllCode() { | |||
| List<Integer> list = new ArrayList<>(); | |||
| for (EnumSharingReceiverSalesScenesType value : values()) { | |||
| list.add(value.getCode()); | |||
| } | |||
| return list; | |||
| } | |||
| } | |||
| @@ -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); | |||
| } | |||
| @@ -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<Integer> 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; | |||
| } | |||
| } | |||
| @@ -11,6 +11,7 @@ | |||
| <result column="organization_type" jdbcType="INTEGER" property="organizationType" /> | |||
| <result column="finance_institution" jdbcType="INTEGER" property="financeInstitution" /> | |||
| <result column="business_license_info" jdbcType="VARCHAR" property="businessLicenseInfo" /> | |||
| <result column="certificate_info" jdbcType="VARCHAR" property="certificateInfo" /> | |||
| <result column="finance_institution_info" jdbcType="VARCHAR" property="financeInstitutionInfo" /> | |||
| <result column="id_holder_type" jdbcType="INTEGER" property="idHolderType" /> | |||
| <result column="id_doc_type" jdbcType="INTEGER" property="idDocType" /> | |||
| @@ -25,7 +26,10 @@ | |||
| <result column="sales_scene_info" jdbcType="VARCHAR" property="salesSceneInfo" /> | |||
| <result column="settlement_info" jdbcType="VARCHAR" property="settlementInfo" /> | |||
| <result column="merchant_shortname" jdbcType="VARCHAR" property="merchantShortname" /> | |||
| <result column="service_phone" jdbcType="VARCHAR" property="servicePhone" /> | |||
| <result column="sales_info" jdbcType="VARCHAR" property="salesInfo" /> | |||
| <result column="qualifications" jdbcType="VARCHAR" property="qualifications" /> | |||
| <result column="addition_info" jdbcType="VARCHAR" property="additionInfo" /> | |||
| <result column="business_addition_pics" jdbcType="VARCHAR" property="businessAdditionPics" /> | |||
| <result column="business_addition_desc" jdbcType="VARCHAR" property="businessAdditionDesc" /> | |||
| @@ -52,10 +56,10 @@ | |||
| <sql id="allColumns"> | |||
| `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` | |||