| @@ -55,14 +55,41 @@ public class WxProfitSharingReceiverApplyController extends BaseController { | |||||
| if(receiverApply == null){ | if(receiverApply == null){ | ||||
| return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(), "该商户进件数据异常,请联系管理员"); | 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(), "该商户进件流程中,无法修改"); | return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(), "该商户进件流程中,无法修改"); | ||||
| } | } | ||||
| }else{ | }else{ | ||||
| WxProfitSharingReceiverApply receiverApply = wxProfitSharingReceiverApplyService.selectByPlat(merchant,merchant.getId(),EnumAppPlat.WX); | 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; | 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.baomidou.mybatisplus.annotation.TableName; | ||||
| import com.iformall.domain.po.base.TenantEntity; | import com.iformall.domain.po.base.TenantEntity; | ||||
| import com.iformall.enums.EnumSharingReceiverOrganizationType; | |||||
| import lombok.Data; | import lombok.Data; | ||||
| import lombok.EqualsAndHashCode; | import lombok.EqualsAndHashCode; | ||||
| import org.apache.commons.lang3.StringUtils; | import org.apache.commons.lang3.StringUtils; | ||||
| import org.slf4j.Logger; | |||||
| import org.slf4j.LoggerFactory; | |||||
| import java.util.Date; | import java.util.Date; | ||||
| @@ -25,8 +31,10 @@ public class WxProfitSharingReceiverApply extends TenantEntity { | |||||
| private Integer organizationType; | private Integer organizationType; | ||||
| @io.swagger.annotations.ApiModelProperty(value="是否金融机构",name="financeInstitution") | @io.swagger.annotations.ApiModelProperty(value="是否金融机构",name="financeInstitution") | ||||
| private Integer financeInstitution; | private Integer financeInstitution; | ||||
| @io.swagger.annotations.ApiModelProperty(value="营业执照/登记证书信息",name="businessLicenseInfo") | |||||
| @io.swagger.annotations.ApiModelProperty(value="营业执照信息",name="businessLicenseInfo") | |||||
| private String businessLicenseInfo; | private String businessLicenseInfo; | ||||
| @io.swagger.annotations.ApiModelProperty(value="登记证书信息",name="certificateInfo") | |||||
| private String certificateInfo; | |||||
| @io.swagger.annotations.ApiModelProperty(value="金融机构许可证信息",name="financeInstitutionInfo") | @io.swagger.annotations.ApiModelProperty(value="金融机构许可证信息",name="financeInstitutionInfo") | ||||
| private String financeInstitutionInfo; | private String financeInstitutionInfo; | ||||
| @io.swagger.annotations.ApiModelProperty(value="EnumSharingReceiverIdHolderType 证件持有人类型",name="idHolderType") | @io.swagger.annotations.ApiModelProperty(value="EnumSharingReceiverIdHolderType 证件持有人类型",name="idHolderType") | ||||
| @@ -55,8 +63,14 @@ public class WxProfitSharingReceiverApply extends TenantEntity { | |||||
| private String settlementInfo; | private String settlementInfo; | ||||
| @io.swagger.annotations.ApiModelProperty(value="商户简称",name="merchantShortname") | @io.swagger.annotations.ApiModelProperty(value="商户简称",name="merchantShortname") | ||||
| private String 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") | @io.swagger.annotations.ApiModelProperty(value="特殊资质([])",name="qualifications") | ||||
| private String qualifications; | private String qualifications; | ||||
| @io.swagger.annotations.ApiModelProperty(value="补充材料",name="additionInfo") | |||||
| private String additionInfo; | |||||
| @io.swagger.annotations.ApiModelProperty(value="补充材料([])",name="businessAdditionPics") | @io.swagger.annotations.ApiModelProperty(value="补充材料([])",name="businessAdditionPics") | ||||
| private String businessAdditionPics; | private String businessAdditionPics; | ||||
| @io.swagger.annotations.ApiModelProperty(value="补充说明",name="businessAdditionDesc") | @io.swagger.annotations.ApiModelProperty(value="补充说明",name="businessAdditionDesc") | ||||
| @@ -96,4 +110,20 @@ public class WxProfitSharingReceiverApply extends TenantEntity { | |||||
| @io.swagger.annotations.ApiModelProperty(value="",name="updateTime") | @io.swagger.annotations.ApiModelProperty(value="",name="updateTime") | ||||
| private Date 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; | 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 { | 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) { | public static EnumSharingReceiverApplymentState getEnum(Integer code) { | ||||
| @@ -62,4 +67,15 @@ public enum EnumSharingReceiverApplymentState { | |||||
| public String getMessage() { | public String getMessage() { | ||||
| return message; | 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 { | public enum EnumSharingReceiverContactType { | ||||
| LEGAL(65, "65", "法人"), | |||||
| SUPER(66, "66", "经办人"), | |||||
| LEGAL(1, "LEGAL", "法人"), | |||||
| SUPER(2, "SUPER", "经办人"), | |||||
| ; | ; | ||||
| public static EnumSharingReceiverContactType getEnum(Integer code) { | public static EnumSharingReceiverContactType getEnum(Integer code) { | ||||
| @@ -1,23 +1,26 @@ | |||||
| package com.iformall.enums; | 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_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_FOREIGN_RESIDENT:外国人居留证 | ||||
| * IDENTIFICATION_TYPE_HONGKONG_MACAO_RESIDENT:港澳居民证 | * IDENTIFICATION_TYPE_HONGKONG_MACAO_RESIDENT:港澳居民证 | ||||
| * IDENTIFICATION_TYPE_TAIWAN_RESIDENT:台湾居民证 | * IDENTIFICATION_TYPE_TAIWAN_RESIDENT:台湾居民证 | ||||
| */ | */ | ||||
| public enum EnumSharingReceiverIdDocType { | 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_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_FOREIGN_RESIDENT(6, "IDENTIFICATION_TYPE_FOREIGN_RESIDENT", "外国人居留证"), | ||||
| IDENTIFICATION_TYPE_HONGKONG_MACAO_RESIDENT(7, "IDENTIFICATION_TYPE_HONGKONG_MACAO_RESIDENT", "港澳居民证"), | IDENTIFICATION_TYPE_HONGKONG_MACAO_RESIDENT(7, "IDENTIFICATION_TYPE_HONGKONG_MACAO_RESIDENT", "港澳居民证"), | ||||
| IDENTIFICATION_TYPE_TAIWAN_RESIDENT(8, "IDENTIFICATION_TYPE_TAIWAN_RESIDENT", "台湾居民证"), | IDENTIFICATION_TYPE_TAIWAN_RESIDENT(8, "IDENTIFICATION_TYPE_TAIWAN_RESIDENT", "台湾居民证"), | ||||
| @@ -62,4 +65,15 @@ public enum EnumSharingReceiverIdDocType { | |||||
| public String getMessage() { | public String getMessage() { | ||||
| return message; | 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; | package com.iformall.service; | ||||
| import com.github.pagehelper.PageInfo; | import com.github.pagehelper.PageInfo; | ||||
| import com.iformall.common.ResultData; | |||||
| import com.iformall.domain.po.WxMerchant; | import com.iformall.domain.po.WxMerchant; | ||||
| import com.iformall.domain.po.WxProfitSharingReceiverApply; | import com.iformall.domain.po.WxProfitSharingReceiverApply; | ||||
| import com.iformall.domain.po.base.TenantEntity; | import com.iformall.domain.po.base.TenantEntity; | ||||
| @@ -19,5 +20,11 @@ public interface WxProfitSharingReceiverApplyService { | |||||
| WxProfitSharingReceiverApply selectById(Long id); | 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; | 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.baomidou.mybatisplus.core.conditions.query.QueryWrapper; | ||||
| import com.github.pagehelper.PageHelper; | import com.github.pagehelper.PageHelper; | ||||
| import com.github.pagehelper.PageInfo; | 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.*; | ||||
| import com.iformall.domain.po.base.TenantEntity; | 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.mapper.WxProfitSharingReceiverApplyMapper; | ||||
| import com.iformall.service.WxProfitSharingReceiverApplyService; | import com.iformall.service.WxProfitSharingReceiverApplyService; | ||||
| import org.apache.commons.lang3.StringUtils; | |||||
| import org.slf4j.Logger; | import org.slf4j.Logger; | ||||
| import org.slf4j.LoggerFactory; | import org.slf4j.LoggerFactory; | ||||
| import org.springframework.beans.factory.annotation.Autowired; | import org.springframework.beans.factory.annotation.Autowired; | ||||
| import org.springframework.stereotype.Service; | import org.springframework.stereotype.Service; | ||||
| import java.util.Date; | |||||
| import java.util.List; | |||||
| @Service | @Service | ||||
| public class WxProfitSharingReceiverApplyServiceImpl implements WxProfitSharingReceiverApplyService { | public class WxProfitSharingReceiverApplyServiceImpl implements WxProfitSharingReceiverApplyService { | ||||
| @@ -34,14 +41,560 @@ public class WxProfitSharingReceiverApplyServiceImpl implements WxProfitSharingR | |||||
| } | } | ||||
| @Override | @Override | ||||
| public WxProfitSharingReceiverApply selectByPlat(TenantEntity tenantEntity, Long merchantId, EnumAppPlat wx) { | |||||
| public WxProfitSharingReceiverApply selectByPlat(TenantEntity tenantEntity, Long merchantId, EnumAppPlat plat) { | |||||
| WxProfitSharingReceiverApply receiverApply = new WxProfitSharingReceiverApply(); | WxProfitSharingReceiverApply receiverApply = new WxProfitSharingReceiverApply(); | ||||
| receiverApply.updateTenantInfo(tenantEntity); | receiverApply.updateTenantInfo(tenantEntity); | ||||
| receiverApply.setMerchantId(merchantId); | receiverApply.setMerchantId(merchantId); | ||||
| receiverApply.setPlat(wx.getCode()); | |||||
| receiverApply.setPlat(plat.getCode()); | |||||
| receiverApply.setStatus(EnumSharingReceiverApplyStatus.PROFIT_RECEIVER_APPLY_STATUS_VALID.getCode()); | receiverApply.setStatus(EnumSharingReceiverApplyStatus.PROFIT_RECEIVER_APPLY_STATUS_VALID.getCode()); | ||||
| return wxProfitSharingReceiverApplyMapper.selectOne(new QueryWrapper<>(receiverApply)); | 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="organization_type" jdbcType="INTEGER" property="organizationType" /> | ||||
| <result column="finance_institution" jdbcType="INTEGER" property="financeInstitution" /> | <result column="finance_institution" jdbcType="INTEGER" property="financeInstitution" /> | ||||
| <result column="business_license_info" jdbcType="VARCHAR" property="businessLicenseInfo" /> | <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="finance_institution_info" jdbcType="VARCHAR" property="financeInstitutionInfo" /> | ||||
| <result column="id_holder_type" jdbcType="INTEGER" property="idHolderType" /> | <result column="id_holder_type" jdbcType="INTEGER" property="idHolderType" /> | ||||
| <result column="id_doc_type" jdbcType="INTEGER" property="idDocType" /> | <result column="id_doc_type" jdbcType="INTEGER" property="idDocType" /> | ||||
| @@ -25,7 +26,10 @@ | |||||
| <result column="sales_scene_info" jdbcType="VARCHAR" property="salesSceneInfo" /> | <result column="sales_scene_info" jdbcType="VARCHAR" property="salesSceneInfo" /> | ||||
| <result column="settlement_info" jdbcType="VARCHAR" property="settlementInfo" /> | <result column="settlement_info" jdbcType="VARCHAR" property="settlementInfo" /> | ||||
| <result column="merchant_shortname" jdbcType="VARCHAR" property="merchantShortname" /> | <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="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_pics" jdbcType="VARCHAR" property="businessAdditionPics" /> | ||||
| <result column="business_addition_desc" jdbcType="VARCHAR" property="businessAdditionDesc" /> | <result column="business_addition_desc" jdbcType="VARCHAR" property="businessAdditionDesc" /> | ||||
| @@ -52,10 +56,10 @@ | |||||
| <sql id="allColumns"> | <sql id="allColumns"> | ||||
| `id`,`tenant_id`,`parent_tenant_id`,`merchant_id`,`plat`, | `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`, | `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`, | `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`, | `applyment_id`,`applyment_state`,`applyment_state_desc`,`sign_state`,`sign_url`, | ||||
| `sub_mchid`,`account_validation`,`audit_detail`,`legal_validation_url`,`legal_validation_qrcode`, | `sub_mchid`,`account_validation`,`audit_detail`,`legal_validation_url`,`legal_validation_qrcode`, | ||||
| `verify_result`,`verify_fail_reason`,`status`,`create_time`,`update_time` | `verify_result`,`verify_fail_reason`,`status`,`create_time`,`update_time` | ||||