fix:开店流程网商开通失败标识缓存;小程序账户列表返回对象修改;根据门店编码查询开通基础信息逻辑修改;网商账户提交逻辑修改;
feat:网商激活接口
This commit is contained in:
@@ -291,7 +291,12 @@ public class RedisConstant {
|
||||
public static final String HUO_MA_TOKEN= "huo_ma_token:{0}";
|
||||
|
||||
/**
|
||||
* 钱包开通失败原因 wallet_open_fail:storeId:1/2 1平安/2网商
|
||||
* 钱包开通失败/打标失败原因 wallet_open_fail:storeId:1/2 1平安/2网商
|
||||
*/
|
||||
public static final String WALLET_OPEN_FAIL = "wallet_open_fail:{0}:{1}";
|
||||
|
||||
/**
|
||||
* 打标接口创建网商账户失败标识 wallet_online_bank_tag_fail:storeId
|
||||
*/
|
||||
public static final String WALLET_ONLINE_BANK_TAG_FAIL = "wallet_online_bank_tag_fail:{0}";
|
||||
}
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
package com.cool.store.enums.wechat;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 钱包类型
|
||||
* </p>
|
||||
*
|
||||
* @author wangff
|
||||
* @since 2025/11/20
|
||||
*/
|
||||
@Getter
|
||||
@AllArgsConstructor
|
||||
public enum WalletTypeEnum {
|
||||
|
||||
PING_AN(1, "平安银行"),
|
||||
ONLINE_BANK(2, "网商银行"),
|
||||
;
|
||||
|
||||
private final Integer type;
|
||||
|
||||
private final String desc;
|
||||
}
|
||||
@@ -2,9 +2,12 @@ package com.cool.store.dao.wallet;
|
||||
|
||||
import com.cool.store.entity.wallet.OpenBankInfoDO;
|
||||
import com.cool.store.mapper.wallet.OpenBankInfoMapper;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.stereotype.Repository;
|
||||
import tk.mybatis.mapper.entity.Example;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.Objects;
|
||||
|
||||
/**
|
||||
* @Author suzhuhong
|
||||
@@ -30,5 +33,20 @@ public class OpenBankInfoDAO {
|
||||
return openBankInfoMapper.getOpenBankInfo(storeCode);
|
||||
}
|
||||
|
||||
|
||||
public OpenBankInfoDO getOpenBankInfoByStoreId(String storeId) {
|
||||
return openBankInfoMapper.selectOne(OpenBankInfoDO.builder().storeId(storeId).build());
|
||||
}
|
||||
|
||||
public int insertOrUpdateByStoreId(OpenBankInfoDO openBankInfoDO) {
|
||||
if (StringUtils.isBlank(openBankInfoDO.getStoreId())) {
|
||||
return 0;
|
||||
}
|
||||
if (Objects.isNull(getOpenBankInfo(openBankInfoDO.getStoreId()))) {
|
||||
return openBankInfoMapper.insertSelective(openBankInfoDO);
|
||||
} else {
|
||||
Example example = new Example(OpenBankInfoDO.class);
|
||||
example.createCriteria().andEqualTo("storeId", openBankInfoDO.getStoreId());
|
||||
return openBankInfoMapper.updateByExampleSelective(openBankInfoDO, example);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
WARNING - @mbg.generated
|
||||
-->
|
||||
<result column="store_code" jdbcType="VARCHAR" property="storeCode" />
|
||||
<result column="store_id" jdbcType="VARCHAR" property="storeId" />
|
||||
<result column="signer_name" jdbcType="VARCHAR" property="signerName" />
|
||||
<result column="signer_id_card" jdbcType="VARCHAR" property="signerIdCard" />
|
||||
<result column="signer_phone" jdbcType="VARCHAR" property="signerPhone" />
|
||||
@@ -24,6 +25,7 @@
|
||||
<result column="bank_branch_name" jdbcType="VARCHAR" property="bankBranchName" />
|
||||
<result column="bank_branch_code" jdbcType="VARCHAR" property="bankBranchCode" />
|
||||
<result column="bank_reserved_phone" jdbcType="VARCHAR" property="bankReservedPhone" />
|
||||
<result column="source" jdbcType="TINYINT" property="source" />
|
||||
</resultMap>
|
||||
|
||||
<select id="getOpenBankInfo" resultMap="BaseResultMap">
|
||||
@@ -33,6 +35,9 @@
|
||||
<update id="updateByStoreCode" parameterType="com.cool.store.entity.wallet.OpenBankInfoDO">
|
||||
UPDATE zxjp_open_bank_info
|
||||
<set>
|
||||
<if test="dto.storeId != null and dto.storeId != ''">
|
||||
store_id = #{dto.storeId},
|
||||
</if>
|
||||
<if test="dto.signerName != null and dto.signerName != ''">
|
||||
signer_name = #{dto.signerName},
|
||||
</if>
|
||||
@@ -87,6 +92,9 @@
|
||||
<if test="dto.bankReservedPhone != null and dto.bankReservedPhone != ''">
|
||||
bank_reserved_phone = #{dto.bankReservedPhone},
|
||||
</if>
|
||||
<if test="dto.source != null">
|
||||
source = #{dto.source},
|
||||
</if>
|
||||
</set>
|
||||
WHERE store_code = #{dto.storeCode}
|
||||
</update>
|
||||
|
||||
@@ -16,6 +16,9 @@ public class OpenBasicInfoDTO {
|
||||
@ApiModelProperty(value = "门店编号")
|
||||
private String storeCode;
|
||||
|
||||
@ApiModelProperty("门店id")
|
||||
private String storeId;
|
||||
|
||||
/**
|
||||
* 签约人名称
|
||||
*/
|
||||
@@ -106,8 +109,8 @@ public class OpenBasicInfoDTO {
|
||||
@ApiModelProperty(value = "银行预留手机号")
|
||||
private String bankReservedPhone;
|
||||
|
||||
|
||||
|
||||
@ApiModelProperty("来源,开通流程传1,其他0")
|
||||
private Integer source;
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
package com.cool.store.dto.wallet;
|
||||
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 网商激活短链DTO
|
||||
* </p>
|
||||
*
|
||||
* @author wangff
|
||||
* @since 2025/11/20
|
||||
*/
|
||||
@Data
|
||||
public class TextMsgSendDTO {
|
||||
@ApiModelProperty("crm门店id")
|
||||
private String outStoreId;
|
||||
|
||||
@ApiModelProperty("H5 激活页短链(商户需访问此链接完成操作,非公网可直接访问需确认权限)")
|
||||
private String activityUrl;
|
||||
|
||||
@ApiModelProperty("短链失效时间(格式:YYYY-MM-DD HH:mm:ss,过期后需重新调用接口生成)")
|
||||
private String expireTime;
|
||||
}
|
||||
@@ -1,9 +1,18 @@
|
||||
package com.cool.store.entity.wallet;
|
||||
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import javax.persistence.*;
|
||||
|
||||
@Table(name = "zxjp_open_bank_info")
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@Builder
|
||||
public class OpenBankInfoDO {
|
||||
/**
|
||||
* 门店编号
|
||||
@@ -11,6 +20,12 @@ public class OpenBankInfoDO {
|
||||
@Column(name = "store_code")
|
||||
private String storeCode;
|
||||
|
||||
/**
|
||||
* 门店id
|
||||
*/
|
||||
@Column(name = "store_id")
|
||||
private String storeId;
|
||||
|
||||
/**
|
||||
* 签约人名称
|
||||
*/
|
||||
@@ -119,318 +134,9 @@ public class OpenBankInfoDO {
|
||||
@Column(name = "bank_reserved_phone")
|
||||
private String bankReservedPhone;
|
||||
|
||||
|
||||
public String getLegalName() {
|
||||
return legalName;
|
||||
}
|
||||
|
||||
public void setLegalName(String legalName) {
|
||||
this.legalName = legalName;
|
||||
}
|
||||
|
||||
public String getLegalIdCard() {
|
||||
return legalIdCard;
|
||||
}
|
||||
|
||||
public void setLegalIdCard(String legalIdCard) {
|
||||
this.legalIdCard = legalIdCard;
|
||||
}
|
||||
|
||||
public String getLegalPhone() {
|
||||
return legalPhone;
|
||||
}
|
||||
|
||||
public void setLegalPhone(String legalPhone) {
|
||||
this.legalPhone = legalPhone;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取门店编号
|
||||
*
|
||||
* @return store_code - 门店编号
|
||||
* 来源,开通流程传1,其他0
|
||||
*/
|
||||
public String getStoreCode() {
|
||||
return storeCode;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置门店编号
|
||||
*
|
||||
* @param storeCode 门店编号
|
||||
*/
|
||||
public void setStoreCode(String storeCode) {
|
||||
this.storeCode = storeCode;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取签约人名称
|
||||
*
|
||||
* @return signer_name - 签约人名称
|
||||
*/
|
||||
public String getSignerName() {
|
||||
return signerName;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置签约人名称
|
||||
*
|
||||
* @param signerName 签约人名称
|
||||
*/
|
||||
public void setSignerName(String signerName) {
|
||||
this.signerName = signerName;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取签约人身份证号码
|
||||
*
|
||||
* @return signer_id_card - 签约人身份证号码
|
||||
*/
|
||||
public String getSignerIdCard() {
|
||||
return signerIdCard;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置签约人身份证号码
|
||||
*
|
||||
* @param signerIdCard 签约人身份证号码
|
||||
*/
|
||||
public void setSignerIdCard(String signerIdCard) {
|
||||
this.signerIdCard = signerIdCard;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取签约人手机号
|
||||
*
|
||||
* @return signer_phone - 签约人手机号
|
||||
*/
|
||||
public String getSignerPhone() {
|
||||
return signerPhone;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置签约人手机号
|
||||
*
|
||||
* @param signerPhone 签约人手机号
|
||||
*/
|
||||
public void setSignerPhone(String signerPhone) {
|
||||
this.signerPhone = signerPhone;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取签约人身份证正面
|
||||
*
|
||||
* @return signer_id_card_front - 签约人身份证正面
|
||||
*/
|
||||
public String getSignerIdCardFront() {
|
||||
return signerIdCardFront;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置签约人身份证正面
|
||||
*
|
||||
* @param signerIdCardFront 签约人身份证正面
|
||||
*/
|
||||
public void setSignerIdCardFront(String signerIdCardFront) {
|
||||
this.signerIdCardFront = signerIdCardFront;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取签约人身份证反面
|
||||
*
|
||||
* @return signer_id_card_back - 签约人身份证反面
|
||||
*/
|
||||
public String getSignerIdCardBack() {
|
||||
return signerIdCardBack;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置签约人身份证反面
|
||||
*
|
||||
* @param signerIdCardBack 签约人身份证反面
|
||||
*/
|
||||
public void setSignerIdCardBack(String signerIdCardBack) {
|
||||
this.signerIdCardBack = signerIdCardBack;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取营业执照名字
|
||||
*
|
||||
* @return business_license_name - 营业执照名字
|
||||
*/
|
||||
public String getBusinessLicenseName() {
|
||||
return businessLicenseName;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置营业执照名字
|
||||
*
|
||||
* @param businessLicenseName 营业执照名字
|
||||
*/
|
||||
public void setBusinessLicenseName(String businessLicenseName) {
|
||||
this.businessLicenseName = businessLicenseName;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取营业执照社会信用代码
|
||||
*
|
||||
* @return business_license_code - 营业执照社会信用代码
|
||||
*/
|
||||
public String getBusinessLicenseCode() {
|
||||
return businessLicenseCode;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置营业执照社会信用代码
|
||||
*
|
||||
* @param businessLicenseCode 营业执照社会信用代码
|
||||
*/
|
||||
public void setBusinessLicenseCode(String businessLicenseCode) {
|
||||
this.businessLicenseCode = businessLicenseCode;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取营业执照照片
|
||||
*
|
||||
* @return business_license_photo - 营业执照照片
|
||||
*/
|
||||
public String getBusinessLicensePhoto() {
|
||||
return businessLicensePhoto;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置营业执照照片
|
||||
*
|
||||
* @param businessLicensePhoto 营业执照照片
|
||||
*/
|
||||
public void setBusinessLicensePhoto(String businessLicensePhoto) {
|
||||
this.businessLicensePhoto = businessLicensePhoto;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取法人是否签约人
|
||||
*
|
||||
* @return legal_is_signer - 法人是否签约人
|
||||
*/
|
||||
public Integer getLegalIsSigner() {
|
||||
return legalIsSigner;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置法人是否签约人
|
||||
*
|
||||
* @param legalIsSigner 法人是否签约人
|
||||
*/
|
||||
public void setLegalIsSigner(Integer legalIsSigner) {
|
||||
this.legalIsSigner = legalIsSigner;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取法人身份证正面
|
||||
*
|
||||
* @return legal_id_card_front - 法人身份证正面
|
||||
*/
|
||||
public String getLegalIdCardFront() {
|
||||
return legalIdCardFront;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置法人身份证正面
|
||||
*
|
||||
* @param legalIdCardFront 法人身份证正面
|
||||
*/
|
||||
public void setLegalIdCardFront(String legalIdCardFront) {
|
||||
this.legalIdCardFront = legalIdCardFront;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取法人身份证反面
|
||||
*
|
||||
* @return legal_id_card_back - 法人身份证反面
|
||||
*/
|
||||
public String getLegalIdCardBack() {
|
||||
return legalIdCardBack;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置法人身份证反面
|
||||
*
|
||||
* @param legalIdCardBack 法人身份证反面
|
||||
*/
|
||||
public void setLegalIdCardBack(String legalIdCardBack) {
|
||||
this.legalIdCardBack = legalIdCardBack;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取结算卡
|
||||
*
|
||||
* @return settlement_card - 结算卡
|
||||
*/
|
||||
public String getSettlementCard() {
|
||||
return settlementCard;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置结算卡
|
||||
*
|
||||
* @param settlementCard 结算卡
|
||||
*/
|
||||
public void setSettlementCard(String settlementCard) {
|
||||
this.settlementCard = settlementCard;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取开户支行名称
|
||||
*
|
||||
* @return bank_branch_name - 开户支行名称
|
||||
*/
|
||||
public String getBankBranchName() {
|
||||
return bankBranchName;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置开户支行名称
|
||||
*
|
||||
* @param bankBranchName 开户支行名称
|
||||
*/
|
||||
public void setBankBranchName(String bankBranchName) {
|
||||
this.bankBranchName = bankBranchName;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取开户支行编号
|
||||
*
|
||||
* @return bank_branch_code - 开户支行编号
|
||||
*/
|
||||
public String getBankBranchCode() {
|
||||
return bankBranchCode;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置开户支行编号
|
||||
*
|
||||
* @param bankBranchCode 开户支行编号
|
||||
*/
|
||||
public void setBankBranchCode(String bankBranchCode) {
|
||||
this.bankBranchCode = bankBranchCode;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取银行预留手机号
|
||||
*
|
||||
* @return bank_reserved_phone - 银行预留手机号
|
||||
*/
|
||||
public String getBankReservedPhone() {
|
||||
return bankReservedPhone;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置银行预留手机号
|
||||
*
|
||||
* @param bankReservedPhone 银行预留手机号
|
||||
*/
|
||||
public void setBankReservedPhone(String bankReservedPhone) {
|
||||
this.bankReservedPhone = bankReservedPhone;
|
||||
}
|
||||
|
||||
|
||||
@Column(name = "source")
|
||||
private Integer source;
|
||||
}
|
||||
@@ -67,15 +67,6 @@ public class AccountAddTagRequest {
|
||||
@ApiModelProperty(value = "营业执照图片链接", required = true)
|
||||
private String licensePhoto;
|
||||
|
||||
@ApiModelProperty(value = "签约人姓名", required = true)
|
||||
private String signatoryName;
|
||||
|
||||
@ApiModelProperty(value = "签约人身份证", required = true)
|
||||
private String signatoryNo;
|
||||
|
||||
@ApiModelProperty(value = "签约人联系电话", required = true)
|
||||
private String signatoryPhone;
|
||||
|
||||
@ApiModelProperty(value = "签约人证件人像面图片链接", required = true)
|
||||
private String signatoryPhotoA;
|
||||
|
||||
|
||||
@@ -10,6 +10,8 @@ import lombok.Data;
|
||||
*/
|
||||
@Data
|
||||
public class CoolOpenBasicInfoRequest {
|
||||
@ApiModelProperty(value = "门店id")
|
||||
private String storeId;
|
||||
|
||||
@ApiModelProperty(value = "门店编号")
|
||||
private String storeCode;
|
||||
|
||||
@@ -0,0 +1,22 @@
|
||||
package com.cool.store.request.wallet;
|
||||
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 网商账户重新发送激活短信Request
|
||||
* </p>
|
||||
*
|
||||
* @author wangff
|
||||
* @since 2025/11/20
|
||||
*/
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class TextMsgSendRequest {
|
||||
@ApiModelProperty("门店id")
|
||||
private String outStoreId;
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
package com.cool.store.vo.wallet;
|
||||
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 账户信息VO
|
||||
* </p>
|
||||
*
|
||||
* @author wangff
|
||||
* @since 2025/11/20
|
||||
*/
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class AccountDataVO {
|
||||
@ApiModelProperty("网商账户开通失败标识")
|
||||
private Boolean onlineBankOpenFail;
|
||||
|
||||
@ApiModelProperty("账户列表")
|
||||
private List<AccountInfoVO> accountList;
|
||||
}
|
||||
@@ -210,8 +210,14 @@ public class WalletApiService {
|
||||
return walletHttpClientRest.postWithSign(walletBaseUrl+"/open/crm/trans/v1/accRecordPage", request, TradeRecordListDTO.class);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 网商银行重新激活发送短链接
|
||||
* @param request 网商账户重新发送激活短信Request
|
||||
* @return 网商激活短链DTO
|
||||
*/
|
||||
public TextMsgSendDTO textMsgSend(TextMsgSendRequest request){
|
||||
return walletHttpClientRest.postWithSign(walletBaseUrl+"/open/crm/account/ws/v1/textMsgSend", request, TextMsgSendDTO.class);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -86,7 +86,7 @@ public interface WalletService {
|
||||
* @param request 账户查询Request
|
||||
* @return 账户信息VO列表
|
||||
*/
|
||||
List<AccountInfoVO> getAccountList(AccountQueryRequest request);
|
||||
AccountDataVO getAccountList(AccountQueryRequest request);
|
||||
|
||||
/**
|
||||
* 根据账户编号查询账户信息
|
||||
@@ -164,7 +164,7 @@ public interface WalletService {
|
||||
* @param storeCode
|
||||
* @return
|
||||
*/
|
||||
OpenBasicInfoDTO getOpenBasicInfo(String storeCode);
|
||||
OpenBasicInfoDTO getOpenBasicInfo(String storeId, String storeCode);
|
||||
|
||||
/**
|
||||
* 开通网商银行
|
||||
@@ -172,4 +172,11 @@ public interface WalletService {
|
||||
* @return
|
||||
*/
|
||||
Boolean openOnlineBankAccount(CoolOpenBasicInfoRequest request);
|
||||
|
||||
/**
|
||||
* 网商发送激活短信
|
||||
* @param request 门店idRequest
|
||||
* @return 是否成功
|
||||
*/
|
||||
Boolean onlineBankActive(StoreShopRequest request);
|
||||
}
|
||||
|
||||
@@ -20,7 +20,7 @@ import com.cool.store.enums.point.ShopSubStageEnum;
|
||||
import com.cool.store.enums.point.ShopSubStageStatusEnum;
|
||||
import com.cool.store.enums.wallet.BankAccountTypeEnum;
|
||||
import com.cool.store.enums.wallet.BankBusinessTypeEnum;
|
||||
import com.cool.store.enums.wallet.YztStoreModel;
|
||||
import com.cool.store.enums.wechat.WalletTypeEnum;
|
||||
import com.cool.store.exception.ServiceException;
|
||||
import com.cool.store.mapper.ApplyLicenseMapper;
|
||||
import com.cool.store.request.wallet.*;
|
||||
@@ -38,7 +38,6 @@ import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.sql.Date;
|
||||
import java.text.MessageFormat;
|
||||
import java.time.Duration;
|
||||
@@ -78,6 +77,16 @@ public class WalletServiceImpl implements WalletService {
|
||||
@Override
|
||||
public Boolean accountCreate(AccountCreateRequest request) {
|
||||
ShopInfoDO shopInfo = getAndVerifyShopAndStage(request.getShopId());
|
||||
// 存储银行卡信息
|
||||
OpenBankInfoDO openBankInfoDO = OpenBankInfoDO.builder()
|
||||
.storeId(shopInfo.getStoreId())
|
||||
.settlementCard(request.getBankNumber())
|
||||
.bankBranchName(request.getBankName())
|
||||
.bankBranchCode(request.getBankNo())
|
||||
.bankReservedPhone(request.getBankMobile())
|
||||
.source(1)
|
||||
.build();
|
||||
openBankInfoDAO.insertOrUpdateByStoreId(openBankInfoDO);
|
||||
// 调用 创建门店签约人账户接口
|
||||
CreateStoreAndAccountRequest accountRequest = CreateStoreAndAccountRequest.builder()
|
||||
.outStoreId(shopInfo.getStoreId())
|
||||
@@ -169,33 +178,27 @@ public class WalletServiceImpl implements WalletService {
|
||||
try {
|
||||
// 判断一下账户的开通状态
|
||||
if (enableAddTag(storeId)) {
|
||||
LineInfoDO lineInfoDO = lineInfoDAO.getLineInfo(lineId);
|
||||
QualificationsInfoDO qualificationsInfoDO = qualificationsInfoDAO.getByLineId(lineId);
|
||||
OpenBankInfoDO openBankInfo = getAndUpdateOpenBankInfo(storeId, lineId, license);
|
||||
// 调用 签约人账户打标(升级)接口
|
||||
log.info("营业执照已上传,账户打标");
|
||||
AccountAddTagRequest tagRequest = AccountAddTagRequest.builder()
|
||||
.outStoreId(storeId)
|
||||
.licenseNo(license.getCreditCode())
|
||||
.licenseName(license.getBusinessLicense())
|
||||
// .licenseExpire(Objects.nonNull(licenseTransactDO.getValidity()) ? CoolDateUtils.DateFormat(licenseTransactDO.getValidity(), "yyyy-MM-dd") : "2999-12-31")
|
||||
.legalName(license.getLicenseLegalPerson())
|
||||
.legalNo(license.getLicenseLegalIdCardNo())
|
||||
.legalPhone(license.getLicenseLegalMobile())
|
||||
.certPhotoA(license.getLicenseLegalIdCardFront())
|
||||
.certPhotoB(license.getLicenseLegalIdCardBack())
|
||||
.licensePhoto(license.getCreditUrl())
|
||||
.signatoryName(lineInfoDO.getUsername())
|
||||
.signatoryNo(qualificationsInfoDO.getIdCardNo())
|
||||
.signatoryPhone(lineInfoDO.getMobile())
|
||||
.signatoryPhotoA(qualificationsInfoDO.getFrontOfIdCard())
|
||||
.signatoryPhotoB(qualificationsInfoDO.getBackOfIdCard())
|
||||
.licenseNo(openBankInfo.getBusinessLicenseCode())
|
||||
.licenseName(openBankInfo.getBusinessLicenseName())
|
||||
.legalName(openBankInfo.getLegalName())
|
||||
.legalNo(openBankInfo.getLegalIdCard())
|
||||
.legalPhone(openBankInfo.getLegalPhone())
|
||||
.certPhotoA(openBankInfo.getLegalIdCardFront())
|
||||
.certPhotoB(openBankInfo.getLegalIdCardBack())
|
||||
.licensePhoto(openBankInfo.getBusinessLicensePhoto())
|
||||
.signatoryPhotoA(openBankInfo.getSignerIdCardFront())
|
||||
.signatoryPhotoB(openBankInfo.getSignerIdCardBack())
|
||||
.build();
|
||||
AddTagDTO addTagDTO = walletApiService.addTag(tagRequest);
|
||||
log.info("打标接口调用成功,response:{}", JSONObject.toJSONString(addTagDTO));
|
||||
executeAddTag(tagRequest);
|
||||
}
|
||||
} catch (ServiceException e) {
|
||||
// 平安打标 签约人和法人一致时,同步返回,失败原因从msg中取
|
||||
String key = MessageFormat.format(RedisConstant.WALLET_OPEN_FAIL, storeId, "1");
|
||||
String key = MessageFormat.format(RedisConstant.WALLET_OPEN_FAIL, storeId, WalletTypeEnum.PING_AN.getType());
|
||||
redisUtilPool.setString(key, e.getErrorCode().equals(1620003) ? e.getMessage() : "系统异常");
|
||||
log.info("营业执照已上传,接口异常", e);
|
||||
} catch (Exception e) {
|
||||
@@ -204,6 +207,45 @@ public class WalletServiceImpl implements WalletService {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 执行打标接口,执行失败缓存标记
|
||||
*/
|
||||
private void executeAddTag(AccountAddTagRequest tagRequest) {
|
||||
AddTagDTO addTagDTO = walletApiService.addTag(tagRequest);
|
||||
log.info("打标接口调用成功,response:{}", JSONObject.toJSONString(addTagDTO));
|
||||
// TODO: 如果网商创建失败,缓存标记
|
||||
if (false) {
|
||||
String key = MessageFormat.format(RedisConstant.WALLET_ONLINE_BANK_TAG_FAIL, tagRequest.getOutStoreId());
|
||||
redisUtilPool.setString(key, "1");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取并更新门店开通网商信息
|
||||
*/
|
||||
private OpenBankInfoDO getAndUpdateOpenBankInfo(String storeId, Long lineId, LicenseTransactDO license) {
|
||||
LineInfoDO lineInfoDO = lineInfoDAO.getLineInfo(lineId);
|
||||
QualificationsInfoDO qualificationsInfoDO = qualificationsInfoDAO.getByLineId(lineId);
|
||||
OpenBankInfoDO openBankInfoDO = OpenBankInfoDO.builder()
|
||||
.storeId(storeId)
|
||||
.signerName(lineInfoDO.getUsername())
|
||||
.signerIdCard(qualificationsInfoDO.getIdCardNo())
|
||||
.signerPhone(lineInfoDO.getMobile())
|
||||
.signerIdCardFront(qualificationsInfoDO.getFrontOfIdCard())
|
||||
.signerIdCardBack(qualificationsInfoDO.getBackOfIdCard())
|
||||
.businessLicenseName(license.getBusinessLicense())
|
||||
.businessLicenseCode(license.getCreditCode())
|
||||
.businessLicensePhoto(license.getCreditUrl())
|
||||
.legalName(license.getLicenseLegalPerson())
|
||||
.legalIdCard(license.getLicenseLegalIdCardNo())
|
||||
.legalPhone(license.getLicenseLegalMobile())
|
||||
.legalIdCardFront(license.getLicenseLegalIdCardFront())
|
||||
.legalIdCardBack(license.getLicenseLegalIdCardBack())
|
||||
.build();
|
||||
openBankInfoDAO.insertOrUpdateByStoreId(openBankInfoDO);
|
||||
return openBankInfoDO;
|
||||
}
|
||||
|
||||
/**
|
||||
* 账户存在且未打标
|
||||
*/
|
||||
@@ -215,7 +257,7 @@ public class WalletServiceImpl implements WalletService {
|
||||
@Override
|
||||
public Boolean addTagCallback(AddTagCallbackNoticeRequest request) {
|
||||
try {
|
||||
String key = MessageFormat.format(RedisConstant.WALLET_OPEN_FAIL, request.getOutStoreId(), "1");
|
||||
String key = MessageFormat.format(RedisConstant.WALLET_OPEN_FAIL, request.getOutStoreId(), WalletTypeEnum.PING_AN.getType());
|
||||
if (Integer.valueOf(2).equals(request.getStatus())) {
|
||||
redisUtilPool.setString(key, request.getErrorMsg());
|
||||
} else {
|
||||
@@ -246,6 +288,10 @@ public class WalletServiceImpl implements WalletService {
|
||||
} else {
|
||||
redisUtilPool.delKey(key);
|
||||
}
|
||||
// 如果创建成功,删除网商开通失败标识
|
||||
if (Integer.valueOf(4).equals(request.getAccountStatus())) {
|
||||
redisUtilPool.delKey(MessageFormat.format(RedisConstant.WALLET_ONLINE_BANK_TAG_FAIL, request.getOutStoreId()));
|
||||
}
|
||||
} catch (Exception e) {
|
||||
log.info("平安打标回调失败", e);
|
||||
}
|
||||
@@ -258,10 +304,10 @@ public class WalletServiceImpl implements WalletService {
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<AccountInfoVO> getAccountList(AccountQueryRequest request) {
|
||||
public AccountDataVO getAccountList(AccountQueryRequest request) {
|
||||
String storeId = getStoreId(request);
|
||||
List<AccountInfoDTO> accountInfo = walletApiService.getAccountInfo(new OutStoreIdRequest(storeId));
|
||||
return accountInfo.stream()
|
||||
List<AccountInfoVO> accountList = accountInfo.stream()
|
||||
.filter(v -> Objects.isNull(request.getWalletType()) || request.getWalletType().equals(v.getWalletType()))
|
||||
.map(v -> {
|
||||
AccountInfoVO vo = BeanUtil.toBean(v, AccountInfoVO.class);
|
||||
@@ -269,6 +315,11 @@ public class WalletServiceImpl implements WalletService {
|
||||
vo.setFailReason(redisUtilPool.getString(key));
|
||||
return vo;
|
||||
}).collect(Collectors.toList());
|
||||
boolean onlineBankOpenFail = false;
|
||||
if (WalletTypeEnum.ONLINE_BANK.getType().equals(request.getWalletType())) {
|
||||
onlineBankOpenFail = getOnlineBankFailTag(storeId);
|
||||
}
|
||||
return new AccountDataVO(onlineBankOpenFail, accountList);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -417,10 +468,15 @@ public class WalletServiceImpl implements WalletService {
|
||||
}
|
||||
|
||||
@Override
|
||||
public OpenBasicInfoDTO getOpenBasicInfo(String storeCode) {
|
||||
public OpenBasicInfoDTO getOpenBasicInfo(String storeId, String storeCode) {
|
||||
OpenBasicInfoDTO openBasicInfoDTO = new OpenBasicInfoDTO();
|
||||
//非首次提交 获取上次提交的信息 其他情况走主数据与营账通开通数据
|
||||
OpenBankInfoDO openBankInfo = openBankInfoDAO.getOpenBankInfo(storeCode);
|
||||
OpenBankInfoDO openBankInfo;
|
||||
if (StringUtils.isNotBlank(storeId)) {
|
||||
openBankInfo = openBankInfoDAO.getOpenBankInfoByStoreId(storeId);
|
||||
} else {
|
||||
openBankInfo = openBankInfoDAO.getOpenBankInfo(storeCode);
|
||||
}
|
||||
if (Objects.nonNull(openBankInfo)){
|
||||
openBasicInfoDTO.setSignerName(openBankInfo.getSignerName());
|
||||
openBasicInfoDTO.setSignerIdCard(openBankInfo.getSignerIdCard());
|
||||
@@ -475,6 +531,11 @@ public class WalletServiceImpl implements WalletService {
|
||||
}else {
|
||||
openBankInfoDAO.updateByStoreCode(openBankInfoDO);
|
||||
}
|
||||
// 如果是开店流程中网商开通失败,则重新调用打标接口
|
||||
if (getOnlineBankFailTag(request.getStoreId())) {
|
||||
onlineBankFailReOpen(request);
|
||||
return true;
|
||||
}
|
||||
OldStoreAccountCreateRequest oldStoreAccountCreateRequest = new OldStoreAccountCreateRequest();
|
||||
StoreDO store = storeDao.getByStoreNum(request.getStoreCode());
|
||||
oldStoreAccountCreateRequest.setOutStoreId(store.getStoreId());
|
||||
@@ -502,6 +563,43 @@ public class WalletServiceImpl implements WalletService {
|
||||
return Boolean.TRUE;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取开店流程网商银行开通失败标记
|
||||
*/
|
||||
private boolean getOnlineBankFailTag(String storeId) {
|
||||
String key = MessageFormat.format(RedisConstant.WALLET_ONLINE_BANK_TAG_FAIL, storeId);
|
||||
String flag = redisUtilPool.getString(key);
|
||||
return StringUtils.isNotBlank(flag);
|
||||
}
|
||||
|
||||
/**
|
||||
* 开通流程创建网商银行账户失败的情况下,重新开通
|
||||
*/
|
||||
private void onlineBankFailReOpen(CoolOpenBasicInfoRequest request) {
|
||||
log.info("网商钱包开通失败后重新提交打标接口");
|
||||
AccountAddTagRequest tagRequest = AccountAddTagRequest.builder()
|
||||
.outStoreId(request.getStoreId())
|
||||
.licenseNo(request.getBusinessLicenseCode())
|
||||
.licenseName(request.getBusinessLicenseName())
|
||||
.legalName(request.getLegalName())
|
||||
.legalNo(request.getLegalIdCard())
|
||||
.legalPhone(request.getLegalPhone())
|
||||
.certPhotoA(request.getLegalIdCardFront())
|
||||
.certPhotoB(request.getLegalIdCardBack())
|
||||
.licensePhoto(request.getBusinessLicensePhoto())
|
||||
.signatoryPhotoA(request.getSignerIdCardFront())
|
||||
.signatoryPhotoB(request.getSignerIdCardBack())
|
||||
.build();
|
||||
executeAddTag(tagRequest);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean onlineBankActive(StoreShopRequest request) {
|
||||
String storeId = getStoreId(request);
|
||||
walletApiService.textMsgSend(new TextMsgSendRequest(storeId));
|
||||
return true;
|
||||
}
|
||||
|
||||
public String getStoreId(StoreShopRequest request) {
|
||||
String storeId = request.getStoreId();
|
||||
if (StringUtils.isBlank(storeId) && Objects.nonNull(request.getShopId())) {
|
||||
|
||||
@@ -35,7 +35,7 @@ public class WalletController {
|
||||
@ApiOperation("账户列表")
|
||||
@GetMapping("/accountList")
|
||||
public ResponseResult<List<AccountInfoVO>> getAccountList(AccountQueryRequest request) {
|
||||
return ResponseResult.success(walletService.getAccountList(request));
|
||||
return ResponseResult.success(walletService.getAccountList(request).getAccountList());
|
||||
}
|
||||
|
||||
@ApiOperation("账户详情")
|
||||
|
||||
@@ -8,13 +8,14 @@ import com.cool.store.service.wallet.WalletService;
|
||||
import com.cool.store.vo.wallet.*;
|
||||
import com.github.pagehelper.PageInfo;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiImplicitParam;
|
||||
import io.swagger.annotations.ApiImplicitParams;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
@@ -58,7 +59,7 @@ public class MiniWalletController {
|
||||
|
||||
@ApiOperation("账户列表")
|
||||
@GetMapping("/accountList")
|
||||
public ResponseResult<List<AccountInfoVO>> getAccountList(AccountQueryRequest request) {
|
||||
public ResponseResult<AccountDataVO> getAccountList(AccountQueryRequest request) {
|
||||
return ResponseResult.success(walletService.getAccountList(request));
|
||||
}
|
||||
|
||||
@@ -111,8 +112,13 @@ public class MiniWalletController {
|
||||
}
|
||||
@ApiOperation("根据门店编码查询开通基础信息")
|
||||
@GetMapping("/getOpenBasicInfo")
|
||||
public ResponseResult<OpenBasicInfoDTO> getOpenBasicInfo(@NotBlank(message = "门店编码不能为空") String storeCode) {
|
||||
return ResponseResult.success(walletService.getOpenBasicInfo(storeCode));
|
||||
@ApiImplicitParams({
|
||||
@ApiImplicitParam(name = "storeId", value = "门店id", required = true, dataType = "String"),
|
||||
@ApiImplicitParam(name = "storeCode", value = "门店编号", required = true, dataType = "String"),
|
||||
})
|
||||
public ResponseResult<OpenBasicInfoDTO> getOpenBasicInfo(@NotBlank(message = "门店id不能为空") String storeId,
|
||||
@NotBlank(message = "门店编码不能为空") String storeCode) {
|
||||
return ResponseResult.success(walletService.getOpenBasicInfo(storeId, storeCode));
|
||||
}
|
||||
|
||||
@ApiOperation("提交开通")
|
||||
@@ -121,4 +127,10 @@ public class MiniWalletController {
|
||||
return ResponseResult.success(walletService.openOnlineBankAccount(request));
|
||||
}
|
||||
|
||||
|
||||
@ApiOperation("网商账户激活")
|
||||
@PostMapping("/onlineBankActive")
|
||||
public ResponseResult<Boolean> onlineBankActive(@RequestBody @Validated StoreShopRequest request) {
|
||||
return ResponseResult.success(walletService.onlineBankActive(request));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -403,7 +403,7 @@ public class TestController {
|
||||
@ApiOperation("根据门店编码查询开通基础信息")
|
||||
@GetMapping("/getOpenBasicInfo")
|
||||
public ResponseResult<OpenBasicInfoDTO> getOpenBasicInfo(@NotBlank(message = "门店编码不能为空") String storeCode) {
|
||||
return ResponseResult.success(walletService.getOpenBasicInfo(storeCode));
|
||||
return ResponseResult.success(walletService.getOpenBasicInfo(null, storeCode));
|
||||
}
|
||||
|
||||
@ApiOperation("提交开通")
|
||||
|
||||
Reference in New Issue
Block a user