Commit 317b0e2c by 程裕兵

feat:apply merchant

parent 103495cb
package com.jiejing.fitness.finance.api.enums;
import com.baomidou.mybatisplus.annotation.EnumValue;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* @author chengyubing
* @since 2024/2/20 16:56
*/
@Getter
@AllArgsConstructor
public enum ApplyTypeEnums {
/**
* 申请类型
*/
OPEN("OPEN", "进件"),
RE_OPEN("RE_OPEN", "重进件"),
;
@EnumValue
private final String code;
private final String desc;
}
package com.jiejing.fitness.finance.api.enums;
import com.baomidou.mybatisplus.annotation.EnumValue;
import java.util.Arrays;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* 商户类型
*
* @author raccoon
* @since 2020-11-06 16:44
*/
@Getter
@AllArgsConstructor
public enum MerchantTypeEnums {
/**
* 未知
*/
UNKNOWN("", ""),
BRAND("BRAND", "品牌"),
STUDIO("STUDIO", "场馆"),
;
@EnumValue
private final String code;
private final String desc;
public static MerchantTypeEnums getByCode(String code) {
return Arrays.stream(MerchantTypeEnums.values()).filter(e -> e.getCode().equals(code)).findFirst()
.orElse(UNKNOWN);
}
}
...@@ -17,4 +17,9 @@ spring: ...@@ -17,4 +17,9 @@ spring:
algorithm: "" algorithm: ""
# 用于业务处理的kafka集群配置 # 用于业务处理的kafka集群配置
binder-configs: biz-kafka binder-configs: biz-kafka
default-binder: biz-kafka default-binder: biz-kafka
\ No newline at end of file
finance:
brand:
merchant:
channel: 001
...@@ -71,6 +71,11 @@ ...@@ -71,6 +71,11 @@
<artifactId>api</artifactId> <artifactId>api</artifactId>
<version>${pay-center.version}</version> <version>${pay-center.version}</version>
</dependency> </dependency>
<dependency>
<groupId>com.jiejing.app</groupId>
<artifactId>studio-api</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
<!-- ======================= jiejing api end ======================= --> <!-- ======================= jiejing api end ======================= -->
......
/*
* Copyright © 2024 Hangzhou Jiejing Technology Co., Ltd. All rights reserved.
*
* The copyright of the company's program code belongs to Hangzhou Jiejing Technology Co., Ltd. No one can illegally copy it without the explicit permission of this website.
* Official website: www.xiaomai5.com
*
*
*
* Copyright © 2024 杭州杰竞科技有限公司 版权所有.
*
* 本公司程序代码的版权归杭州杰竞科技有限公司所有,未经本网站的明确许可,任何人不得非法复制。
* 官网: www.xiaomai5.com
*/
package com.jiejing.fitness.finance.repository.mapper;
import com.jiejing.fitness.finance.repository.entity.BrandMerchantApply;
import com.jiejing.mbp.inject.XBaseMapper;
import org.apache.ibatis.annotations.Param;
/**
* <p>
* 品牌商户申请表(M端以及B端数据回显用,支付以及各状态判断、商户号不使用此表) Mapper 接口
* </p>
*
* @author chengyubing, created on 2024-02-20
*/
public interface BrandMerchantApplyMapper extends XBaseMapper<BrandMerchantApply> {
BrandMerchantApply getLatestOneSuccessByBrandId(@Param("brandId") Long brandId);
}
<?xml version="1.0" encoding="UTF-8"?>
<!--
~ Copyright © 2024 Hangzhou Jiejing Technology Co., Ltd. All rights reserved.
~
~ The copyright of the company's program code belongs to Hangzhou Jiejing Technology Co., Ltd. No one can illegally copy it without the explicit permission of this website.
~ Official website: www.xiaomai5.com
~
~
~
~ Copyright © 2024 杭州杰竞科技有限公司 版权所有.
~
~ 本公司程序代码的版权归杭州杰竞科技有限公司所有,未经本网站的明确许可,任何人不得非法复制。
~ 官网: www.xiaomai5.com
-->
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.jiejing.fitness.finance.repository.mapper.BrandMerchantApplyMapper">
<!-- 通用查询结果列 -->
<sql id="Base_Column_List">
id, brand_id, studio_id, apply_no, apply_type, channel_no, merchant_no, merchant_name, short_name, company_type, open_state, open_fail_message, ali_open_state, ali_merchant_no, ali_open_fail_message, wx_offline_open_state, wx_offline_auth_state, wx_offline_merchant_no, wx_offline_open_fail_message, wx_online_open_state, wx_online_auth_state, wx_online_merchant_no, wx_online_open_fail_message, business_province, business_city, business_district, business_address, license_code, license_expire_type, license_start_date, license_end_date, license_business_scope, license_found_date, license_province, license_city, license_district, license_address, legal_name, legal_cert_no, legal_cert_type, legal_cert_expire_type, legal_cert_start_date, legal_cert_end_date, legal_phone, legal_province, legal_city, legal_district, legal_address, contact_email, bank_card_type, bank_card_no, bank_card_name, bank_phone, bank_cert_no, bank_cert_type, bank_cert_expire_type, bank_cert_start_date, bank_cert_end_date, bank_base_deposit_no, bank_code, bank_name, bank_branch_name, bank_branch_code, bank_card_province, bank_card_city, bank_card_district, bank_card_address, resource_info, salt, finish_time, create_time, update_time
</sql>
<select id="getLatestOneSuccessByBrandId"
resultType="com.jiejing.fitness.finance.repository.entity.BrandMerchantApply">
select *
from brand_merchant_apply
where brand_id = #{brandId}
and open_state = 'S'
order by id desc
limit 1
</select>
</mapper>
/*
* Copyright © 2024 Hangzhou Jiejing Technology Co., Ltd. All rights reserved.
*
* The copyright of the company's program code belongs to Hangzhou Jiejing Technology Co., Ltd. No one can illegally copy it without the explicit permission of this website.
* Official website: www.xiaomai5.com
*
*
*
* Copyright © 2024 杭州杰竞科技有限公司 版权所有.
*
* 本公司程序代码的版权归杭州杰竞科技有限公司所有,未经本网站的明确许可,任何人不得非法复制。
* 官网: www.xiaomai5.com
*/
package com.jiejing.fitness.finance.repository.service;
import com.jiejing.fitness.finance.repository.entity.BrandMerchantApply;
import com.jiejing.fitness.finance.repository.mapper.BrandMerchantApplyMapper;
import com.jiejing.mbp.MapperRepoService;
import org.springframework.stereotype.Service;
/**
* <p>
* 品牌商户申请表(M端以及B端数据回显用,支付以及各状态判断、商户号不使用此表) 服务实现类
* </p>
*
* @author chengyubing, created on 2024-02-20
*/
@Service
public class BrandMerchantApplyRpService extends
MapperRepoService<Long, BrandMerchantApply, BrandMerchantApplyMapper> {
public BrandMerchantApply getLatestOneSuccessByBrandId(Long brandId) {
return this.baseMapper.getLatestOneSuccessByBrandId(brandId);
}
}
...@@ -51,7 +51,7 @@ public class GeneratorServiceEntity { ...@@ -51,7 +51,7 @@ public class GeneratorServiceEntity {
*/ */
private String author = "chengyubing"; private String author = "chengyubing";
private String[] tableNames = { private String[] tableNames = {
"brand_merchant_apply"
}; };
/** /**
......
...@@ -24,6 +24,10 @@ ...@@ -24,6 +24,10 @@
<artifactId>api</artifactId> <artifactId>api</artifactId>
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.jiejing.app</groupId>
<artifactId>studio-api</artifactId>
</dependency>
<dependency>
<groupId>com.jiejing.event</groupId> <groupId>com.jiejing.event</groupId>
<artifactId>scs-event</artifactId> <artifactId>scs-event</artifactId>
</dependency> </dependency>
......
package com.jiejing.fitness.finance.service.merchant;
import com.jiejing.fitness.finance.service.merchant.params.ApplyBrandMerchantParams;
/**
* 品牌商户服务
*
* @author chengyubing
* @since 2024/2/20 14:01
*/
public interface BrandMerchantService {
/**
* 进件申请
*
* @param params 请求参数
*/
void apply(ApplyBrandMerchantParams params);
}
package com.jiejing.fitness.finance.service.merchant.convert;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.toolkit.IdWorker;
import com.google.common.collect.Lists;
import com.jiejing.common.utils.crypt.AesUtil;
import com.jiejing.fitness.finance.api.enums.ApplyTypeEnums;
import com.jiejing.fitness.finance.repository.entity.BrandMerchantApply;
import com.jiejing.fitness.finance.service.merchant.params.ApplyBrandMerchantParams;
import com.jiejing.paycenter.api.merchant.request.ApplyMerchantRequest;
import com.jiejing.paycenter.common.enums.common.OpenStateEnums;
import com.jiejing.paycenter.common.enums.merchant.BusinessTypeEnums;
import com.jiejing.paycenter.common.enums.merchant.LicenseTypeEnums;
import com.jiejing.paycenter.common.enums.merchant.MccEnums;
import com.jiejing.paycenter.common.enums.merchant.PaySceneEnums;
import com.jiejing.paycenter.common.enums.merchant.SceneTypeEnums;
import com.jiejing.paycenter.common.model.Address;
import com.jiejing.paycenter.common.model.BankCard;
import com.jiejing.paycenter.common.model.BusinessInfo;
import com.jiejing.paycenter.common.model.Contact;
import com.jiejing.paycenter.common.model.Legal;
import com.jiejing.paycenter.common.model.License;
import com.jiejing.paycenter.common.model.SubChannelInfo;
import com.jiejing.studio.api.studio.vo.StudioVO;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
/**
* @author chengyubing
* @since 2024/2/20 16:46
*/
public class MerchantConvert {
private final static BigDecimal ALI_OFFLINE_FEE_RATE = new BigDecimal("0.38");
private final static BigDecimal WX_OFFLINE_FEE_RATE = new BigDecimal("0.38");
private final static List<SubChannelInfo> DEFAULT_SUB_CHANNELS = Lists.newArrayList(
SubChannelInfo.builder().scene(PaySceneEnums.ALI_OFFLINE).feeRate(ALI_OFFLINE_FEE_RATE).build(),
SubChannelInfo.builder().scene(PaySceneEnums.WX_OFFLINE_OFFICIAL).feeRate(WX_OFFLINE_FEE_RATE).build(),
SubChannelInfo.builder().scene(PaySceneEnums.WX_OFFLINE_MINI).feeRate(WX_OFFLINE_FEE_RATE).build()
);
public static ApplyMerchantRequest convertRequest(String channelNo, String applyNo, Long partyId,
ApplyBrandMerchantParams params) {
return ApplyMerchantRequest.builder()
.applyNo(applyNo)
.channelNo(channelNo)
.companyType(params.getCompanyType())
.merchantName(params.getMerchantName())
.shortName(params.getShortName())
.legal(convertLegal(params))
.bankCard(convertBankCard(params))
.license(convertLicense(params))
.business(convertBusiness(params))
.contact(convertContact(params))
.subChannels(DEFAULT_SUB_CHANNELS)
.resourceMap(params.getResourceInfo())
.build();
}
private static Contact convertContact(ApplyBrandMerchantParams params) {
return Contact.builder()
.contactName(params.getLegalName())
.contactPhone(params.getLegalPhone())
.contactEmail(params.getContactEmail())
.servicePhone(params.getLegalPhone())
.build();
}
private static BusinessInfo convertBusiness(ApplyBrandMerchantParams params) {
return BusinessInfo.builder()
.mcc(MccEnums.MCC_7941)
.businessType(BusinessTypeEnums.REALITY)
.sceneType(SceneTypeEnums.OFFLINE)
.businessAddress(Address.builder()
.province(params.getBusinessProvince())
.city(params.getBusinessCity())
.district(params.getBusinessDistrict())
.address(params.getBusinessAddress())
.build())
.build();
}
private static License convertLicense(ApplyBrandMerchantParams params) {
return License.builder()
.licenseCode(params.getLicenseCode())
.licenseType(LicenseTypeEnums.NATIONAL_LEGAL_MERGE)
.licenseExpireType(params.getLicenseExpireType())
.licenseStartDate(params.getLicenseStartDate())
.licenseEndDate(params.getLicenseEndDate())
.businessScope(params.getLicenseBusinessScope())
.foundDate(params.getLicenseFoundDate())
.registeredCapital("10000")
.licenseAddress(Address.builder()
.province(params.getLicenseProvince())
.city(params.getLicenseCity())
.district(params.getLicenseDistrict())
.address(params.getLicenseAddress())
.build())
.build();
}
private static BankCard convertBankCard(ApplyBrandMerchantParams params) {
return BankCard.builder()
.cardType(params.getBankCardType())
.cardNo(params.getBankCardNo())
.cardName(params.getBankCardName())
.phone(params.getBankPhone())
.certNo(params.getBankCertNo())
.certType(params.getBankCertType())
.baseDepositNo(params.getBankBaseDepositNo())
.certExpireType(params.getBankCertExpireType())
.certStartDate(params.getBankCertStartDate())
.certEndDate(params.getBankCertEndDate())
.bankCode(params.getBankCode())
.bankName(params.getBankName())
.branchName(params.getBankBranchName())
.branchCode(params.getBankBranchCode())
.cardAddress(Address.builder()
.province(params.getBankCardProvince())
.city(params.getBankCardCity())
.district(params.getBankCardDistrict())
.address(params.getBankCardAddress())
.build())
.build();
}
private static Legal convertLegal(ApplyBrandMerchantParams params) {
return Legal.builder()
.legalName(params.getLegalName())
.legalPhone(params.getLegalPhone())
.legalCertNo(params.getLegalCertNo())
.legalCertType(params.getLegalCertType())
.legalCertExpireType(params.getLegalCertExpireType())
.legalCertStartDate(params.getLegalCertStartDate())
.legalCertEndDate(params.getLegalCertEndDate())
.legalAddress(Address.builder()
.province(params.getLegalProvince())
.city(params.getLegalCity())
.district(params.getLegalDistrict())
.address(params.getLegalAddress())
.build())
.build();
}
public static BrandMerchantApply convertApply(ApplyBrandMerchantParams params, StudioVO studio,
BrandMerchantApply exist, String channel) {
long id = IdWorker.getId();
String salt = AesUtil.getSalt(8);
ApplyBrandMerchantParams encrypt = params.encrypt(salt);
return BrandMerchantApply.builder()
.id(id)
.applyNo(Long.toString(id))
.brandId(studio.getBrandId())
.studioId(encrypt.getStudioId())
.applyType(exist == null ? ApplyTypeEnums.OPEN : ApplyTypeEnums.RE_OPEN)
.channelNo(channel)
.merchantName(encrypt.getMerchantName())
.shortName(encrypt.getShortName())
.companyType(encrypt.getCompanyType())
.openState(OpenStateEnums.INIT)
.businessProvince(encrypt.getBusinessProvince())
.businessCity(encrypt.getBusinessCity())
.businessDistrict(encrypt.getBusinessDistrict())
.businessAddress(encrypt.getBusinessAddress())
.licenseCode(encrypt.getLicenseCode())
.licenseExpireType(encrypt.getLicenseExpireType())
.licenseStartDate(encrypt.getLicenseStartDate())
.licenseEndDate(encrypt.getLicenseEndDate())
.licenseBusinessScope(encrypt.getLicenseBusinessScope())
.licenseFoundDate(encrypt.getLicenseFoundDate())
.licenseProvince(encrypt.getLicenseProvince())
.licenseCity(encrypt.getLicenseCity())
.licenseDistrict(encrypt.getLicenseDistrict())
.licenseAddress(encrypt.getLicenseAddress())
.legalName(encrypt.getLegalName())
.legalCertNo(encrypt.getLegalCertNo())
.legalCertType(encrypt.getLegalCertType())
.legalCertExpireType(encrypt.getLegalCertExpireType())
.legalCertStartDate(encrypt.getLegalCertStartDate())
.legalCertEndDate(encrypt.getLegalCertEndDate())
.legalPhone(encrypt.getLegalPhone())
.legalProvince(encrypt.getLegalProvince())
.legalCity(encrypt.getLegalCity())
.legalDistrict(encrypt.getLegalDistrict())
.legalAddress(encrypt.getLegalAddress())
.contactEmail(encrypt.getContactEmail())
.bankCardType(encrypt.getBankCardType())
.bankCardNo(encrypt.getBankCardNo())
.bankCardName(encrypt.getBankCardName())
.bankPhone(encrypt.getBankPhone())
.bankCertNo(encrypt.getBankCertNo())
.bankCertType(encrypt.getBankCertType())
.bankCertExpireType(encrypt.getBankCertExpireType())
.bankCertStartDate(encrypt.getBankCertStartDate())
.bankCertEndDate(encrypt.getBankCertEndDate())
.bankBaseDepositNo(encrypt.getBankBaseDepositNo())
.bankCode(encrypt.getBankCode())
.bankName(encrypt.getBankName())
.bankBranchName(encrypt.getBankBranchName())
.bankBranchCode(encrypt.getBankBranchCode())
.bankCardProvince(encrypt.getBankCardProvince())
.bankCardCity(encrypt.getBankCardCity())
.bankCardDistrict(encrypt.getBankCardDistrict())
.bankCardAddress(encrypt.getBankCardAddress())
.resourceInfo(JSON.toJSONString(encrypt.getResourceInfo()))
.salt(salt)
.createTime(new Date())
.updateTime(new Date())
.build();
}
}
package com.jiejing.fitness.finance.service.merchant.impl;
import com.jiejing.fitness.finance.repository.entity.BrandMerchantApply;
import com.jiejing.fitness.finance.repository.service.BrandMerchantApplyRpService;
import com.jiejing.fitness.finance.service.merchant.BrandMerchantService;
import com.jiejing.fitness.finance.service.merchant.convert.MerchantConvert;
import com.jiejing.fitness.finance.service.merchant.params.ApplyBrandMerchantParams;
import com.jiejing.fitness.finance.service.rpc.MerchantRpcService;
import com.jiejing.fitness.finance.service.rpc.StudioRpcService;
import com.jiejing.paycenter.api.merchant.request.ApplyMerchantRequest;
import com.jiejing.paycenter.common.enums.common.OpenStateEnums;
import com.jiejing.studio.api.studio.vo.StudioVO;
import javax.annotation.Resource;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
/**
* 品牌商户服务
*
* @author chengyubing
* @since 2024/2/20 14:01
*/
@Slf4j
@Service
public class BrandMerchantServiceImpl implements BrandMerchantService {
@Value("${finance.brand.merchant.channel}")
private String channel;
@Resource
private StudioRpcService studioRpcService;
@Resource
private MerchantRpcService merchantRpcService;
@Resource
private BrandMerchantApplyRpService brandMerchantApplyRpService;
@Override
public void apply(ApplyBrandMerchantParams params) {
StudioVO studio = studioRpcService.getStudio(params.getStudioId());
BrandMerchantApply exist = brandMerchantApplyRpService.getLatestOneSuccessByBrandId(studio.getBrandId());
BrandMerchantApply apply = MerchantConvert.convertApply(params, studio, exist, channel);
try {
brandMerchantApplyRpService.insert(apply);
ApplyMerchantRequest request = MerchantConvert.convertRequest(channel, apply.getApplyNo(),
studio.getBrandId(), params);
merchantRpcService.apply(request);
} catch (Exception e) {
brandMerchantApplyRpService.updateById(
BrandMerchantApply.builder().id(apply.getId()).openState(OpenStateEnums.FAIL)
.openFailMessage(e.getMessage()).build());
}
}
}
package com.jiejing.fitness.finance.service.merchant.params;
import com.alibaba.fastjson.JSON;
import com.jiejing.common.utils.convert.BeanUtil;
import com.jiejing.common.utils.crypt.AesUtil;
import com.jiejing.paycenter.common.enums.merchant.CardTypeEnums;
import com.jiejing.paycenter.common.enums.merchant.CertTypeEnums;
import com.jiejing.paycenter.common.enums.merchant.CompanyTypeEnums;
import com.jiejing.paycenter.common.enums.merchant.ExpireTypeEnums;
import com.jiejing.paycenter.common.enums.merchant.ResourceTypeEnums;
import com.jiejing.paycenter.common.model.ResourceInfo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.util.Date;
import java.util.List;
import java.util.Map;
import javax.validation.Valid;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* 品牌申请商户请求
*
* @author chengyubing
* @since 2024/2/20 14:03
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@ApiModel(description = "申请品牌商户请求信息")
public class ApplyBrandMerchantParams {
@ApiModelProperty(value = "场馆ID", required = true)
@NotNull(message = "场馆ID不能为空")
private Long studioId;
@ApiModelProperty(value = "商户名称", required = true)
@NotBlank(message = "商户名称不能为空")
private String merchantName;
@ApiModelProperty(value = "商户简称", required = true)
@NotBlank(message = "商户简称不能为空")
private String shortName;
@ApiModelProperty(value = "企业类型", required = true)
@NotNull(message = "企业类型不能为空")
private CompanyTypeEnums companyType;
@ApiModelProperty(value = "经营地址:省", required = true)
@NotBlank(message = "经营地址不能为空")
private String businessProvince;
@ApiModelProperty(value = "经营地址:市", required = true)
@NotBlank(message = "经营地址不能为空")
private String businessCity;
@ApiModelProperty(value = "经营地址:区", required = true)
@NotBlank(message = "经营地址不能为空")
private String businessDistrict;
@ApiModelProperty(value = "经营详细地址", required = true)
@NotBlank(message = "经营地址不能为空")
private String businessAddress;
@ApiModelProperty(value = "营业执照编号", required = true)
@NotBlank(message = "营业执照编号不能为空")
private String licenseCode;
@ApiModelProperty(value = "营业执照有效期类型", required = true)
@NotNull(message = "营业执照有效期类型不能为空")
private ExpireTypeEnums licenseExpireType;
@ApiModelProperty(value = "营业执照有效期开始日期", required = true)
@NotNull(message = "营业执照有效期开始日期不能为空")
private Date licenseStartDate;
@ApiModelProperty(value = "营业执照有效期截止日期")
private Date licenseEndDate;
@ApiModelProperty(value = "营业护照规定的经营范围", required = true)
@NotBlank(message = "经营范围不能为空")
private String licenseBusinessScope;
@ApiModelProperty(value = "营业执照成立时间", required = true)
@NotNull(message = "成立时间不能为空")
private Date licenseFoundDate;
@ApiModelProperty(value = "商户注册地址:省", required = true)
@NotBlank(message = "注册省不能为空")
private String licenseProvince;
@ApiModelProperty(value = "商户注册地址:市", required = true)
@NotBlank(message = "注册市不能为空")
private String licenseCity;
@ApiModelProperty(value = "商户注册地址:区", required = true)
@NotBlank(message = "注册区不能为空")
private String licenseDistrict;
@ApiModelProperty(value = "营业执照注册详细地址", required = true)
@NotBlank(message = "注册地址不能为空")
private String licenseAddress;
@ApiModelProperty(value = "法人姓名", required = true)
@NotBlank(message = "法人姓名不能为空")
private String legalName;
@ApiModelProperty(value = "法人证件号码", required = true)
@NotBlank(message = "法人证件号码不能为空")
private String legalCertNo;
@ApiModelProperty(value = "法人证件类型", required = true)
@NotNull(message = "法人证件类型不能为空")
private CertTypeEnums legalCertType;
@ApiModelProperty(value = "法人证件有效期类型", required = true)
@NotNull(message = "法人证件有效期类型不能为空")
private ExpireTypeEnums legalCertExpireType;
@ApiModelProperty(value = "法人证件有效期开始日期", required = true)
@NotNull(message = "法人证件有效期开始日期不能为空")
private Date legalCertStartDate;
@ApiModelProperty(value = "法人证件有效期截止日期")
private Date legalCertEndDate;
@ApiModelProperty(value = "法人手机号")
private String legalPhone;
@ApiModelProperty(value = "法人证件地址:省")
private String legalProvince;
@ApiModelProperty(value = "法人证件地址:市")
private String legalCity;
@ApiModelProperty(value = "法人证件地址:区")
private String legalDistrict;
@ApiModelProperty(value = "法人证件详细地址")
private String legalAddress;
@ApiModelProperty(value = "联系人邮箱", required = true)
@NotBlank(message = "联系人邮箱不能为空")
private String contactEmail;
@ApiModelProperty(value = "结算卡类型", required = true)
@NotNull(message = "结算卡类型不能为空")
private CardTypeEnums bankCardType;
@ApiModelProperty(value = "结算卡卡号", required = true)
@NotBlank(message = "结算卡卡号不能为空")
private String bankCardNo;
@ApiModelProperty(value = "银行卡账户名(对私卡:持卡人姓名;对公卡:营业执照名称)", required = true)
@NotBlank(message = "结算卡账户名不能为空")
private String bankCardName;
@ApiModelProperty(value = "持卡人手机号", notes = "对私卡必填")
private String bankPhone;
@ApiModelProperty(value = "结算卡证件号码(对私卡:持卡人身份证;对公卡:营业执照号)", required = true)
@NotBlank(message = "结算卡证件号码不能为空")
private String bankCertNo;
@ApiModelProperty(value = "结算卡持卡人证件类型", required = true)
@NotNull(message = "证件类型不能为空")
private CertTypeEnums bankCertType;
@ApiModelProperty(value = "结算卡证件有效期类型", notes = "对私卡必填")
private ExpireTypeEnums bankCertExpireType;
@ApiModelProperty(value = "持卡人证件有效期开始日期", notes = "对私卡必填")
private Date bankCertStartDate;
@ApiModelProperty(value = "持卡人证件有效期截止日期")
private Date bankCertEndDate;
@ApiModelProperty(value = "基本存款账户编号|开户许可证核准号", notes = "对公卡必填")
private String bankBaseDepositNo;
@ApiModelProperty(value = "银行编码", notes = "对公卡必填")
private String bankCode;
@ApiModelProperty(value = "bankName", notes = "对公卡必填")
private String bankName;
@ApiModelProperty(value = "支行名称", notes = "对公卡必填")
private String bankBranchName;
@ApiModelProperty(value = "支行号", notes = "对公卡必填")
private String bankBranchCode;
@ApiModelProperty(value = "结算卡开卡地址:省")
private String bankCardProvince;
@ApiModelProperty(value = "结算卡开卡地址:市")
private String bankCardCity;
@ApiModelProperty(value = "结算卡开卡地址:区")
private String bankCardDistrict;
@ApiModelProperty(value = "结算卡开卡详细地址")
private String bankCardAddress;
@ApiModelProperty(value = "资源信息", required = true)
@NotEmpty(message = "资源信息不能为空")
@Valid
private Map<ResourceTypeEnums, ResourceInfo> resourceInfo;
public ApplyBrandMerchantParams encrypt(String salt) {
ApplyBrandMerchantParams copy = JSON.parseObject(JSON.toJSONString(this), ApplyBrandMerchantParams.class);
if (null != copy.getBankCardNo()) {
copy.setBankCardNo(AesUtil.encrypt(salt, copy.getBankCardNo()));
}
if (null != copy.getBankCertNo()) {
copy.setBankCertNo(AesUtil.encrypt(salt, copy.getBankCertNo()));
}
if (null != copy.getBankBaseDepositNo()) {
copy.setBankBaseDepositNo(AesUtil.encrypt(salt, copy.getBankBaseDepositNo()));
}
if (null != copy.getLegalCertNo()) {
copy.setLegalCertNo(AesUtil.encrypt(salt, copy.getLegalCertNo()));
}
if (null != copy.getLicenseCode()) {
copy.setLicenseCode(AesUtil.encrypt(salt, copy.getLicenseCode()));
}
return copy;
}
}
package com.jiejing.fitness.finance.service.rpc;
import com.jiejing.common.model.JsonResult;
import com.jiejing.paycenter.api.merchant.MerchantApi;
import com.jiejing.paycenter.api.merchant.request.ApplyMerchantRequest;
import com.jiejing.paycenter.api.merchant.vo.ApplyMerchantResultVO;
import javax.annotation.Resource;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
/**
* @author chengyubing
* @since 2024/2/20 16:39
*/
@Slf4j
@Service
public class MerchantRpcService {
@Resource
private MerchantApi merchantApi;
public ApplyMerchantResultVO apply(ApplyMerchantRequest request) {
JsonResult<ApplyMerchantResultVO> result = merchantApi.apply(request);
result.assertSuccess();
return result.getResult();
}
}
package com.jiejing.fitness.finance.service.rpc;
import com.jiejing.common.model.JsonResult;
import com.jiejing.common.request.IdRequest;
import com.jiejing.studio.api.studio.StudioApi;
import com.jiejing.studio.api.studio.vo.StudioVO;
import javax.annotation.Resource;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
/**
* @author chengyubing
* @since 2024/2/20 16:52
*/
@Slf4j
@Service
public class StudioRpcService {
@Resource
private StudioApi studioApi;
public StudioVO getStudio(Long studioId) {
JsonResult<StudioVO> result = studioApi.getStudio(IdRequest.builder().id(studioId).build());
result.assertSuccess();
return result.getResult();
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment