提交
This commit is contained in:
91
jeepay-components/jeepay-components-db/pom.xml
Normal file
91
jeepay-components/jeepay-components-db/pom.xml
Normal file
@@ -0,0 +1,91 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion> <!-- POM模型版本 -->
|
||||
|
||||
<groupId>com.jeequan</groupId> <!-- 组织名, 类似于包名 -->
|
||||
<artifactId>jeepay-components-db</artifactId> <!-- 项目名称 -->
|
||||
<packaging>jar</packaging> <!-- 项目的最终打包类型/发布形式, 可选[jar, war, pom, maven-plugin]等 -->
|
||||
<version>${isys.version}</version> <!-- 项目当前版本号 -->
|
||||
<description>Jeepay计全支付系统 [jeepay-service]</description> <!-- 项目描述 -->
|
||||
<url>https://www.jeequan.com</url>
|
||||
|
||||
<parent>
|
||||
<groupId>com.jeequan</groupId>
|
||||
<artifactId>jeepay-components</artifactId>
|
||||
<version>Final</version>
|
||||
</parent>
|
||||
|
||||
<!-- 项目属性 -->
|
||||
<properties>
|
||||
<projectRootDir>${basedir}/../../</projectRootDir>
|
||||
</properties>
|
||||
|
||||
<!-- 项目依赖声明 -->
|
||||
<dependencies>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.jeequan</groupId>
|
||||
<artifactId>jeepay-components-core</artifactId>
|
||||
</dependency>
|
||||
|
||||
<!-- MySql 数据库连接包 -->
|
||||
<dependency>
|
||||
<groupId>mysql</groupId>
|
||||
<artifactId>mysql-connector-java</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.mapstruct</groupId>
|
||||
<artifactId>mapstruct</artifactId>
|
||||
</dependency>
|
||||
|
||||
<!-- Druid 连接池 -->
|
||||
<dependency>
|
||||
<groupId>com.alibaba</groupId>
|
||||
<artifactId>druid-spring-boot-starter</artifactId>
|
||||
<version>1.2.6</version>
|
||||
</dependency>
|
||||
|
||||
<!-- spring-aop : 自定义注解使用 -->
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-aop</artifactId>
|
||||
</dependency>
|
||||
|
||||
<!-- orm映射框架:mybatis-plus, 自动引入spring-tx -->
|
||||
<dependency>
|
||||
<groupId>com.baomidou</groupId>
|
||||
<artifactId>mybatis-plus-boot-starter</artifactId>
|
||||
</dependency>
|
||||
|
||||
<!-- Spring Security -->
|
||||
<dependency>
|
||||
<groupId>org.springframework.security</groupId>
|
||||
<artifactId>spring-security-core</artifactId>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.alibaba</groupId>
|
||||
<artifactId>easyexcel</artifactId>
|
||||
<version>2.1.6</version>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
<resources>
|
||||
<resource>
|
||||
<directory>src/main/resources</directory>
|
||||
</resource>
|
||||
<resource>
|
||||
<directory>src/main/java</directory>
|
||||
<includes>
|
||||
<include>**/*.xml</include>
|
||||
</includes><!-- maven可以将mapper.xml进行打包处理,否则仅对java文件处理 -->
|
||||
</resource>
|
||||
</resources>
|
||||
</build>
|
||||
|
||||
</project>
|
||||
@@ -0,0 +1,35 @@
|
||||
package com.jeequan.jeepay.converter;
|
||||
|
||||
import com.jeequan.jeepay.core.entity.IsvInfo;
|
||||
import com.jeequan.jeepay.core.entity.SysUser;
|
||||
import com.jeequan.jeepay.core.model.applyment.ApplymentSignInfo;
|
||||
import com.jeequan.jeepay.core.model.applyment.PaywayFee;
|
||||
import com.jeequan.jeepay.db.entity.IsvInfoEntity;
|
||||
import com.jeequan.jeepay.db.entity.SysUserEntity;
|
||||
import org.mapstruct.*;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
@Mapper(nullValuePropertyMappingStrategy = NullValuePropertyMappingStrategy.IGNORE)
|
||||
public interface BaseConverter {
|
||||
|
||||
@BeanMapping(builder = @Builder(disableBuilder = true))
|
||||
SysUser toModel(SysUserEntity sysUserEntity);
|
||||
|
||||
@BeanMapping(builder = @Builder(disableBuilder = true))
|
||||
SysUserEntity toDbEntity(SysUser model);
|
||||
|
||||
@BeanMapping(builder = @Builder(disableBuilder = true))
|
||||
IsvInfo toModel(IsvInfoEntity entity);
|
||||
@BeanMapping(builder = @Builder(disableBuilder = true))
|
||||
IsvInfoEntity toDbEntity(IsvInfo model);
|
||||
|
||||
@BeanMapping(builder = @Builder(disableBuilder = true))
|
||||
void cp(ApplymentSignInfo src, @MappingTarget ApplymentSignInfo dist);
|
||||
|
||||
@BeanMapping(builder = @Builder(disableBuilder = true))
|
||||
PaywayFee cp(PaywayFee paywayFee);
|
||||
|
||||
@BeanMapping(builder = @Builder(disableBuilder = true))
|
||||
Map<String, PaywayFee> newPaywayFeeMap(Map<String, PaywayFee> paywayFee);
|
||||
}
|
||||
@@ -0,0 +1,155 @@
|
||||
package com.jeequan.jeepay.converter;
|
||||
|
||||
import cn.hutool.core.util.DesensitizedUtil;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.jeequan.jeepay.core.entity.MchApplyment;
|
||||
import com.jeequan.jeepay.core.entity.MchStore;
|
||||
import com.jeequan.jeepay.core.entity.*;
|
||||
import com.jeequan.jeepay.core.model.applyment.MchModifyApplymentModel;
|
||||
import com.jeequan.jeepay.core.model.applyment.PaywayFee;
|
||||
import com.jeequan.jeepay.db.entity.*;
|
||||
import com.jeequan.jeepay.model.RateConfigSimple;
|
||||
import org.mapstruct.*;
|
||||
|
||||
@Mapper(nullValuePropertyMappingStrategy = NullValuePropertyMappingStrategy.IGNORE)
|
||||
public interface MchInfoConverter {
|
||||
|
||||
@BeanMapping(builder = @Builder(disableBuilder = true))
|
||||
MchAppEntity toDbEntity(MchApp mchApp);
|
||||
|
||||
@BeanMapping(builder = @Builder(disableBuilder = true))
|
||||
com.jeequan.jeepay.db.entity.MchStore toDbEntity(MchStore mchStore);
|
||||
|
||||
@BeanMapping(builder = @Builder(disableBuilder = true))
|
||||
MchApp toModel(MchAppEntity entity);
|
||||
|
||||
@BeanMapping(builder = @Builder(disableBuilder = true))
|
||||
MchApplyment toModel(com.jeequan.jeepay.db.entity.MchApplyment entity);
|
||||
|
||||
@BeanMapping(builder = @Builder(disableBuilder = true))
|
||||
com.jeequan.jeepay.db.entity.MchApplyment toDbEntity(MchApplyment entity);
|
||||
|
||||
@BeanMapping(builder = @Builder(disableBuilder = true))
|
||||
MchModifyApplyment toModel(MchModifyApplymentEntity entity);
|
||||
|
||||
|
||||
@BeanMapping(builder = @Builder(disableBuilder = true))
|
||||
MchStore toModel(com.jeequan.jeepay.db.entity.MchStore entity);
|
||||
|
||||
@BeanMapping(builder = @Builder(disableBuilder = true))
|
||||
@Mapping(target = "unionSearchId", ignore = true)
|
||||
@Mapping(target = "modifyModel", ignore = true)
|
||||
@Mapping(target = "merchantType", ignore = true)
|
||||
@Mapping(target = "mchFullName", ignore = true)
|
||||
@Mapping(target = "lastDate", ignore = true)
|
||||
@Mapping(target = "firstDate", ignore = true)
|
||||
@Mapping(target = "epUserId", ignore = true)
|
||||
@Mapping(target = "agentNo", ignore = true)
|
||||
MchModifyApplymentEntity toDbEntity(MchModifyApplyment entity);
|
||||
|
||||
@BeanMapping(builder = @Builder(disableBuilder = true))
|
||||
void cp(SettleInfo entity, @MappingTarget SettleInfo target);
|
||||
|
||||
@BeanMapping(builder = @Builder(disableBuilder = true))
|
||||
void cp(com.jeequan.jeepay.core.entity.MchApplyment srcData, @MappingTarget com.jeequan.jeepay.db.entity.MchApplyment target);
|
||||
|
||||
@BeanMapping(builder = @Builder(disableBuilder = true))
|
||||
void cp(com.jeequan.jeepay.db.entity.MchApplyment srcData, @MappingTarget com.jeequan.jeepay.core.entity.MchApplyment target);
|
||||
|
||||
@BeanMapping(builder = @Builder(disableBuilder = true))
|
||||
MchSubInfoEntity toDbEntity(MchSubInfo entity);
|
||||
|
||||
@BeanMapping(builder = @Builder(disableBuilder = true))
|
||||
MchSubInfo toModel(MchSubInfoEntity entity);
|
||||
|
||||
@BeanMapping(builder = @Builder(disableBuilder = true))
|
||||
MchSubInfo clone(MchSubInfo entity);
|
||||
|
||||
@BeanMapping(builder = @Builder(disableBuilder = true))
|
||||
@Mapping(target = "altId", ignore = true)
|
||||
@Mapping(target = "id", ignore = true)
|
||||
PayInterfaceConfig toConfig(MchPayInterfaceConfig alternative);
|
||||
|
||||
@BeanMapping(builder = @Builder(disableBuilder = true))
|
||||
@Mapping(target = "sort", ignore = true)
|
||||
@Mapping(target = "alias", ignore = true)
|
||||
@Mapping(target = "inUseFlag", ignore = true)
|
||||
@Mapping(target = "id", ignore = true)
|
||||
MchPayInterfaceConfig toMchConfig(PayInterfaceConfig config);
|
||||
|
||||
@BeanMapping(builder = @Builder(disableBuilder = true))
|
||||
void cp(RedPacketRule entity, @MappingTarget RedPacketRule target);
|
||||
|
||||
@BeanMapping(builder = @Builder(disableBuilder = true))
|
||||
@Mapping(target = "areaCode", ignore = true)
|
||||
@Mapping(target = "alipayShopCreateId", ignore = true)
|
||||
@Mapping(target = "createdAt", ignore = true)
|
||||
@Mapping(target = "updatedAt", ignore = true)
|
||||
@Mapping(target = "remark", ignore = true)
|
||||
void cp(com.jeequan.jeepay.db.entity.MchApplyment entity, @MappingTarget MchStore target);
|
||||
|
||||
@Mapping(target = "alipayShopStatus", ignore = true)
|
||||
@Mapping(target = "alipayShopId", ignore = true)
|
||||
@BeanMapping(builder = @Builder(disableBuilder = true))
|
||||
@Mapping(target = "areaCode", ignore = true)
|
||||
@Mapping(target = "alipayShopCreateId", ignore = true)
|
||||
@Mapping(target = "createdAt", ignore = true)
|
||||
@Mapping(target = "updatedAt", ignore = true)
|
||||
@Mapping(target = "remark", ignore = true)
|
||||
void cp(MchApplyment entity, @MappingTarget MchStore target);
|
||||
|
||||
@Mapping(target = "ext", ignore = true)
|
||||
@Mapping(target = "dateRange", ignore = true)
|
||||
@Mapping(target = "updatedAt", ignore = true)
|
||||
@Mapping(target = "range", ignore = true)
|
||||
@Mapping(target = "paywayFeeDetail", ignore = true)
|
||||
@Mapping(target = "mccCode", ignore = true)
|
||||
@Mapping(target = "isvNo", ignore = true)
|
||||
@Mapping(target = "infoType", ignore = true)
|
||||
@Mapping(target = "infoId", ignore = true)
|
||||
@Mapping(target = "ifCode", ignore = true)
|
||||
@Mapping(target = "createdAt", ignore = true)
|
||||
@BeanMapping(builder = @Builder(disableBuilder = true))
|
||||
RateConfig toRateConfig(PaywayFee paywayFee);
|
||||
|
||||
@BeanMapping(builder = @Builder(disableBuilder = true))
|
||||
@Mapping(target = "infoId", ignore = true)
|
||||
void cp(RateConfigSimple rateConfigSimple, @MappingTarget RateConfig rateConfig);
|
||||
|
||||
default void desensitized(MchModifyApplyment applyment) {
|
||||
if (applyment == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
/* 解析进件JSON信息 对关键信息进行脱敏 */
|
||||
JSONObject applymentJson = JSON.parseObject(applyment.getApplyDetailInfo());
|
||||
|
||||
/* 公共进件参数 */
|
||||
MchModifyApplymentModel model = applymentJson.toJavaObject(MchModifyApplymentModel.class);
|
||||
|
||||
applymentJson.put("settAccountNo", DesensitizedUtil.bankCard(model.getSettAccountNo()));
|
||||
applymentJson.put("settAccountName", DesensitizedUtil.chineseName(model.getSettAccountName()));
|
||||
applymentJson.put("settAccountIdcardNo", DesensitizedUtil.idCardNum(model.getSettAccountIdcardNo(),3, 4));
|
||||
|
||||
applyment.setApplyDetailInfo(applymentJson.toJSONString());
|
||||
}
|
||||
|
||||
default void desensitized(MchModifyApplymentEntity applyment) {
|
||||
if (applyment == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
/* 解析进件JSON信息 对关键信息进行脱敏 */
|
||||
JSONObject applymentJson = JSON.parseObject(applyment.getApplyDetailInfo());
|
||||
|
||||
/* 公共进件参数 */
|
||||
MchModifyApplymentModel model = applymentJson.toJavaObject(MchModifyApplymentModel.class);
|
||||
|
||||
applymentJson.put("settAccountNo", DesensitizedUtil.bankCard(model.getSettAccountNo()));
|
||||
applymentJson.put("settAccountName", DesensitizedUtil.chineseName(model.getSettAccountName()));
|
||||
applymentJson.put("settAccountIdcardNo", DesensitizedUtil.idCardNum(model.getSettAccountIdcardNo(),3, 4));
|
||||
|
||||
applyment.setApplyDetailInfo(applymentJson.toJSONString());
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,61 @@
|
||||
package com.jeequan.jeepay.converter;
|
||||
|
||||
import cn.hutool.core.util.DesensitizedUtil;
|
||||
import com.jeequan.jeepay.core.entity.TransferOrder;
|
||||
import com.jeequan.jeepay.core.entity.TransferWallet;
|
||||
import com.jeequan.jeepay.core.model.openapi.biz.transfer.TransferResp;
|
||||
import com.jeequan.jeepay.db.entity.TransferOrderEntity;
|
||||
import com.jeequan.jeepay.db.entity.TransferWalletEntity;
|
||||
import org.mapstruct.*;
|
||||
|
||||
/**
|
||||
* 代付相关实体类转换器
|
||||
*
|
||||
* @author deng
|
||||
* @since 2024/5/9
|
||||
*/
|
||||
@Mapper(nullValuePropertyMappingStrategy = NullValuePropertyMappingStrategy.IGNORE)
|
||||
public interface TransferConverter {
|
||||
|
||||
@BeanMapping(builder = @Builder(disableBuilder = true))
|
||||
TransferOrder toModel(TransferOrderEntity entity);
|
||||
|
||||
@Mapping(target = "ext", ignore = true)
|
||||
@Mapping(target = "dateRange", ignore = true)
|
||||
@BeanMapping(builder = @Builder(disableBuilder = true))
|
||||
TransferOrderEntity toDbEntity(TransferOrder model);
|
||||
|
||||
@BeanMapping(builder = @Builder(disableBuilder = true))
|
||||
TransferWallet toModel(TransferWalletEntity entity);
|
||||
|
||||
@BeanMapping(builder = @Builder(disableBuilder = true))
|
||||
TransferWalletEntity toDbEntity(TransferWallet entity);
|
||||
|
||||
@BeanMapping(builder = @Builder(disableBuilder = true))
|
||||
void cp(TransferOrder transferOrder, @MappingTarget TransferResp target);
|
||||
|
||||
@BeanMapping(builder = @Builder(disableBuilder = true))
|
||||
void cp(TransferOrderEntity transferOrder, @MappingTarget TransferResp target);
|
||||
|
||||
default void desensitized(TransferResp transferResp) {
|
||||
if (transferResp == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (transferResp.getOriginAccountNo() != null) {
|
||||
transferResp.setOriginAccountNo(DesensitizedUtil.bankCard(transferResp.getOriginAccountNo()));
|
||||
}
|
||||
|
||||
if (transferResp.getOriginAccountName() != null) {
|
||||
transferResp.setOriginAccountName(DesensitizedUtil.chineseName(transferResp.getOriginAccountName()));
|
||||
}
|
||||
|
||||
if (transferResp.getAccountNo() != null) {
|
||||
transferResp.setAccountNo(DesensitizedUtil.bankCard(transferResp.getAccountNo()));
|
||||
}
|
||||
|
||||
if (transferResp.getAccountName() != null) {
|
||||
transferResp.setAccountName(DesensitizedUtil.chineseName(transferResp.getAccountName()));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,102 @@
|
||||
package com.jeequan.jeepay.db.config.dynamic;
|
||||
|
||||
import cn.hutool.crypto.symmetric.AES;
|
||||
import com.jeequan.jeepay.core.constants.CS;
|
||||
import com.jeequan.jeepay.core.exception.BizException;
|
||||
import lombok.Data;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
/***
|
||||
* DB配置信息对象
|
||||
* 全部属性来自 DruidDataSource (Extends因初始化导致启动失败)
|
||||
* @author terrfly
|
||||
* @date 2022/3/8 10:37
|
||||
*/
|
||||
@Data
|
||||
@Slf4j
|
||||
public class DBProp {
|
||||
|
||||
/**
|
||||
* 加密对象
|
||||
**/
|
||||
private static final AES aes = new AES(CS.DB_PASSWD_DECRYPT_KEY.getBytes());
|
||||
|
||||
/**
|
||||
* 是否加密账号
|
||||
**/
|
||||
private Boolean encryptAccount;
|
||||
|
||||
private String url;
|
||||
private String username;
|
||||
private String password;
|
||||
private String driverClassName;
|
||||
private String dbType;
|
||||
private Integer initialSize;
|
||||
private Integer minIdle;
|
||||
private Integer maxActive;
|
||||
private Integer maxWait;
|
||||
private Boolean testWhileIdle;
|
||||
private Boolean testOnBorrow;
|
||||
private Boolean testOnReturn;
|
||||
private Integer timeBetweenEvictionRunsMillis;
|
||||
private Integer minEvictableIdleTimeMillis;
|
||||
private String validationQuery;
|
||||
private Boolean poolPreparedStatements;
|
||||
private Integer maxPoolPreparedStatementPerConnectionSize;
|
||||
private String filters;
|
||||
private String connectionProperties;
|
||||
|
||||
|
||||
public String getUsername() {
|
||||
|
||||
// 需要解密
|
||||
if (encryptAccount != null && encryptAccount) {
|
||||
|
||||
try {
|
||||
return aes.decryptStr(username);
|
||||
} catch (Exception e) {
|
||||
log.error("数据库[账号]解密失败,请检查加密数据或加密因子是否正确!", e);
|
||||
throw new BizException("数据库[账号]解密失败,请检查加密数据或加密因子是否正确!");
|
||||
}
|
||||
}
|
||||
|
||||
return username;
|
||||
}
|
||||
|
||||
public String getPassword() {
|
||||
|
||||
// 需要解密
|
||||
if (encryptAccount != null && encryptAccount) {
|
||||
|
||||
try {
|
||||
return aes.decryptStr(password);
|
||||
} catch (Exception e) {
|
||||
log.error("数据库[密码]解密失败,请检查加密数据或加密因子是否正确!", e);
|
||||
throw new BizException("数据库[密码]解密失败,请检查加密数据或加密因子是否正确!");
|
||||
}
|
||||
}
|
||||
|
||||
return password;
|
||||
}
|
||||
|
||||
|
||||
public static void main(String[] args) {
|
||||
|
||||
String text = "root";
|
||||
try {
|
||||
System.out.println("加密结果: " + text + " ==> " + aes.encryptHex(text));
|
||||
} catch (Exception e) {
|
||||
System.out.println("加密结果: " + text + " ==> 失败");
|
||||
}
|
||||
|
||||
String entryText = "1fc401e3949581c60fef3f62d539b434";
|
||||
try {
|
||||
System.out.println("解密结果: " + entryText + " ==> " + aes.decryptStr(entryText));
|
||||
} catch (Exception e) {
|
||||
System.out.println("解密结果: " + entryText + " ==> 失败");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,54 @@
|
||||
package com.jeequan.jeepay.db.config.dynamic;
|
||||
|
||||
import org.aspectj.lang.ProceedingJoinPoint;
|
||||
import org.aspectj.lang.annotation.Around;
|
||||
import org.aspectj.lang.annotation.Aspect;
|
||||
import org.aspectj.lang.annotation.Pointcut;
|
||||
import org.aspectj.lang.reflect.MethodSignature;
|
||||
import org.springframework.core.annotation.Order;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.lang.reflect.Method;
|
||||
|
||||
/**
|
||||
* 数据源切面
|
||||
*
|
||||
* @author terrfly
|
||||
* @date 2022/3/8 11:35
|
||||
*/
|
||||
@Component
|
||||
@Aspect
|
||||
@Order(0)
|
||||
public class DataSourceAspectj {
|
||||
|
||||
/**
|
||||
* 切入点
|
||||
*/
|
||||
@Pointcut("@annotation(com.jeequan.jeepay.db.config.dynamic.DataSourceSwitch)")
|
||||
public void dsPointCut() {
|
||||
}
|
||||
|
||||
/**
|
||||
* 围绕事件
|
||||
*/
|
||||
@Around("dsPointCut()")
|
||||
public Object around(ProceedingJoinPoint point) throws Throwable {
|
||||
|
||||
//获取方法注解
|
||||
MethodSignature signature = (MethodSignature) point.getSignature();
|
||||
Method method = signature.getMethod();
|
||||
|
||||
DataSourceSwitch dataSource = method.getAnnotation(DataSourceSwitch.class);
|
||||
if (dataSource != null) {
|
||||
DynamicDataSource.setDataSource(dataSource.value());
|
||||
}
|
||||
|
||||
try {
|
||||
return point.proceed(); //处理函数
|
||||
} finally {
|
||||
// 销毁数据源 在执行方法之后
|
||||
DynamicDataSource.clear();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,84 @@
|
||||
package com.jeequan.jeepay.db.config.dynamic;
|
||||
|
||||
import cn.hutool.core.util.ObjUtil;
|
||||
import com.alibaba.druid.pool.DruidDataSource;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Qualifier;
|
||||
import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
|
||||
import java.sql.SQLException;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
*
|
||||
* DB spring bean 配置信息
|
||||
* @author terrfly
|
||||
* @date 2022/3/8 9:39
|
||||
*/
|
||||
@Configuration
|
||||
public class DataSourceSpringConfig {
|
||||
|
||||
/** 获取 主 从的配置信息 **/
|
||||
@ConfigurationProperties(prefix = "db-config.master")
|
||||
@Bean(name = "masterDBProp")
|
||||
public DBProp masterDBProp() { return new DBProp(); }
|
||||
|
||||
@ConfigurationProperties(prefix = "db-config.slave")
|
||||
@Bean(name = "slaveDBProp")
|
||||
public DBProp slaveDBProp() { return new DBProp(); }
|
||||
|
||||
@Autowired
|
||||
@Qualifier("masterDBProp")
|
||||
private DBProp masterDBProp;
|
||||
|
||||
@Autowired
|
||||
@Qualifier("slaveDBProp")
|
||||
private DBProp slaveDBProp;
|
||||
|
||||
@Bean(name = "dataSource")
|
||||
public DynamicDataSource dynamicDataSource() throws SQLException {
|
||||
|
||||
DynamicDataSource result = new DynamicDataSource();
|
||||
|
||||
// 全部db连接池
|
||||
Map<Object, Object> dbMap = new HashMap<>();
|
||||
dbMap.put(DynamicDataSource.MASTER, fillDS(masterDBProp));
|
||||
dbMap.put(DynamicDataSource.SLAVE, fillDS(slaveDBProp));
|
||||
|
||||
// 默认master
|
||||
result.setDefaultTargetDataSource(dbMap.get(DynamicDataSource.MASTER));
|
||||
|
||||
result.setTargetDataSources(dbMap);
|
||||
return result;
|
||||
}
|
||||
|
||||
/** 填充 datasoruce */
|
||||
private DruidDataSource fillDS(DBProp thisProp) throws SQLException {
|
||||
DruidDataSource result = new DruidDataSource();
|
||||
|
||||
result.setDbType(ObjUtil.defaultIfNull(thisProp.getDbType(), masterDBProp.getDbType()));
|
||||
result.setDriverClassName(ObjUtil.defaultIfNull(thisProp.getDriverClassName(), masterDBProp.getDriverClassName()));
|
||||
result.setUrl(ObjUtil.defaultIfNull(thisProp.getUrl(), masterDBProp.getUrl()));
|
||||
result.setUsername(ObjUtil.defaultIfNull(thisProp.getUsername(), masterDBProp.getUsername()));
|
||||
result.setPassword(ObjUtil.defaultIfNull(thisProp.getPassword(), masterDBProp.getPassword()));
|
||||
result.setInitialSize(ObjUtil.defaultIfNull(thisProp.getInitialSize(), masterDBProp.getInitialSize()));
|
||||
result.setMinIdle(ObjUtil.defaultIfNull(thisProp.getMinIdle(), masterDBProp.getMinIdle()));
|
||||
result.setMaxActive(ObjUtil.defaultIfNull(thisProp.getMaxActive(), masterDBProp.getMaxActive()));
|
||||
result.setMaxWait(ObjUtil.defaultIfNull(thisProp.getMaxWait(), masterDBProp.getMaxWait()));
|
||||
result.setTestWhileIdle(ObjUtil.defaultIfNull(thisProp.getTestWhileIdle(), masterDBProp.getTestWhileIdle()));
|
||||
result.setTestOnBorrow(ObjUtil.defaultIfNull(thisProp.getTestOnBorrow(), masterDBProp.getTestOnBorrow()));
|
||||
result.setTestOnReturn(ObjUtil.defaultIfNull(thisProp.getTestOnReturn(), masterDBProp.getTestOnReturn()));
|
||||
result.setTimeBetweenEvictionRunsMillis(ObjUtil.defaultIfNull(thisProp.getTimeBetweenEvictionRunsMillis(), masterDBProp.getTimeBetweenEvictionRunsMillis()));
|
||||
result.setMinEvictableIdleTimeMillis(ObjUtil.defaultIfNull(thisProp.getMinEvictableIdleTimeMillis(), masterDBProp.getMinEvictableIdleTimeMillis()));
|
||||
result.setValidationQuery(ObjUtil.defaultIfNull(thisProp.getValidationQuery(), masterDBProp.getValidationQuery()));
|
||||
result.setPoolPreparedStatements(ObjUtil.defaultIfNull(thisProp.getPoolPreparedStatements(), masterDBProp.getPoolPreparedStatements()));
|
||||
result.setMaxPoolPreparedStatementPerConnectionSize(ObjUtil.defaultIfNull(thisProp.getMaxPoolPreparedStatementPerConnectionSize(), masterDBProp.getMaxPoolPreparedStatementPerConnectionSize()));
|
||||
result.setFilters(ObjUtil.defaultIfNull(thisProp.getFilters(), masterDBProp.getFilters()));
|
||||
result.setConnectionProperties(ObjUtil.defaultIfNull(thisProp.getConnectionProperties(), masterDBProp.getConnectionProperties()));
|
||||
|
||||
return result;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
package com.jeequan.jeepay.db.config.dynamic;
|
||||
|
||||
import java.lang.annotation.ElementType;
|
||||
import java.lang.annotation.Retention;
|
||||
import java.lang.annotation.RetentionPolicy;
|
||||
import java.lang.annotation.Target;
|
||||
|
||||
/**
|
||||
* 切换数据源 注解
|
||||
* 在方法层面上添加 @DataSourceSwitch(DynamicDataSource.MASTER) 即可切换数据源
|
||||
*/
|
||||
@Target(ElementType.METHOD)
|
||||
@Retention(RetentionPolicy.RUNTIME)
|
||||
public @interface DataSourceSwitch {
|
||||
|
||||
/** 默认使用Master */
|
||||
DynamicDataSource.DataSourceTypeEnum value() default DynamicDataSource.DataSourceTypeEnum.MASTER;
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
package com.jeequan.jeepay.db.config.dynamic;
|
||||
|
||||
import org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource;
|
||||
|
||||
/**
|
||||
* 动态数据源 和 管理类
|
||||
*
|
||||
* @author terrfly
|
||||
* @date 2022/3/8 9:29
|
||||
*/
|
||||
public class DynamicDataSource extends AbstractRoutingDataSource {
|
||||
|
||||
/** 数据源枚举值 主 / 从 */
|
||||
public enum DataSourceTypeEnum { MASTER, SLAVE }
|
||||
|
||||
public static final DataSourceTypeEnum MASTER = DataSourceTypeEnum.MASTER;
|
||||
public static final DataSourceTypeEnum SLAVE = DataSourceTypeEnum.SLAVE;
|
||||
|
||||
//当前线程 用于存放使用中的数据源
|
||||
private static final ThreadLocal<DataSourceTypeEnum> CURRENT_DATA_SOURCE = new ThreadLocal<>();
|
||||
|
||||
/**
|
||||
* 设置使用数据源
|
||||
* @param dataSource
|
||||
*/
|
||||
public static void setDataSource(DataSourceTypeEnum dataSource){
|
||||
CURRENT_DATA_SOURCE.set(dataSource);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取当前数据源
|
||||
* @return DataSourceTypeEnum
|
||||
*/
|
||||
public static DataSourceTypeEnum getCurrentDataSource(){
|
||||
return CURRENT_DATA_SOURCE.get();
|
||||
}
|
||||
|
||||
/**
|
||||
* 清空使用数据源, 使用默认数据源
|
||||
*/
|
||||
public static void clear(){
|
||||
CURRENT_DATA_SOURCE.remove();
|
||||
}
|
||||
|
||||
/** 覆写 determineCurrentLookupKey 函数 **/
|
||||
@Override
|
||||
protected Object determineCurrentLookupKey() {
|
||||
return DynamicDataSource.getCurrentDataSource();
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,153 @@
|
||||
package com.jeequan.jeepay.db.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.jeequan.jeepay.core.entity.AccountOperate;
|
||||
import com.jeequan.jeepay.core.model.BaseModel;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 账户变动明细
|
||||
* </p>
|
||||
*
|
||||
* @author [mybatis plus generator]
|
||||
* @since 2023-12-11
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@Accessors(chain = true)
|
||||
@TableName(value = "t_account_change_info")
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class AccountChangeInfo extends BaseModel {
|
||||
|
||||
private static final long serialVersionUID=1L;
|
||||
|
||||
public static final LambdaQueryWrapper<AccountChangeInfo> gw(AccountChangeInfo accountInfo){
|
||||
return new LambdaQueryWrapper<>(accountInfo);
|
||||
}
|
||||
|
||||
public static final LambdaQueryWrapper<AccountChangeInfo> gw(){
|
||||
return new LambdaQueryWrapper<>();
|
||||
}
|
||||
|
||||
/**
|
||||
* 流水号
|
||||
*/
|
||||
@TableId(type = IdType.INPUT)
|
||||
@TableField(whereStrategy = FieldStrategy.NOT_EMPTY)
|
||||
private String flowNo;
|
||||
|
||||
/**
|
||||
* 账户编号
|
||||
*/
|
||||
@TableField(whereStrategy = FieldStrategy.NOT_EMPTY)
|
||||
private String accountNo;
|
||||
|
||||
/**
|
||||
* 用户号
|
||||
*/
|
||||
@TableField(whereStrategy = FieldStrategy.NOT_EMPTY)
|
||||
private String mchNo;
|
||||
|
||||
/**
|
||||
* 账户类型 0:退款账户 1:营销账户 2:虚拟银行 3:钱包 4 手续费账户
|
||||
*/
|
||||
@TableField(whereStrategy = FieldStrategy.NOT_NULL)
|
||||
private Byte accountType;
|
||||
|
||||
/**
|
||||
* 变动类型 0:充值 1:提现 2:转账 3:退款 4:扣除
|
||||
*/
|
||||
@TableField(whereStrategy = FieldStrategy.NOT_NULL)
|
||||
private Byte changeType;
|
||||
|
||||
/**
|
||||
* 变动方式 0:扫码充值 1:对公转账 2:账户提现 3:平台户退款 -1:提现驳回 4:直付通
|
||||
*/
|
||||
@TableField(whereStrategy = FieldStrategy.NOT_NULL)
|
||||
private Byte changeMethod;
|
||||
|
||||
/**
|
||||
* 变动前余额
|
||||
*/
|
||||
private Long beforeAmt;
|
||||
|
||||
/**
|
||||
* 变动金额
|
||||
*/
|
||||
private Long changeAmt;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 变动后的金额
|
||||
*/
|
||||
private Long afterAmt;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
private Date createdAt;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
private Date updatedAt;
|
||||
|
||||
private String remark;
|
||||
|
||||
@TableField(exist = false)
|
||||
private String accountTypeDesc;
|
||||
|
||||
@TableField(exist = false)
|
||||
private String changeTypeDesc;
|
||||
|
||||
@TableField(exist = false)
|
||||
private String changeMethodDesc;
|
||||
|
||||
|
||||
|
||||
public AccountChangeInfo(AccountOperate operate,AccountInfo account) {
|
||||
this.flowNo = operate.getOrderId();
|
||||
this.accountNo = account.getAccountNo();
|
||||
this.mchNo = account.getInfoId();
|
||||
this.accountType = account.getType();
|
||||
this.changeType = operate.getChangeType();
|
||||
this.beforeAmt = account.getBalacne();
|
||||
this.changeAmt = operate.getChangeAmt();
|
||||
this.afterAmt = BigDecimal.valueOf(account.getBalacne()).add(BigDecimal.valueOf(operate.getChangeAmt())).longValue();
|
||||
this.remark = operate.getRemark();
|
||||
this.changeMethod = operate.getChangeMethod();
|
||||
}
|
||||
|
||||
public String getAccountTypeDesc() {
|
||||
if(this.getAccountType() == null){
|
||||
return "";
|
||||
}
|
||||
return AccountInfo.Type.getVal(this.getAccountType()).getDesc();
|
||||
}
|
||||
|
||||
public String getChangeTypeDesc() {
|
||||
if(this.getChangeType() == null){
|
||||
return "";
|
||||
}
|
||||
return AccountFundInfo.ChangeType.getVal(this.getChangeType()).getDesc();
|
||||
}
|
||||
|
||||
public String getChangeMethodDesc() {
|
||||
if(this.getChangeMethod() == null){
|
||||
return "";
|
||||
}
|
||||
return AccountFundInfo.ChangeMethod.getVal(this.getChangeMethod()).getDesc();
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,357 @@
|
||||
package com.jeequan.jeepay.db.entity;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler;
|
||||
import com.jeequan.jeepay.core.entity.AccountOperate;
|
||||
import com.jeequan.jeepay.core.exception.BizException;
|
||||
import com.jeequan.jeepay.core.model.BaseModel;
|
||||
import lombok.*;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
*
|
||||
* </p>
|
||||
* 账户资金明细
|
||||
* @author [mybatis plus generator]
|
||||
* @since 2024-03-28
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@Accessors(chain = true)
|
||||
@TableName(value = "t_account_fund_info",autoResultMap = true)
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class AccountFundInfo extends BaseModel {
|
||||
|
||||
/**
|
||||
* 打款类型 手动
|
||||
*/
|
||||
public static final byte MANUAL = 0;
|
||||
|
||||
/**
|
||||
* 打款类型 灵工
|
||||
*/
|
||||
public static final byte FLEXIBLE = 1;
|
||||
|
||||
private static final long serialVersionUID=1L;
|
||||
|
||||
public static LambdaQueryWrapper<AccountFundInfo> gw(AccountFundInfo info) {
|
||||
return new LambdaQueryWrapper<>(info);
|
||||
}
|
||||
|
||||
public static LambdaQueryWrapper<AccountFundInfo> gw() {
|
||||
return new LambdaQueryWrapper<>();
|
||||
}
|
||||
|
||||
/**
|
||||
* 状态 0:订单生成 -1:失败 1:审核中 2:打款中 3:成功
|
||||
*/
|
||||
|
||||
public static final byte INIT = 0;
|
||||
|
||||
public static final byte FAIL = -1;
|
||||
|
||||
public static final byte AUDIT = 1;
|
||||
|
||||
public static final byte PAYMENT = 2;
|
||||
|
||||
public static final byte SUCCESS = 3;
|
||||
|
||||
/**
|
||||
* 付款方式 WECHAT:微信 ALIPAY:支付宝 BANK 银行卡
|
||||
*/
|
||||
public static final String WECHAT = "WECHAT";
|
||||
|
||||
public static final String ALIPAY = "ALIPAY";
|
||||
|
||||
public static final String BANK = "BANK";
|
||||
|
||||
/**
|
||||
* 订单号
|
||||
*/
|
||||
@TableId(type = IdType.INPUT)
|
||||
@TableField(whereStrategy = FieldStrategy.NOT_EMPTY)
|
||||
private String orderId;
|
||||
|
||||
/**
|
||||
* 账户编号
|
||||
*/
|
||||
@TableField(whereStrategy = FieldStrategy.NOT_EMPTY)
|
||||
private String accountNo;
|
||||
|
||||
/**
|
||||
* 渠道流水号
|
||||
*/
|
||||
@TableField(whereStrategy = FieldStrategy.NOT_EMPTY)
|
||||
private String channelOrderId;
|
||||
|
||||
/**
|
||||
* 用户号
|
||||
*/
|
||||
@TableField(whereStrategy = FieldStrategy.NOT_EMPTY)
|
||||
private String mchNo;
|
||||
|
||||
/**
|
||||
* 账户类型 0:退款账户 1:营销账户 2:虚拟银行 3:钱包 取值 ACCOUNT_INFO 的枚举类
|
||||
*/
|
||||
@TableField(whereStrategy = FieldStrategy.NOT_NULL)
|
||||
private Byte accountType;
|
||||
|
||||
/**
|
||||
* 变动类型 0:充值 1:提现 2:转账 3:退款
|
||||
*/
|
||||
@TableField(whereStrategy = FieldStrategy.NOT_NULL)
|
||||
private Byte changeType;
|
||||
|
||||
/**
|
||||
* 变动方式 0:扫码充值 1:对公转账 2:账户提现 3:平台户退款 -1:提现驳回
|
||||
*/
|
||||
@TableField(whereStrategy = FieldStrategy.NOT_NULL)
|
||||
private Byte changeMethod;
|
||||
|
||||
/**
|
||||
* 金额
|
||||
*/
|
||||
private Long amount;
|
||||
|
||||
/**
|
||||
* 实际金额
|
||||
*/
|
||||
private Long finalAmount;
|
||||
|
||||
/**
|
||||
* 手续费
|
||||
*/
|
||||
private Long fee;
|
||||
|
||||
/**
|
||||
* 状态 0:订单生成 -1:失败 1:审核中 2:打款中 3:成功
|
||||
*/
|
||||
@TableField(whereStrategy = FieldStrategy.NOT_NULL)
|
||||
private Byte state;
|
||||
|
||||
/**
|
||||
* 渠道
|
||||
*/
|
||||
@TableField(whereStrategy = FieldStrategy.NOT_EMPTY)
|
||||
private String ifCode;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
private Date createdAt;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
private Date updatedAt;
|
||||
|
||||
/**
|
||||
* 扩展参数
|
||||
*/
|
||||
@TableField(typeHandler = FastjsonTypeHandler.class)
|
||||
private JSONObject extra;
|
||||
|
||||
/**
|
||||
* 渠道返回参数
|
||||
*/
|
||||
@TableField(typeHandler = FastjsonTypeHandler.class)
|
||||
private JSONObject channelExtra;
|
||||
|
||||
/**
|
||||
* 付款方式 WECHAT:微信 ALIPAY:支付宝 BANK 银行卡
|
||||
*/
|
||||
private String payMethod;
|
||||
|
||||
/**
|
||||
* 收款商户号
|
||||
*/
|
||||
private String mchExtNo;
|
||||
|
||||
/**
|
||||
* 变动金额
|
||||
*/
|
||||
@TableField(exist = false)
|
||||
private Long changeAmt;
|
||||
|
||||
/**
|
||||
* 0:手动打款 1:灵工打款
|
||||
*/
|
||||
@TableField(exist = false)
|
||||
private Byte mark;
|
||||
|
||||
@TableField(exist = false)
|
||||
private String accountTypeDesc;
|
||||
|
||||
@TableField(exist = false)
|
||||
private String changeTypeDesc;
|
||||
|
||||
@TableField(exist = false)
|
||||
private String changeMethodDesc;
|
||||
|
||||
@TableField(exist = false)
|
||||
private String stateDesc;
|
||||
|
||||
@Getter
|
||||
@AllArgsConstructor
|
||||
public enum ChangeType{
|
||||
|
||||
RECHARGE((byte)0,"充值"),
|
||||
|
||||
CASH((byte)1,"提现"),
|
||||
|
||||
TRANSFER((byte)2,"转账"),
|
||||
|
||||
REFUND((byte)3,"退款"),
|
||||
|
||||
DEDUCT((byte)4,"抵扣")
|
||||
;
|
||||
|
||||
private final Byte value;
|
||||
|
||||
private final String desc;
|
||||
|
||||
public static ChangeType getVal(byte value){
|
||||
ChangeType[] values = values();
|
||||
for (ChangeType val:values) {
|
||||
if(val.getValue() == value){
|
||||
return val;
|
||||
}
|
||||
}
|
||||
throw new BizException("充值类型非法");
|
||||
}
|
||||
}
|
||||
|
||||
@Getter
|
||||
@AllArgsConstructor
|
||||
public enum ChangeMethod{
|
||||
|
||||
FAIL((byte)-1,"失败"),
|
||||
|
||||
SCAN((byte)0,"扫码充值"),
|
||||
|
||||
PUBIC((byte)1,"对公转账"),
|
||||
|
||||
ACCOUNT_CASH((byte)2,"账户提现"),
|
||||
|
||||
YBH_REFUND((byte)3,"一般户退款"),
|
||||
|
||||
ZFT((byte)4,"直付通"),
|
||||
|
||||
DF((byte)5,"代发");
|
||||
|
||||
private final Byte value;
|
||||
|
||||
private final String desc;
|
||||
|
||||
public static ChangeMethod getVal(byte value){
|
||||
ChangeMethod[] values = values();
|
||||
for (ChangeMethod val:values) {
|
||||
if(val.getValue() == value){
|
||||
return val;
|
||||
}
|
||||
}
|
||||
throw new BizException("变动类型非法");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 构建账户资金明细
|
||||
* @param operate
|
||||
*/
|
||||
public AccountFundInfo(AccountOperate operate,AccountInfo account,String payMethod) {
|
||||
this.orderId = operate.getOrderId();
|
||||
this.accountNo = operate.getAccountNo();
|
||||
this.mchNo = account.getInfoId();
|
||||
this.accountType = account.getType();
|
||||
this.changeType = operate.getChangeType();
|
||||
this.changeMethod = operate.getChangeMethod();
|
||||
this.amount = operate.getAmount();
|
||||
this.finalAmount = operate.getFinalAmt();
|
||||
this.fee = BigDecimal.valueOf(operate.getAmount()).subtract(BigDecimal.valueOf(operate.getFinalAmt())).longValue();
|
||||
if(operate.getState() != null){
|
||||
this.state = operate.getState();
|
||||
}else{
|
||||
if(operate.getIsUpdateAccount()){
|
||||
this.state = SUCCESS;
|
||||
}else{
|
||||
this.state = INIT;
|
||||
}
|
||||
}
|
||||
this.ifCode = operate.getIfCode();
|
||||
this.remark = operate.getRemark();
|
||||
this.mchExtNo = operate.getMchExtNo();
|
||||
this.payMethod = payMethod;
|
||||
this.changeAmt = operate.getChangeAmt();
|
||||
this.extra = operate.getExtra();
|
||||
}
|
||||
|
||||
public AccountFundInfo(AccountOperate operate,AccountInfo account) {
|
||||
this(operate,account,BANK);
|
||||
}
|
||||
|
||||
|
||||
public String getAccountTypeDesc() {
|
||||
if(this.getAccountType() == null){
|
||||
return "";
|
||||
}
|
||||
return AccountInfo.Type.getVal(this.getAccountType()).getDesc();
|
||||
}
|
||||
|
||||
public String getChangeTypeDesc() {
|
||||
if(this.getChangeType() == null){
|
||||
return "";
|
||||
}
|
||||
return ChangeType.getVal(this.getChangeType()).getDesc();
|
||||
}
|
||||
|
||||
public String getChangeMethodDesc() {
|
||||
if(this.getChangeMethod() == null){
|
||||
return "";
|
||||
}
|
||||
return ChangeMethod.getVal(this.getChangeMethod()).getDesc();
|
||||
}
|
||||
|
||||
/**
|
||||
* 0:待处理 -1:失败 1:审核中 2:打款中 3:成功
|
||||
* @return
|
||||
*/
|
||||
public String getStateDesc() {
|
||||
if(this.getState() == null){
|
||||
return "";
|
||||
}
|
||||
if(this.getState() == FAIL){
|
||||
return "失败";
|
||||
}
|
||||
if(this.getState() == 0){
|
||||
return "初始化";
|
||||
}
|
||||
if(this.getState() == AUDIT){
|
||||
return "审核中";
|
||||
}
|
||||
|
||||
if(this.getState() == PAYMENT){
|
||||
return "打款中";
|
||||
}
|
||||
|
||||
if(this.getState() == SUCCESS){
|
||||
return "成功";
|
||||
}
|
||||
|
||||
return "未知";
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,279 @@
|
||||
package com.jeequan.jeepay.db.entity;
|
||||
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler;
|
||||
import com.jeequan.jeepay.core.entity.AccountCashInfo;
|
||||
import com.jeequan.jeepay.core.entity.AccountRuleExt;
|
||||
import com.jeequan.jeepay.core.exception.BizException;
|
||||
import com.jeequan.jeepay.core.model.BaseModel;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.Getter;
|
||||
import lombok.experimental.Accessors;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 账户表
|
||||
* </p>
|
||||
*
|
||||
* @author [mybatis plus generator]
|
||||
* @since 2023-12-11
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@Accessors(chain = true)
|
||||
@TableName(value = "t_account_info",autoResultMap = true)
|
||||
public class AccountInfo extends BaseModel {
|
||||
|
||||
public static final LambdaQueryWrapper<AccountInfo> gw(AccountInfo accountInfo){
|
||||
return new LambdaQueryWrapper<>(accountInfo);
|
||||
}
|
||||
|
||||
public static final LambdaQueryWrapper<AccountInfo> gw(){
|
||||
return new LambdaQueryWrapper<>();
|
||||
}
|
||||
|
||||
private static final long serialVersionUID=1L;
|
||||
|
||||
/**
|
||||
* 开启
|
||||
*/
|
||||
public static final Byte REMIND_OPNE = 1;
|
||||
|
||||
/**
|
||||
* 关闭
|
||||
*/
|
||||
public static final Byte REMIND_CLOSE = 0;
|
||||
|
||||
/**
|
||||
* 账户编号
|
||||
*/
|
||||
@TableId
|
||||
private String accountNo;
|
||||
|
||||
/**
|
||||
* 账户所属id
|
||||
*/
|
||||
private String infoId;
|
||||
|
||||
/**
|
||||
* 账户所属类型
|
||||
*/
|
||||
private String infoType;
|
||||
|
||||
/**
|
||||
* 账户类型 0:退款账户 1:营销账户 2:虚拟银行 3:钱包 4:手续费账户
|
||||
*/
|
||||
private Byte type;
|
||||
|
||||
/**
|
||||
* 余额
|
||||
*/
|
||||
private Long balacne;
|
||||
|
||||
/**
|
||||
* 不可用余额
|
||||
*/
|
||||
private Long freeze;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
private Date createdAt;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
private Date updatedAt;
|
||||
|
||||
|
||||
@Getter
|
||||
@AllArgsConstructor
|
||||
public enum Type{
|
||||
|
||||
REFUND((byte)0,"退款账户"),
|
||||
|
||||
MARKET((byte)1,"营销账户"),
|
||||
|
||||
VIRTUALLY((byte)2,"虚拟银行账户"),
|
||||
|
||||
WALLET((byte)3,"钱包账户"),
|
||||
|
||||
SERVICE_CHARGE((byte)4,"手续费账户");
|
||||
|
||||
private final Byte type;
|
||||
|
||||
private final String desc;
|
||||
|
||||
public static Type getVal(byte value){
|
||||
Type[] values = values();
|
||||
for (Type val:values) {
|
||||
if(val.getType() == value){
|
||||
return val;
|
||||
}
|
||||
}
|
||||
throw new BizException("账户类型非法");
|
||||
}
|
||||
}
|
||||
|
||||
@TableField(exist = false)
|
||||
private String typeNameDesc;
|
||||
|
||||
public String getTypeNameDesc() {
|
||||
if(type == null){
|
||||
return "";
|
||||
}
|
||||
Type val = Type.getVal(this.getType());
|
||||
return val.getDesc();
|
||||
}
|
||||
|
||||
|
||||
@TableField(exist = false)
|
||||
private String realName;
|
||||
|
||||
@TableField(exist = false)
|
||||
private String phone;
|
||||
|
||||
/**
|
||||
* 充值金额
|
||||
*/
|
||||
@TableField(exist = false)
|
||||
private Long rechargeAmt;
|
||||
|
||||
/**
|
||||
* 是否开通提醒
|
||||
*/
|
||||
private Byte remindState;
|
||||
|
||||
/**
|
||||
* 提醒规则
|
||||
*/
|
||||
@TableField(value = "remind_rule_ext",typeHandler = FastjsonTypeHandler.class)
|
||||
private JSONObject remindRuleExt;
|
||||
/**
|
||||
* 最后通知时间
|
||||
*/
|
||||
private Date lastNoticeTime;
|
||||
|
||||
@TableField(exist = false)
|
||||
private AccountRuleExt ruleExt;
|
||||
|
||||
/**
|
||||
* 提现信息
|
||||
*/
|
||||
@TableField(exist = false)
|
||||
private AccountCashInfo cashInfo;
|
||||
|
||||
public void preRuleCheck() {
|
||||
if(this.getAccountNo() == null){
|
||||
throw new BizException("账户编号不能为空");
|
||||
}
|
||||
if(this.getRemindState() == null){
|
||||
throw new BizException("提醒状态不能为空");
|
||||
}
|
||||
if(REMIND_OPNE.equals(this.getRemindState())){
|
||||
if(this.getRuleExt() == null){
|
||||
throw new BizException("开启预警提醒时,请设置预警规则");
|
||||
}
|
||||
}
|
||||
if(this.getRuleExt() != null){
|
||||
BigDecimal amount = this.getRuleExt().getAmount();
|
||||
if(amount == null){
|
||||
throw new BizException("预警规则临界金额不能为空");
|
||||
}
|
||||
List<String> typeList = this.getRuleExt().getTypeList();
|
||||
if(typeList == null || typeList.isEmpty()){
|
||||
throw new BizException("预警规则提醒方式至少需要勾选一项");
|
||||
}
|
||||
Integer interval = this.getRuleExt().getInterval();
|
||||
if(interval == null){
|
||||
throw new BizException("预警规则提醒频率不能为空");
|
||||
}
|
||||
List<JSONObject> receiveList = this.getRuleExt().getReceiveList();
|
||||
if(receiveList == null || receiveList.isEmpty()){
|
||||
throw new BizException("预警规则接收信息人不能为空");
|
||||
}
|
||||
if(receiveList.size() > 5){
|
||||
throw new BizException("接收人设置超出上限");
|
||||
}
|
||||
boolean email = typeList.contains(AccountRuleExt.EMAIL);
|
||||
boolean phone = typeList.contains(AccountRuleExt.PHONE);
|
||||
boolean emailCheck = true;
|
||||
boolean phoneCheck = true;
|
||||
for (JSONObject receive:receiveList) {
|
||||
if(email){
|
||||
String receEmail = receive.getString(AccountRuleExt.EMAIL);
|
||||
if(StringUtils.isEmpty(receEmail)){
|
||||
emailCheck = false;
|
||||
}
|
||||
}
|
||||
if(phone){
|
||||
String recePhone = receive.getString(AccountRuleExt.PHONE);
|
||||
if(StringUtils.isEmpty(recePhone)){
|
||||
phoneCheck = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
if(email && !emailCheck){
|
||||
throw new BizException("预警规则提醒方式包含了[邮箱方式],接收人信息中请填写邮箱");
|
||||
}
|
||||
if(phone && !phoneCheck){
|
||||
throw new BizException("预警规则提醒方式包含了[短信方式],接收人信息中请填写手机号");
|
||||
}
|
||||
this.remindRuleExt = (JSONObject) JSON.toJSON(this.getRuleExt());
|
||||
}
|
||||
}
|
||||
|
||||
public void preCashCheck() {
|
||||
if(this.getAccountNo() == null){
|
||||
throw new BizException("账户编号不能为空");
|
||||
}
|
||||
AccountCashInfo cashInfo = this.getCashInfo();
|
||||
if(cashInfo == null){
|
||||
throw new BizException("提现信息为空");
|
||||
}
|
||||
Long cashAmt = cashInfo.getCashAmt();
|
||||
if(cashAmt == null || cashAmt <= 0){
|
||||
throw new BizException("提现金额不能为空或提现金额必须要大于0");
|
||||
}
|
||||
String settleName = cashInfo.getSettleName();
|
||||
if(StringUtils.isEmpty(settleName)){
|
||||
throw new BizException("结算人名称不能为空");
|
||||
}
|
||||
String settleNo = cashInfo.getSettleNo();
|
||||
if(StringUtils.isEmpty(settleNo)){
|
||||
throw new BizException("结算人银行卡号不能为空");
|
||||
}
|
||||
String bankCardAreaCode = cashInfo.getBankCardAreaCode();
|
||||
if(StringUtils.isEmpty(bankCardAreaCode)){
|
||||
throw new BizException("结算人银行卡开户省市区编码不能为空");
|
||||
}
|
||||
String bankCardAreaName = cashInfo.getBankCardAreaName();
|
||||
if(StringUtils.isEmpty(bankCardAreaName)){
|
||||
throw new BizException("结算人银行卡开户省市区不能为空");
|
||||
}
|
||||
String bankName = cashInfo.getBankName();
|
||||
if(StringUtils.isEmpty(bankName)){
|
||||
throw new BizException("结算人银行卡开户行不能为空");
|
||||
}
|
||||
String settleCard = cashInfo.getSettleCard();
|
||||
if(StringUtils.isEmpty(settleCard)){
|
||||
throw new BizException("结算人身份证号不能为空");
|
||||
}
|
||||
String bankMobile = cashInfo.getBankMobile();
|
||||
if(StringUtils.isEmpty(bankMobile)){
|
||||
throw new BizException("开户行手机号不能为空");
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,100 @@
|
||||
package com.jeequan.jeepay.db.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.jeequan.jeepay.core.model.BaseModel;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 商户配置表
|
||||
* </p>
|
||||
*
|
||||
* @author [mybatis plus generator]
|
||||
* @since 2023-03-28
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@Accessors(chain = true)
|
||||
@TableName("t_agent_config")
|
||||
public class AgentConfig extends BaseModel {
|
||||
|
||||
private static final long serialVersionUID=1L;
|
||||
|
||||
/** 当前服务商进件配置管理方式: configVal: DEF-平台全局默认配置 , CUSTOM-自定义 **/
|
||||
public static final String KEY_APPLYMENT_AUDIT_MODE = "applymentAuditMode";
|
||||
public static final String KEY_APPLYMENT_AUDIT_MODE_DEF = "DEF";
|
||||
public static final String KEY_APPLYMENT_AUDIT_MODE_CUSTOM = "CUSTOM";
|
||||
|
||||
/** 当前服务商进件是否需要运营平台预审核 **/
|
||||
public static final String KEY_AGENT_APPLYMENT_PRE_AUDIT_CONFIG = "agentApplymentPreAuditConfig";
|
||||
|
||||
/** 服务商发起进件时间限制: configVal:
|
||||
* [开始时间, 结束时间], // 若为空表示不限制。
|
||||
* **/
|
||||
public static final String KEY_AGENT_APPLY_TIME_LIMIT_CONFIG = "agentApplyTimeLimitConfig";
|
||||
|
||||
/** 同步对象的类型 allCurrentAndSubAgent-当前及所有下级**/
|
||||
public static final String IF_ALL_CURRENT_AND_SUB_AGENT = "allCurrentAndSubAgent";
|
||||
|
||||
/** 服务商进件配置group_key **/
|
||||
public static final String GROUP_KEY_APPLYMENT_CONFIG = "applymentConfig";
|
||||
|
||||
/**
|
||||
* 服务商子商户配置微信参数权限
|
||||
**/
|
||||
public static final String CONFIG_KEY_WX_CONFIG_IS_USABLE_CONFIG = "subMchWxConfigIsUsable";
|
||||
/**
|
||||
* 服务商子商户配置支付接口权限
|
||||
**/
|
||||
public static final String CONFIG_KEY_MCH_PAY_INTERFACE_IS_USABLE_CONFIG = "subMchPayInterfaceConfigIsUsable";
|
||||
|
||||
public static final LambdaQueryWrapper<AgentConfig> gw(){
|
||||
return new LambdaQueryWrapper<>();
|
||||
}
|
||||
|
||||
public AgentConfig(){}
|
||||
|
||||
public AgentConfig(String agentNo, String configKey, String configVal, String groupKey){
|
||||
this.agentNo = agentNo;
|
||||
this.configKey = configKey;
|
||||
this.configVal = configVal;
|
||||
this.groupKey = groupKey;
|
||||
}
|
||||
|
||||
/**
|
||||
* 服务商号
|
||||
*/
|
||||
private String agentNo;
|
||||
|
||||
/**
|
||||
* 配置KEY
|
||||
*/
|
||||
private String configKey;
|
||||
|
||||
/**
|
||||
* 配置内容项
|
||||
*/
|
||||
private String configVal;
|
||||
|
||||
/**
|
||||
* 配置分组
|
||||
*/
|
||||
private String groupKey;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
private Date createdAt;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
private Date updatedAt;
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,256 @@
|
||||
package com.jeequan.jeepay.db.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.jeequan.jeepay.core.model.BaseModel;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.experimental.Accessors;
|
||||
import lombok.experimental.SuperBuilder;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 服务商信息表
|
||||
* </p>
|
||||
*
|
||||
* @author [mybatis plus generator]
|
||||
* @since 2022-03-12
|
||||
*/
|
||||
|
||||
@Data
|
||||
@SuperBuilder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@Accessors(chain = true)
|
||||
@TableName("t_agent_info")
|
||||
public class AgentInfo extends BaseModel {
|
||||
|
||||
public static LambdaQueryWrapper<AgentInfo> gw(){
|
||||
return new LambdaQueryWrapper<>();
|
||||
}
|
||||
|
||||
private static final long serialVersionUID=1L;
|
||||
|
||||
/** 待审核 **/
|
||||
public static final byte AUDIT_STATE_ING = 2;
|
||||
/** 审核驳回 **/
|
||||
public static final byte AUDIT_STATE_FALSE = 3;
|
||||
/** 未认证 **/
|
||||
public static final byte AUDIT_STATE_UN_AUTH = 4;
|
||||
|
||||
/**
|
||||
* 服务商账号
|
||||
*/
|
||||
@TableId
|
||||
private String agentNo;
|
||||
|
||||
/**
|
||||
* 服务商名称
|
||||
*/
|
||||
private String agentName;
|
||||
|
||||
/**
|
||||
* 服务商简称
|
||||
*/
|
||||
private String agentShortName;
|
||||
|
||||
/**
|
||||
* 服务商号
|
||||
*/
|
||||
private String isvNo;
|
||||
|
||||
/**
|
||||
* 上级服务商号, 空串表示顶级服务商
|
||||
*/
|
||||
private String pid;
|
||||
|
||||
private String pidArr;
|
||||
|
||||
/**
|
||||
* 上级服务商简称
|
||||
*/
|
||||
private String pname;
|
||||
|
||||
/**
|
||||
* 联系人姓名
|
||||
*/
|
||||
private String contactName;
|
||||
|
||||
/**
|
||||
* 联系人手机号
|
||||
*/
|
||||
private String contactTel;
|
||||
|
||||
/**
|
||||
* 联系人邮箱
|
||||
*/
|
||||
private String contactEmail;
|
||||
|
||||
/**
|
||||
* 服务商状态: 0-停用, 1-正常, 2-待审核, 3-审核驳回, 4-未认证
|
||||
*/
|
||||
private Byte state;
|
||||
|
||||
/**
|
||||
* 服务商等级
|
||||
*/
|
||||
private Integer level;
|
||||
|
||||
/**
|
||||
* 是否允许发展子代理: 0-不允许, 1-允许
|
||||
*/
|
||||
private Byte addAgentFlag;
|
||||
|
||||
/**
|
||||
* 是否允许发展子商户: 0-不允许, 1-允许
|
||||
*/
|
||||
private Byte addMchFlag;
|
||||
|
||||
/**
|
||||
* 服务商备注
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 审核备注
|
||||
*/
|
||||
private String auditRemark;
|
||||
|
||||
/**
|
||||
* 手续费计算公式类型: 1-使用系统默认配置, 2-自定义
|
||||
*/
|
||||
private Byte cashoutFeeRuleType;
|
||||
|
||||
/**
|
||||
* 手续费计算公式
|
||||
*/
|
||||
private String cashoutFeeRule;
|
||||
|
||||
/**
|
||||
* 结算账户类型: WX_CASH-微信零钱; ALIPAY_CASH-支付宝转账; BANK_CARD-银行卡; BANK_PUBLIC-对公; BANK_PRIVATE-对私
|
||||
*/
|
||||
private String settAccountType;
|
||||
|
||||
/**
|
||||
* 结算账户账号
|
||||
*/
|
||||
private String settAccountNo;
|
||||
|
||||
/**
|
||||
* 结算账户姓名
|
||||
*/
|
||||
private String settAccountName;
|
||||
|
||||
/**
|
||||
* 结算账户开户行名称
|
||||
*/
|
||||
private String settAccountBank;
|
||||
|
||||
/**
|
||||
* 开户行支行名称
|
||||
*/
|
||||
private String settAccountSubBank;
|
||||
|
||||
/**
|
||||
* 结算账户联系人手机号(一般为服务商手机号)
|
||||
*/
|
||||
private String settAccountTelphone;
|
||||
|
||||
/**
|
||||
* 营业执照图片
|
||||
*/
|
||||
private String licenseImg;
|
||||
|
||||
/**
|
||||
* 身份证人像面照片
|
||||
*/
|
||||
private String idcard1Img;
|
||||
|
||||
/**
|
||||
* 身份证国徽面照片
|
||||
*/
|
||||
private String idcard2Img;
|
||||
|
||||
/**
|
||||
* 手持身份证图片
|
||||
*/
|
||||
private String idcardInHandImg;
|
||||
|
||||
/**
|
||||
* 银行卡图片
|
||||
*/
|
||||
private String bankCardImg;
|
||||
|
||||
/**
|
||||
* 许可证照片
|
||||
*/
|
||||
private String permitImg;
|
||||
|
||||
/**
|
||||
* 服务商类型: 1-个人, 2-企业
|
||||
*/
|
||||
private Byte agentType;
|
||||
|
||||
/**
|
||||
* 是否为贴牌,1-是;0-否
|
||||
*/
|
||||
private Byte oemType;
|
||||
|
||||
/**
|
||||
* 初始用户ID(创建服务商时,允许服务商登录的用户)
|
||||
*/
|
||||
private Long initUserId;
|
||||
|
||||
/**
|
||||
* 登录用户名
|
||||
*/
|
||||
private String loginUsername;
|
||||
|
||||
/**
|
||||
* 支付密码(敏感信息密码Sensitive information password)
|
||||
*/
|
||||
private String sipw;
|
||||
|
||||
/**
|
||||
* 钱包冻结金额, 单位分
|
||||
*/
|
||||
private Long freezeAmount;
|
||||
|
||||
/**
|
||||
* 冻结原因
|
||||
*/
|
||||
private String freezeDesc;
|
||||
|
||||
/**
|
||||
* 创建者用户ID
|
||||
*/
|
||||
private Long createdUid;
|
||||
|
||||
/**
|
||||
* 创建者姓名
|
||||
*/
|
||||
private String createdBy;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
private Date createdAt;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
private Date updatedAt;
|
||||
|
||||
/**
|
||||
* 邀请码
|
||||
*/
|
||||
@TableField(exist = false)
|
||||
private String inviteCode;
|
||||
}
|
||||
@@ -0,0 +1,49 @@
|
||||
package com.jeequan.jeepay.db.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.jeequan.jeepay.core.model.BaseModel;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
/**
|
||||
* 支行信息表
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@Accessors(chain = true)
|
||||
@TableName("t_bank_branch")
|
||||
public class BankBranch extends BaseModel {
|
||||
|
||||
private Integer id;
|
||||
|
||||
/**
|
||||
* 支行联行号
|
||||
*/
|
||||
private String branchNo;
|
||||
|
||||
/**
|
||||
* 支行名称
|
||||
*/
|
||||
private String branchName;
|
||||
|
||||
/**
|
||||
* 银行code
|
||||
*/
|
||||
private String bankCode;
|
||||
|
||||
/**
|
||||
* 斗拱银行编码
|
||||
*/
|
||||
private String bankCodeDg;
|
||||
|
||||
private String bankName;
|
||||
|
||||
private String provinceCode;
|
||||
|
||||
private String provinceName;
|
||||
|
||||
private String cityCode;
|
||||
|
||||
private String cityName;
|
||||
}
|
||||
@@ -0,0 +1,66 @@
|
||||
package com.jeequan.jeepay.db.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 支付宝支行信息
|
||||
* </p>
|
||||
*
|
||||
* @author [mybatis plus generator]
|
||||
* @since 2024-01-29
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@Accessors(chain = true)
|
||||
@TableName("t_bank_branch_alipay")
|
||||
public class BankBranchAlipay implements Serializable {
|
||||
|
||||
private static final long serialVersionUID=1L;
|
||||
|
||||
/**
|
||||
* 联行号
|
||||
*/
|
||||
@TableId(type = IdType.INPUT)
|
||||
private String branchNo;
|
||||
|
||||
/**
|
||||
* 支行名称
|
||||
*/
|
||||
private String branchName;
|
||||
|
||||
/**
|
||||
* 银行名称
|
||||
*/
|
||||
private String bankName;
|
||||
|
||||
/**
|
||||
* 省
|
||||
*/
|
||||
private String provinceName;
|
||||
|
||||
/**
|
||||
* 市
|
||||
*/
|
||||
private String cityName;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
private Date createdAt;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
private Date updatedAt;
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
package com.jeequan.jeepay.db.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.jeequan.jeepay.core.model.BaseModel;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@TableName("t_bank_branch_lkl")
|
||||
public class BankBranchLkl extends BaseModel {
|
||||
|
||||
@TableId("contact_line")
|
||||
private String contactLine;
|
||||
|
||||
|
||||
@TableField("branch_name")
|
||||
private String branchName;
|
||||
|
||||
|
||||
@TableField("bank_type")
|
||||
private String bankType;
|
||||
|
||||
|
||||
@TableField("bank_name")
|
||||
private String bankName;
|
||||
|
||||
|
||||
@TableField("city_code")
|
||||
private String cityCode;
|
||||
|
||||
@TableField("clear_no")
|
||||
private String clearNo;
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
package com.jeequan.jeepay.db.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* 直付通支行数据
|
||||
* @author deng
|
||||
* @since 2024/4/7
|
||||
*/
|
||||
@TableName("t_bank_branch_zft")
|
||||
@Data
|
||||
public class BankBranchZft {
|
||||
|
||||
private String branchNo;
|
||||
|
||||
private String branchName;
|
||||
|
||||
private String bankName;
|
||||
|
||||
private String bankAbbr;
|
||||
|
||||
private String province;
|
||||
|
||||
private String city;
|
||||
}
|
||||
@@ -0,0 +1,74 @@
|
||||
package com.jeequan.jeepay.db.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.jeequan.jeepay.core.utils.SeqKit;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* tk缓存表
|
||||
* </p>
|
||||
*
|
||||
* @author [mybatis plus generator]
|
||||
* @since 2024-02-02
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@Accessors(chain = true)
|
||||
@TableName("t_cache_tk")
|
||||
@NoArgsConstructor
|
||||
public class CacheTk implements Serializable {
|
||||
|
||||
private static final long serialVersionUID=1L;
|
||||
|
||||
@TableId(type = IdType.INPUT)
|
||||
private String tk;
|
||||
|
||||
// 二维码扫码类型: 1 - 统一下单的聚合二维码, 2 - 码牌二维码 3 - 设备二维码 4:路由二维码
|
||||
private Byte type;
|
||||
|
||||
/**
|
||||
* 原id 对应设备编号 二维码编号
|
||||
*/
|
||||
private String sourceId;
|
||||
|
||||
/**
|
||||
* 金额
|
||||
*/
|
||||
private Long amount;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
private Date createdAt;
|
||||
|
||||
|
||||
public CacheTk(Byte type, String sourceId, Long amount) {
|
||||
this.tk = SeqKit.genTk();
|
||||
this.type = type;
|
||||
this.sourceId = sourceId;
|
||||
this.amount = amount;
|
||||
}
|
||||
|
||||
public CacheTk(Byte type, String sourceId) {
|
||||
this(type,sourceId,null);
|
||||
}
|
||||
|
||||
public CacheTk(String tk, byte type, String sourceId,Long amount) {
|
||||
this.tk = tk;
|
||||
this.type = type;
|
||||
this.sourceId = sourceId;
|
||||
this.amount = amount;
|
||||
}
|
||||
public CacheTk(String tk, byte type, String sourceId) {
|
||||
this(tk,type,sourceId,null);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,199 @@
|
||||
package com.jeequan.jeepay.db.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.jeequan.jeepay.core.model.BaseModel;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 提现结算记录表
|
||||
* </p>
|
||||
*
|
||||
* @author [mybatis plus generator]
|
||||
* @since 2022-03-12
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@Accessors(chain = true)
|
||||
@TableName("t_cashout_record")
|
||||
public class CashoutRecord extends com.jeequan.jeepay.core.entity.CashoutRecord {
|
||||
|
||||
public static final LambdaQueryWrapper<CashoutRecord> gw(){
|
||||
return new LambdaQueryWrapper<>();
|
||||
}
|
||||
|
||||
private static final long serialVersionUID=1L;
|
||||
|
||||
/** 提现类型 佣金提现 **/
|
||||
public static final byte SETT_TYPE_COMM = 1;
|
||||
|
||||
/** 提现状态 结算状态: 1-审核中, 2-审核失败, 3-结算中, 4-结算成功, 5-结算失败 **/
|
||||
public static final byte CASHOUT_STATE_AUDIT_ING = 1;
|
||||
public static final byte CASHOUT_STATE_AUDIT_FAIL = 2;
|
||||
public static final byte CASHOUT_STATE_SETT_ING = 3;
|
||||
public static final byte CASHOUT_STATE_SETT_SUCCESS = 4;
|
||||
public static final byte CASHOUT_STATE_SETT_FAIL = 5;
|
||||
|
||||
/**
|
||||
* 提现记录ID
|
||||
*/
|
||||
@TableId(value = "rid", type = IdType.AUTO)
|
||||
private Long rid;
|
||||
|
||||
/**
|
||||
* 服务商号等
|
||||
*/
|
||||
private String infoId;
|
||||
|
||||
/**
|
||||
* 系统类型: 参考:SYS_ROLE_TYPE
|
||||
*/
|
||||
private String infoType;
|
||||
|
||||
/**
|
||||
* 名称快照
|
||||
*/
|
||||
private String infoName;
|
||||
|
||||
/**
|
||||
* 申请金额,单位分
|
||||
*/
|
||||
private Long applyAmount;
|
||||
|
||||
/**
|
||||
* 手续费金额,单位分
|
||||
*/
|
||||
private Long settFeeAmount;
|
||||
|
||||
/**
|
||||
* 手续费计算公式(快照)
|
||||
*/
|
||||
private String settFeeRule;
|
||||
|
||||
/**
|
||||
* 最终结算金额 (申请-手续费), 单位分
|
||||
*/
|
||||
private Long settAmount;
|
||||
|
||||
/**
|
||||
* 结算账户类型: WX_CASH-微信零钱; ALIPAY_CASH-支付宝转账; BANK_CARD-银行卡
|
||||
*/
|
||||
private String settAccountType;
|
||||
|
||||
/**
|
||||
* 结算账户账号
|
||||
*/
|
||||
private String settAccountNo;
|
||||
|
||||
/**
|
||||
* 结算账户姓名
|
||||
*/
|
||||
private String settAccountName;
|
||||
|
||||
/**
|
||||
* 结算账户开户行名称
|
||||
*/
|
||||
private String settAccountBank;
|
||||
|
||||
/**
|
||||
* 开户行支行名称
|
||||
*/
|
||||
private String settAccountSubBank;
|
||||
|
||||
/**
|
||||
* 结算账户联系人手机号(一般为服务商手机号)
|
||||
*/
|
||||
private String settAccountTelphone;
|
||||
|
||||
/**
|
||||
* 联系人姓名
|
||||
*/
|
||||
private String contactName;
|
||||
|
||||
/**
|
||||
* 用户提现备注
|
||||
*/
|
||||
private String applyRemark;
|
||||
|
||||
/**
|
||||
* 结算备注[系统生成]
|
||||
*/
|
||||
private String settInfo;
|
||||
|
||||
/**
|
||||
* 结算状态: 1-审核中, 2-审核失败, 3-结算中, 4-结算成功, 5-结算失败
|
||||
*/
|
||||
private Byte state;
|
||||
|
||||
/**
|
||||
* 结算凭证图片
|
||||
*/
|
||||
private String settCertImg;
|
||||
|
||||
/**
|
||||
* 打款凭证(运营平台)
|
||||
*/
|
||||
private String transferCertImg;
|
||||
|
||||
/**
|
||||
* 提现类型: 1-佣金提现
|
||||
*/
|
||||
private Byte settType;
|
||||
|
||||
/**
|
||||
* 发起转账的自营应用ID
|
||||
*/
|
||||
private String transferMchAppId;
|
||||
|
||||
/**
|
||||
* 转账系统订单号
|
||||
*/
|
||||
private String transferOrderId;
|
||||
|
||||
/**
|
||||
* 转账接口类型
|
||||
*/
|
||||
private String transferIfCode;
|
||||
|
||||
/**
|
||||
* 自营商户费率费用
|
||||
*/
|
||||
private Long transferPlatformMchfeeAmount;
|
||||
|
||||
/**
|
||||
* 平台真实成本费用( 来自转账订单数据 = 自营商户费率费用 - 平台利润 )
|
||||
*/
|
||||
private Long transferPlatformCostAmount;
|
||||
|
||||
/**
|
||||
* 审核时间
|
||||
*/
|
||||
private Date auditTime;
|
||||
|
||||
/**
|
||||
* 审核备注
|
||||
*/
|
||||
private String auditRemark;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
private Date createdAt;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
private Date updatedAt;
|
||||
|
||||
|
||||
@TableField(exist = false)
|
||||
private String idCard;
|
||||
}
|
||||
@@ -0,0 +1,152 @@
|
||||
package com.jeequan.jeepay.db.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 提现结算记录表
|
||||
* </p>
|
||||
*
|
||||
* @author [mybatis plus generator]
|
||||
* @since 2022-11-09
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@Accessors(chain = true)
|
||||
@TableName("t_channel_account_cashout_record")
|
||||
public class ChannelAccountCashoutRecord extends com.jeequan.jeepay.core.entity.ChannelAccountCashoutRecord {
|
||||
|
||||
public static final LambdaQueryWrapper<ChannelAccountCashoutRecord> gw(){
|
||||
return new LambdaQueryWrapper<>();
|
||||
}
|
||||
|
||||
private static final long serialVersionUID=1L;
|
||||
|
||||
/** 提现状态 结算状态: 0-提现单创建, 1-提现中, 2-提现成功, 3-提现失败 **/
|
||||
public static final byte CASHOUT_STATE_CREATE = 0;
|
||||
public static final byte CASHOUT_STATE_ING = 1;
|
||||
public static final byte CASHOUT_STATE_SUCCESS = 2;
|
||||
public static final byte CASHOUT_STATE_FAIL = 3;
|
||||
|
||||
/** 提现来源 task-定时任务 order-订单 **/
|
||||
public static final String CASHOUT_FROM_TASK = "task";
|
||||
public static final String CASHOUT_FROM_ORDER = "order";
|
||||
|
||||
/**
|
||||
* 提现记录ID
|
||||
*/
|
||||
@TableId
|
||||
private String rid;
|
||||
|
||||
/**
|
||||
* 应用ID
|
||||
*/
|
||||
private String appId;
|
||||
|
||||
/**
|
||||
* 商户号
|
||||
*/
|
||||
private String mchNo;
|
||||
|
||||
/**
|
||||
* 商户名称
|
||||
*/
|
||||
private String mchName;
|
||||
|
||||
/**
|
||||
* 服务商号
|
||||
*/
|
||||
private String isvNo;
|
||||
|
||||
/**
|
||||
* 支付接口代码
|
||||
*/
|
||||
private String ifCode;
|
||||
|
||||
/**
|
||||
* 渠道子商户号
|
||||
*/
|
||||
private String channelSubMchId;
|
||||
|
||||
/**
|
||||
* 支付订单号
|
||||
*/
|
||||
private String payOrderId;
|
||||
|
||||
/**
|
||||
* 当前查询余额,单位分 (不准确,可能此时账户余额有变动)
|
||||
*/
|
||||
private Long currentBalance;
|
||||
|
||||
/**
|
||||
* 申请提现金额,单位分
|
||||
*/
|
||||
private Long cashoutAmount;
|
||||
|
||||
/**
|
||||
* 提现状态: 0-提现单创建, 1-提现中, 2-提现成功, 3-提现失败
|
||||
*/
|
||||
private Byte state;
|
||||
|
||||
/**
|
||||
* 渠道提现单ID
|
||||
*/
|
||||
private String channelRid;
|
||||
|
||||
/**
|
||||
* 失败原因
|
||||
*/
|
||||
private String failInfo;
|
||||
|
||||
/**
|
||||
* 提现成功时间
|
||||
*/
|
||||
private Date successTime;
|
||||
|
||||
/**
|
||||
* 提现银行名称
|
||||
*/
|
||||
private String bankName;
|
||||
|
||||
/**
|
||||
* 提现账户
|
||||
*/
|
||||
private String bankAccount;
|
||||
|
||||
/**
|
||||
* 提现账户名称
|
||||
*/
|
||||
private String bankAccountName;
|
||||
|
||||
/**
|
||||
* 创建者用户ID
|
||||
*/
|
||||
private Long createdUid;
|
||||
|
||||
/**
|
||||
* 创建人名称
|
||||
*/
|
||||
private String createdBy;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
private Date createdAt;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
private Date updatedAt;
|
||||
|
||||
/**
|
||||
* 商户号
|
||||
*/
|
||||
private String mchExtNo;
|
||||
}
|
||||
@@ -0,0 +1,144 @@
|
||||
package com.jeequan.jeepay.db.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 对账批次表
|
||||
* </p>
|
||||
*
|
||||
* @author [mybatis plus generator]
|
||||
* @since 2022-09-09
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@Accessors(chain = true)
|
||||
@TableName("t_check_batch")
|
||||
public class CheckBatch extends com.jeequan.jeepay.core.entity.CheckBatch {
|
||||
|
||||
private static final long serialVersionUID=1L;
|
||||
|
||||
public static final LambdaQueryWrapper<CheckBatch> gw(){
|
||||
return new LambdaQueryWrapper<>();
|
||||
}
|
||||
|
||||
/**
|
||||
* 对账批次号,支付接口代码ifCode_渠道商户号_对账日期
|
||||
*/
|
||||
@TableId
|
||||
private String batchNo;
|
||||
|
||||
/**
|
||||
* 支付接口代码
|
||||
*/
|
||||
private String ifCode;
|
||||
|
||||
/**
|
||||
* 渠道商户号
|
||||
*/
|
||||
private String channelMchNo;
|
||||
|
||||
/**
|
||||
* 对账日期
|
||||
*/
|
||||
private Date billDate;
|
||||
|
||||
/**
|
||||
* 对账批次处理状态:0-未处理,1-已处理
|
||||
*/
|
||||
private Byte state;
|
||||
|
||||
/**
|
||||
* 所有差错总单数
|
||||
*/
|
||||
private Integer diffCount;
|
||||
|
||||
/**
|
||||
* 待处理的差错总单数
|
||||
*/
|
||||
private Integer unHandleDiffCount;
|
||||
|
||||
/**
|
||||
* 平台总交易单数
|
||||
*/
|
||||
private Integer totalCount;
|
||||
|
||||
/**
|
||||
* 渠道总交易单数
|
||||
*/
|
||||
private Integer channelTotalCount;
|
||||
|
||||
/**
|
||||
* 平台交易总金额
|
||||
*/
|
||||
private Long totalAmount;
|
||||
|
||||
/**
|
||||
* 渠道交易总金额
|
||||
*/
|
||||
private Long channelTotalAmount;
|
||||
|
||||
/**
|
||||
* 平台退款总单数
|
||||
*/
|
||||
private Integer totalRefundCount;
|
||||
|
||||
/**
|
||||
* 渠道退款总单数
|
||||
*/
|
||||
private Integer channelTotalRefundCount;
|
||||
|
||||
/**
|
||||
* 平台退款总金额
|
||||
*/
|
||||
private Long totalRefundAmount;
|
||||
|
||||
/**
|
||||
* 渠道退款总金额
|
||||
*/
|
||||
private Long channelTotalRefundAmount;
|
||||
|
||||
/**
|
||||
* 平台总手续费
|
||||
*/
|
||||
private Long totalFee;
|
||||
|
||||
/**
|
||||
* 渠道总手续费
|
||||
*/
|
||||
private Long channelTotalFee;
|
||||
|
||||
/**
|
||||
* 原始对账文件存放地址
|
||||
*/
|
||||
private String orgBillFilePath;
|
||||
|
||||
/**
|
||||
* 下载/解析状态:0-失败,1-成功
|
||||
*/
|
||||
private Byte releaseState;
|
||||
|
||||
/**
|
||||
* 下载/解析失败的描述信息
|
||||
*/
|
||||
private String releaseErrMsg;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
private Date createdAt;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
private Date updatedAt;
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,129 @@
|
||||
package com.jeequan.jeepay.db.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.jeequan.jeepay.core.model.BaseModel;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 渠道对账单表
|
||||
* </p>
|
||||
*
|
||||
* @author [mybatis plus generator]
|
||||
* @since 2022-09-09
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@Accessors(chain = true)
|
||||
@TableName("t_check_channel_bill")
|
||||
public class CheckChannelBill extends BaseModel {
|
||||
|
||||
private static final long serialVersionUID=1L;
|
||||
|
||||
public static final LambdaQueryWrapper<CheckChannelBill> gw(){
|
||||
return new LambdaQueryWrapper<>();
|
||||
}
|
||||
|
||||
public static String BILL_TYPE_PAY = "pay"; // 支付账单
|
||||
public static String BILL_TYPE_REFUND = "refund"; // 退款账单
|
||||
|
||||
/**
|
||||
* ID
|
||||
*/
|
||||
@TableId(value = "id", type = IdType.AUTO)
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 对账批次号,支付接口代码ifCode_渠道商户号_对账日期
|
||||
*/
|
||||
private String batchNo;
|
||||
|
||||
/**
|
||||
* 支付接口代码
|
||||
*/
|
||||
private String ifCode;
|
||||
|
||||
/**
|
||||
* 渠道商户号
|
||||
*/
|
||||
private String channelMchNo;
|
||||
|
||||
/**
|
||||
* 对账日期
|
||||
*/
|
||||
private Date billDate;
|
||||
|
||||
/**
|
||||
* 账单类型,pay:支付, refund:退款
|
||||
*/
|
||||
private String billType;
|
||||
|
||||
/**
|
||||
* 三位货币代码,人民币:cny
|
||||
*/
|
||||
private String currency;
|
||||
|
||||
/**
|
||||
* 平台订单号
|
||||
*/
|
||||
private String orderId;
|
||||
|
||||
/**
|
||||
* 渠道订单号
|
||||
*/
|
||||
private String channelOrderNo;
|
||||
|
||||
/**
|
||||
* 交易金额 单位:分
|
||||
*/
|
||||
private Long channelAmount;
|
||||
|
||||
/**
|
||||
* 渠道手续费 单位:分
|
||||
*/
|
||||
private Long channelFeeAmount;
|
||||
|
||||
/**
|
||||
* 渠道交易成功时间
|
||||
*/
|
||||
private Date channelSuccessAt;
|
||||
|
||||
/**
|
||||
* 渠道用户标识,如微信openId,支付宝账号
|
||||
*/
|
||||
private String channelUser;
|
||||
|
||||
/**
|
||||
* 渠道订单状态:0-订单生成, 1-支付中, 2-支付成功, 3-支付失败, 4-已撤销, 5-已退款, 6-订单关闭
|
||||
*/
|
||||
private Byte channelState;
|
||||
|
||||
/**
|
||||
* 退款原支付订单号
|
||||
*/
|
||||
private String orgPayOrderId;
|
||||
|
||||
/**
|
||||
* 退款金额
|
||||
*/
|
||||
private String channelRefundAmount;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
private Date createdAt;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
private Date updatedAt;
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,195 @@
|
||||
package com.jeequan.jeepay.db.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.jeequan.jeepay.core.model.BaseModel;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 对账差异表
|
||||
* </p>
|
||||
*
|
||||
* @author [mybatis plus generator]
|
||||
* @since 2022-09-09
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@Accessors(chain = true)
|
||||
@TableName("t_check_diff")
|
||||
public class CheckDiff extends BaseModel {
|
||||
|
||||
private static final long serialVersionUID=1L;
|
||||
|
||||
public static final LambdaQueryWrapper<CheckDiff> gw(){
|
||||
return new LambdaQueryWrapper<>();
|
||||
}
|
||||
|
||||
public static String DIFF_TYPE_LOCAL = "local"; // 长款
|
||||
public static String DIFF_TYPE_CHANNEL = "channel"; // 短款
|
||||
public static String DIFF_TYPE_ORDER = "order"; // 订单差异
|
||||
|
||||
public static byte HANDLE_STATE_WAITING = 0;
|
||||
public static byte HANDLE_STATE_HANG_UP = 1;
|
||||
public static byte HANDLE_STATE_SUCCESS = 2;
|
||||
public static byte HANDLE_STATE_IGNORE = 3;
|
||||
|
||||
/**
|
||||
* ID
|
||||
*/
|
||||
@TableId(value = "id", type = IdType.AUTO)
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 对账批次号,支付接口代码ifCode_渠道商户号_对账日期
|
||||
*/
|
||||
private String batchNo;
|
||||
|
||||
/**
|
||||
* 支付接口代码
|
||||
*/
|
||||
private String ifCode;
|
||||
|
||||
/**
|
||||
* 渠道商户号
|
||||
*/
|
||||
private String channelMchNo;
|
||||
|
||||
/**
|
||||
* 对账日期
|
||||
*/
|
||||
private Date billDate;
|
||||
|
||||
/**
|
||||
* 账单类型,pay:支付, refund:退款
|
||||
*/
|
||||
private String billType;
|
||||
|
||||
/**
|
||||
* 平台订单ID
|
||||
*/
|
||||
private String orderId;
|
||||
|
||||
/**
|
||||
* 商户号
|
||||
*/
|
||||
private String mchNo;
|
||||
|
||||
/**
|
||||
* 商户名称
|
||||
*/
|
||||
private String mchName;
|
||||
|
||||
/**
|
||||
* 商户应用AppId
|
||||
*/
|
||||
private String mchAppId;
|
||||
|
||||
/**
|
||||
* 商户订单号
|
||||
*/
|
||||
private String mchOrderNo;
|
||||
|
||||
/**
|
||||
* 平台交易金额,单位分
|
||||
*/
|
||||
private Long amount;
|
||||
|
||||
/**
|
||||
* 平台手续费,单位分
|
||||
*/
|
||||
private Long feeAmount;
|
||||
|
||||
/**
|
||||
* 平台退款金额
|
||||
*/
|
||||
private Long refundAmount;
|
||||
|
||||
/**
|
||||
* 平台订单状态:0-订单 生成, 1-支付中, 2-支付成功, 3-支付失败, 4-已撤销, 5-已退款, 6-订单关闭
|
||||
*/
|
||||
private Byte orderState;
|
||||
|
||||
/**
|
||||
* 平台交易成功时间
|
||||
*/
|
||||
private Date orderSuccessAt;
|
||||
|
||||
/**
|
||||
* 平台下单时间
|
||||
*/
|
||||
private Date orderCreateAt;
|
||||
|
||||
/**
|
||||
* 渠道订单号
|
||||
*/
|
||||
private String channelOrderNo;
|
||||
|
||||
/**
|
||||
* 渠道订单状态:0-订单生成, 1-支付中, 2-支付成功, 3-支付失败, 4-已撤销, 5-已退款, 6-订单关闭
|
||||
*/
|
||||
private Byte channelState;
|
||||
|
||||
/**
|
||||
* 渠道交易金额,单位分
|
||||
*/
|
||||
private Long channelAmount;
|
||||
|
||||
/**
|
||||
* 渠道退款金额
|
||||
*/
|
||||
private Long channelRefundAmount;
|
||||
|
||||
/**
|
||||
* 渠道手续费
|
||||
*/
|
||||
private Long channelFeeAmount;
|
||||
|
||||
/**
|
||||
* 渠道交易成功时间
|
||||
*/
|
||||
private Date channelSuccessAt;
|
||||
|
||||
/**
|
||||
* 差异类型:local-长款 channel-短款 order-订单差异(金额差异等)
|
||||
*/
|
||||
private String diffType;
|
||||
|
||||
/**
|
||||
* 类型:0-未处理,1-挂账,2-已处理,3-已忽略
|
||||
*/
|
||||
private Byte handleState;
|
||||
|
||||
/**
|
||||
* 处理备注
|
||||
*/
|
||||
private String handleRemark;
|
||||
|
||||
/**
|
||||
* 差异处理者ID
|
||||
*/
|
||||
private Long handleUid;
|
||||
|
||||
/**
|
||||
* 差异处理者姓名
|
||||
*/
|
||||
private String handleBy;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
private Date createdAt;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
private Date updatedAt;
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,88 @@
|
||||
package com.jeequan.jeepay.db.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.jeequan.jeepay.core.model.BaseModel;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 设备厂商配置表
|
||||
* </p>
|
||||
*
|
||||
* @author [mybatis plus generator]
|
||||
* @since 2021-12-28
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@Accessors(chain = true)
|
||||
@TableName("t_device_provide_config")
|
||||
public class DeviceProvideConfig extends BaseModel {
|
||||
|
||||
private static final long serialVersionUID=1L;
|
||||
|
||||
//gw
|
||||
public static final LambdaQueryWrapper<DeviceProvideConfig> gw(){
|
||||
return new LambdaQueryWrapper<>();
|
||||
}
|
||||
|
||||
public final static byte DEVICE_TYPE_SPEAKER = 1;
|
||||
public final static byte DEVICE_TYPE_PRINTER = 2;
|
||||
public final static byte DEVICE_TYPE_POS = 3;
|
||||
public final static byte DEVICE_TYPE_AUTO_POS = 4;
|
||||
public final static byte DEVICE_TYPE_PLUGIN = 5;
|
||||
|
||||
/**
|
||||
* 厂商配置ID
|
||||
*/
|
||||
@TableId(value = "config_id", type = IdType.AUTO)
|
||||
private Long configId;
|
||||
|
||||
/**
|
||||
* 厂商配置备注信息, 会在商户侧进行回显
|
||||
*/
|
||||
private String configDesc;
|
||||
|
||||
/**
|
||||
* 设备类型: 1-云喇叭, 2-云打印, 3-扫码pos, 4-智能pos, 5-收银插件
|
||||
*/
|
||||
private Byte deviceType;
|
||||
|
||||
/**
|
||||
* 设备厂商: zgwl-智谷物联, bsj-博实结, fe-飞鹅, ps-品生, clj-财来聚, wsy-微收银, xjl-小精灵
|
||||
*/
|
||||
private String provider;
|
||||
|
||||
/**
|
||||
* 厂商配置参数appId(扫码POS定义唯一appId)
|
||||
*/
|
||||
private String appId;
|
||||
|
||||
/**
|
||||
* 厂商配置参数,json字符串
|
||||
*/
|
||||
private String providerParams;
|
||||
|
||||
/**
|
||||
* 状态: 0-停用,1-启用
|
||||
*/
|
||||
private Byte state;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
private Date createdAt;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
private Date updatedAt;
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,69 @@
|
||||
package com.jeequan.jeepay.db.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.jeequan.jeepay.core.model.BaseModel;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 分账任务对象关联表
|
||||
* </p>
|
||||
*
|
||||
* @author [mybatis plus generator]
|
||||
* @since 2024-05-16
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@Accessors(chain = true)
|
||||
@TableName("t_division_conn")
|
||||
public class DivisionConn extends BaseModel {
|
||||
|
||||
private static final long serialVersionUID=1L;
|
||||
|
||||
@TableId(value = "id", type = IdType.AUTO)
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 分账任务id
|
||||
*/
|
||||
private String taskId;
|
||||
|
||||
/**
|
||||
* 分账分出方对象编号
|
||||
*/
|
||||
private String divisionNo;
|
||||
|
||||
/**
|
||||
* 分账分出方对象编号
|
||||
*/
|
||||
private String receiveNo;
|
||||
|
||||
/**
|
||||
* 分账值
|
||||
*/
|
||||
private BigDecimal divisionValue;
|
||||
|
||||
/**
|
||||
* 是否收取手续费
|
||||
*/
|
||||
private Byte isCharge;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
private Date createdAt;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
private Date updatedAt;
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,205 @@
|
||||
package com.jeequan.jeepay.db.entity;
|
||||
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.jeequan.jeepay.core.entity.DivisionSettleInfo;
|
||||
import com.jeequan.jeepay.core.model.BaseModel;
|
||||
import com.jeequan.jeepay.core.utils.SeqKit;
|
||||
import com.jeequan.jeepay.db.typehandler.EncryptTypeHandler;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.experimental.Accessors;
|
||||
import org.springframework.util.Assert;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
*
|
||||
* </p>
|
||||
*
|
||||
* @author [mybatis plus generator]
|
||||
* @since 2024-04-03
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@Accessors(chain = true)
|
||||
@TableName(value = "t_division_subject")
|
||||
@NoArgsConstructor
|
||||
public class DivisionSubject extends BaseModel {
|
||||
|
||||
public static final LambdaQueryWrapper<DivisionSubject> gw(){
|
||||
return new LambdaQueryWrapper<>();
|
||||
}
|
||||
|
||||
private static final long serialVersionUID=1L;
|
||||
|
||||
/**
|
||||
*接收方类型
|
||||
*/
|
||||
public static final byte RECEIVE_TYPE = 0;
|
||||
|
||||
/**
|
||||
*分出方类型
|
||||
*/
|
||||
public static final byte EXPEND_TYPE = 1;
|
||||
|
||||
|
||||
/**
|
||||
*接收方类型 个人
|
||||
*/
|
||||
public static final byte USER_TYPE_PERSONAL = 0;
|
||||
|
||||
/**
|
||||
*分出方类型 商户
|
||||
*/
|
||||
public static final byte USER_TYPE_MERCHANT = 1;
|
||||
|
||||
|
||||
private static final String BANK = "BANK";
|
||||
|
||||
private static final String ZFB = "ZFB";
|
||||
|
||||
private static final String WX = "WX";
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@TableId(value = "division_no", type = IdType.INPUT)
|
||||
private String divisionNo;
|
||||
|
||||
/**
|
||||
* 用户号
|
||||
*/
|
||||
private String mchNo;
|
||||
|
||||
/**
|
||||
* 类型 0:接收方 1:分出方
|
||||
*/
|
||||
private Byte type;
|
||||
|
||||
/**
|
||||
* 所属通道
|
||||
*/
|
||||
private String ifCode;
|
||||
|
||||
/**
|
||||
* 所属渠道
|
||||
*/
|
||||
private String isvNo;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 用户类型 0:个人 1:商户
|
||||
*/
|
||||
private Byte userType;
|
||||
|
||||
/**
|
||||
* 个人名称或者商户名称
|
||||
*/
|
||||
private String name;
|
||||
|
||||
/**
|
||||
* 平渠道分账账户号
|
||||
*/
|
||||
private String channelDivisionNo;
|
||||
|
||||
/**
|
||||
* 结算类型 BANK:到银行卡 ZFB:到支付宝 WX:微信
|
||||
*/
|
||||
private String settleType;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
private Date createdAt;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
private Date updatedAt;
|
||||
|
||||
/**
|
||||
* 扩展参数
|
||||
*/
|
||||
@TableField(typeHandler = EncryptTypeHandler.class)
|
||||
private String extData;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 状态
|
||||
*/
|
||||
private Byte state;
|
||||
/**
|
||||
* 所属通道
|
||||
*/
|
||||
@TableField(exist = false)
|
||||
private String ifName;
|
||||
|
||||
/**
|
||||
* 渠道简称
|
||||
*/
|
||||
@TableField(exist = false)
|
||||
private String isvName;
|
||||
|
||||
/**
|
||||
* 是否收取手续费 0:否 1:是
|
||||
*/
|
||||
@TableField(exist = false)
|
||||
private Byte isCharge;
|
||||
|
||||
/**
|
||||
* 分账值
|
||||
*/
|
||||
@TableField(exist = false)
|
||||
private BigDecimal divisionValue;
|
||||
|
||||
@TableField(exist = false)
|
||||
private String taskId;
|
||||
|
||||
@TableField(exist = false)
|
||||
private DivisionSettleInfo info;
|
||||
|
||||
/**
|
||||
* 分账分出方参数校验
|
||||
*/
|
||||
public void preCheck(){
|
||||
// Assert.notNull(this.getType(),"类型不能为空");
|
||||
Assert.notNull(this.getUserType(),"用户类型不能为空");
|
||||
Assert.notNull(this.getName(),"别名不能为空");
|
||||
if(USER_TYPE_MERCHANT == this.getUserType()){
|
||||
Assert.notNull(this.getDivisionNo(),"分账账号不能为空");
|
||||
}else{
|
||||
this.setDivisionNo(SeqKit.getDivisionNo());
|
||||
}
|
||||
Assert.notNull(this.getIfCode(),"所属通道不能为空");
|
||||
Assert.notNull(this.getIsvNo(),"所属渠道不能为空");
|
||||
Assert.notNull(this.getSettleType(),"结算到类型不能为空");
|
||||
}
|
||||
|
||||
public void preDivCheck() {
|
||||
//分账方只能是商户
|
||||
this.setUserType(USER_TYPE_MERCHANT);
|
||||
preCheck();
|
||||
Assert.isTrue(USER_TYPE_MERCHANT == this.getUserType(),"分账分出方只能选择商户");
|
||||
}
|
||||
|
||||
public void preRecCheck() {
|
||||
preCheck();
|
||||
Assert.notNull(this.getType(),"分账账号类型不能为空");
|
||||
Assert.notNull(this.getInfo(),"分账结算信息不能为空");
|
||||
this.getInfo().preCheck(this.getSettleType());
|
||||
this.extData = JSON.toJSONString(this.getInfo());
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,243 @@
|
||||
package com.jeequan.jeepay.db.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.jeequan.jeepay.core.exception.BizException;
|
||||
import com.jeequan.jeepay.core.model.BaseModel;
|
||||
import com.jeequan.jeepay.core.utils.SeqKit;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.experimental.Accessors;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.util.Assert;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.math.RoundingMode;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 分账任务表
|
||||
* </p>
|
||||
*
|
||||
* @author [mybatis plus generator]
|
||||
* @since 2024-04-02
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@Accessors(chain = true)
|
||||
@TableName(value = "t_division_task",autoResultMap = true)
|
||||
public class DivisionTask extends BaseModel {
|
||||
|
||||
public static final LambdaQueryWrapper<DivisionTask> gw(DivisionTask entity){
|
||||
return new LambdaQueryWrapper<>(entity);
|
||||
}
|
||||
|
||||
public static final LambdaQueryWrapper<DivisionTask> gw(){
|
||||
return new LambdaQueryWrapper<>();
|
||||
}
|
||||
|
||||
private static final long serialVersionUID=1L;
|
||||
|
||||
/**
|
||||
* 默认最大分账比例
|
||||
*/
|
||||
public static final BigDecimal DEFAULT_MAX_RATIO = BigDecimal.valueOf(0.3);
|
||||
|
||||
/**
|
||||
* 比例
|
||||
*/
|
||||
public static final byte DIV_MODE_RATIO = 0;
|
||||
|
||||
/**
|
||||
* 金额
|
||||
*/
|
||||
public static final byte DIV_MODE_AMOUNT = 1;
|
||||
|
||||
/**
|
||||
* 实时分账
|
||||
*/
|
||||
public static final byte DIV_TYPE_SS = 0;
|
||||
|
||||
/**
|
||||
* 延时分账
|
||||
*/
|
||||
public static final byte DIV_TYPE_YS = 1;
|
||||
|
||||
/**
|
||||
* 秒到分账
|
||||
*/
|
||||
public static final byte DIV_TYPE_MD = 2;
|
||||
|
||||
/**
|
||||
* 任务ID
|
||||
*/
|
||||
@TableId(value = "task_id", type = IdType.INPUT)
|
||||
private String taskId;
|
||||
|
||||
/**
|
||||
* 任务名称
|
||||
*/
|
||||
private String name;
|
||||
|
||||
/**
|
||||
* 用户号
|
||||
*/
|
||||
private String mchNo;
|
||||
|
||||
/**
|
||||
* 所属通道
|
||||
*/
|
||||
private String ifCode;
|
||||
//
|
||||
// /**
|
||||
// * 所属渠道
|
||||
// */
|
||||
// private String isvNo;
|
||||
|
||||
/**
|
||||
* 分账模式 0:比例分账 1:金额分账
|
||||
*/
|
||||
private Byte divisionMode;
|
||||
|
||||
/**
|
||||
* 分账类型 0:实时分账 1:延时分账 2:秒到分账
|
||||
*/
|
||||
private Byte divisionType;
|
||||
|
||||
/**
|
||||
* 分账值 分账比例为 比例值 分账金额为分账金额值
|
||||
*/
|
||||
private BigDecimal divisionValue;
|
||||
|
||||
/**
|
||||
* 最小金额 当交易金额大于当前值的时候会触发后台的分账模板的分账
|
||||
*/
|
||||
private Long minAmount;
|
||||
|
||||
/**
|
||||
* 状态 0:禁用 1:启用
|
||||
*/
|
||||
private Byte state;
|
||||
|
||||
/**
|
||||
* 是否自动分账 0:否 1:是
|
||||
*/
|
||||
private Byte isAuto;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
private Date createdAt;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
private Date updatedAt;
|
||||
|
||||
/**
|
||||
* 分账说明函
|
||||
*/
|
||||
private String url;
|
||||
|
||||
|
||||
@TableField(exist = false)
|
||||
private String mchName;
|
||||
|
||||
@TableField(exist = false)
|
||||
private String ifName;
|
||||
|
||||
@TableField(exist = false)
|
||||
private String isvName;
|
||||
|
||||
/**
|
||||
* 分账分出方
|
||||
*/
|
||||
@TableField(exist = false)
|
||||
private List<String> divisionList;
|
||||
|
||||
/**
|
||||
* 分账接收方
|
||||
*/
|
||||
@TableField(exist = false)
|
||||
private List<DivisionSubject> receiveList;
|
||||
|
||||
/**
|
||||
* 参数校验
|
||||
*/
|
||||
public void preCheck() {
|
||||
if(StringUtils.isEmpty(this.getTaskId())){
|
||||
this.setTaskId(SeqKit.genFlowNo("TA"));
|
||||
}
|
||||
Assert.hasLength(this.getName(),"分账任务名称不能为空");
|
||||
// Assert.hasLength(this.getIsvNo(),"所属通道不能空");
|
||||
// Assert.hasLength(this.getMchNo(),"所属用户不能为空");
|
||||
Assert.hasLength(this.getIfCode(),"所属通道不能为空");
|
||||
Assert.notNull(this.getDivisionMode(),"分账模式不能为空");
|
||||
Assert.notNull(this.getDivisionType(),"分账类型不能为空");
|
||||
Assert.hasLength(this.getUrl(),"分账场景说明函不能为空");
|
||||
Assert.notNull(this.getIsAuto(),"是否自动分账不能为空");
|
||||
Assert.notNull(this.getDivisionList(),"分账分出方不能为空");
|
||||
Assert.notNull(this.getReceiveList(),"分账接收方不能为空");
|
||||
if(this.getReceiveList().size() > 9){
|
||||
throw new BizException("分账接收方不允许超过9个");
|
||||
}
|
||||
this.getReceiveList().forEach(item -> {
|
||||
if(item.getDivisionValue() == null){
|
||||
throw new BizException("分账接收方详情中分账属性值不能为空");
|
||||
}
|
||||
if(item.getIsCharge() == null){
|
||||
throw new BizException("分账接收方详情中是否收取手续费不能为空");
|
||||
}
|
||||
if(item.getDivisionNo() == null){
|
||||
throw new BizException("分账接收方详情中分账收款方账户号不能为空");
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 校验配置信息
|
||||
*/
|
||||
public void preSubjectCheck() {
|
||||
Assert.notNull(this.getTaskId(),"分账任务id不能为空");
|
||||
Assert.notEmpty(this.getReceiveList(),"分账接收方不能为空");
|
||||
this.getReceiveList().forEach(item -> {
|
||||
if(StringUtils.isEmpty(item.getDivisionNo())){
|
||||
throw new BizException("分账接收方数据分账账户号为空的数据");
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 校验分账比例
|
||||
*/
|
||||
public void checkDivisionRationValue(DivisionTask ext) {
|
||||
BigDecimal totalRatio = BigDecimal.ZERO;
|
||||
for (DivisionSubject templateConfig:this.getReceiveList()) {
|
||||
totalRatio = totalRatio.add(templateConfig.getDivisionValue());
|
||||
}
|
||||
if(totalRatio.compareTo(DEFAULT_MAX_RATIO) > 0){
|
||||
throw new BizException("分账接收方分账比例之和不能超过30%");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 校验分账金额
|
||||
* @param ext
|
||||
*/
|
||||
public void checkDivisionAmountValue(DivisionTask ext) {
|
||||
BigDecimal totalAmt = BigDecimal.ZERO;
|
||||
for (DivisionSubject subject:this.getReceiveList()) {
|
||||
totalAmt = totalAmt.add(subject.getDivisionValue());
|
||||
}
|
||||
totalAmt = totalAmt.multiply(BigDecimal.valueOf(100));
|
||||
if(totalAmt.longValue() > ext.getDivisionValue().longValue()){
|
||||
throw new BizException("分账接收方所有分账金额之后不能超过所设置的分账金额");
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,69 @@
|
||||
package com.jeequan.jeepay.db.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.jeequan.jeepay.core.model.BaseModel;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 钱包表
|
||||
* </p>
|
||||
*
|
||||
* @author [mybatis plus generator]
|
||||
* @since 2022-03-12
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@Accessors(chain = true)
|
||||
@TableName("t_info_account")
|
||||
public class InfoAccount extends BaseModel {
|
||||
|
||||
// gw
|
||||
public static final LambdaQueryWrapper<InfoAccount> gw(){
|
||||
return new LambdaQueryWrapper<>();
|
||||
}
|
||||
|
||||
private static final long serialVersionUID=1L;
|
||||
|
||||
/**
|
||||
* 运营平台标识/服务商号
|
||||
*/
|
||||
private String infoId;
|
||||
|
||||
/**
|
||||
* 系统类型: 参考:SYS_TYPE
|
||||
*/
|
||||
private String infoType;
|
||||
|
||||
/**
|
||||
* 钱包余额 单位:分,(已入账金额, 提现中不动账)
|
||||
*/
|
||||
private Long balanceAmount;
|
||||
|
||||
/**
|
||||
* 钱包账户不可用金额 单位:分(比如提现中的金额)
|
||||
*/
|
||||
private Long unAmount;
|
||||
|
||||
/**
|
||||
* 在途结算(审核中)余额 单位:分,(待结算的金额, 未到结算周期)
|
||||
*/
|
||||
private Long auditProfitAmount;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
private Date createdAt;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
private Date updatedAt;
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,131 @@
|
||||
package com.jeequan.jeepay.db.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.jeequan.jeepay.core.model.BaseModel;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 钱包流水表
|
||||
* </p>
|
||||
*
|
||||
* @author [mybatis plus generator]
|
||||
* @since 2022-03-23
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@Accessors(chain = true)
|
||||
@TableName("t_info_account_history")
|
||||
public class InfoAccountHistory extends BaseModel {
|
||||
|
||||
|
||||
public static final LambdaQueryWrapper<InfoAccountHistory> gw(){
|
||||
return new LambdaQueryWrapper<>();
|
||||
}
|
||||
|
||||
/** 变更账户类型: 1-钱包账户, 2-在途账户 **/
|
||||
public static final byte OP_ACCOUNT_TYPE_BALANCE = 1;
|
||||
public static final byte OP_ACCOUNT_TYPE_AUDIT_PROFIT = 2;
|
||||
|
||||
/**
|
||||
* 关联订单类型: 1-支付订单号, 2-退款订单号, 3-提现单号, 4-转账单号
|
||||
**/
|
||||
public static final byte ORDER_TYPE_PAY = 1;
|
||||
public static final byte ORDER_TYPE_REFUND = 2;
|
||||
public static final byte ORDER_TYPE_CASHOUT = 3;
|
||||
public static final byte ORDER_TYPE_TRANSFER = 4;
|
||||
|
||||
|
||||
/** 业务类型: 1-订单佣金计算, 2-退款轧差, 3-佣金提现, 4-人工调账 **/
|
||||
public static final byte BIZ_TYPE_PAY = 1;
|
||||
public static final byte BIZ_TYPE_REFUND = 2;
|
||||
public static final byte BIZ_TYPE_CASHOUT = 3;
|
||||
public static final byte BIZ_TYPE_PLATFORM_CHANGE = 4;
|
||||
|
||||
private static final long serialVersionUID=1L;
|
||||
|
||||
/**
|
||||
* 记录ID
|
||||
*/
|
||||
@TableId(value = "hid", type = IdType.AUTO)
|
||||
private Long hid;
|
||||
|
||||
/**
|
||||
* 运营平台标识/服务商号
|
||||
*/
|
||||
private String infoId;
|
||||
|
||||
/**
|
||||
* 系统类型: 参考:SYS_TYPE
|
||||
*/
|
||||
private String infoType;
|
||||
|
||||
/**
|
||||
* 名称快照
|
||||
*/
|
||||
private String infoName;
|
||||
|
||||
/**
|
||||
* 变更账户类型: 1-钱包账户, 2-在途账户
|
||||
*/
|
||||
private Byte opAccountType;
|
||||
|
||||
/**
|
||||
* 变动前账户余额, 单位:分
|
||||
*/
|
||||
private Long opBeforeAmount;
|
||||
|
||||
/**
|
||||
* 变动金额, 单位:分
|
||||
*/
|
||||
private Long opAmount;
|
||||
|
||||
/**
|
||||
* 变动后账户余额, 单位:分
|
||||
*/
|
||||
private Long opAfterAmount;
|
||||
|
||||
/**
|
||||
* 业务类型: 1-订单佣金计算, 2-退款轧差, 3-佣金提现
|
||||
*/
|
||||
private Byte bizType;
|
||||
|
||||
/**
|
||||
* 关联订单类型: 1-支付订单号, 2-退款订单号, 3-提现单号, 4-转账单号
|
||||
*/
|
||||
private Byte relaBizOrderType;
|
||||
|
||||
/**
|
||||
* 关联订单号
|
||||
*/
|
||||
private String relaBizOrderId;
|
||||
|
||||
/**
|
||||
* 关联结算记录ID
|
||||
*/
|
||||
private Long settId;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
private Date createdAt;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
private Date updatedAt;
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,100 @@
|
||||
package com.jeequan.jeepay.db.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.jeequan.jeepay.core.model.BaseModel;
|
||||
import com.jeequan.jeepay.core.model.ip.IpAddressResult;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* ip关联地区缓存表
|
||||
* </p>
|
||||
*
|
||||
* @author [mybatis plus generator]
|
||||
* @since 2024-03-21
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@Accessors(chain = true)
|
||||
@TableName("t_ip_location")
|
||||
@NoArgsConstructor
|
||||
public class IpLocation extends BaseModel {
|
||||
|
||||
private static final long serialVersionUID=1L;
|
||||
|
||||
/**
|
||||
* ip
|
||||
*/
|
||||
@TableId(type = IdType.INPUT)
|
||||
private String ip;
|
||||
|
||||
/**
|
||||
* 省份名称
|
||||
*/
|
||||
private String provinceName;
|
||||
|
||||
/**
|
||||
* 省份编码
|
||||
*/
|
||||
private String provinceCode;
|
||||
|
||||
/**
|
||||
* 城市名称
|
||||
*/
|
||||
private String cityName;
|
||||
|
||||
/**
|
||||
* 城市编码
|
||||
*/
|
||||
private String cityCode;
|
||||
|
||||
/**
|
||||
* 地区名称
|
||||
*/
|
||||
private String areaName;
|
||||
|
||||
/**
|
||||
* 区域编码
|
||||
*/
|
||||
private String areaCode;
|
||||
|
||||
/**
|
||||
* 地址
|
||||
*/
|
||||
private String address;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
private Date createdAt;
|
||||
|
||||
@TableField(exist = false)
|
||||
private Byte state;
|
||||
|
||||
public IpLocation(IpAddressResult addressResult) {
|
||||
this.ip = addressResult.getIp();
|
||||
this.provinceName = addressResult.getPro();
|
||||
this.provinceCode = addressResult.getProCode();
|
||||
this.cityName = addressResult.getCity();
|
||||
this.cityCode = addressResult.getCityCode();
|
||||
this.areaName = addressResult.getRegion();
|
||||
this.areaCode = addressResult.getRegionCode();
|
||||
this.address = addressResult.getAddr();
|
||||
this.remark = addressResult.getErr();
|
||||
this.state = addressResult.getState();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,114 @@
|
||||
package com.jeequan.jeepay.db.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.jeequan.jeepay.core.entity.IsvInfo;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 服务商信息表
|
||||
* </p>
|
||||
*
|
||||
* @author [mybatis plus generator]
|
||||
* @since 2021-04-27
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@Accessors(chain = true)
|
||||
@TableName("t_isv_info")
|
||||
public class IsvInfoEntity extends IsvInfo {
|
||||
|
||||
//gw
|
||||
public static final LambdaQueryWrapper<IsvInfoEntity> gw(){
|
||||
return new LambdaQueryWrapper<>();
|
||||
}
|
||||
|
||||
private static final long serialVersionUID=1L;
|
||||
|
||||
/**
|
||||
* 服务商号
|
||||
*/
|
||||
@TableId(value = "isv_no", type = IdType.INPUT)
|
||||
private String isvNo;
|
||||
|
||||
/**
|
||||
* 服务商名称
|
||||
*/
|
||||
private String isvName;
|
||||
|
||||
/**
|
||||
* 1:一级渠道
|
||||
* 2:二级渠道
|
||||
*/
|
||||
private Integer isvLevel;
|
||||
|
||||
/**
|
||||
* 服务商简称
|
||||
*/
|
||||
private String isvShortName;
|
||||
|
||||
/**
|
||||
* 联系人姓名
|
||||
*/
|
||||
private String contactName;
|
||||
|
||||
/**
|
||||
* 联系人手机号
|
||||
*/
|
||||
private String contactTel;
|
||||
|
||||
/**
|
||||
* 联系人邮箱
|
||||
*/
|
||||
private String contactEmail;
|
||||
|
||||
/**
|
||||
* 状态: 0-停用, 1-正常
|
||||
*/
|
||||
private Byte state;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 创建者用户ID
|
||||
*/
|
||||
private Long createdUid;
|
||||
|
||||
/**
|
||||
* 创建者姓名
|
||||
*/
|
||||
private String createdBy;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
private Date createdAt;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
private Date updatedAt;
|
||||
|
||||
/**
|
||||
* 渠道持有者类型
|
||||
* @see com.jeequan.jeepay.core.constants.CS.SYS_ROLE_TYPE
|
||||
*/
|
||||
private String ownerType;
|
||||
|
||||
/**
|
||||
* 渠道持有者ID
|
||||
* 若是代理这是代理编号;
|
||||
* 若是商户则是商户编号;
|
||||
*/
|
||||
private String ownerNo;
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
package com.jeequan.jeepay.db.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 通道禁止关联标记表
|
||||
*
|
||||
* @author deng
|
||||
* @since 2024/4/24
|
||||
*/
|
||||
@Data
|
||||
@TableName("t_isv_user_conn_disabled")
|
||||
public class IsvUserConnDisabledEntity {
|
||||
|
||||
@TableId
|
||||
private Long id;
|
||||
|
||||
private String isvNo;
|
||||
|
||||
private String ifCode;
|
||||
|
||||
private String infoType;
|
||||
|
||||
private String infoId;
|
||||
|
||||
private Date createTime;
|
||||
}
|
||||
@@ -0,0 +1,90 @@
|
||||
package com.jeequan.jeepay.db.entity;
|
||||
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import com.jeequan.jeepay.core.constants.CS;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.experimental.SuperBuilder;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
@Data
|
||||
@SuperBuilder(toBuilder = true)
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@TableName("t_isv_user_conn")
|
||||
public class IsvUserConnEntity {
|
||||
|
||||
@TableId(type = IdType.AUTO)
|
||||
private Integer id;
|
||||
|
||||
@TableField("isv_no")
|
||||
private String isvNo;
|
||||
|
||||
/**
|
||||
* @since 2024.04.03
|
||||
* 冗余商户与服务商的关联关系,方便后续操作
|
||||
*/
|
||||
@TableField("agent_no")
|
||||
private String agentNo;
|
||||
|
||||
@TableField("info_type")
|
||||
private String infoType;
|
||||
|
||||
@TableField("info_id")
|
||||
private String infoId;
|
||||
|
||||
private int sort;
|
||||
|
||||
/**
|
||||
* 是否可使用,主要针对商户入网
|
||||
* <p>
|
||||
* @since 2024-01-06
|
||||
* 当该参数为0时,该渠道关联关系即为无效
|
||||
* <ol>
|
||||
* <li>当前关联用户类型为普通用户,那么他无法再使用该渠道配置参数进行商户入网</li>
|
||||
* <li>当前关联用户类型为服务商(原服务商),那么他无法给他的下级服务商(原服务商)、普通用户修改配置信息</li>
|
||||
* </ol>
|
||||
* 当该参数为1时候,以上限制全无
|
||||
*/
|
||||
private Integer status;
|
||||
|
||||
/**
|
||||
* 是否可配置
|
||||
* <p>
|
||||
* @since 2024-01-06
|
||||
* <br/>
|
||||
* 当该参数为0时候,他的下级代理不会自动继承该渠道关联;
|
||||
* <br/>
|
||||
* 当改参数为1时候,他的下级代理,商户等会自动继承该关联信息
|
||||
* </p>
|
||||
*/
|
||||
private int configStatus;
|
||||
|
||||
private String remark;
|
||||
|
||||
@TableField("created_uid")
|
||||
private Long createdUid;
|
||||
|
||||
@TableField("created_by")
|
||||
private String createdBy;
|
||||
|
||||
@TableField(fill = FieldFill.INSERT)
|
||||
private Date createdAt;
|
||||
|
||||
public static final Integer STATUS_ENABLED = (int) CS.YES;
|
||||
|
||||
public static final Integer STATUS_DISABLED = (int )CS.NO;
|
||||
|
||||
public static IsvUserConnEntity create(String infoType, String infoId, String isvNo, int configStatus, int status) {
|
||||
return IsvUserConnEntity.builder()
|
||||
.infoType(infoType)
|
||||
.infoId(infoId)
|
||||
.isvNo(isvNo)
|
||||
.configStatus(configStatus)
|
||||
.status(status)
|
||||
.build();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
package com.jeequan.jeepay.db.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import com.jeequan.jeepay.core.model.BaseModel;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@TableName("t_location_cache")
|
||||
public class LocationCache extends BaseModel {
|
||||
|
||||
@TableId(value = "id", type = IdType.AUTO)
|
||||
private Long id;
|
||||
|
||||
private String address;
|
||||
|
||||
/**
|
||||
* 经度
|
||||
*/
|
||||
private String longitude;
|
||||
|
||||
private String latitude;
|
||||
|
||||
@TableField(value = "createTime", fill = FieldFill.INSERT)
|
||||
private Date createTime;
|
||||
|
||||
@TableField(value = "updateTime", fill = FieldFill.INSERT_UPDATE)
|
||||
private Date updateTime;
|
||||
}
|
||||
@@ -0,0 +1,75 @@
|
||||
package com.jeequan.jeepay.db.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.jeequan.jeepay.core.model.BaseModel;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 应用与进件数据的关联表
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@Accessors(chain = true)
|
||||
@TableName("t_mch_app_applyment")
|
||||
public class MchAppApplyment extends BaseModel {
|
||||
|
||||
public static final LambdaQueryWrapper<MchAppApplyment> gw(){
|
||||
return new LambdaQueryWrapper<>();
|
||||
}
|
||||
/**
|
||||
* 商户号
|
||||
*/
|
||||
private String mchNo;
|
||||
/**
|
||||
* 应用号
|
||||
*/
|
||||
private String mchAppId;
|
||||
/**
|
||||
* 商户入网申请单号
|
||||
*/
|
||||
private String mchApplyId;
|
||||
/**
|
||||
* 微信支付交易权重
|
||||
*/
|
||||
private Integer wxWeight;
|
||||
/**
|
||||
* 支付宝支付交易权重
|
||||
*/
|
||||
private Integer aliWeight;
|
||||
/**
|
||||
*银联支付交易权重
|
||||
*/
|
||||
private Integer ysfWeight;
|
||||
/**
|
||||
*状态。0:未生效;1:已生效;
|
||||
*/
|
||||
private Integer status;
|
||||
/**
|
||||
*备注信息
|
||||
*/
|
||||
private String remark;
|
||||
/**
|
||||
*创建时间
|
||||
*/
|
||||
private Date createdAt;
|
||||
/**
|
||||
*更新时间
|
||||
*/
|
||||
private Date updatedAt;
|
||||
/**
|
||||
* 应用名称
|
||||
*/
|
||||
@TableField(exist = false)
|
||||
private String appName;
|
||||
/**
|
||||
* 商户简称
|
||||
*/
|
||||
@TableField(exist = false)
|
||||
private String mchShortName;
|
||||
}
|
||||
@@ -0,0 +1,201 @@
|
||||
package com.jeequan.jeepay.db.entity;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler;
|
||||
import com.jeequan.jeepay.core.model.BaseModel;
|
||||
import com.jeequan.jeepay.core.model.MchExtInfo;
|
||||
import com.jeequan.jeepay.db.typehandler.EncryptTypeHandler;
|
||||
import com.jeequan.jeepay.db.typehandler.MchExtInfoListHandler;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 商户应用表
|
||||
* </p>
|
||||
*
|
||||
* @author [mybatis plus generator]
|
||||
* @since 2021-06-15
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@Accessors(chain = true)
|
||||
@TableName(value = "t_mch_app", autoResultMap = true)
|
||||
public class MchAppEntity extends BaseModel {
|
||||
|
||||
public static final Byte DISABLE = 0;
|
||||
|
||||
public static final Byte NORMAL = 1;
|
||||
|
||||
public static final Byte AUDIT = 2;
|
||||
|
||||
public static final Byte REJECT = -1;
|
||||
|
||||
private static final long serialVersionUID=1L;
|
||||
|
||||
/**
|
||||
* 线下
|
||||
*/
|
||||
public static final byte OFFLINE = 0;
|
||||
|
||||
/**
|
||||
* 线上
|
||||
*/
|
||||
public static final byte ONLINE = 1;
|
||||
|
||||
|
||||
|
||||
public static final LambdaQueryWrapper<MchAppEntity> gw(){
|
||||
return new LambdaQueryWrapper<>();
|
||||
}
|
||||
|
||||
/**
|
||||
* 应用ID
|
||||
*/
|
||||
@TableId(value = "app_id", type = IdType.INPUT)
|
||||
private String appId;
|
||||
|
||||
|
||||
/**
|
||||
* 应用私钥(MD5)
|
||||
*/
|
||||
@TableField(typeHandler = EncryptTypeHandler.class)
|
||||
private String appSecret;
|
||||
|
||||
/**
|
||||
* 应用名称
|
||||
*/
|
||||
private String appName;
|
||||
|
||||
/**
|
||||
* 商户号
|
||||
*/
|
||||
private String mchNo;
|
||||
|
||||
/**
|
||||
* 服务商号
|
||||
*/
|
||||
private String agentNo;
|
||||
|
||||
/**
|
||||
* 顶级服务商号
|
||||
*/
|
||||
private String topAgentNo;
|
||||
|
||||
/**
|
||||
* 是否默认: 0-否、 1-是(api接口未显式指定应用则使用默认应用)
|
||||
*/
|
||||
private Byte defaultFlag;
|
||||
|
||||
/**
|
||||
* 应用状态: 0-停用, 1-正常 2:审核中 -1:审核驳回
|
||||
*/
|
||||
private Byte state;
|
||||
|
||||
/**
|
||||
* 审核意见
|
||||
*/
|
||||
private String stateDesc;
|
||||
|
||||
/**
|
||||
* 轮询绑定状态。0 - 未开通;1 - 已开通自动绑定;2 - 不开通自动绑定
|
||||
*/
|
||||
private int pollingBindState;
|
||||
|
||||
/**
|
||||
* 支持的加签方式: MD5、 RSA2(若使用系统测试或者app必须支持MD5)
|
||||
*/
|
||||
private String appSignType;
|
||||
|
||||
/**
|
||||
* 应用公钥(RSA2)
|
||||
*/
|
||||
private String appRsa2PublicKey;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 创建者用户ID
|
||||
*/
|
||||
private Long createdUid;
|
||||
|
||||
/**
|
||||
* 创建者姓名
|
||||
*/
|
||||
private String createdBy;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
private Date createdAt;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
private Date updatedAt;
|
||||
|
||||
/**
|
||||
* 0: 线下,
|
||||
* 1: 线上
|
||||
*/
|
||||
@TableField("`range`")
|
||||
private Integer range;
|
||||
|
||||
/**
|
||||
* 是否支持API,
|
||||
* 0: 不支持
|
||||
* 1: 支持
|
||||
*/
|
||||
private Integer apiFlag;
|
||||
|
||||
/**
|
||||
* 应用信息
|
||||
*/
|
||||
@TableField(typeHandler = MchExtInfoListHandler.class)
|
||||
private List<MchExtInfo> information;
|
||||
|
||||
private String mccCode;
|
||||
|
||||
@TableField(typeHandler = FastjsonTypeHandler.class)
|
||||
private List<JSONObject> qualificationList;
|
||||
|
||||
/*预开通的方案id多个用英文逗号隔开*/
|
||||
private String predicOpenPackage;
|
||||
|
||||
/*预开通的产品id多个用英文逗号隔开*/
|
||||
private String predicOpenProduct;
|
||||
|
||||
@TableField(exist = false)
|
||||
List<String> subAgentNoList;
|
||||
|
||||
@TableField(exist = false)
|
||||
List<String> finalMchNoList;
|
||||
|
||||
/**
|
||||
* 服务商号
|
||||
*/
|
||||
@TableField(exist = false)
|
||||
private String agentName;
|
||||
|
||||
@TableField(exist = false)
|
||||
private String mchName;
|
||||
|
||||
@TableField(exist = false)
|
||||
private String unionSearchId;
|
||||
|
||||
@TableField(exist = false)
|
||||
private Integer mchType;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,71 @@
|
||||
package com.jeequan.jeepay.db.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 商户app推送设备表
|
||||
* </p>
|
||||
*
|
||||
* @author [mybatis plus generator]
|
||||
* @since 2022-02-17
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@Accessors(chain = true)
|
||||
@TableName("t_mch_app_push_info")
|
||||
public class MchAppPushInfo implements Serializable {
|
||||
|
||||
private static final long serialVersionUID=1L;
|
||||
|
||||
// 设备cid类型:app端:app_plus,小程序端:mp_weixin
|
||||
public static String PUSH_CID_TYPE_APP = "app_plus";
|
||||
public static String PUSH_CID_TYPE_WX = "mp_weixin";
|
||||
|
||||
// uniPush版本,1-1.0版本,2-2.0版本
|
||||
public static byte UNI_PUSH_VERSION_1 = 1;
|
||||
public static byte UNI_PUSH_VERSION_2 = 2;
|
||||
|
||||
// gw
|
||||
public static final LambdaQueryWrapper<MchAppPushInfo> gw(){
|
||||
return new LambdaQueryWrapper<>();
|
||||
}
|
||||
|
||||
/**
|
||||
* 设备号CID
|
||||
*/
|
||||
private String cid;
|
||||
|
||||
/**
|
||||
* 设备cid类型:app端:app_plus,小程序端:mp_weixin
|
||||
*/
|
||||
private String cidType;
|
||||
|
||||
/**
|
||||
* uniPush版本,1-1.0版本,2-2.0版本
|
||||
*/
|
||||
private Byte uniPushVersion;
|
||||
|
||||
/**
|
||||
* 商户号
|
||||
*/
|
||||
private String mchNo;
|
||||
|
||||
/**
|
||||
* 系统用户ID
|
||||
*/
|
||||
private Long sysUserId;
|
||||
|
||||
/**
|
||||
* 设备信息
|
||||
*/
|
||||
private String deviceInfo;
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,430 @@
|
||||
package com.jeequan.jeepay.db.entity;
|
||||
|
||||
import com.alibaba.fastjson.annotation.JSONField;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.jeequan.jeepay.core.constants.CS;
|
||||
import com.jeequan.jeepay.core.model.BaseModel;
|
||||
import com.jeequan.jeepay.db.typehandler.EncryptTypeHandler;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 特约商户进件信息表
|
||||
* </p>
|
||||
*
|
||||
* @author [mybatis plus generator]
|
||||
* @since 2021-12-28
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@Accessors(chain = true)
|
||||
@TableName(value = "t_mch_applyment", autoResultMap = true)
|
||||
public class MchApplyment extends BaseModel {
|
||||
|
||||
/**
|
||||
* 状态: 0-未发起(草稿)、 1-审核中、 2-进件成功、 3-驳回待修改、 4-待验证、 5-待签约、6-签约完成/审核成功,等待其他操作、 7-等待系统预审核、 8-预审核拒绝 , 11-图片待提交
|
||||
*/
|
||||
public static final byte STATE_SAVE = 0;
|
||||
public static final byte STATE_AUDITING = 1;
|
||||
public static final byte STATE_SUCCESS = 2;
|
||||
public static final byte STATE_REJECT_WAIT_MODIFY = 3;
|
||||
public static final byte STATE_WAIT_VERIFY = 4;
|
||||
public static final byte STATE_WAIT_SIGN = 5;
|
||||
public static final byte STATE_FINISH_SIGN = 6;
|
||||
public static final byte STATE_WAIT_PRE_AUDITING = 7;
|
||||
public static final byte STATE_WAIT_PRE_AUDIT_REJECT = 8;
|
||||
|
||||
/**
|
||||
* 任务等待中, 后根据提交的剩余步骤去执行相关的商户入网操作
|
||||
*/
|
||||
public static final byte STATE_AUDITING_WAIT = 100;
|
||||
|
||||
/**
|
||||
* 通道人工审核
|
||||
*/
|
||||
public static final byte STATE_UPSTREAM_MANUAL_REVIEW = 11;
|
||||
/**
|
||||
* 待复审
|
||||
*/
|
||||
public static final byte STATE_SUCCESS_NEED_SECOND_VERIFY = 12;
|
||||
/**
|
||||
* 风控
|
||||
*/
|
||||
public static final byte STATE_WAIT_RISK = 20;
|
||||
/**
|
||||
* 冻结
|
||||
*/
|
||||
public static final byte STATE_WAIT_FREEZE = 21;
|
||||
/**
|
||||
* 注销
|
||||
*/
|
||||
public static final byte STATE_WAIT_LOGOUT = 22;
|
||||
|
||||
/** 1-个人, 2-个体工商户, 3-企业, 4-党政、机关及事业单位, 5-其他组织, 6-个人卖家 **/
|
||||
// public static final byte MERCHANT_TYPE_PERSONAL = 1;
|
||||
// public static final byte MERCHANT_TYPE_INDIVIDUAL = 2;
|
||||
// public static final byte MERCHANT_TYPE_ENTERPRISE = 3;
|
||||
// public static final byte MERCHANT_TYPE_GOV = 4;
|
||||
// public static final byte MERCHANT_TYPE_OTHER = 5;
|
||||
// public static final byte MERCHANT_TYPE_PERSONAL_SELLER= 6; // 收付通新增,个人卖家,指无营业执照,已持续从事电子商务经营活动满6个月,且期间经营收入累计超过20万元的个人商家。
|
||||
|
||||
/**
|
||||
* B-对公, C-对私
|
||||
**/
|
||||
public static final String SETT_ACCOUNT_TYPE_CORPORATE = "B";
|
||||
public static final String SETT_ACCOUNT_TYPE_PERSONAL = "C";
|
||||
|
||||
/**
|
||||
* 默认 收款商户
|
||||
*/
|
||||
public static final String REFUND_WAY_PAYMENT = "payment";
|
||||
|
||||
/**
|
||||
* 平台户
|
||||
*/
|
||||
public static final String REFUND_WAY_PLATFORM = "platform";
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 回调通知链接
|
||||
*/
|
||||
private String notifyUrl;
|
||||
|
||||
/**
|
||||
* 下游系统申请单号
|
||||
*/
|
||||
private String subApplyId;
|
||||
|
||||
/**
|
||||
* 渠道申请单号
|
||||
*/
|
||||
private String channelApplyNo;
|
||||
|
||||
/**
|
||||
* 渠道要求的自定义商户号(建议采用mchNo_时间戳(10位)的形式)
|
||||
*/
|
||||
private String channelDiyMchNo;
|
||||
|
||||
/**
|
||||
* 收单机构编号
|
||||
*/
|
||||
private String channelMchNo;
|
||||
|
||||
/**
|
||||
* 商户号
|
||||
*/
|
||||
private String mchNo;
|
||||
|
||||
/**
|
||||
* 渠道商号
|
||||
*/
|
||||
private String isvNo;
|
||||
|
||||
/**
|
||||
* 渠道商号
|
||||
*/
|
||||
private String agentNo;
|
||||
|
||||
/**
|
||||
* 顶级服务商号
|
||||
*/
|
||||
private String topAgentNo;
|
||||
|
||||
/**
|
||||
* 支付接口代码
|
||||
*/
|
||||
private String ifCode;
|
||||
|
||||
/**
|
||||
* 接口名称
|
||||
*/
|
||||
private String ifName;
|
||||
|
||||
/**
|
||||
* 商户全称
|
||||
*/
|
||||
private String mchFullName;
|
||||
|
||||
/**
|
||||
* 商户简称
|
||||
*/
|
||||
private String mchShortName;
|
||||
|
||||
/**
|
||||
* 商户类型: 1-个人, 2-个体工商户, 3-企业, 4-党政、机关及事业单位, 5-其他组织
|
||||
*/
|
||||
private Byte merchantType;
|
||||
|
||||
/**
|
||||
* 联系人(不一定的法人)姓名
|
||||
*/
|
||||
private String contactName;
|
||||
|
||||
/**
|
||||
* 省市县编码 (非必填, 放在外层用作搜索方便)
|
||||
*/
|
||||
private String areaCode;
|
||||
|
||||
/**
|
||||
* 省市县名称描述
|
||||
*/
|
||||
private String areaInfo;
|
||||
|
||||
/**
|
||||
* 详细地址
|
||||
*/
|
||||
private String address;
|
||||
|
||||
/**
|
||||
* 状态: 0-未发起(草稿)、 1-审核中、 2-进件成功、 3-驳回待修改、 4-待验证、 5-待签约、6-签约完成/审核成功,等待其他操作、 7-等待系统预审核、 8-预审核拒绝
|
||||
*/
|
||||
private Byte state;
|
||||
|
||||
/**
|
||||
* 备注信息
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 运营端的备注信息
|
||||
*/
|
||||
@TableField("IF(JSON_VALID(remark), JSON_UNQUOTE(JSON_EXTRACT(remark, '$.mgr')), remark)")
|
||||
private String mgrRemark;
|
||||
|
||||
/**
|
||||
* 服务商端备注
|
||||
*/
|
||||
@TableField("IF(JSON_VALID(remark), JSON_UNQUOTE(JSON_EXTRACT(remark, '$.agt')), remark)")
|
||||
private String agtRemark;
|
||||
|
||||
/**
|
||||
* 商户端备注
|
||||
*/
|
||||
@TableField("IF(JSON_VALID(remark), JSON_UNQUOTE(JSON_EXTRACT(remark, '$.mch')), remark)")
|
||||
private String mchRemark;
|
||||
|
||||
/**
|
||||
* 入网操作剩余步骤,总共有几步主要看通道
|
||||
*/
|
||||
private Byte remainStep;
|
||||
|
||||
/**
|
||||
* 进件成功接口返回参数, 用于配置到商户侧的参数信息
|
||||
*/
|
||||
private String succResParameter;
|
||||
|
||||
/**
|
||||
* 渠道拓展参数1
|
||||
*/
|
||||
private String channelVar1;
|
||||
|
||||
/**
|
||||
* 渠道拓展参数2
|
||||
*/
|
||||
private String channelVar2;
|
||||
|
||||
/**
|
||||
* 门店入驻成功接口返回参数
|
||||
*/
|
||||
private String storeSuccResParameter;
|
||||
|
||||
/**
|
||||
* 响应提示信息(一般进件异常或提示信息)
|
||||
*/
|
||||
private String applyErrorInfo;
|
||||
|
||||
/**
|
||||
* 商户所属拓展员ID
|
||||
*/
|
||||
private Long epUserId;
|
||||
|
||||
/**
|
||||
* 进件来源
|
||||
*/
|
||||
private String applyPageType;
|
||||
|
||||
/**
|
||||
* 默认结算方式
|
||||
* 部分通道可以根据传参发起多种结算方式的订单
|
||||
*/
|
||||
private String settlementType;
|
||||
|
||||
/**
|
||||
* 自动配置的应用ID,不为空自动进行关联等一系列配置
|
||||
*/
|
||||
private String autoConfigMchAppId;
|
||||
|
||||
|
||||
/**
|
||||
* 自动配置结果信息
|
||||
*/
|
||||
private String autoConfigResultInfo;
|
||||
|
||||
/**
|
||||
* 创建者用户ID
|
||||
*/
|
||||
private Long createdUid;
|
||||
|
||||
/**
|
||||
* 创建者姓名
|
||||
*/
|
||||
private String createdBy;
|
||||
|
||||
/**
|
||||
* 最后一次请求上游时间
|
||||
*/
|
||||
private Date lastApplyAt;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
private Date createdAt;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
private Date updatedAt;
|
||||
|
||||
/**
|
||||
* 支付配置参数ID,关联t_pay_interface_config_alternative的ID
|
||||
*/
|
||||
private Long payInterfaceId;
|
||||
|
||||
/**
|
||||
* 退款类型 payment:收款商户 platform 平台账户
|
||||
*/
|
||||
private String refundWay;
|
||||
|
||||
/**
|
||||
* 反扫权限开关。1:开;0:关;2:未指定,根据业务判断是否开关
|
||||
* 为空同2
|
||||
*/
|
||||
private Integer scanPayPerm;
|
||||
|
||||
// gw
|
||||
public static LambdaQueryWrapper<MchApplyment> gw() {
|
||||
return new LambdaQueryWrapper<>();
|
||||
}
|
||||
|
||||
/**
|
||||
* 系统申请单号
|
||||
*/
|
||||
@TableId
|
||||
private String applyId;
|
||||
|
||||
/**
|
||||
* 联系人电话
|
||||
*/
|
||||
@TableField(typeHandler = EncryptTypeHandler.class)
|
||||
private String contactPhone;
|
||||
|
||||
|
||||
/**
|
||||
* 商户进件详细消息(JSON类型)
|
||||
*/
|
||||
@TableField(typeHandler = EncryptTypeHandler.class)
|
||||
private String applyDetailInfo;
|
||||
|
||||
@TableField(exist = false)
|
||||
private List<MchSubInfoEntity> mchSubInfoEntity;
|
||||
|
||||
@TableField(exist = false)
|
||||
private Integer authenticationState;
|
||||
|
||||
@TableField(exist = false)
|
||||
private Date firstDate;
|
||||
|
||||
@TableField(exist = false)
|
||||
private Date lastDate;
|
||||
|
||||
@TableField(exist = false)
|
||||
private String unionSearchId;
|
||||
|
||||
@TableField(exist = false)
|
||||
private Integer wxAuthenticationState;
|
||||
|
||||
@TableField(exist = false)
|
||||
private Integer zfbAuthenticationState;
|
||||
|
||||
@TableField(exist = false)
|
||||
private String isvName;
|
||||
|
||||
@TableField(exist = false)
|
||||
private String agentNoName;
|
||||
|
||||
@TableField(exist = false)
|
||||
private String agentPhone;
|
||||
|
||||
@TableField(exist = false)
|
||||
private String isvShortName;
|
||||
|
||||
@TableField(exist = false)
|
||||
private String appName;
|
||||
|
||||
/**
|
||||
* 应用的范围 0, 线下;1,线上
|
||||
*/
|
||||
@TableField(exist = false)
|
||||
private Integer range;
|
||||
|
||||
/**
|
||||
* 应用的范围 mccCode
|
||||
*/
|
||||
@TableField(exist = false)
|
||||
private String mccCode;
|
||||
|
||||
@TableField(exist = false)
|
||||
private Integer storeNumber;
|
||||
|
||||
/**
|
||||
* 用户名称
|
||||
*/
|
||||
@TableField(exist = false)
|
||||
private String mchUserName;
|
||||
|
||||
/**
|
||||
* 用户电话
|
||||
*/
|
||||
@TableField(exist = false)
|
||||
private String mchUserPhone;
|
||||
|
||||
@TableField(exist = false)
|
||||
private String mchServiceName;
|
||||
|
||||
@TableField(exist = false)
|
||||
private String mchServicePhone;
|
||||
|
||||
/**
|
||||
* 商户名称
|
||||
*/
|
||||
@TableField(exist = false)
|
||||
private String mchApplyName;
|
||||
|
||||
@TableField(exist = false)
|
||||
List<String> subAgentNoList;
|
||||
|
||||
/**
|
||||
* 是否支持分账查询
|
||||
*/
|
||||
@TableField(exist = false)
|
||||
private Byte isDivision;
|
||||
|
||||
/**
|
||||
* 商户状态是否可以支付
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@JSONField(serialize = false)
|
||||
public boolean isPay() {
|
||||
return STATE_SUCCESS == this.getState() || STATE_SUCCESS_NEED_SECOND_VERIFY == this.getState();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,287 @@
|
||||
package com.jeequan.jeepay.db.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 商户配置表
|
||||
* </p>
|
||||
*
|
||||
* @author [mybatis plus generator]
|
||||
* @since 2022-02-10
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@Accessors(chain = true)
|
||||
@TableName("t_mch_config")
|
||||
public class MchConfig implements Serializable {
|
||||
|
||||
public static final String AREA_LOCAK_OPEN = "1";
|
||||
|
||||
public static final String AREA_LOCAK_CLOSE = "0";
|
||||
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
public static final class Option {
|
||||
|
||||
private String configKey;
|
||||
|
||||
private String configName;
|
||||
|
||||
private String groupKey;
|
||||
|
||||
private String type;
|
||||
|
||||
private String defVal;
|
||||
|
||||
public static Option APP_VOICE = new Option("appVoice", "是否启用app订单语音播报", "orderConfig", "radio", "1");
|
||||
public static Option QRC_ESCAPING = new Option("qrcEscaping", "是否启用码牌防逃单功能","orderConfig", "radio", "1");
|
||||
public static Option SELF_CASHIER_STATE = new Option("selfCashierState", "便捷收银台开关", "selfCashier", "radio", "0");
|
||||
public static Option WEB_CASHIER_STATE = new Option("webCashierState", "WEB收银台开关", "webCashier", "radio", "0");
|
||||
public static Option MEMBER_MODEL_STATE = new Option("memberModelState", "会员模块状态开关", "memberConfig", "radio", "1");
|
||||
public static Option MEMBER_PAY_STATE = new Option("memberPayState", "会员支付开关", "memberConfig", "radio", "0");
|
||||
public static Option MEMBER_CUSTOM_AMOUNT_STATE = new Option("memberCustomAmountState", "充值自定义金额", "memberConfig", "radio", "1");
|
||||
public static Option APPLYMENT_DEF_ISV_NO = new Option("applymentDefIsvNo", "入网时默认的渠道号", "applymentConfig", "radio", null);
|
||||
|
||||
// 线下电子围栏默认值
|
||||
public static Option REGION_LOCK_OFFLINE = new Option("regionLock", "电子围栏标识", "applymentConfig", "radio", "1");
|
||||
// 线上电子围栏默认值
|
||||
public static Option REGION_LOCK_ONLINE = new Option("regionLock", "电子围栏标识", "applymentConfig", "radio", "0");
|
||||
|
||||
public static List<Option> optionList = new ArrayList<>();
|
||||
|
||||
static {
|
||||
optionList.add(APP_VOICE);
|
||||
optionList.add(QRC_ESCAPING);
|
||||
optionList.add(SELF_CASHIER_STATE);
|
||||
optionList.add(WEB_CASHIER_STATE);
|
||||
optionList.add(MEMBER_MODEL_STATE);
|
||||
optionList.add(MEMBER_PAY_STATE);
|
||||
optionList.add(MEMBER_CUSTOM_AMOUNT_STATE);
|
||||
optionList.add(APPLYMENT_DEF_ISV_NO);
|
||||
optionList.add(REGION_LOCK_OFFLINE);
|
||||
optionList.add(REGION_LOCK_ONLINE);
|
||||
}
|
||||
|
||||
public static Option getFirstByConfigKey(String configKey) {
|
||||
for (Option option : optionList) {
|
||||
if (configKey.equals(option.configKey)) {
|
||||
return option;
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
public static String getDefIsvKey(String ifCode) {
|
||||
return ifCode + "_DEF_ISV";
|
||||
}
|
||||
|
||||
private static final long serialVersionUID=1L;
|
||||
|
||||
// gw
|
||||
public static final LambdaQueryWrapper<MchConfig> gw(){
|
||||
return new LambdaQueryWrapper<>();
|
||||
}
|
||||
|
||||
public static final String YES = "1";
|
||||
public static final String NO = "0";
|
||||
|
||||
/** 是否启用app订单语音播报 **/
|
||||
public static final String APP_VOICE = "appVoice";
|
||||
/** 是否启用码牌防逃单功能 **/
|
||||
public static final String QRC_ESCAPING = "qrcEscaping";
|
||||
|
||||
/** 便捷收银台LOGO及底部显示配置 **/
|
||||
public static final String SELF_CASHIER_SITEINFO_TYPE_DEFAULT = "DEFAULT"; // 默认
|
||||
public static final String SELF_CASHIER_SITEINFO_TYPE_NONE = "NONE"; // 为空
|
||||
public static final String SELF_CASHIER_SITEINFO_TYPE_CUSTOM = "CUSTOM"; // 自定义
|
||||
|
||||
/** group key */
|
||||
public static final String SELF_CASHIER_GROUP_KEY = "selfCashier";
|
||||
public static final String WEB_CASHIER_GROUP_KEY = "webCashier";
|
||||
|
||||
/** 便捷收银台 / web收银台 配置 **/
|
||||
public static final String SELF_CASHIER_STATE = "selfCashierState";
|
||||
public static final String SELF_CASHIER_SITEINFO_TYPE = "selfCashierSiteInfoType";
|
||||
public static final String SELF_CASHIER_WXH5_CONFIG = "selfCashierWxH5Config";
|
||||
public static final String SELF_CASHIER_ALIWAP_CONFIG = "selfCashierAliWapConfig";
|
||||
|
||||
public static final String WEB_CASHIER_STATE = "webCashierState";
|
||||
public static final String WEB_CASHIER_SITEINFO_TYPE = "webCashierSiteInfoType";
|
||||
public static final String WEB_CASHIER_WXH5_CONFIG = "webCashierWxH5Config";
|
||||
public static final String WEB_CASHIER_ALIWAP_CONFIG = "webCashierAliWapConfig";
|
||||
|
||||
/** 商户会员配置 **/
|
||||
public static final String SELF_MEMBER_MODEL_STATE = "memberModelState";
|
||||
public static final String SELF_MEMBER_PAY_STATE = "memberPayState";
|
||||
public static final String SELF_MEMBER_CUSTOM_AMOUNT_STATE = "memberCustomAmountState";
|
||||
public static final String SELF_MEMBER_MAX_BALANCE = "mbrMaxBalance";
|
||||
|
||||
// app订单语音播报配置
|
||||
public static Map<String, String> appVoiceMap = new HashMap<>();
|
||||
static {
|
||||
appVoiceMap.put("configKey", "appVoice");
|
||||
appVoiceMap.put("configName", "是否启用app订单语音播报");
|
||||
appVoiceMap.put("configVal", "1");
|
||||
appVoiceMap.put("groupKey", "orderConfig");
|
||||
appVoiceMap.put("type", "radio");
|
||||
}
|
||||
|
||||
// 码牌防逃单功能配置
|
||||
public static Map<String, String> qrcEscapingMap = new HashMap<>();
|
||||
static {
|
||||
qrcEscapingMap.put("configKey", "qrcEscaping");
|
||||
qrcEscapingMap.put("configName", "是否启用码牌防逃单功能");
|
||||
qrcEscapingMap.put("configVal", "1");
|
||||
qrcEscapingMap.put("groupKey", "orderConfig");
|
||||
qrcEscapingMap.put("type", "radio");
|
||||
}
|
||||
|
||||
// 便捷收银台功能配置
|
||||
public static Map<String, String> selfCashierStateMap = new HashMap<>();
|
||||
static {
|
||||
selfCashierStateMap.put("configKey", "selfCashierState");
|
||||
selfCashierStateMap.put("configName", "便捷收银台开关");
|
||||
selfCashierStateMap.put("configVal", "0");
|
||||
selfCashierStateMap.put("groupKey", "selfCashier");
|
||||
selfCashierStateMap.put("type", "radio");
|
||||
}
|
||||
|
||||
// WEB收银台功能配置
|
||||
public static Map<String, String> webCashierStateMap = new HashMap<>();
|
||||
static {
|
||||
webCashierStateMap.put("configKey", "webCashierState");
|
||||
webCashierStateMap.put("configName", "WEB收银台开关");
|
||||
webCashierStateMap.put("configVal", "0");
|
||||
webCashierStateMap.put("groupKey", "webCashier");
|
||||
webCashierStateMap.put("type", "radio");
|
||||
}
|
||||
|
||||
// 商户会员功能开关
|
||||
public static Map<String, String> mchMemberModelMap = new HashMap<>();
|
||||
static {
|
||||
mchMemberModelMap.put("configKey", "memberModelState");
|
||||
mchMemberModelMap.put("configName", "会员模块状态开关");
|
||||
mchMemberModelMap.put("configVal", "1");
|
||||
mchMemberModelMap.put("groupKey", "memberConfig");
|
||||
mchMemberModelMap.put("type", "radio");
|
||||
}
|
||||
|
||||
// 商户会员支付功能开关
|
||||
public static Map<String, String> mchMemberPayMap = new HashMap<>();
|
||||
static {
|
||||
mchMemberPayMap.put("configKey", "memberPayState");
|
||||
mchMemberPayMap.put("configName", "会员支付开关");
|
||||
mchMemberPayMap.put("configVal", "0");
|
||||
mchMemberPayMap.put("groupKey", "memberConfig");
|
||||
mchMemberPayMap.put("type", "radio");
|
||||
}
|
||||
|
||||
// 商户会员自定义金额充值
|
||||
public static Map<String, String> mchMemberCustomAmountMap = new HashMap<>();
|
||||
static {
|
||||
mchMemberCustomAmountMap.put("configKey", "memberCustomAmountState");
|
||||
mchMemberCustomAmountMap.put("configName", "充值自定义金额");
|
||||
mchMemberCustomAmountMap.put("configVal", "1");
|
||||
mchMemberCustomAmountMap.put("groupKey", "memberConfig");
|
||||
mchMemberCustomAmountMap.put("type", "radio");
|
||||
}
|
||||
|
||||
/**
|
||||
* 此处只做标记,不做默认存储
|
||||
*/
|
||||
public static Map<String, String> mchApplymentDefSet = new HashMap<>();
|
||||
|
||||
static {
|
||||
mchApplymentDefSet.put("configKey", "applymentDefIsvNo");
|
||||
mchApplymentDefSet.put("configName", "入网时默认的渠道号");
|
||||
mchApplymentDefSet.put("configVal", "");
|
||||
mchApplymentDefSet.put("groupKey", "applymentConfig");
|
||||
mchApplymentDefSet.put("type", "radio");
|
||||
}
|
||||
|
||||
/**
|
||||
* 以下为默认配置参数
|
||||
*/
|
||||
public static final List<Map<String, String>> configList = new LinkedList<>();
|
||||
static {
|
||||
configList.add(appVoiceMap);
|
||||
configList.add(qrcEscapingMap);
|
||||
configList.add(selfCashierStateMap);
|
||||
configList.add(webCashierStateMap);
|
||||
|
||||
/** 会员配置 **/
|
||||
configList.add(mchMemberModelMap);
|
||||
configList.add(mchMemberPayMap);
|
||||
configList.add(mchMemberCustomAmountMap);
|
||||
}
|
||||
|
||||
/** 不支持商户自行修改的配置项 **/
|
||||
public static final List<String> NOT_ALLOW_MCH_EDIT = new ArrayList<>();
|
||||
static {
|
||||
NOT_ALLOW_MCH_EDIT.add(SELF_MEMBER_MODEL_STATE);
|
||||
NOT_ALLOW_MCH_EDIT.add(SELF_MEMBER_MAX_BALANCE);
|
||||
}
|
||||
|
||||
/**
|
||||
* 商户号
|
||||
*/
|
||||
private String mchNo;
|
||||
|
||||
/**
|
||||
* @since 2024-03-21
|
||||
* 商户应用ID,若配置是以商户号为维度,则该值为空
|
||||
*/
|
||||
private String mchAppId;
|
||||
|
||||
/**
|
||||
* @since 2024-03-21
|
||||
* 商户进件号,若配置是以商户号或应用为维度,则该值为空
|
||||
*/
|
||||
private String mchApplyId;
|
||||
/**
|
||||
* 配置KEY
|
||||
*/
|
||||
private String configKey;
|
||||
|
||||
/**
|
||||
* 配置名称
|
||||
*/
|
||||
private String configName;
|
||||
|
||||
/**
|
||||
* 配置内容项
|
||||
*/
|
||||
private String configVal;
|
||||
|
||||
/**
|
||||
* 配置分组
|
||||
*/
|
||||
private String groupKey;
|
||||
|
||||
/**
|
||||
* 类型: text-输入框, textarea-多行文本, uploadImg-上传图片, switch-开关, radio-单选框
|
||||
*/
|
||||
private String type;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
private Date createdAt;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
private Date updatedAt;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,57 @@
|
||||
package com.jeequan.jeepay.db.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 商户分账接收者账号绑定关系表
|
||||
* </p>
|
||||
*
|
||||
* @author [mybatis plus generator]
|
||||
* @since 2021-08-19
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@Accessors(chain = true)
|
||||
@TableName("t_mch_division_receiver")
|
||||
public class MchDivisionReceiver extends com.jeequan.jeepay.core.entity.MchDivisionReceiver {
|
||||
|
||||
private static final long serialVersionUID=1L;
|
||||
|
||||
|
||||
|
||||
//gw
|
||||
public static final LambdaQueryWrapper<MchDivisionReceiver> gw(){
|
||||
return new LambdaQueryWrapper<>();
|
||||
}
|
||||
|
||||
/**
|
||||
* 分账接收者ID
|
||||
*/
|
||||
@TableId(value = "receiver_id", type = IdType.AUTO)
|
||||
private Long receiverId;
|
||||
|
||||
|
||||
/**
|
||||
* 是否按照扩展分账金额分账
|
||||
*/
|
||||
@TableField(exist = false)
|
||||
private Boolean isExtDivAmt;
|
||||
|
||||
|
||||
public Boolean getExtDivAmt() {
|
||||
if(this.isExtDivAmt == null){
|
||||
return false;
|
||||
}
|
||||
return isExtDivAmt;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,78 @@
|
||||
package com.jeequan.jeepay.db.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.jeequan.jeepay.core.model.BaseModel;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 分账账号组
|
||||
* </p>
|
||||
*
|
||||
* @author [mybatis plus generator]
|
||||
* @since 2021-08-23
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@Accessors(chain = true)
|
||||
@TableName("t_mch_division_receiver_group")
|
||||
public class MchDivisionReceiverGroup extends BaseModel {
|
||||
|
||||
//gw
|
||||
public static final LambdaQueryWrapper<MchDivisionReceiverGroup> gw(){
|
||||
return new LambdaQueryWrapper<>();
|
||||
}
|
||||
|
||||
private static final long serialVersionUID=1L;
|
||||
|
||||
/**
|
||||
* 组ID
|
||||
*/
|
||||
@TableId(value = "receiver_group_id", type = IdType.AUTO)
|
||||
private Long receiverGroupId;
|
||||
|
||||
/**
|
||||
* 组名称
|
||||
*/
|
||||
private String receiverGroupName;
|
||||
|
||||
/**
|
||||
* 商户号
|
||||
*/
|
||||
private String mchNo;
|
||||
|
||||
/**
|
||||
* 自动分账组(当订单分账模式为自动分账,改组将完成分账逻辑) 0-否 1-是
|
||||
*/
|
||||
private Byte autoDivisionFlag;
|
||||
|
||||
/**
|
||||
* 创建者用户ID
|
||||
*/
|
||||
private Long createdUid;
|
||||
|
||||
/**
|
||||
* 创建者姓名
|
||||
*/
|
||||
private String createdBy;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
private Date createdAt;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
private Date updatedAt;
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,90 @@
|
||||
package com.jeequan.jeepay.db.entity;
|
||||
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.Objects;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 商户信息表
|
||||
* </p>
|
||||
*
|
||||
* @author [mybatis plus generator]
|
||||
* @since 2021-04-27
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@Accessors(chain = true)
|
||||
@TableName(value = "t_mch_info", autoResultMap = true)
|
||||
public class MchInfo extends com.jeequan.jeepay.core.entity.MchInfo {
|
||||
|
||||
//gw
|
||||
public static final LambdaQueryWrapper<MchInfo> gw(){
|
||||
return new LambdaQueryWrapper<>();
|
||||
}
|
||||
|
||||
private static final long serialVersionUID=1L;
|
||||
|
||||
public static final byte TYPE_NORMAL = 1; //商户类型: 1-普通商户
|
||||
public static final byte TYPE_ISVSUB = 2; //商户类型: 2-特约商户
|
||||
|
||||
public static final String REFUND_MODEL_PLAT = "plat"; // 支持的退款方式 平台
|
||||
public static final String REFUND_MODEL_API = "api"; // 支持的退款方式 接口
|
||||
|
||||
public static final String MCH_LEVEL_M0 = "M0"; // 商户级别:简单
|
||||
public static final String MCH_LEVEL_M1 = "M1"; // 商户级别:高级
|
||||
|
||||
public static final byte STATE_NO = 0; // 商户状态: 0-停用
|
||||
public static final byte STATE_YES = 1; // 商户状态: 1-正常
|
||||
public static final byte STATE_NO_MGR = 2; // 商户状态: 2-由运营平台停用
|
||||
|
||||
/**
|
||||
* 商户号
|
||||
*/
|
||||
@TableId(value = "mch_no", type = IdType.INPUT)
|
||||
private String mchNo;
|
||||
|
||||
/**
|
||||
* 支持的退款方式 ["plat", "api"]
|
||||
*/
|
||||
@TableField(typeHandler = FastjsonTypeHandler.class)
|
||||
private JSONArray refundMode;
|
||||
|
||||
@TableField(exist = false)
|
||||
private String mchServiceName;
|
||||
|
||||
@TableField(exist = false)
|
||||
private String mchServicePhone;
|
||||
|
||||
@TableField(exist = false)
|
||||
private Date firstDate;
|
||||
|
||||
@TableField(exist = false)
|
||||
private Date lastDate;
|
||||
|
||||
public static boolean isIsv(MchInfo mchInfo) {
|
||||
if (mchInfo == null) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return Objects.equals(TYPE_ISVSUB, mchInfo.getType());
|
||||
}
|
||||
|
||||
public static boolean isNotIsv(MchInfo mchInfo) {
|
||||
if (mchInfo == null) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return !Objects.equals(TYPE_ISVSUB, mchInfo.getType());
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,160 @@
|
||||
package com.jeequan.jeepay.db.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.jeequan.jeepay.core.model.BaseModel;
|
||||
import com.jeequan.jeepay.core.model.applyment.MchModifyApplymentModel;
|
||||
import com.jeequan.jeepay.db.typehandler.EncryptTypeHandler;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.experimental.Accessors;
|
||||
import lombok.experimental.SuperBuilder;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 特约商户进件信息表
|
||||
* </p>
|
||||
*
|
||||
* @author [mybatis plus generator]
|
||||
* @since 2023-12-05
|
||||
*/
|
||||
@Data
|
||||
@SuperBuilder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@Accessors(chain = true)
|
||||
@TableName(value = "t_mch_modify_applyment", autoResultMap = true)
|
||||
public class MchModifyApplymentEntity extends BaseModel {
|
||||
|
||||
/**
|
||||
* 商户变更系统申请单号
|
||||
*/
|
||||
@TableId
|
||||
private String modifyApplyId;
|
||||
|
||||
/**
|
||||
* 系统申请单号/进件商户号
|
||||
*/
|
||||
private String applyId;
|
||||
|
||||
/**
|
||||
* 渠道申请单号
|
||||
*/
|
||||
private String channelApplyNo;
|
||||
|
||||
/**
|
||||
* 通道商户号,收单机构编号
|
||||
*/
|
||||
private String channelMchNo;
|
||||
|
||||
/**
|
||||
* 商户号
|
||||
*/
|
||||
private String mchNo;
|
||||
|
||||
/**
|
||||
* 支付接口代码, 字段冗余
|
||||
*/
|
||||
private String ifCode;
|
||||
|
||||
/**
|
||||
* 接口名称, 字段冗余方便检索
|
||||
*/
|
||||
private String ifName;
|
||||
|
||||
/**
|
||||
* 商户本次变更前的数据(JSON类型)
|
||||
*/
|
||||
@TableField(typeHandler = EncryptTypeHandler.class)
|
||||
private String originDetailInfo;
|
||||
|
||||
/**
|
||||
* 商户变更详细信息(JSON类型)
|
||||
*/
|
||||
@TableField(typeHandler = EncryptTypeHandler.class)
|
||||
private String applyDetailInfo;
|
||||
|
||||
/**
|
||||
* 1、基本资料变更; 2、结算信息变更; 3、费率信息变更; 4、身份信息补充; 5、通用变更(待定)
|
||||
*/
|
||||
private Byte modifyApplyType;
|
||||
|
||||
private Byte state;
|
||||
|
||||
private String remark;
|
||||
|
||||
private String remainStep;
|
||||
|
||||
/**
|
||||
* 上游接口返回参数
|
||||
*/
|
||||
private String channelVar1;
|
||||
|
||||
private String applyErrorInfo;
|
||||
|
||||
private String applyPageType;
|
||||
|
||||
private Long createdUid;
|
||||
|
||||
private String createdBy;
|
||||
/**
|
||||
* 变更类型,1: 本地变更; 2: 变更并同步到上游通道;有值则代表是运营端或者服务商端代变更的数据
|
||||
*/
|
||||
private String otherOperationType;
|
||||
|
||||
private Date createdAt;
|
||||
|
||||
private Date updatedAt;
|
||||
@TableField(exist = false)
|
||||
private Date firstDate;
|
||||
|
||||
@TableField(exist = false)
|
||||
private Date lastDate;
|
||||
|
||||
@TableField(exist = false)
|
||||
private String unionSearchId;
|
||||
|
||||
@TableField(exist = false)
|
||||
private String mchFullName;
|
||||
|
||||
@TableField(exist = false)
|
||||
private String mchUserName;
|
||||
|
||||
@TableField(exist = false)
|
||||
private String agentName;
|
||||
|
||||
|
||||
@TableField(exist = false)
|
||||
private String agentNo;
|
||||
|
||||
@TableField(exist = false)
|
||||
private Byte merchantType;
|
||||
|
||||
@TableField(exist = false)
|
||||
private Long epUserId;
|
||||
|
||||
@TableField(exist = false)
|
||||
private MchModifyApplymentModel modifyModel;
|
||||
|
||||
@TableField(exist = false)
|
||||
private String mchShortName;
|
||||
|
||||
@TableField(exist = false)
|
||||
private List<String> mchInfoList;
|
||||
|
||||
public static LambdaQueryWrapper<MchModifyApplymentEntity> gw(MchModifyApplymentEntity modifyApplyment) {
|
||||
return new LambdaQueryWrapper<>(modifyApplyment);
|
||||
}
|
||||
|
||||
public static LambdaQueryWrapper<MchModifyApplymentEntity> gw() {
|
||||
return new LambdaQueryWrapper<>();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,137 @@
|
||||
package com.jeequan.jeepay.db.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.jeequan.jeepay.core.model.BaseModel;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 商户通知记录表
|
||||
* </p>
|
||||
*
|
||||
* @author [mybatis plus generator]
|
||||
* @since 2021-04-27
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@Accessors(chain = true)
|
||||
@TableName("t_mch_notify_record")
|
||||
public class MchNotifyRecord extends BaseModel implements Serializable {
|
||||
|
||||
//订单类型:1-支付,2-退款, 3-转账 4-分账
|
||||
public static final byte TYPE_PAY_ORDER = 1;
|
||||
public static final byte TYPE_REFUND_ORDER = 2;
|
||||
public static final byte TYPE_TRANSFER_ORDER = 3;
|
||||
public static final byte TYPE_DIVISION_ORDER = 4;
|
||||
|
||||
// 进件
|
||||
public static final byte TYPE_AUDIT = 11;
|
||||
|
||||
//通知状态
|
||||
public static final byte STATE_ING = 1;
|
||||
public static final byte STATE_SUCCESS = 2;
|
||||
public static final byte STATE_FAIL = 3;
|
||||
|
||||
//gw
|
||||
public static final LambdaQueryWrapper<MchNotifyRecord> gw(){
|
||||
return new LambdaQueryWrapper<>();
|
||||
}
|
||||
|
||||
private static final long serialVersionUID=1L;
|
||||
|
||||
/**
|
||||
* 商户通知记录ID
|
||||
*/
|
||||
@TableId(value = "notify_id", type = IdType.AUTO)
|
||||
private Long notifyId;
|
||||
|
||||
/**
|
||||
* 订单ID
|
||||
*/
|
||||
private String orderId;
|
||||
|
||||
/**
|
||||
* 订单类型:1-支付,2-退款 3-转账 4:分账 ,11-进件
|
||||
*/
|
||||
private Byte orderType;
|
||||
|
||||
/**
|
||||
* 商户订单号
|
||||
*/
|
||||
private String mchOrderNo;
|
||||
|
||||
/**
|
||||
* 商户号
|
||||
*/
|
||||
private String mchNo;
|
||||
|
||||
/**
|
||||
* 服务商号
|
||||
*/
|
||||
private String isvNo;
|
||||
|
||||
/**
|
||||
* 应用ID
|
||||
*/
|
||||
private String appId;
|
||||
|
||||
/**
|
||||
* 通知地址
|
||||
*/
|
||||
private String notifyUrl;
|
||||
|
||||
/**
|
||||
* 通知内容
|
||||
*/
|
||||
private String notifyBody;
|
||||
|
||||
/**
|
||||
* 发送商户通知的方式:POST_QUERYSTRING, POST_BODY, POST_JSON
|
||||
*/
|
||||
private String notifyPostType;
|
||||
|
||||
/**
|
||||
* 通知响应结果
|
||||
*/
|
||||
private String resResult;
|
||||
|
||||
/**
|
||||
* 通知次数
|
||||
*/
|
||||
private Integer notifyCount;
|
||||
|
||||
/**
|
||||
* 最大通知次数, 默认6次
|
||||
*/
|
||||
private Integer notifyCountLimit;
|
||||
|
||||
/**
|
||||
* 通知状态,1-通知中,2-通知成功,3-通知失败
|
||||
*/
|
||||
private Byte state;
|
||||
|
||||
/**
|
||||
* 最后一次通知时间
|
||||
*/
|
||||
private Date lastNotifyTime;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
private Date createdAt;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
private Date updatedAt;
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,142 @@
|
||||
package com.jeequan.jeepay.db.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.jeequan.jeepay.core.model.BaseModel;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 商户进件渠道商参数缓存表
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@Accessors(chain = true)
|
||||
@TableName("t_mch_pay_interface_config")
|
||||
public class MchPayInterfaceConfig extends BaseModel implements Serializable {
|
||||
|
||||
private static final long serialVersionUID=1L;
|
||||
|
||||
/**
|
||||
* ID
|
||||
*/
|
||||
@TableId(value = "id", type = IdType.AUTO)
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 排序字段
|
||||
*/
|
||||
private Long sort;
|
||||
|
||||
/**
|
||||
* 实例别名
|
||||
*/
|
||||
private String alias;
|
||||
|
||||
/**
|
||||
* 账号类型: 参考: SYS_ROLE_TYPE
|
||||
*/
|
||||
private String infoType;
|
||||
|
||||
/**
|
||||
* 服务商号/商户号/应用ID
|
||||
*/
|
||||
private String infoId;
|
||||
|
||||
/**
|
||||
* 支付接口代码
|
||||
*/
|
||||
private String ifCode;
|
||||
|
||||
/**
|
||||
* 接口配置参数,json字符串
|
||||
*/
|
||||
private String ifParams;
|
||||
|
||||
/**
|
||||
* 状态: 0-停用, 1-启用
|
||||
*/
|
||||
private Byte state;
|
||||
|
||||
/**
|
||||
* 是否开启进件: 0-关闭, 1-开启
|
||||
*/
|
||||
private Byte isOpenApplyment;
|
||||
|
||||
/**
|
||||
* 是否开启对账: 0-关闭, 1-开启
|
||||
*/
|
||||
private Byte isCheckBill;
|
||||
|
||||
/**
|
||||
* 对账过滤子商户号
|
||||
*/
|
||||
private String ignoreCheckBillMchNos;
|
||||
|
||||
/**
|
||||
* 提现配置,JSON字符串
|
||||
*/
|
||||
private String cashoutParams;
|
||||
|
||||
/**
|
||||
* 进件特殊参数,JSON字符串
|
||||
*/
|
||||
private String applymentExtParams;
|
||||
|
||||
/**
|
||||
* oauth2的选择, 空表示使用默认配置条目
|
||||
*/
|
||||
private String oauth2InfoId;
|
||||
|
||||
/**
|
||||
* 佣金结算周期(仅服务商配置, 用于服务商的佣金提现周期)
|
||||
*/
|
||||
private Integer settHoldDay;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 创建者用户ID
|
||||
*/
|
||||
private Long createdUid;
|
||||
|
||||
/**
|
||||
* 创建者姓名
|
||||
*/
|
||||
private String createdBy;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
private Date createdAt;
|
||||
|
||||
/**
|
||||
* 更新者用户ID
|
||||
*/
|
||||
private Long updatedUid;
|
||||
|
||||
/**
|
||||
* 更新者姓名
|
||||
*/
|
||||
private String updatedBy;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
private Date updatedAt;
|
||||
|
||||
/**
|
||||
* 1, 正在使用中
|
||||
*/
|
||||
@TableField(exist = false)
|
||||
private Integer inUseFlag;
|
||||
}
|
||||
@@ -0,0 +1,81 @@
|
||||
package com.jeequan.jeepay.db.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.jeequan.jeepay.core.model.BaseModel;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 商户支付通道表
|
||||
* </p>
|
||||
*
|
||||
* @author [mybatis plus generator]
|
||||
* @since 2021-04-27
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@Accessors(chain = true)
|
||||
@TableName("t_mch_pay_passage")
|
||||
public class MchPayPassage extends BaseModel implements Serializable {
|
||||
|
||||
public static final LambdaQueryWrapper<MchPayPassage> gw(){
|
||||
return new LambdaQueryWrapper<>();
|
||||
}
|
||||
|
||||
private static final long serialVersionUID=1L;
|
||||
|
||||
/**
|
||||
* ID
|
||||
*/
|
||||
@TableId(value = "id", type = IdType.AUTO)
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 商户号
|
||||
*/
|
||||
private String mchNo;
|
||||
|
||||
/**
|
||||
* 应用ID
|
||||
*/
|
||||
private String appId;
|
||||
|
||||
/**
|
||||
* 支付接口
|
||||
*/
|
||||
private String ifCode;
|
||||
|
||||
/**
|
||||
* 支付方式
|
||||
*/
|
||||
private String wayCode;
|
||||
|
||||
/**
|
||||
* 风控数据
|
||||
*/
|
||||
private String riskConfig;
|
||||
|
||||
/**
|
||||
* 状态: 0-停用, 1-启用
|
||||
*/
|
||||
private Byte state;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
private Date createdAt;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
private Date updatedAt;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,43 @@
|
||||
package com.jeequan.jeepay.db.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 商户码牌、设备关联表
|
||||
* </p>
|
||||
*
|
||||
* @author [mybatis plus generator]
|
||||
* @since 2022-05-26
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@Accessors(chain = true)
|
||||
@TableName("t_mch_qrc_device_rela")
|
||||
public class MchQrcDeviceRela implements Serializable {
|
||||
|
||||
// gw
|
||||
public static final LambdaQueryWrapper<MchQrcDeviceRela> gw(){
|
||||
return new LambdaQueryWrapper<>();
|
||||
}
|
||||
|
||||
private static final long serialVersionUID=1L;
|
||||
|
||||
/**
|
||||
* 码牌ID
|
||||
*/
|
||||
private Long qrcId;
|
||||
|
||||
/**
|
||||
* 设备ID
|
||||
*/
|
||||
private Long deviceId;
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,91 @@
|
||||
package com.jeequan.jeepay.db.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.jeequan.jeepay.core.model.BaseModel;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 码牌模板表
|
||||
* </p>
|
||||
*
|
||||
* @author [mybatis plus generator]
|
||||
* @since 2022-01-17
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@Accessors(chain = true)
|
||||
@TableName("t_mch_qrc_shell")
|
||||
public class MchQrcShell extends BaseModel {
|
||||
|
||||
public static final LambdaQueryWrapper<MchQrcShell> gw(){
|
||||
return new LambdaQueryWrapper<>();
|
||||
}
|
||||
|
||||
private static final long serialVersionUID=1L;
|
||||
|
||||
/**
|
||||
* 模板ID
|
||||
*/
|
||||
@TableId(value = "sid", type = IdType.AUTO)
|
||||
private Long sid;
|
||||
|
||||
/**
|
||||
* 模板别名
|
||||
*/
|
||||
private String shellAlias;
|
||||
|
||||
/**
|
||||
* 所属系统: MGR-运营平台, MCH-商户中心
|
||||
*/
|
||||
private String sysType;
|
||||
|
||||
/**
|
||||
* 所属商户ID / 0(平台)
|
||||
*/
|
||||
private String belongInfoId;
|
||||
|
||||
/**
|
||||
* 模板样式编码: shellA, shellB, shellC ...
|
||||
*/
|
||||
private String styleCode;
|
||||
|
||||
/**
|
||||
* 配置信息
|
||||
*/
|
||||
private String configInfo;
|
||||
|
||||
/**
|
||||
* 模板图片地址(示例)
|
||||
*/
|
||||
private String shellImgViewUrl;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
private Date createdAt;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
private Date updatedAt;
|
||||
|
||||
/**
|
||||
* 是否默认 0:否 1:是
|
||||
*/
|
||||
private Byte isDefault;
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,268 @@
|
||||
package com.jeequan.jeepay.db.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.jeequan.jeepay.core.model.BaseModel;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 商户码牌表
|
||||
* </p>
|
||||
*
|
||||
* @author [mybatis plus generator]
|
||||
* @since 2021-12-28
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@Accessors(chain = true)
|
||||
@TableName("t_mch_qrcode_card")
|
||||
public class MchQrcodeCard extends BaseModel {
|
||||
|
||||
/** 码牌所属类型: 1-商户自制码牌, 2-运营平台下发码牌 **/
|
||||
public static final byte QRC_BELONG_TYPE_MCH = 1;
|
||||
public static final byte QRC_BELONG_TYPE_ISV_PRE = 2;
|
||||
|
||||
/**
|
||||
* qrc_type 0:电子马牌 1:实体马牌 2:实体立牌 3:云音响码牌
|
||||
*/
|
||||
public static final byte QRC_TYPE_DZ = 0;
|
||||
public static final byte QRC_TYPE_MP = 1;
|
||||
public static final byte QRC_TYPE_LP = 2;
|
||||
public static final byte QRC_TYPE_YX = 3;
|
||||
|
||||
/**
|
||||
* GET_TYPE 1:分账获取码牌数据
|
||||
*/
|
||||
public static final byte GET_TYPE = 1;
|
||||
|
||||
// gw
|
||||
public static final LambdaQueryWrapper<MchQrcodeCard> gw(){
|
||||
return new LambdaQueryWrapper<>();
|
||||
}
|
||||
|
||||
public static final LambdaQueryWrapper<MchQrcodeCard> gw(MchQrcodeCard mchQrcodeCard){
|
||||
return new LambdaQueryWrapper<>(mchQrcodeCard);
|
||||
}
|
||||
|
||||
private static final long serialVersionUID=1L;
|
||||
|
||||
/**
|
||||
* 码牌ID
|
||||
*/
|
||||
@TableId(value = "qrc_id", type = IdType.INPUT)
|
||||
private Long qrcId;
|
||||
|
||||
/**
|
||||
* 批次号
|
||||
*/
|
||||
private String batchId;
|
||||
|
||||
/**
|
||||
* 码牌别名
|
||||
*/
|
||||
private String qrcAlias;
|
||||
|
||||
/**
|
||||
* 服务商号
|
||||
*/
|
||||
private String agentNo;
|
||||
|
||||
/**
|
||||
* 绑定的商户号, 默认为空串
|
||||
*/
|
||||
private String mchNo;
|
||||
|
||||
/**
|
||||
* 绑定的应用ID, 默认为空串
|
||||
*/
|
||||
private String appId;
|
||||
|
||||
/**
|
||||
* 绑定的商户门店ID, 0-表示空
|
||||
*/
|
||||
private String storeId;
|
||||
|
||||
/**
|
||||
* 码牌绑定状态: 0-未绑定, 1-已绑定(一定存在mchNo、appId 和 storeId)
|
||||
*/
|
||||
private Byte bindState;
|
||||
|
||||
/**
|
||||
* 码牌类型:0-电子码牌,1-实体码牌,2-实体立牌 ,3:云音响码牌
|
||||
*/
|
||||
private Byte qrcType;
|
||||
|
||||
/**
|
||||
* 入口页面呈现方式: default-默认(未指定,取决于二维码是否绑定到微信侧), h5-仅H5网页, lite-仅小程序
|
||||
*/
|
||||
private String entryPage;
|
||||
|
||||
/**
|
||||
* URL自定义占位符,一般仅绑定多个小程序时需要
|
||||
*/
|
||||
private String urlPlaceholder;
|
||||
|
||||
/**
|
||||
* 是否固定支付金额: 1-是, 0-否
|
||||
*/
|
||||
private Byte fixedFlag;
|
||||
|
||||
/**
|
||||
* 固定支付金额,单位分
|
||||
*/
|
||||
private Long fixedPayAmount;
|
||||
|
||||
/**
|
||||
* 指定支付宝的支付方式, 比如wap支付则为: ALI_WAP
|
||||
*/
|
||||
private String alipayWayCode;
|
||||
|
||||
/**
|
||||
* 码牌状态: 0-停用, 1-正常
|
||||
*/
|
||||
private Byte qrcState;
|
||||
|
||||
/**
|
||||
* 码牌所属类型: 1-商户自制码牌, 2-运营平台下发码牌
|
||||
*/
|
||||
private Byte qrcBelongType;
|
||||
|
||||
/**
|
||||
* 码牌模板ID, 0-表示仅二维码
|
||||
*/
|
||||
private Long qrcShellId;
|
||||
|
||||
/**
|
||||
* 商户名称
|
||||
*/
|
||||
private String mchApplyName;
|
||||
|
||||
/**
|
||||
* 扩展商户号 现在的申请单编号 也是商户号
|
||||
*/
|
||||
private String mchApplyId;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
private Date createdAt;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
private Date updatedAt;
|
||||
|
||||
/**
|
||||
* 是否强制配置
|
||||
*/
|
||||
private Byte isForceReamrk;
|
||||
|
||||
/**
|
||||
* 绑定的应用名称
|
||||
*/
|
||||
@TableField(exist = false)
|
||||
private String appName;
|
||||
|
||||
/**
|
||||
* 绑定的门店名称
|
||||
*/
|
||||
@TableField(exist = false)
|
||||
private String storeName;
|
||||
|
||||
/**
|
||||
* 服务商名称
|
||||
*/
|
||||
@TableField(exist = false)
|
||||
private String agentName;
|
||||
|
||||
/**
|
||||
* 服务商名称简称
|
||||
*/
|
||||
@TableField(exist = false)
|
||||
private String agentShortName;
|
||||
|
||||
/**
|
||||
* 商户名称
|
||||
*/
|
||||
@TableField(exist = false)
|
||||
private String mchName;
|
||||
|
||||
/**
|
||||
* 商户简称
|
||||
*/
|
||||
@TableField(exist = false)
|
||||
private String mchShortName;
|
||||
|
||||
/**
|
||||
* 区分是正常获取码牌数据还是其它途径,为null则为正常获取(页面码牌管理列表)
|
||||
*/
|
||||
@TableField(exist = false)
|
||||
private Byte getType;
|
||||
|
||||
/**
|
||||
* 用户名称
|
||||
*/
|
||||
@TableField(exist = false)
|
||||
private String mchUserName;
|
||||
|
||||
/**
|
||||
* 用户电话
|
||||
*/
|
||||
@TableField(exist = false)
|
||||
private String mchUserPhone;
|
||||
|
||||
@TableField(exist = false)
|
||||
private String mchServiceName;
|
||||
|
||||
@TableField(exist = false)
|
||||
private String mchServicePhone;
|
||||
|
||||
@TableField(exist = false)
|
||||
private String bindAppIdName;
|
||||
|
||||
|
||||
@TableField(exist = false)
|
||||
private Date firstDate;
|
||||
|
||||
@TableField(exist = false)
|
||||
private Date lastDate;
|
||||
|
||||
@TableField(exist = false)
|
||||
List<String> subAgentNoList;
|
||||
|
||||
@TableField(exist = false)
|
||||
private String ifName;
|
||||
|
||||
@TableField(exist = false)
|
||||
private String ifCode;
|
||||
|
||||
@TableField(exist = false)
|
||||
List<String> storeIdList;
|
||||
|
||||
@TableField(exist = false)
|
||||
private String isvName;
|
||||
|
||||
/**
|
||||
* 渠道简称
|
||||
*/
|
||||
@TableField(exist = false)
|
||||
private String isvShortName;
|
||||
|
||||
@TableField(exist = false)
|
||||
private String isvNo;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,237 @@
|
||||
package com.jeequan.jeepay.db.entity;
|
||||
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 商户门店表
|
||||
* </p>
|
||||
*
|
||||
* @author [mybatis plus generator]
|
||||
* @since 2021-12-28
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@Accessors(chain = true)
|
||||
@TableName(value = "t_mch_store", autoResultMap = true)
|
||||
public class MchStore extends com.jeequan.jeepay.core.entity.MchStore {
|
||||
|
||||
//gw
|
||||
public static LambdaQueryWrapper<MchStore> gw(){
|
||||
return new LambdaQueryWrapper<>();
|
||||
}
|
||||
|
||||
private static final long serialVersionUID=1L;
|
||||
|
||||
// 蚂蚁店铺创建状态(与支付宝一致): 0-未创建; 99-已完结; -1-失败; 031-已提交审核
|
||||
public final static String ALIPAY_SHOP_STATUS_NOT_EXISTS = "0";
|
||||
public final static String ALIPAY_SHOP_STATUS_SUCCESS = "99";
|
||||
public final static String ALIPAY_SHOP_STATUS_FAIL = "-1";
|
||||
public final static String ALIPAY_SHOP_STATUS_AUDITING = "031";
|
||||
|
||||
/**
|
||||
* 门店ID
|
||||
*/
|
||||
@TableId(value = "store_id")
|
||||
private String storeId;
|
||||
|
||||
/**
|
||||
* 门店名称
|
||||
*/
|
||||
private String storeName;
|
||||
|
||||
/**
|
||||
* 商户号
|
||||
*/
|
||||
private String mchNo;
|
||||
|
||||
/**
|
||||
* 服务商号
|
||||
*/
|
||||
private String agentNo;
|
||||
|
||||
/**
|
||||
* 绑定应用ID
|
||||
*/
|
||||
private String bindAppId;
|
||||
|
||||
/**
|
||||
* 商户号(原进件单号)
|
||||
*/
|
||||
private String mchApplyId;
|
||||
|
||||
/**
|
||||
* 顶级服务商号
|
||||
*/
|
||||
private String topAgentNo;
|
||||
|
||||
/**
|
||||
* 服务商号
|
||||
*/
|
||||
private String isvNo;
|
||||
|
||||
/**
|
||||
* 是否默认: 0-否、 1-是(api接口未显式指定门店则使用默认门店下单)
|
||||
*/
|
||||
private Byte defaultFlag;
|
||||
|
||||
/**
|
||||
* 经度
|
||||
*/
|
||||
private String lng;
|
||||
|
||||
/**
|
||||
* 纬度
|
||||
*/
|
||||
private String lat;
|
||||
|
||||
/**
|
||||
* 门头照
|
||||
*/
|
||||
private String storeOuterImg;
|
||||
|
||||
/**
|
||||
* 内景照
|
||||
*/
|
||||
private String storeInnerImg;
|
||||
|
||||
/**
|
||||
* 门店Logo
|
||||
*/
|
||||
private String storeLogo;
|
||||
|
||||
/**
|
||||
* 省市县编码 (非必填, 放在外层用作搜索方便)
|
||||
*/
|
||||
@TableField(typeHandler = FastjsonTypeHandler.class)
|
||||
private JSONArray areaCode;
|
||||
|
||||
/**
|
||||
* 联系人手机号
|
||||
*/
|
||||
private String contactPhone;
|
||||
|
||||
/**
|
||||
* 所在地址
|
||||
*/
|
||||
private String address;
|
||||
|
||||
/**
|
||||
* 蚂蚁店铺ID
|
||||
*/
|
||||
private String alipayShopId;
|
||||
|
||||
/**
|
||||
* 蚂蚁店铺申请单ID
|
||||
*/
|
||||
private String alipayShopCreateId;
|
||||
|
||||
/**
|
||||
* 蚂蚁店铺创建状态(与支付宝一致): 0-未创建; 99-已完结; -1-失败; 031-已提交审核
|
||||
*/
|
||||
private String alipayShopStatus;
|
||||
|
||||
/**
|
||||
* 会员充值规则id,对应t_member_recharge_rule表
|
||||
*/
|
||||
private String ruleId;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
private Date createdAt;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
private Date updatedAt;
|
||||
|
||||
/**
|
||||
* 渠道简称
|
||||
*/
|
||||
@TableField(exist = false)
|
||||
private String isvShortName;
|
||||
|
||||
/**
|
||||
* 商户名称
|
||||
*/
|
||||
@TableField(exist = false)
|
||||
private String mchApplyName;
|
||||
|
||||
|
||||
/**
|
||||
* 绑定应用ID名称
|
||||
*/
|
||||
@TableField(exist = false)
|
||||
private String bindAppIdName;
|
||||
|
||||
/**
|
||||
* 绑定设备数量
|
||||
*/
|
||||
@TableField(exist = false)
|
||||
private Integer deviceNumber;
|
||||
|
||||
/**
|
||||
* 用户名称
|
||||
*/
|
||||
@TableField(exist = false)
|
||||
private String mchUserName;
|
||||
|
||||
/**
|
||||
* 用户电话
|
||||
*/
|
||||
@TableField(exist = false)
|
||||
private String mchUserPhone;
|
||||
|
||||
@TableField(exist = false)
|
||||
private String mchServiceName;
|
||||
|
||||
@TableField(exist = false)
|
||||
private String mchServicePhone;
|
||||
|
||||
@TableField(exist = false)
|
||||
private Date firstDate;
|
||||
|
||||
@TableField(exist = false)
|
||||
private Date lastDate;
|
||||
|
||||
@TableField(exist = false)
|
||||
List<String> storeIdList;
|
||||
|
||||
@TableField(exist = false)
|
||||
private String ifName;
|
||||
|
||||
@TableField(exist = false)
|
||||
private String ifCode;
|
||||
|
||||
@TableField(exist = false)
|
||||
private String isvName;
|
||||
|
||||
@TableField(exist = false)
|
||||
List<String> subAgentNoList;
|
||||
|
||||
/**
|
||||
* 结算类型
|
||||
*/
|
||||
@TableField(exist = false)
|
||||
private String settleType;
|
||||
|
||||
@TableField(exist = false)
|
||||
private Byte isBind;
|
||||
}
|
||||
@@ -0,0 +1,427 @@
|
||||
package com.jeequan.jeepay.db.entity;
|
||||
|
||||
import cn.hutool.core.img.ImgUtil;
|
||||
import cn.hutool.http.HttpUtil;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler;
|
||||
import com.jeequan.jeepay.core.exception.BizException;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.experimental.Accessors;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
|
||||
import java.awt.image.BufferedImage;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 商户门店设备配置表
|
||||
* </p>
|
||||
*
|
||||
* @author [mybatis plus generator]
|
||||
* @since 2021-12-28
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@Accessors(chain = true)
|
||||
@TableName(value = "t_mch_store_device",autoResultMap = true)
|
||||
public class MchStoreDevice extends com.jeequan.jeepay.core.entity.MchStoreDevice {
|
||||
//gw
|
||||
public static final LambdaQueryWrapper<MchStoreDevice> gw(){
|
||||
return new LambdaQueryWrapper<>();
|
||||
}
|
||||
|
||||
private static final long serialVersionUID=1L;
|
||||
|
||||
public static final byte DEVICE_TYPE_SPEAKER = 1; // 云喇叭
|
||||
public static final byte DEVICE_TYPE_PRINTER = 2; // 打印机
|
||||
public static final byte DEVICE_TYPE_POS = 3; // 扫码POS
|
||||
public static final byte DEVICE_TYPE_AUTO_POS = 4; // 智能POS
|
||||
public static final byte DEVICE_TYPE_PLUGIN = 5; // 收银插件
|
||||
public static final byte DEVICE_TYPE_FACE_APP = 6; // 刷脸设备
|
||||
public static final byte DEVICE_TYPE_RUYI = 7; // 如意Lite
|
||||
|
||||
// 绑定类型
|
||||
public static final byte DEVICE_BIND_TYPE_STORE = 0; // 门店
|
||||
public static final byte DEVICE_BIND_TYPE_QRC = 1; // 码牌
|
||||
|
||||
public static final byte NO_BIND = 0;
|
||||
|
||||
public static final byte YES_BIND = 1;
|
||||
|
||||
// 设备表类型 和 订单表类型转换关系
|
||||
public static Object covertDeviceType(Object deviceType) {
|
||||
if (deviceType instanceof Byte) {
|
||||
switch ((Byte) deviceType) {
|
||||
case DEVICE_TYPE_POS: return PayOrder.DEVICE_TYPE_SCAN_POS;
|
||||
case DEVICE_TYPE_AUTO_POS: return PayOrder.DEVICE_TYPE_AUTO_POS;
|
||||
case DEVICE_TYPE_PLUGIN: return PayOrder.DEVICE_TYPE_CASH_PLUGIN;
|
||||
case DEVICE_TYPE_FACE_APP: return PayOrder.DEVICE_TYPE_FACE_APP;
|
||||
case DEVICE_TYPE_RUYI: return PayOrder.DEVICE_TYPE_ALIPAY_RUYI_LITE;
|
||||
case DEVICE_TYPE_PRINTER: return PayOrder.DEVICE_TYPE_PRINTER;
|
||||
}
|
||||
}else {
|
||||
switch ((String) deviceType) {
|
||||
case PayOrder.DEVICE_TYPE_SCAN_POS: return DEVICE_TYPE_POS;
|
||||
case PayOrder.DEVICE_TYPE_AUTO_POS: return DEVICE_TYPE_AUTO_POS;
|
||||
case PayOrder.DEVICE_TYPE_CASH_PLUGIN: return DEVICE_TYPE_PLUGIN;
|
||||
case PayOrder.DEVICE_TYPE_FACE_APP: return DEVICE_TYPE_FACE_APP;
|
||||
case PayOrder.DEVICE_TYPE_ALIPAY_RUYI_LITE: return DEVICE_TYPE_RUYI;
|
||||
case PayOrder.DEVICE_TYPE_PRINTER: return DEVICE_TYPE_PRINTER;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
// 支付宝如意设备型号
|
||||
public static final Map<String, String> ALIPAY_IOT_DEVICE_MAP = new HashMap<>();
|
||||
static {
|
||||
ALIPAY_IOT_DEVICE_MAP.put("alipayRuYi", "201901111100635561");
|
||||
ALIPAY_IOT_DEVICE_MAP.put("alipayRuYiPro", "202109071403204809");
|
||||
ALIPAY_IOT_DEVICE_MAP.put("alipayRuYi2", "202008061702346558");
|
||||
}
|
||||
|
||||
/**
|
||||
* 设备ID
|
||||
*/
|
||||
@TableId(value = "device_id", type = IdType.AUTO)
|
||||
private Long deviceId;
|
||||
|
||||
/**
|
||||
* 设备名称
|
||||
*/
|
||||
private String deviceName;
|
||||
|
||||
/**
|
||||
* 批次号
|
||||
*/
|
||||
private String batchId;
|
||||
|
||||
/**
|
||||
* 关联厂商配置ID
|
||||
*/
|
||||
private Long configId;
|
||||
|
||||
/**
|
||||
* 设备类型: 1-云喇叭, 2-云打印
|
||||
*/
|
||||
private Byte deviceType;
|
||||
|
||||
/**
|
||||
* 设备厂商:参考配置表
|
||||
*/
|
||||
private String provider;
|
||||
|
||||
/**
|
||||
* 设备号
|
||||
*/
|
||||
private String deviceNo;
|
||||
|
||||
/**
|
||||
* 设备参数,json字符串
|
||||
*/
|
||||
private String deviceParams;
|
||||
|
||||
/**
|
||||
* 业务配置参数,json字符串
|
||||
*/
|
||||
private String bizConfigParams;
|
||||
|
||||
/**
|
||||
* 业务配置参数,json对象
|
||||
*/
|
||||
@TableField(exist = false)
|
||||
private JSONObject jsonBizConfigParams;
|
||||
|
||||
|
||||
/**
|
||||
* 打印机模式 1:仅打印 2仅播报 3打印并播报
|
||||
*/
|
||||
@TableField(exist = false)
|
||||
private Integer printMode;
|
||||
|
||||
/**
|
||||
* 绑定码牌ID(批量添加云喇叭设备时绑定的码牌ID,与云喇叭设备一对一关系)
|
||||
*/
|
||||
private Long bindQrcId;
|
||||
|
||||
/**
|
||||
* 门店ID
|
||||
*/
|
||||
private String storeId;
|
||||
|
||||
/**
|
||||
* 商户号
|
||||
*/
|
||||
private String mchNo;
|
||||
|
||||
/**
|
||||
* 应用appId
|
||||
*/
|
||||
private String appId;
|
||||
|
||||
/**
|
||||
* 服务商号
|
||||
*/
|
||||
private String agentNo;
|
||||
|
||||
/**
|
||||
* 状态: 0-停用,1-启用
|
||||
*/
|
||||
private Byte state;
|
||||
|
||||
/**
|
||||
* 商户绑定状态: 0-未绑定,1-已绑定
|
||||
*/
|
||||
private Byte bindState;
|
||||
|
||||
/**
|
||||
* 绑定类型: 0-门店,1-码牌
|
||||
*/
|
||||
private Byte bindType;
|
||||
|
||||
/**
|
||||
* 绑定时间
|
||||
*/
|
||||
private Date bindTime;
|
||||
|
||||
/**
|
||||
* 解绑时间
|
||||
*/
|
||||
private Date unbindTime;
|
||||
|
||||
/**
|
||||
* 蚂蚁店铺Iot设备绑定状态: 0-未绑定,1-已绑定
|
||||
*/
|
||||
private Byte alipayBindState;
|
||||
|
||||
/**
|
||||
* 蚂蚁店铺ID
|
||||
*/
|
||||
private String alipayShopId;
|
||||
|
||||
/**
|
||||
* 是否固定支付金额: 1-是, 0-否
|
||||
*/
|
||||
private Byte fixedFlag;
|
||||
|
||||
/**
|
||||
* 固定支付金额,单位分
|
||||
*/
|
||||
private Long fixedPayAmount;
|
||||
|
||||
/**
|
||||
* 商户名称
|
||||
*/
|
||||
private String MchApplyName;
|
||||
|
||||
/**
|
||||
* 扩展商户号 现在的申请单编号 也是商户号
|
||||
*/
|
||||
private String MchApplyId;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
private Date createdAt;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
private Date updatedAt;
|
||||
|
||||
|
||||
@TableField(typeHandler = FastjsonTypeHandler.class)
|
||||
private JSONObject marqueeInfo;
|
||||
|
||||
/**
|
||||
* 轮播图
|
||||
*/
|
||||
@TableField(typeHandler = FastjsonTypeHandler.class)
|
||||
private List<JSONObject> carouselPicInfo;
|
||||
|
||||
/**
|
||||
* 付款区域背景图
|
||||
*/
|
||||
@TableField(typeHandler = FastjsonTypeHandler.class)
|
||||
private JSONObject payPicInfo;
|
||||
|
||||
/**
|
||||
* 绑定的应用名称
|
||||
*/
|
||||
@TableField(exist = false)
|
||||
private String appName;
|
||||
|
||||
/**
|
||||
* 绑定的门店名称
|
||||
*/
|
||||
@TableField(exist = false)
|
||||
private String storeName;
|
||||
|
||||
@TableField(exist = false)
|
||||
private List<Long> qrcIdList;
|
||||
|
||||
/**
|
||||
* 马牌名称
|
||||
*/
|
||||
@TableField(exist = false)
|
||||
private String bindQrcName;
|
||||
|
||||
/**
|
||||
* 用户名称
|
||||
*/
|
||||
@TableField(exist = false)
|
||||
private String mchUserName;
|
||||
|
||||
/**
|
||||
* 用户电话
|
||||
*/
|
||||
@TableField(exist = false)
|
||||
private String mchUserPhone;
|
||||
|
||||
@TableField(exist = false)
|
||||
private String isvName;
|
||||
|
||||
/**
|
||||
* 渠道简称
|
||||
*/
|
||||
@TableField(exist = false)
|
||||
private String isvShortName;
|
||||
|
||||
@TableField(exist = false)
|
||||
private String isvNo;
|
||||
|
||||
@TableField(exist = false)
|
||||
private String mchServiceName;
|
||||
|
||||
@TableField(exist = false)
|
||||
private String mchServicePhone;
|
||||
@TableField(exist = false)
|
||||
private Date firstDate;
|
||||
|
||||
@TableField(exist = false)
|
||||
private Date lastDate;
|
||||
|
||||
@TableField(exist = false)
|
||||
List<String> subAgentNoList;
|
||||
|
||||
@TableField(exist = false)
|
||||
private String ifName;
|
||||
|
||||
@TableField(exist = false)
|
||||
private String ifCode;
|
||||
|
||||
@TableField(exist = false)
|
||||
List<String> storeIdList;
|
||||
|
||||
@TableField(exist = false)
|
||||
private String appSearchData;
|
||||
|
||||
|
||||
public void preCheckMarket() {
|
||||
if(StringUtils.isEmpty(this.getDeviceNo())){
|
||||
throw new BizException("设备号不能为空");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 校验设备跑马灯参数
|
||||
*/
|
||||
public void preCheckMarqueeInfo() {
|
||||
preCheckMarket();
|
||||
JSONObject marqueeInfo = this.getMarqueeInfo() == null ? this.getExt() : this.getMarqueeInfo();
|
||||
if(marqueeInfo == null){
|
||||
throw new BizException("跑马灯广告信息为空");
|
||||
}
|
||||
String inputText = marqueeInfo.getString("inputText");
|
||||
if(StringUtils.isEmpty(inputText)){
|
||||
throw new BizException("跑马灯文字内容不能为空");
|
||||
}
|
||||
String fontColor = marqueeInfo.getString("fontColor");
|
||||
if(StringUtils.isEmpty(fontColor)){
|
||||
throw new BizException("跑马灯内字体颜色不能为空");
|
||||
}
|
||||
String bgColor = marqueeInfo.getString("bgColor");
|
||||
if(StringUtils.isEmpty(bgColor)){
|
||||
throw new BizException("跑马灯背景颜色不能为空");
|
||||
}
|
||||
//文字大小写死
|
||||
marqueeInfo.put("fontSize",20);
|
||||
//跑马灯显示的X轴位置 写死
|
||||
marqueeInfo.put("displayAreX",0);
|
||||
//跑马灯显示的Y轴位置 写死
|
||||
marqueeInfo.put("displayAreY",300);
|
||||
//尺寸(分辨率)宽 写死
|
||||
marqueeInfo.put("picWidth",840);
|
||||
//尺寸(分辨率)高 写死
|
||||
marqueeInfo.put("picHeight",40);
|
||||
this.setMarqueeInfo(marqueeInfo);
|
||||
}
|
||||
|
||||
public void preCheckMarketPic() {
|
||||
preCheckMarket();
|
||||
List<JSONObject> carouselPicInfo = this.getCarouselPicInfo();
|
||||
if(carouselPicInfo == null || carouselPicInfo.isEmpty()){
|
||||
throw new BizException("营销区轮播图片不能为空");
|
||||
}
|
||||
if(carouselPicInfo.size() > 5){
|
||||
throw new BizException("最多只能设置5张图片");
|
||||
}
|
||||
for (JSONObject item:carouselPicInfo) {
|
||||
Integer displayTime = item.getInteger("displayTime") == null ? 3 : item.getInteger("displayTime");
|
||||
item.put("displayTime",displayTime);
|
||||
item.put("enable",1);
|
||||
String url = item.getString("picName");
|
||||
byte[] bytes = HttpUtil.downloadBytes(url);
|
||||
BufferedImage bufferedImage = ImgUtil.toImage(bytes);
|
||||
// 获取图片的位深度
|
||||
int bitDepth = bufferedImage.getColorModel().getPixelSize();
|
||||
//只支持图片位深度为24的图片
|
||||
if(bitDepth != 24){
|
||||
throw new BizException("当前图片格式不支持");
|
||||
}
|
||||
if(bufferedImage.getWidth() != 800){
|
||||
|
||||
}
|
||||
item.put("picWidth",bufferedImage.getWidth());
|
||||
item.put("picHeight",bufferedImage.getHeight());
|
||||
item.put("picBitDepth",bitDepth);
|
||||
item.put("picSize",bytes.length);
|
||||
}
|
||||
}
|
||||
|
||||
public void preCheckPayCode() {
|
||||
preCheckMarket();
|
||||
JSONObject payPicInfo = this.getPayPicInfo();
|
||||
if(payPicInfo == null){
|
||||
throw new BizException("付款区域的图片信息不能为空");
|
||||
}
|
||||
String picUrl = payPicInfo.getString("picName");
|
||||
if(StringUtils.isEmpty(picUrl)){
|
||||
throw new BizException("付款区域的图片地址参数不能为空");
|
||||
}
|
||||
payPicInfo.put("displayTime",-1);
|
||||
payPicInfo.put("enable",1);
|
||||
payPicInfo.put("showQrCode",1);
|
||||
byte[] bytes = HttpUtil.downloadBytes(picUrl);
|
||||
BufferedImage bufferedImage = ImgUtil.toImage(bytes);
|
||||
// 获取图片的位深度
|
||||
int bitDepth = bufferedImage.getColorModel().getPixelSize();
|
||||
//只支持图片位深度为24的图片
|
||||
if(bitDepth != 24){
|
||||
throw new BizException("当前图片格式不支持");
|
||||
}
|
||||
payPicInfo.put("picWidth",bufferedImage.getWidth());
|
||||
payPicInfo.put("picHeight",bufferedImage.getHeight());
|
||||
payPicInfo.put("picBitDepth",bitDepth);
|
||||
payPicInfo.put("picSize",bytes.length);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,68 @@
|
||||
package com.jeequan.jeepay.db.entity;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler;
|
||||
import com.jeequan.jeepay.core.model.BaseModel;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 商户辅助终端信息报备表
|
||||
* </p>
|
||||
*
|
||||
* @author [mybatis plus generator]
|
||||
* @since 2022-04-26
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@Accessors(chain = true)
|
||||
@TableName(value = "t_mch_store_terminal", autoResultMap = true)
|
||||
public class MchStoreTerminal extends com.jeequan.jeepay.core.entity.MchStoreTerminal {
|
||||
|
||||
private static final long serialVersionUID=1L;
|
||||
|
||||
|
||||
// gw
|
||||
public static final LambdaQueryWrapper<MchStoreTerminal> gw(){
|
||||
return new LambdaQueryWrapper<>();
|
||||
}
|
||||
|
||||
/**
|
||||
* 表ID
|
||||
*/
|
||||
@TableId(value = "trm_id", type = IdType.AUTO)
|
||||
private Long trmId;
|
||||
|
||||
|
||||
/**
|
||||
* 渠道绑定管理 { ifCode:{ ifCode:"", ifCodeName: "", state: 1, errInfo: ""} }
|
||||
*/
|
||||
@TableField(typeHandler = FastjsonTypeHandler.class)
|
||||
private JSONObject channelBindInfo;
|
||||
|
||||
|
||||
@TableField(exist = false)
|
||||
private List<String> subAgentNoList;
|
||||
|
||||
@TableField(exist = false)
|
||||
private String appName;
|
||||
|
||||
@TableField(exist = false)
|
||||
private String contactTel;
|
||||
|
||||
@TableField(exist = false)
|
||||
private String agentName;
|
||||
|
||||
@TableField(exist = false)
|
||||
private String unionSearchId;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,91 @@
|
||||
package com.jeequan.jeepay.db.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.jeequan.jeepay.core.model.BaseModel;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.experimental.Accessors;
|
||||
import lombok.experimental.SuperBuilder;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@SuperBuilder(toBuilder = true)
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@Accessors(chain = true)
|
||||
@TableName("t_mch_sub_info")
|
||||
public class MchSubInfoEntity extends BaseModel {
|
||||
|
||||
// gw
|
||||
public static LambdaQueryWrapper<MchSubInfoEntity> gw(){
|
||||
return new LambdaQueryWrapper<>();
|
||||
}
|
||||
|
||||
/**
|
||||
* 商户号(原进件申请单号)
|
||||
*/
|
||||
private String mchApplyId;
|
||||
|
||||
/**
|
||||
* 渠道商户号
|
||||
*/
|
||||
private String channelMchNo;
|
||||
|
||||
/**
|
||||
* 渠道号
|
||||
*/
|
||||
private String channelId;
|
||||
|
||||
/**
|
||||
* 渠道子商户号
|
||||
*/
|
||||
private String subMchId;
|
||||
|
||||
/**
|
||||
* 渠道类型
|
||||
* WX
|
||||
* ZFB
|
||||
*/
|
||||
private String subMchType;
|
||||
|
||||
/**
|
||||
* 渠道来源,银联网联等
|
||||
*/
|
||||
private String subMchWay;
|
||||
|
||||
/**
|
||||
* 子商户备注信息
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 子商户状态
|
||||
*/
|
||||
private String status;
|
||||
|
||||
/**
|
||||
* 是否主要使用,1是
|
||||
* 若是主要使用,则将该记录的认证状态作为商户的实名认证状态
|
||||
*/
|
||||
private Integer mainUse;
|
||||
|
||||
/**
|
||||
* 子商户认证状态
|
||||
*/
|
||||
private Integer authStatus;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
private Date createdAt;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
private Date updatedAt;
|
||||
}
|
||||
@@ -0,0 +1,172 @@
|
||||
package com.jeequan.jeepay.db.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.jeequan.jeepay.core.exception.BizException;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.Getter;
|
||||
import lombok.experimental.Accessors;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
*
|
||||
* </p>
|
||||
*
|
||||
* @author [mybatis plus generator]
|
||||
* @since 2023-12-01
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@Accessors(chain = true)
|
||||
@TableName("t_mch_third_config")
|
||||
public class MchThirdConfig implements Serializable {
|
||||
|
||||
private static final long serialVersionUID=1L;
|
||||
|
||||
public static final LambdaQueryWrapper<MchThirdConfig> gw(){
|
||||
return new LambdaQueryWrapper<>();
|
||||
}
|
||||
|
||||
@TableId(value = "id", type = IdType.AUTO)
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 通道商户编号
|
||||
*/
|
||||
private String channelMerchantId;
|
||||
|
||||
/**
|
||||
* 类型 取值范围:wx zfb
|
||||
*/
|
||||
private String thirdType;
|
||||
|
||||
/**
|
||||
* 配置类型,取值范围:00 支付Appid 01 jsapi授权目录
|
||||
*/
|
||||
private String type;
|
||||
|
||||
/**
|
||||
* 子商户号 对应微信或支付宝的子商户号 后期可能涉及银联子商户号
|
||||
*/
|
||||
private String subMchNo;
|
||||
|
||||
/**
|
||||
* 支付Appid类型,枚举值. 取值范围:00 公众号; 01 小程序
|
||||
*/
|
||||
private String appidType;
|
||||
|
||||
/**
|
||||
* appid
|
||||
*/
|
||||
private String subAppid;
|
||||
|
||||
/**
|
||||
* jsapi授权目录,长度256位
|
||||
*/
|
||||
private String jsapiPath;
|
||||
|
||||
/**
|
||||
* 创建者用户ID
|
||||
*/
|
||||
private Long createdUid;
|
||||
|
||||
/**
|
||||
* 创建者姓名
|
||||
*/
|
||||
private String createdBy;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
private Date createdAt;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
private Date updatedAt;
|
||||
|
||||
@Getter
|
||||
@AllArgsConstructor
|
||||
public enum ThirdType{
|
||||
WX,
|
||||
ZFB;
|
||||
}
|
||||
|
||||
@Getter
|
||||
@AllArgsConstructor
|
||||
public enum Type{
|
||||
APPID("00"),
|
||||
PATH("01");
|
||||
private final String code;
|
||||
|
||||
public static Type getVal(String code){
|
||||
Type[] values = values();
|
||||
for (Type val:values) {
|
||||
if(val.getCode().equals(code)){
|
||||
return val;
|
||||
}
|
||||
}
|
||||
throw new BizException("非法[type]参数类型");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Getter
|
||||
@AllArgsConstructor
|
||||
public enum AppidType{
|
||||
PUBLIC("00","公众号"),
|
||||
APPLET("01","小程序");
|
||||
private final String code;
|
||||
private final String desc;
|
||||
|
||||
public static AppidType getVal(String code){
|
||||
AppidType[] values = values();
|
||||
for (AppidType val:values) {
|
||||
if(val.getCode().equals(code)){
|
||||
return val;
|
||||
}
|
||||
}
|
||||
throw new BizException("非法[appidType]参数类型");
|
||||
}
|
||||
}
|
||||
|
||||
@TableField(exist = false)
|
||||
private String mchNo;
|
||||
|
||||
|
||||
public void preCheck() {
|
||||
if(StringUtils.isEmpty(this.getMchNo())){
|
||||
throw new BizException("缺失商户号参数");
|
||||
}
|
||||
if(StringUtils.isEmpty(this.getType())){
|
||||
throw new BizException("缺失[type]参数");
|
||||
}
|
||||
Type val = Type.getVal(this.getType());
|
||||
switch (val){
|
||||
case PATH:
|
||||
if(StringUtils.isEmpty(this.getJsapiPath())){
|
||||
throw new BizException("支付授权目录配置时,[jsapiPath]参数不能为空");
|
||||
}
|
||||
if(!this.getJsapiPath().endsWith("/")){
|
||||
throw new BizException("支付授权目录配置时,[jsapiPath]必须要以/结尾");
|
||||
}
|
||||
break;
|
||||
case APPID:
|
||||
if(StringUtils.isEmpty(this.getAppidType())){
|
||||
throw new BizException("缺失APPID类型[appidType]参数");
|
||||
}
|
||||
if(StringUtils.isEmpty(this.getSubAppid())){
|
||||
throw new BizException("缺失[subAppid]参数");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,76 @@
|
||||
package com.jeequan.jeepay.db.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* CREATE TABLE `t_mch_video_auth` (
|
||||
* `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
|
||||
* `mch_no` varchar(32) NOT NULL COMMENT '商户号',
|
||||
* `task_id` varchar(40) DEFAULT NULL COMMENT '任务ID',
|
||||
* `user_id` varchar(64) NOT NULL COMMENT '用户ID',
|
||||
* `unique_id` varchar(64) DEFAULT NULL COMMENT '视频号ID',
|
||||
* `name` varchar(64) DEFAULT NULL COMMENT '视频号昵称',
|
||||
* `extra` longtext COMMENT '额外信息',
|
||||
* `last_auth_time` datetime DEFAULT NULL COMMENT '最后一次授权时间',
|
||||
* `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
* PRIMARY KEY (`id`) USING BTREE,
|
||||
* UNIQUE KEY `mch_no` (`mch_no`,`user_id`)
|
||||
* ) ENGINE=InnoDB AUTO_INCREMENT=1774618404736720899 DEFAULT CHARSET=utf8mb4;
|
||||
*/
|
||||
@Data
|
||||
@TableName("t_mch_video_auth")
|
||||
public class MchVideoAuthEntity {
|
||||
|
||||
@TableId(type = IdType.AUTO)
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 商户号
|
||||
*/
|
||||
@TableField("mch_no")
|
||||
private String mchNo;
|
||||
|
||||
/**
|
||||
* 任务号
|
||||
*/
|
||||
@TableField("task_id")
|
||||
private String taskId;
|
||||
|
||||
/**
|
||||
* 视频号用户ID
|
||||
*/
|
||||
@TableField("user_id")
|
||||
private String userId;
|
||||
|
||||
@TableField("unique_id")
|
||||
private String uniqueId;
|
||||
|
||||
/**
|
||||
* 视频号用户昵称
|
||||
*/
|
||||
@TableField("name")
|
||||
private String name;
|
||||
|
||||
/**
|
||||
* 存储额外字段,json格式
|
||||
*/
|
||||
@TableField("extra")
|
||||
private String extra;
|
||||
|
||||
/**
|
||||
* 最后一次授权时间
|
||||
*/
|
||||
@TableField("last_auth_time")
|
||||
private Date lastAuthTime;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
private Date createTime;
|
||||
}
|
||||
@@ -0,0 +1,71 @@
|
||||
package com.jeequan.jeepay.db.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* CREATE TABLE `t_mch_video_cache` (
|
||||
* `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
|
||||
* `mch_no` varchar(32) NOT NULL COMMENT '商户号',
|
||||
* `task_id` varchar(40) DEFAULT NULL COMMENT '任务ID',
|
||||
* `user_id` varchar(64) NOT NULL COMMENT '用户ID',
|
||||
* `unique_id` varchar(64) DEFAULT NULL COMMENT '视频号ID',
|
||||
* `name` varchar(64) DEFAULT NULL COMMENT '视频号用户昵称',
|
||||
* `object_id` varchar(100) DEFAULT NULL,
|
||||
* `export_id` varchar(100) DEFAULT NULL,
|
||||
* `extra` longtext COMMENT '额外信息',
|
||||
* `createTime` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
* PRIMARY KEY (`id`) USING BTREE,
|
||||
* KEY `mch_no` (`mch_no`,`user_id`)
|
||||
* ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
*/
|
||||
@Data
|
||||
@TableName("t_mch_video_cache")
|
||||
public class MchVideoCacheEntity {
|
||||
|
||||
@TableId(type = IdType.AUTO)
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 商户号
|
||||
*/
|
||||
private String mchNo;
|
||||
|
||||
/**
|
||||
* 任务号
|
||||
*/
|
||||
private String taskId;
|
||||
|
||||
/**
|
||||
* 视频号用户ID
|
||||
*/
|
||||
private String userId;
|
||||
|
||||
|
||||
private String uniqueId;
|
||||
|
||||
/**
|
||||
* 视频号用户昵称
|
||||
*/
|
||||
private String name;
|
||||
|
||||
/**
|
||||
* 存储额外字段,json格式
|
||||
*/
|
||||
private String extra;
|
||||
|
||||
private String objectId;
|
||||
|
||||
private String exportId;
|
||||
|
||||
private Date createTime;
|
||||
|
||||
/**
|
||||
* 1, 选中; 0, 未选中
|
||||
*/
|
||||
private Integer choiceFlag;
|
||||
}
|
||||
@@ -0,0 +1,84 @@
|
||||
package com.jeequan.jeepay.db.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 商户公众号消息接收用户列表
|
||||
* </p>
|
||||
*
|
||||
* @author [mybatis plus generator]
|
||||
* @since 2021-12-28
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@Accessors(chain = true)
|
||||
@TableName("t_mch_wxmp_user")
|
||||
public class MchWxmpUser extends com.jeequan.jeepay.core.entity.MchWxmpUser {
|
||||
|
||||
public static final LambdaQueryWrapper<MchWxmpUser> gw(){
|
||||
return new LambdaQueryWrapper<>();
|
||||
}
|
||||
|
||||
private static final long serialVersionUID=1L;
|
||||
|
||||
public static final byte SEND_STATE_CLOSE = 0;
|
||||
public static final byte SEND_STATE_OPEN = 1;
|
||||
public static final byte SEND_STATE_ERROR = 2;
|
||||
|
||||
/**
|
||||
* 用户编号
|
||||
*/
|
||||
@TableId(value = "user_id", type = IdType.AUTO)
|
||||
private Long userId;
|
||||
|
||||
/**
|
||||
* 系统用户ID
|
||||
*/
|
||||
private Long sysUserId;
|
||||
|
||||
/**
|
||||
* 微信昵称
|
||||
*/
|
||||
private String nickname;
|
||||
|
||||
/**
|
||||
* 微信openId
|
||||
*/
|
||||
private String wxOpenId;
|
||||
|
||||
/**
|
||||
* 微信 appId
|
||||
*/
|
||||
private String wxAppId;
|
||||
|
||||
/**
|
||||
* 商户号
|
||||
*/
|
||||
private String mchNo;
|
||||
|
||||
/**
|
||||
* 消息推送状态:0-未开启,1-开启 2:推送失败,已自动关闭
|
||||
*/
|
||||
private Byte sendStatus;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
private Date createdAt;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
private Date updatedAt;
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,118 @@
|
||||
package com.jeequan.jeepay.db.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.jeequan.jeepay.core.model.BaseModel;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 会员账户流水表
|
||||
* </p>
|
||||
*
|
||||
* @author [mybatis plus generator]
|
||||
* @since 2023-04-12
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@Accessors(chain = true)
|
||||
@TableName("t_member_account_history")
|
||||
public class MemberAccountHistory extends BaseModel {
|
||||
|
||||
public static final LambdaQueryWrapper<MemberAccountHistory> gw(){
|
||||
return new LambdaQueryWrapper<>();
|
||||
}
|
||||
|
||||
private static final long serialVersionUID=1L;
|
||||
|
||||
// 业务类型:1-支付充值, 2-现金充值, 3-消费, 4-消费退款, 5-人工调账
|
||||
public static final byte BIZ_RECHARGE_PAY = 1;
|
||||
public static final byte BIZ_RECHARGE_CASH = 2;
|
||||
public static final byte BIZ_CONSUME = 3;
|
||||
public static final byte BIZ_CONSUME_REFUND = 4;
|
||||
public static final byte BIZ_MANUAL = 5;
|
||||
|
||||
/**
|
||||
* 记录ID
|
||||
*/
|
||||
@TableId(value = "hid", type = IdType.AUTO)
|
||||
private Long hid;
|
||||
|
||||
/**
|
||||
* 会员ID
|
||||
*/
|
||||
private String mbrId;
|
||||
|
||||
/**
|
||||
* 会员名称快照
|
||||
*/
|
||||
private String mbrName;
|
||||
|
||||
/**
|
||||
* 会员手机号 快照
|
||||
*/
|
||||
private String mbrTel;
|
||||
|
||||
/**
|
||||
* 所属商户
|
||||
*/
|
||||
private String mchNo;
|
||||
|
||||
/**
|
||||
* 门店ID(快照)
|
||||
*/
|
||||
private String storeId;
|
||||
|
||||
/**
|
||||
* 码牌ID(快照)
|
||||
*/
|
||||
private Long qrcId;
|
||||
|
||||
/**
|
||||
* 变动前账户余额, 单位:分
|
||||
*/
|
||||
private Long beforeAmount;
|
||||
|
||||
/**
|
||||
* 变动金额, 单位:分
|
||||
*/
|
||||
private Long changeAmount;
|
||||
|
||||
/**
|
||||
* 变动后账户余额, 单位:分
|
||||
*/
|
||||
private Long afterAmount;
|
||||
|
||||
/**
|
||||
* 业务类型:1-支付充值, 2-现金充值, 3-消费, 4-消费退款, 5-人工调账
|
||||
*/
|
||||
private Byte bizType;
|
||||
|
||||
/**
|
||||
* 关联订单号
|
||||
*/
|
||||
private String relaBizOrderId;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
private Date createdAt;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
private Date updatedAt;
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,111 @@
|
||||
package com.jeequan.jeepay.db.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.jeequan.jeepay.core.model.BaseModel;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 会员信息表
|
||||
* </p>
|
||||
*
|
||||
* @author [mybatis plus generator]
|
||||
* @since 2023-04-12
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@Accessors(chain = true)
|
||||
@TableName("t_member_info")
|
||||
public class MemberInfo extends BaseModel {
|
||||
|
||||
public static final LambdaQueryWrapper<MemberInfo> gw(){
|
||||
return new LambdaQueryWrapper<>();
|
||||
}
|
||||
|
||||
private static final long serialVersionUID=1L;
|
||||
|
||||
/**
|
||||
* 会员ID
|
||||
*/
|
||||
@TableId(value = "mbr_id", type = IdType.INPUT)
|
||||
private String mbrId;
|
||||
|
||||
/**
|
||||
* 会员名称
|
||||
*/
|
||||
private String mbrName;
|
||||
|
||||
/**
|
||||
* 会员手机号
|
||||
*/
|
||||
private String mbrTel;
|
||||
|
||||
/**
|
||||
* 微信公众号用户标识open_id
|
||||
*/
|
||||
private String wxMpOpenId;
|
||||
|
||||
/**
|
||||
* 微信小程序用户标识open_id
|
||||
*/
|
||||
private String wxLiteOpenId;
|
||||
|
||||
/**
|
||||
* 支付宝用户标识user_id
|
||||
*/
|
||||
private String aliUserId;
|
||||
|
||||
/**
|
||||
* 云闪付用户标识user_id
|
||||
*/
|
||||
private String ysfUserId;
|
||||
|
||||
/**
|
||||
* 所属商户
|
||||
*/
|
||||
private String mchNo;
|
||||
|
||||
/**
|
||||
* 账户余额 单位:分
|
||||
*/
|
||||
private Long balance;
|
||||
|
||||
/**
|
||||
* 数据安全保护秘钥
|
||||
*/
|
||||
private String safeKey;
|
||||
|
||||
/**
|
||||
* 状态: 0-停用, 1-正常
|
||||
*/
|
||||
private Byte state;
|
||||
|
||||
/**
|
||||
* 头像地址
|
||||
*/
|
||||
private String avatarUrl;
|
||||
|
||||
/**
|
||||
* 会员备注
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
private Date createdAt;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
private Date updatedAt;
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,147 @@
|
||||
package com.jeequan.jeepay.db.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.jeequan.jeepay.core.model.BaseModel;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 会员充值记录表
|
||||
* </p>
|
||||
*
|
||||
* @author [mybatis plus generator]
|
||||
* @since 2023-04-12
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@Accessors(chain = true)
|
||||
@TableName("t_member_recharge_record")
|
||||
public class MemberRechargeRecord extends BaseModel {
|
||||
|
||||
public static final LambdaQueryWrapper<MemberRechargeRecord> gw(){
|
||||
return new LambdaQueryWrapper<>();
|
||||
}
|
||||
|
||||
private static final long serialVersionUID=1L;
|
||||
|
||||
// 充值状态:0-初始化, 1-充值中, 2-充值成功, 3-充值失败
|
||||
public static final byte STATE_INIT = 0;
|
||||
public static final byte STATE_ING = 1;
|
||||
public static final byte STATE_SUCCESS = 2;
|
||||
public static final byte STATE_FAIL = 3;
|
||||
|
||||
/**
|
||||
* 充值记录ID
|
||||
*/
|
||||
@TableId(value = "recharge_record_id", type = IdType.INPUT)
|
||||
private String rechargeRecordId;
|
||||
|
||||
/**
|
||||
* 会员ID
|
||||
*/
|
||||
private String mbrId;
|
||||
|
||||
/**
|
||||
* 会员名称 快照
|
||||
*/
|
||||
private String mbrName;
|
||||
|
||||
/**
|
||||
* 会员手机号 快照
|
||||
*/
|
||||
private String mbrTel;
|
||||
|
||||
/**
|
||||
* 所属商户
|
||||
*/
|
||||
private String mchNo;
|
||||
|
||||
/**
|
||||
* 支付金额, 单位:分
|
||||
*/
|
||||
private Long payAmount;
|
||||
|
||||
/**
|
||||
* 赠送金额, 单位:分
|
||||
*/
|
||||
private Long giveAmount;
|
||||
|
||||
/**
|
||||
* 会员入账金额, 单位:分
|
||||
*/
|
||||
private Long entryAmount;
|
||||
|
||||
/**
|
||||
* 会员余额, 单位:分
|
||||
*/
|
||||
private Long afterBalance;
|
||||
|
||||
/**
|
||||
* 支付方式代码
|
||||
*/
|
||||
private String wayCode;
|
||||
|
||||
/**
|
||||
* 支付方式代码分类
|
||||
*/
|
||||
private String wayCodeType;
|
||||
|
||||
/**
|
||||
* 充值状态:0-初始化, 1-充值中, 2-充值成功, 3-充值失败
|
||||
*/
|
||||
private Byte state;
|
||||
|
||||
/**
|
||||
* 支付订单号
|
||||
*/
|
||||
private String payOrderId;
|
||||
|
||||
/**
|
||||
* 订单支付成功时间
|
||||
*/
|
||||
private Date successTime;
|
||||
|
||||
/**
|
||||
* 同步跳转地址
|
||||
*/
|
||||
private String returnUrl;
|
||||
|
||||
/**
|
||||
* 异步通知地址
|
||||
*/
|
||||
private String notifyUrl;
|
||||
|
||||
/**
|
||||
* 支付错误码
|
||||
*/
|
||||
private String errCode;
|
||||
|
||||
/**
|
||||
* 支付错误描述
|
||||
*/
|
||||
private String errMsg;
|
||||
|
||||
/**
|
||||
* 充值备注
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
private Date createdAt;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
private Date updatedAt;
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,96 @@
|
||||
package com.jeequan.jeepay.db.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.jeequan.jeepay.core.model.BaseModel;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 会员充值规则表
|
||||
* </p>
|
||||
*
|
||||
* @author [mybatis plus generator]
|
||||
* @since 2023-04-12
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@Accessors(chain = true)
|
||||
@TableName("t_member_recharge_rule")
|
||||
public class MemberRechargeRule extends BaseModel {
|
||||
|
||||
public static final LambdaQueryWrapper<MemberRechargeRule> gw(){
|
||||
return new LambdaQueryWrapper<>();
|
||||
}
|
||||
|
||||
private static final long serialVersionUID=1L;
|
||||
|
||||
/**
|
||||
* 规则ID
|
||||
*/
|
||||
@TableId(value = "rule_id")
|
||||
private String ruleId;
|
||||
|
||||
/**
|
||||
* 所属商户
|
||||
*/
|
||||
private String mchNo;
|
||||
|
||||
/**
|
||||
* 充值金额
|
||||
*/
|
||||
private Long rechargeAmount;
|
||||
|
||||
/**
|
||||
* 赠送金额
|
||||
*/
|
||||
private Long giveAmount;
|
||||
|
||||
/**
|
||||
* 状态:0-停用 1-启用
|
||||
*/
|
||||
private Byte state;
|
||||
|
||||
/**
|
||||
* 排序字段, 规则:正序
|
||||
*/
|
||||
private Integer sort;
|
||||
|
||||
/**
|
||||
* 门店id
|
||||
*/
|
||||
private String storeId;
|
||||
|
||||
/**
|
||||
* 门店名称
|
||||
*/
|
||||
private String storeName;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
private Date createdAt;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
private Date updatedAt;
|
||||
|
||||
|
||||
@TableField(exist = false)
|
||||
private Integer isAllStore;
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,133 @@
|
||||
package com.jeequan.jeepay.db.entity;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler;
|
||||
import com.jeequan.jeepay.core.model.BaseModel;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 订单分润结算记录
|
||||
* </p>
|
||||
*
|
||||
* @author [mybatis plus generator]
|
||||
* @since 2022-03-22
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@Accessors(chain = true)
|
||||
@TableName(value = "t_order_profit_sett_record", autoResultMap = true)
|
||||
public class OrderProfitSettRecord extends BaseModel {
|
||||
|
||||
|
||||
/**
|
||||
* 计算类型: 1-支付订单入账, 2-退款退佣金, 3-转账业务佣金入账
|
||||
**/
|
||||
public static final byte CAL_TYPE_PAY_ORDER = 1;
|
||||
public static final byte CAL_TYPE_REFUND_ORDER = 2;
|
||||
public static final byte CAL_TYPE_TRANS_ORDER = 3;
|
||||
/**
|
||||
* 垫资佣金入账
|
||||
*/
|
||||
public static final byte CAL_TYPE_DZ_ORDER = 4;
|
||||
|
||||
public static final LambdaQueryWrapper<OrderProfitSettRecord> gw(){
|
||||
return new LambdaQueryWrapper<>();
|
||||
}
|
||||
|
||||
|
||||
private static final long serialVersionUID=1L;
|
||||
|
||||
/**
|
||||
* 结算记录ID
|
||||
*/
|
||||
@TableId(value = "rid", type = IdType.AUTO)
|
||||
private Long rid;
|
||||
|
||||
/**
|
||||
* 运营平台标识/服务商号
|
||||
*/
|
||||
private String infoId;
|
||||
|
||||
/**
|
||||
* 系统类型: 参考:SYS_TYPE
|
||||
*/
|
||||
private String infoType;
|
||||
|
||||
/**
|
||||
* 名称快照
|
||||
*/
|
||||
private String infoName;
|
||||
|
||||
/**
|
||||
* 费率配置快照 (参考: ApplymentBasicInfo.paywayFeeList)
|
||||
*/
|
||||
@TableField(typeHandler = FastjsonTypeHandler.class)
|
||||
private JSONObject infoPaywayFeeDetail;
|
||||
|
||||
/**
|
||||
* 支付订单号(与t_pay_order对应)
|
||||
*/
|
||||
private String payOrderId;
|
||||
|
||||
/**
|
||||
* 退款订单号 (默认空串: 作用为使得唯一索引生效)
|
||||
*/
|
||||
private String refundOrderId;
|
||||
|
||||
/**
|
||||
* 计算类型: 1-支付订单入账, 2-退款退佣金, 3-转账业务佣金入账
|
||||
*/
|
||||
private Byte calType;
|
||||
|
||||
/**
|
||||
* 计算基数金额, 单位分 ( 订单支付金额、 退款金额 )
|
||||
*/
|
||||
private Long calBaseAmount;
|
||||
|
||||
/**
|
||||
* 利润结算金额, 单位:分
|
||||
*/
|
||||
private Long calProfitAmount;
|
||||
|
||||
/**
|
||||
* 费用金额, 单位:分
|
||||
*/
|
||||
private Long calFeeAmount;
|
||||
|
||||
/**
|
||||
* 入账状态: 0-未入账, 1-已入账
|
||||
*/
|
||||
private Byte entryState;
|
||||
|
||||
/**
|
||||
* 预计入账日期(比如在途转钱包)
|
||||
*/
|
||||
private Date entryTime;
|
||||
|
||||
/**
|
||||
* 结算任务执行时间
|
||||
*/
|
||||
private Date taskTime;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
private Date createdAt;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
private Date updatedAt;
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,272 @@
|
||||
package com.jeequan.jeepay.db.entity;
|
||||
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler;
|
||||
import com.jeequan.jeepay.core.model.BaseModel;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 方案表
|
||||
* </p>
|
||||
*
|
||||
* @author [mybatis plus generator]
|
||||
* @since 2023-12-12
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@Accessors(chain = true)
|
||||
@TableName("t_package_info")
|
||||
public class PackageInfo extends BaseModel {
|
||||
|
||||
public static final LambdaQueryWrapper<PackageInfo> gw(){
|
||||
return new LambdaQueryWrapper<>();
|
||||
}
|
||||
|
||||
private static final long serialVersionUID=1L;
|
||||
|
||||
/** 待上架 **/
|
||||
public static final Integer PACKAGE_STATE_NOT = 0;
|
||||
/** 已上架 **/
|
||||
public static final Integer PACKAGE_STATE_ON = 1;
|
||||
|
||||
/** 需要绑定应用 **/
|
||||
public static final Integer PACKAGE_STATE_BINDING = 1;
|
||||
/** 不需要绑定应用 **/
|
||||
public static final Integer PACKAGE_STATE_ON_BINDING = 0;
|
||||
|
||||
/** 收费 **/
|
||||
public static final Integer PACKAGE_STATE_CHARGE = 1;
|
||||
/** 不收费 **/
|
||||
public static final Integer PACKAGE_STATE_ON_CHARGE = 0;
|
||||
|
||||
|
||||
public static final String JSON_STR= "[{\"versionName\": \"免费版本\",\"validTime\": -1,\"sellingPrice\": 0.00,\"lineationPrice\": 0.00}]";
|
||||
|
||||
/** 需要审核 **/
|
||||
public static final Integer PACKAGE_STATE_AUDIT = 1;
|
||||
/** 不需要审核 **/
|
||||
public static final Integer PACKAGE_STATE_AUTO_AUDIT = 0;
|
||||
|
||||
public static final String API_CODE_FIRST= "API_";
|
||||
public static final String API_CODE_LAST= "_FA_PAY";
|
||||
/**
|
||||
* 方案ID
|
||||
*/
|
||||
@TableId
|
||||
private String packageId;
|
||||
|
||||
/**
|
||||
* 名称
|
||||
*/
|
||||
@TableField("`name`")
|
||||
private String name;
|
||||
|
||||
/**
|
||||
* 描述
|
||||
*/
|
||||
@TableField("`desc`")
|
||||
private String desc;
|
||||
|
||||
/**
|
||||
* 定义的唯一标识,方便支付那边取值
|
||||
*/
|
||||
private String apiCode;
|
||||
|
||||
/**
|
||||
* 方案价格
|
||||
*/
|
||||
private Long price;
|
||||
|
||||
/**
|
||||
* 方案付费信息
|
||||
*/
|
||||
@TableField(typeHandler = FastjsonTypeHandler.class)
|
||||
private JSONArray packageText;
|
||||
|
||||
/**
|
||||
* 排序
|
||||
*/
|
||||
private Integer packageSort;
|
||||
|
||||
/**
|
||||
* 方案内容
|
||||
*/
|
||||
private String packageContent;
|
||||
|
||||
/**
|
||||
* 开发文档地址
|
||||
*/
|
||||
private String packageUrl;
|
||||
|
||||
/**
|
||||
* 方案分类
|
||||
*/
|
||||
private Integer packageType;
|
||||
|
||||
/**
|
||||
* 产品类型 0-服务型 1-接口型
|
||||
*/
|
||||
@TableField(typeHandler = FastjsonTypeHandler.class)
|
||||
private JSONArray packageSpecs;
|
||||
|
||||
/**
|
||||
* 方案状态 0-待上架 1-已上架
|
||||
*/
|
||||
private Integer packageState;
|
||||
|
||||
/**
|
||||
* 关联产品的ids,多个,逗号隔开
|
||||
*/
|
||||
private String productIds;
|
||||
|
||||
/**
|
||||
* 关联方案的id,多个,逗号隔开
|
||||
*/
|
||||
private String packageIds;
|
||||
|
||||
/**
|
||||
* 关联通道的code,多个,逗号隔开
|
||||
*/
|
||||
private String payInterfaceCodes;
|
||||
|
||||
/**
|
||||
* 固定功能代码
|
||||
*/
|
||||
private String funcCode;
|
||||
|
||||
/**
|
||||
* 固定功能配置
|
||||
*/
|
||||
private String extv;
|
||||
|
||||
/**
|
||||
* 是否需要审核0:否;1:是
|
||||
*/
|
||||
private Integer audit;
|
||||
|
||||
/**
|
||||
* 是否收费0:否;1:是
|
||||
*/
|
||||
private Integer charge;
|
||||
|
||||
|
||||
/**
|
||||
* 是否需要绑定应用0:否;1:是
|
||||
*/
|
||||
private Integer bindingApp;
|
||||
|
||||
/**
|
||||
* 产品特殊资质信息
|
||||
*/
|
||||
@TableField(typeHandler = FastjsonTypeHandler.class)
|
||||
private JSONArray specialCertificationText;
|
||||
|
||||
/**
|
||||
* 是否需要资质0:否;1:是
|
||||
*/
|
||||
private Integer certification;
|
||||
|
||||
/**
|
||||
* 产品logo地址
|
||||
*/
|
||||
private String packageLogoUrl;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
private Date createdAt;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
private Date updatedAt;
|
||||
|
||||
/**
|
||||
* 创建人
|
||||
*/
|
||||
private String createdBy;
|
||||
|
||||
|
||||
@TableField(exist = false)
|
||||
private String[] ids;
|
||||
|
||||
@TableField(exist = false)
|
||||
private String mchName;
|
||||
|
||||
@TableField(exist = false)
|
||||
private String id;
|
||||
|
||||
@TableField(exist = false)
|
||||
private String typeName;
|
||||
|
||||
@TableField(exist = false)
|
||||
private Integer state;
|
||||
|
||||
@TableField(exist = false)
|
||||
private List<ProductInfo> productInfoList;
|
||||
|
||||
@TableField(exist = false)
|
||||
private String stateDesc;
|
||||
|
||||
@TableField(exist = false)
|
||||
private Integer checkState;
|
||||
|
||||
@TableField(exist = false)
|
||||
private List<ProductInfo> productInfoRelevancyList;
|
||||
|
||||
@TableField(exist = false)
|
||||
private List<PackageInfo> packageInfoRelevancyList;
|
||||
|
||||
@TableField(exist = false)
|
||||
private List<PayInterfaceDefine> payInterRelevancyList;
|
||||
|
||||
@TableField(exist = false)
|
||||
private Integer applyCount;
|
||||
|
||||
@TableField(exist = false)
|
||||
private List<String> bindingAppList;
|
||||
|
||||
@TableField(exist = false)
|
||||
private String productIdsName;
|
||||
|
||||
@TableField(exist = false)
|
||||
private String packageIdsName;
|
||||
|
||||
@TableField(exist = false)
|
||||
private String payInterfaceCodesName;
|
||||
|
||||
//申请数量
|
||||
@TableField(exist = false)
|
||||
private Integer applyForCount;
|
||||
|
||||
//定订购数量
|
||||
@TableField(exist = false)
|
||||
private Integer orderCount;
|
||||
|
||||
@TableField(exist = false)
|
||||
private List<PackageOrder> packageOrderList;
|
||||
|
||||
/**
|
||||
* 剩余总时间
|
||||
*/
|
||||
@TableField(exist = false)
|
||||
private Long allRemainingDays;
|
||||
|
||||
@TableField(exist = false)
|
||||
private Date firstDate;
|
||||
|
||||
@TableField(exist = false)
|
||||
private Date lastDate;
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,171 @@
|
||||
package com.jeequan.jeepay.db.entity;
|
||||
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler;
|
||||
import com.jeequan.jeepay.core.model.BaseModel;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 服务商信息表
|
||||
* </p>
|
||||
*
|
||||
* @author [mybatis plus generator]
|
||||
* @since 2022-03-12
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@Accessors(chain = true)
|
||||
@TableName("t_package_order")
|
||||
public class PackageOrder extends BaseModel {
|
||||
|
||||
/** 审核中 */
|
||||
public static final Integer STATE_AUDITING = 1;
|
||||
|
||||
/** 驳回 */
|
||||
public static final Integer STATE_REJECT = 2;
|
||||
|
||||
/** 通过 */
|
||||
public static final Integer STATE_SUCCESS = 3;
|
||||
|
||||
/** 已取消 */
|
||||
public static final Integer STATE_CANCEL = 4;
|
||||
|
||||
private static final long serialVersionUID=1L;
|
||||
|
||||
/**
|
||||
* id
|
||||
*/
|
||||
@TableId
|
||||
private String id;
|
||||
|
||||
private String packageId;
|
||||
|
||||
/**
|
||||
* 产品ID
|
||||
*/
|
||||
private String productId;
|
||||
|
||||
private String mchNo;
|
||||
|
||||
private String stateDesc;
|
||||
|
||||
private String appId;
|
||||
/**
|
||||
* 状态 1-审核中 2-审核失败 3-已开通 4-已取消
|
||||
*/
|
||||
private Integer state;
|
||||
|
||||
/**
|
||||
* 费用规则,json字符串
|
||||
*/
|
||||
@TableField(typeHandler = FastjsonTypeHandler.class)
|
||||
private JSONArray costRule;
|
||||
|
||||
/**
|
||||
* 联系人姓名
|
||||
*/
|
||||
private String contactsName;
|
||||
|
||||
/**
|
||||
* 联系人电话
|
||||
*/
|
||||
private String contactsTel;
|
||||
|
||||
|
||||
/**
|
||||
* 划线总价,元
|
||||
*/
|
||||
private BigDecimal price;
|
||||
|
||||
/**
|
||||
* 订单金额 元
|
||||
*/
|
||||
private BigDecimal actualPrice;
|
||||
|
||||
/**
|
||||
* 实付总价,默认是0,元
|
||||
*/
|
||||
private BigDecimal pracPrice;
|
||||
|
||||
/**
|
||||
* 支付凭证图片地址
|
||||
*/
|
||||
private String payImg;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 产品或方案,0:产品;1:方案
|
||||
*/
|
||||
private Integer packageOrProduct;
|
||||
|
||||
/**
|
||||
* 特殊资质信息,json字符串
|
||||
*/
|
||||
@TableField(typeHandler = FastjsonTypeHandler.class)
|
||||
private JSONArray specialCertificationText;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
private Date createdAt;
|
||||
|
||||
/**
|
||||
* 创建人
|
||||
*/
|
||||
private Long createdUid;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
private Date updatedAt;
|
||||
|
||||
@TableField(exist = false)
|
||||
private List<ProductInfo> productInfo;
|
||||
|
||||
@TableField(exist = false)
|
||||
private String name;
|
||||
|
||||
@TableField(exist = false)
|
||||
private String productOrPackageName;
|
||||
|
||||
@TableField(exist = false)
|
||||
private String productName;
|
||||
|
||||
@TableField(exist = false)
|
||||
private Date firstDate;
|
||||
|
||||
@TableField(exist = false)
|
||||
private Date lastDate;
|
||||
|
||||
@TableField(exist = false)
|
||||
private String mchName;
|
||||
|
||||
@TableField(exist = false)
|
||||
private String appName;
|
||||
|
||||
@TableField(exist = false)
|
||||
private Long remainingDays;
|
||||
|
||||
@TableField(exist = false)
|
||||
private List<String> mchInfoList;
|
||||
|
||||
@TableField(exist = false)
|
||||
private Long mchUserContactsTel;
|
||||
|
||||
@TableField(exist = false)
|
||||
private String apiCode;
|
||||
}
|
||||
@@ -0,0 +1,59 @@
|
||||
package com.jeequan.jeepay.db.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import java.util.Date;
|
||||
import com.jeequan.jeepay.core.model.BaseModel;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 方案订单关联产品缓存表
|
||||
* </p>
|
||||
*
|
||||
* @author [mybatis plus generator]
|
||||
* @since 2023-12-12
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@Accessors(chain = true)
|
||||
@TableName("t_package_order_detail")
|
||||
public class PackageOrderDetail extends BaseModel {
|
||||
|
||||
private static final long serialVersionUID=1L;
|
||||
|
||||
/**
|
||||
* 订单号,t_package_order的id
|
||||
*/
|
||||
@TableId
|
||||
private Long orderId;
|
||||
|
||||
/**
|
||||
* 方案ID
|
||||
*/
|
||||
private String packageId;
|
||||
|
||||
/**
|
||||
* 产品ID
|
||||
*/
|
||||
private Long productId;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
private Date createdAt;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
private Date updatedAt;
|
||||
|
||||
/**
|
||||
* 创建人
|
||||
*/
|
||||
private String createdBy;
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,62 @@
|
||||
package com.jeequan.jeepay.db.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.jeequan.jeepay.core.model.BaseModel;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 方案-产品关联表
|
||||
* </p>
|
||||
*
|
||||
* @author [mybatis plus generator]
|
||||
* @since 2023-12-12
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@Accessors(chain = true)
|
||||
@TableName("t_package_product")
|
||||
public class PackageProduct extends BaseModel {
|
||||
|
||||
private static final long serialVersionUID=1L;
|
||||
|
||||
@TableId
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 1、产品关联产品,2、产品关联方案,3、方案关联方案
|
||||
*/
|
||||
private String type;
|
||||
|
||||
/**
|
||||
* type=1、2时为产品ID,
|
||||
*/
|
||||
private String attachFromId;
|
||||
|
||||
/**
|
||||
* type=1时为产品ID,
|
||||
*/
|
||||
private String attachToId;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
private Date createdAt;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
private Date updatedAt;
|
||||
|
||||
/**
|
||||
* 创建人
|
||||
*/
|
||||
private String createdBy;
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,58 @@
|
||||
package com.jeequan.jeepay.db.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import java.util.Date;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import java.io.Serializable;
|
||||
|
||||
import com.jeequan.jeepay.core.model.BaseModel;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 方案分类表
|
||||
* </p>
|
||||
*
|
||||
* @author [mybatis plus generator]
|
||||
* @since 2023-12-14
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@Accessors(chain = true)
|
||||
@TableName("t_package_type")
|
||||
public class PackageType extends BaseModel {
|
||||
|
||||
private static final long serialVersionUID=1L;
|
||||
|
||||
/**
|
||||
* 分类ID
|
||||
*/
|
||||
@TableId(value = "type_id", type = IdType.AUTO)
|
||||
private Long typeId;
|
||||
|
||||
/**
|
||||
* 分类名称
|
||||
*/
|
||||
private String typeName;
|
||||
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
private Date createdAt;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
private Date updatedAt;
|
||||
|
||||
/**
|
||||
* 创建人
|
||||
*/
|
||||
private String createdBy;
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,156 @@
|
||||
|
||||
package com.jeequan.jeepay.db.entity;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.jeequan.jeepay.core.model.BaseModel;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.experimental.Accessors;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 直付通二级商户结算记录表
|
||||
* </p>
|
||||
*
|
||||
* @author [mybatis plus generator]
|
||||
* @since 2021-12-06
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@Accessors(chain = true)
|
||||
@TableName("t_pay_alizft_sett_record")
|
||||
public class PayAlizftSettRecord extends BaseModel {
|
||||
|
||||
public static final LambdaQueryWrapper<PayAlizftSettRecord> gw(){
|
||||
return new LambdaQueryWrapper<>();
|
||||
}
|
||||
|
||||
private static final long serialVersionUID=1L;
|
||||
|
||||
/** 直付通结算方式 0-自动结算 1-手动结算 **/
|
||||
public static Byte ZFT_SETT_TYPE_AUTO = 0;
|
||||
public static Byte ZFT_SETT_TYPE_MANUAL = 1;
|
||||
|
||||
/** 结算状态 1-待结算 2-结算中 3-结算成功 4-结算失败 5-限流待重试 **/
|
||||
public final static byte ZFT_SETT_STATUS_NOT = 1;
|
||||
public final static byte ZFT_SETT_STATUS_ING = 2;
|
||||
public final static byte ZFT_SETT_STATUS_SUCCESS = 3;
|
||||
public final static byte ZFT_SETT_STATUS_FAIL = 4;
|
||||
public final static byte ZFT_SETT_STATUS_WAIT_RETRY = 5;
|
||||
|
||||
/**
|
||||
* 结算编号
|
||||
*/
|
||||
@TableId(type = IdType.INPUT)
|
||||
private String settleNo;
|
||||
|
||||
/**
|
||||
* 支付订单号
|
||||
*/
|
||||
private String payOrderId;
|
||||
|
||||
/**
|
||||
* 应用ID
|
||||
*/
|
||||
private String appId;
|
||||
|
||||
/**
|
||||
* 商户号
|
||||
*/
|
||||
private String mchNo;
|
||||
|
||||
/**
|
||||
* 商户名称
|
||||
*/
|
||||
private String mchName;
|
||||
|
||||
/**
|
||||
* 服务商号
|
||||
*/
|
||||
private String agentNo;
|
||||
|
||||
/**
|
||||
* 服务商号
|
||||
*/
|
||||
private String isvNo;
|
||||
|
||||
/**
|
||||
* 支付金额,单位分
|
||||
*/
|
||||
private Long payOrderAmount;
|
||||
|
||||
/**
|
||||
* 商品标题
|
||||
*/
|
||||
private String payOrderSubject;
|
||||
|
||||
/**
|
||||
* 渠道订单号 如果为空有可能是补单任务
|
||||
*/
|
||||
private String channelOrderNo;
|
||||
|
||||
/**
|
||||
* 二级商户ID
|
||||
*/
|
||||
private String subMchId;
|
||||
|
||||
/**
|
||||
* 结算状态,1-待结算 2-结算中 3-结算成功 4-结算失败 5-限流待重试
|
||||
*/
|
||||
private Byte state;
|
||||
|
||||
/**
|
||||
* 结算时间
|
||||
*/
|
||||
private Date settTime;
|
||||
|
||||
/**
|
||||
* 重试次数
|
||||
*/
|
||||
private Integer retryCount;
|
||||
|
||||
/**
|
||||
* 调起接口信息
|
||||
*/
|
||||
private String applyInfo;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
private Date createdAt;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
private Date updatedAt;
|
||||
|
||||
/** 拼接申请数据 **/
|
||||
public void appendApplyInfo(String oldVal, String applyResult) {
|
||||
|
||||
JSONArray array = new JSONArray();
|
||||
|
||||
if(StringUtils.isNotEmpty(oldVal)){
|
||||
array = JSONArray.parseArray(oldVal);
|
||||
}
|
||||
|
||||
if(applyResult == null){
|
||||
return ;
|
||||
}
|
||||
|
||||
JSONObject jsonObject = new JSONObject();
|
||||
jsonObject.put("applyTime", DateUtil.now());
|
||||
jsonObject.put("applyResult", applyResult);
|
||||
array.add(jsonObject);
|
||||
this.applyInfo = array.toJSONString();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,163 @@
|
||||
package com.jeequan.jeepay.db.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.jeequan.jeepay.core.constants.CS;
|
||||
import com.jeequan.jeepay.core.exception.BizException;
|
||||
import com.jeequan.jeepay.core.model.BaseModel;
|
||||
import com.jeequan.jeepay.core.model.params.IsvParams;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 支付接口配置参数表
|
||||
* </p>
|
||||
*
|
||||
* @author [mybatis plus generator]
|
||||
* @since 2021-04-27
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@Accessors(chain = true)
|
||||
@TableName("t_pay_interface_config")
|
||||
public class PayInterfaceConfig extends BaseModel implements Serializable {
|
||||
|
||||
public static LambdaQueryWrapper<PayInterfaceConfig> gw(){
|
||||
return new LambdaQueryWrapper<>();
|
||||
}
|
||||
|
||||
private static final long serialVersionUID=1L;
|
||||
|
||||
/**
|
||||
* ID
|
||||
*/
|
||||
@TableId(value = "id", type = IdType.AUTO)
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 关联支付配置表中的id, 即t_pay_interface_config_alternative表的id
|
||||
*/
|
||||
private Long altId;
|
||||
|
||||
/**
|
||||
* 账号类型: 参考: SYS_ROLE_TYPE
|
||||
*/
|
||||
private String infoType;
|
||||
|
||||
/**
|
||||
* 服务商号/商户号/应用ID
|
||||
*/
|
||||
private String infoId;
|
||||
|
||||
/**
|
||||
* 支付接口代码
|
||||
*/
|
||||
private String ifCode;
|
||||
|
||||
/**
|
||||
* 接口配置参数,json字符串
|
||||
*/
|
||||
private String ifParams;
|
||||
|
||||
/**
|
||||
* 状态: 0-停用, 1-启用
|
||||
*/
|
||||
private Byte state;
|
||||
|
||||
/**
|
||||
* 是否开启进件: 0-关闭, 1-开启
|
||||
* @Deprecated 当前字段暂不使用。
|
||||
*/
|
||||
private Byte isOpenApplyment;
|
||||
|
||||
/**
|
||||
* 是否开启对账: 0-关闭, 1-开启
|
||||
*/
|
||||
private Byte isCheckBill;
|
||||
|
||||
/**
|
||||
* 对账过滤子商户号
|
||||
*/
|
||||
private String ignoreCheckBillMchNos;
|
||||
|
||||
/**
|
||||
* 提现配置,JSON字符串
|
||||
*/
|
||||
private String cashoutParams;
|
||||
|
||||
/**
|
||||
* 进件特殊参数,JSON字符串
|
||||
*/
|
||||
private String applymentExtParams;
|
||||
|
||||
/**
|
||||
* oauth2的选择, 空表示使用默认配置条目
|
||||
*/
|
||||
private String oauth2InfoId;
|
||||
|
||||
/**
|
||||
* 佣金结算周期(仅服务商配置, 用于服务商的佣金提现周期)
|
||||
*/
|
||||
private Integer settHoldDay;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 创建者用户ID
|
||||
*/
|
||||
private Long createdUid;
|
||||
|
||||
/**
|
||||
* 创建者姓名
|
||||
*/
|
||||
private String createdBy;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
private Date createdAt;
|
||||
|
||||
/**
|
||||
* 更新者用户ID
|
||||
*/
|
||||
private Long updatedUid;
|
||||
|
||||
/**
|
||||
* 更新者姓名
|
||||
*/
|
||||
private String updatedBy;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
private Date updatedAt;
|
||||
|
||||
/**
|
||||
* 通道类型:多个用英文逗号隔开 0专属通道;1线下通道;2线上通道
|
||||
*/
|
||||
private String channelTypes;
|
||||
|
||||
/**
|
||||
* 是否支持分账 0:否 1:是
|
||||
*/
|
||||
private Byte isDivision;
|
||||
|
||||
/**
|
||||
* 判断渠道是否支持分账
|
||||
*/
|
||||
public void preCheckDivision() {
|
||||
if(this.getIsDivision() == null || CS.NO == this.getIsDivision()){
|
||||
throw new BizException("当前渠道不支持分账,无法创建分账方");
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,161 @@
|
||||
package com.jeequan.jeepay.db.entity;
|
||||
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler;
|
||||
import com.jeequan.jeepay.core.model.BaseModel;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 支付接口定义表
|
||||
* </p>
|
||||
*
|
||||
* @author [mybatis plus generator]
|
||||
* @since 2021-04-27
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@Accessors(chain = true)
|
||||
@TableName(value = "t_pay_interface_define", autoResultMap = true)
|
||||
public class PayInterfaceDefine extends BaseModel implements Serializable {
|
||||
|
||||
public static final LambdaQueryWrapper<PayInterfaceDefine> gw(){
|
||||
return new LambdaQueryWrapper<>();
|
||||
}
|
||||
|
||||
private static final long serialVersionUID=1L;
|
||||
|
||||
/**
|
||||
* 接口代码 全小写 wxpay alipay
|
||||
*/
|
||||
@TableId
|
||||
private String ifCode;
|
||||
|
||||
/**
|
||||
* 接口名称
|
||||
*/
|
||||
private String ifName;
|
||||
|
||||
/**
|
||||
* 是否支持普通商户模式: 0-不支持, 1-支持
|
||||
*/
|
||||
private Byte isMchMode;
|
||||
|
||||
/**
|
||||
* 是否支持服务商子商户模式: 0-不支持, 1-支持
|
||||
*/
|
||||
private Byte isIsvMode;
|
||||
|
||||
/**
|
||||
* 是否支持服务商的进件接口: 0-不支持, 1-支持
|
||||
*/
|
||||
private Byte isSupportApplyment;
|
||||
|
||||
/**
|
||||
* 是否开启进件功能: 0-关闭, 1-开启
|
||||
*/
|
||||
private Byte isOpenApplyment;
|
||||
|
||||
/**
|
||||
* 是否支持对账: 0-不支持, 1-支持
|
||||
*/
|
||||
private Byte isSupportCheckBill;
|
||||
|
||||
/**
|
||||
* 是否开启对账: 0-关闭, 1-开启
|
||||
*/
|
||||
private Byte isOpenCheckBill;
|
||||
|
||||
/**
|
||||
* 是否支持提现: 0-不支持, 1-支持
|
||||
*/
|
||||
private Byte isSupportCashout;
|
||||
|
||||
/**
|
||||
* 是否开启提现: 0-关闭, 1-开启
|
||||
*/
|
||||
private Byte isOpenCashout;
|
||||
|
||||
/**
|
||||
* 支付参数配置页面类型:1-JSON渲染,2-自定义
|
||||
*/
|
||||
private Byte configPageType;
|
||||
|
||||
/**
|
||||
* ISV接口配置定义描述,json字符串
|
||||
*/
|
||||
private String isvParams;
|
||||
|
||||
/**
|
||||
* 特约商户接口配置定义描述,json字符串
|
||||
*/
|
||||
private String isvsubMchParams;
|
||||
|
||||
/**
|
||||
* 普通商户接口配置定义描述,json字符串
|
||||
*/
|
||||
private String normalMchParams;
|
||||
|
||||
/**
|
||||
* 支持的支付方式 ["wxpay_jsapi", "wxpay_bar"]
|
||||
*/
|
||||
@TableField(typeHandler = FastjsonTypeHandler.class)
|
||||
private JSONArray wayCodes;
|
||||
|
||||
/**
|
||||
* 通道类型:多个用英文逗号隔开 0专属通道;1线下通道;2线上通道
|
||||
*/
|
||||
private String channelTypes;
|
||||
|
||||
/**
|
||||
* 渠道手续费计算方式, 包括: 手续费模式等
|
||||
*/
|
||||
private String channelFeeCalModel;
|
||||
|
||||
/**
|
||||
* 页面展示:卡片-图标
|
||||
*/
|
||||
private String icon;
|
||||
|
||||
/**
|
||||
* 页面展示:卡片-背景色
|
||||
*/
|
||||
private String bgColor;
|
||||
|
||||
/**
|
||||
* 状态: 0-停用, 1-启用
|
||||
*/
|
||||
private Byte state;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
private Date createdAt;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
private Date updatedAt;
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@TableField(exist = false)
|
||||
private JSONArray jsonChannelTypes;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,509 @@
|
||||
package com.jeequan.jeepay.db.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 支付订单表
|
||||
* </p>
|
||||
*
|
||||
* @author [mybatis plus generator]
|
||||
* @since 2021-04-27
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@Accessors(chain = true)
|
||||
@TableName("t_pay_order")
|
||||
public class PayOrder extends com.jeequan.jeepay.core.entity.PayOrder {
|
||||
|
||||
public static final LambdaQueryWrapper<PayOrder> gw(){
|
||||
return new LambdaQueryWrapper<>();
|
||||
}
|
||||
|
||||
private static final long serialVersionUID=1L;
|
||||
|
||||
|
||||
public static final byte STATE_INIT = 0; //订单生成
|
||||
public static final byte STATE_ING = 1; //支付中
|
||||
public static final byte STATE_SUCCESS = 2; //支付成功
|
||||
public static final byte STATE_FAIL = 3; //支付失败
|
||||
public static final byte STATE_CANCEL = 4; //已撤销
|
||||
public static final byte STATE_REFUND = 5; //已退款
|
||||
public static final byte STATE_CLOSED = 6; //订单关闭
|
||||
public static final byte STATE_REFUNDING = 22; //退款中
|
||||
|
||||
public static final byte REFUND_STATE_NONE = 0; //未发生实际退款
|
||||
public static final byte REFUND_STATE_SUB = 1; //部分退款
|
||||
public static final byte REFUND_STATE_ALL = 2; //全额退款
|
||||
|
||||
|
||||
public static final byte DIVISION_MODE_FORBID = 0; //该笔订单不允许分账
|
||||
public static final byte DIVISION_MODE_AUTO = 1; //支付成功按配置自动完成分账
|
||||
public static final byte DIVISION_MODE_MANUAL = 2; //商户手动分账(解冻商户金额)
|
||||
public static final byte MAKET_RED_PACKET_MANUAL = 3; //营销红包分账
|
||||
|
||||
public static final byte DIVISION_STATE_UNHAPPEN = 0; //未发生分账
|
||||
public static final byte DIVISION_STATE_WAIT_TASK = 1; //等待分账任务处理
|
||||
public static final byte DIVISION_STATE_ING = 2; //分账处理中
|
||||
public static final byte DIVISION_STATE_FINISH = 3; //分账任务已结束(不体现状态)
|
||||
|
||||
// 设备类型
|
||||
public static final String DEVICE_TYPE_QR_CODE = "qr_code"; // 码牌
|
||||
public static final String DEVICE_TYPE_SCAN_POS = "scan_pos"; // 扫码POS
|
||||
public static final String DEVICE_TYPE_QR_BOX_KXP = "qr_box_kxp"; // 客显屏音箱
|
||||
public static final String DEVICE_TYPE_AUTO_POS = "auto_pos"; // 智能POS
|
||||
public static final String DEVICE_TYPE_CASH_PLUGIN = "cash_plugin"; // 收银插件
|
||||
public static final String DEVICE_TYPE_FACE_APP = "face_app"; // 刷脸设备
|
||||
public static final String DEVICE_TYPE_ALIPAY_RUYI_LITE = "ruyi_lite"; // 如意Lite
|
||||
public static final String DEVICE_TYPE_PRINTER = "printer"; // 云打印
|
||||
|
||||
public static final Map<String, String> DEVICE_TYPE_MAP = new HashMap<>();
|
||||
static {
|
||||
DEVICE_TYPE_MAP.put(DEVICE_TYPE_QR_CODE, "码牌");
|
||||
DEVICE_TYPE_MAP.put(DEVICE_TYPE_SCAN_POS, "扫码POS");
|
||||
DEVICE_TYPE_MAP.put(DEVICE_TYPE_AUTO_POS, "智能POS");
|
||||
DEVICE_TYPE_MAP.put(DEVICE_TYPE_CASH_PLUGIN, "收银插件");
|
||||
DEVICE_TYPE_MAP.put(DEVICE_TYPE_FACE_APP, "刷脸设备");
|
||||
DEVICE_TYPE_MAP.put(DEVICE_TYPE_ALIPAY_RUYI_LITE, "支付宝如意Lite");
|
||||
DEVICE_TYPE_MAP.put(DEVICE_TYPE_PRINTER, "云打印");
|
||||
DEVICE_TYPE_MAP.put(DEVICE_TYPE_QR_BOX_KXP, "客显屏音箱");
|
||||
}
|
||||
|
||||
/**
|
||||
* 支付订单号
|
||||
*/
|
||||
@TableId
|
||||
private String payOrderId;
|
||||
|
||||
/**
|
||||
* 扩展商户号 现在的申请单编号 改版后的商户号
|
||||
*/
|
||||
private String mchExtNo;
|
||||
|
||||
/**
|
||||
* 用户号 原先的商户号
|
||||
*/
|
||||
private String mchNo;
|
||||
|
||||
/**
|
||||
* 服务商号
|
||||
*/
|
||||
private String isvNo;
|
||||
|
||||
/**
|
||||
* 服务商号
|
||||
*/
|
||||
private String agentNo;
|
||||
|
||||
/**
|
||||
* 顶级服务商号
|
||||
*/
|
||||
private String topAgentNo;
|
||||
|
||||
/**
|
||||
* 应用ID
|
||||
*/
|
||||
private String appId;
|
||||
|
||||
/**
|
||||
* 商户名称
|
||||
*/
|
||||
private String mchName;
|
||||
|
||||
/**
|
||||
* 类型: 1-普通商户, 2-特约商户(服务商模式)
|
||||
*/
|
||||
private Byte mchType;
|
||||
|
||||
/**
|
||||
* 商户门店ID
|
||||
*/
|
||||
private String storeId;
|
||||
|
||||
/**
|
||||
* 门店名称
|
||||
*/
|
||||
private String storeName;
|
||||
|
||||
/**
|
||||
* 经度
|
||||
*/
|
||||
private String lng;
|
||||
|
||||
/**
|
||||
* 纬度
|
||||
*/
|
||||
private String lat;
|
||||
|
||||
/**
|
||||
* 所在地址
|
||||
*/
|
||||
private String address;
|
||||
|
||||
/**
|
||||
* 设备类型:qr_code-码牌,scan_pos-扫码POS,auto_pos-智能POS
|
||||
*/
|
||||
private String deviceType;
|
||||
|
||||
/**
|
||||
* 设备号
|
||||
*/
|
||||
private String deviceNo;
|
||||
|
||||
/**
|
||||
* 设备厂商
|
||||
*/
|
||||
private String deviceProvider;
|
||||
|
||||
/**
|
||||
* 码牌ID
|
||||
*/
|
||||
private Long qrcId;
|
||||
|
||||
/**
|
||||
* 商户订单号
|
||||
*/
|
||||
private String mchOrderNo;
|
||||
|
||||
/**
|
||||
* 支付接口代码
|
||||
*/
|
||||
private String ifCode;
|
||||
|
||||
/**
|
||||
* 支付方式代码
|
||||
*/
|
||||
private String wayCode;
|
||||
|
||||
/**
|
||||
* 支付方式代码分类
|
||||
*/
|
||||
private String wayCodeType;
|
||||
|
||||
/**
|
||||
* 支付金额,单位分
|
||||
*/
|
||||
private Long amount;
|
||||
|
||||
/**
|
||||
* 商户手续费费率快照
|
||||
*/
|
||||
private String mchFeeRate;
|
||||
|
||||
/**
|
||||
* 商户实际手续费,单位分 ( 订单手续费 - 手续费退还金额 )
|
||||
*/
|
||||
private Long mchFeeAmount;
|
||||
|
||||
/**
|
||||
* 商户收单手续费,单位分 (订单快照)
|
||||
*/
|
||||
private Long mchOrderFeeAmount;
|
||||
|
||||
/**
|
||||
* 三位货币代码,人民币:cny
|
||||
*/
|
||||
private String currency;
|
||||
|
||||
/**
|
||||
* 支付状态: 0-订单生成, 1-支付中, 2-支付成功, 3-支付失败, 4-已撤销, 5-已退款, 6-订单关闭 7,退款中
|
||||
*/
|
||||
private Byte state;
|
||||
|
||||
/**
|
||||
* 向下游回调状态, 0-未发送, 1-已发送
|
||||
*/
|
||||
private Byte notifyState;
|
||||
|
||||
/**
|
||||
* 客户端IP
|
||||
*/
|
||||
private String clientIp;
|
||||
|
||||
/**
|
||||
* 商品标题
|
||||
*/
|
||||
private String subject;
|
||||
|
||||
/**
|
||||
* 商品描述信息
|
||||
*/
|
||||
private String body;
|
||||
|
||||
/**
|
||||
* 渠道服务商机构号
|
||||
*/
|
||||
private String channelIsvNo;
|
||||
|
||||
/**
|
||||
* 渠道子商户号
|
||||
*/
|
||||
private String channelMchNo;
|
||||
|
||||
/**
|
||||
* 特定渠道发起额外参数
|
||||
*/
|
||||
private String channelExtra;
|
||||
|
||||
/**
|
||||
* 渠道用户标识,如微信openId,支付宝账号
|
||||
*/
|
||||
private String channelUser;
|
||||
|
||||
/**
|
||||
* 渠道订单号
|
||||
*/
|
||||
private String channelOrderNo;
|
||||
|
||||
/**
|
||||
* 支付凭证上交易单号(微信、支付宝等交易单号)
|
||||
*/
|
||||
private String platformOrderNo;
|
||||
|
||||
/**
|
||||
* 支付凭证上商户单号(微信、支付宝等商户单号)
|
||||
*/
|
||||
private String platformMchOrderNo;
|
||||
|
||||
/**
|
||||
* 渠道特殊业务数据,各渠道业务自处理数据
|
||||
*/
|
||||
private String channelBizData;
|
||||
|
||||
/**
|
||||
* 支付凭证上商户单号(微信、支付宝等商户单号)
|
||||
*/
|
||||
private Byte refundState;
|
||||
|
||||
/**
|
||||
* 退款次数
|
||||
*/
|
||||
private Integer refundTimes;
|
||||
|
||||
/**
|
||||
* 退款总金额,单位分
|
||||
*/
|
||||
private Long refundAmount;
|
||||
|
||||
/**
|
||||
* 订单分账模式:0-该笔订单不允许分账, 1-支付成功按配置自动完成分账, 2-商户手动分账(解冻商户金额) 3:红包营销分账
|
||||
*/
|
||||
private Byte divisionMode;
|
||||
|
||||
/**
|
||||
* 订单分账状态:0-未发生分账, 1-等待分账任务处理, 2-分账处理中, 3-分账任务已结束(不体现状态)
|
||||
*/
|
||||
private Byte divisionState;
|
||||
|
||||
/**
|
||||
* 最新分账时间
|
||||
*/
|
||||
private Date divisionLastTime;
|
||||
|
||||
/**
|
||||
* 渠道支付错误码
|
||||
*/
|
||||
private String errCode;
|
||||
|
||||
/**
|
||||
* 渠道支付错误描述
|
||||
*/
|
||||
private String errMsg;
|
||||
|
||||
/**
|
||||
* 商户扩展参数
|
||||
*/
|
||||
private String extParam;
|
||||
|
||||
/**
|
||||
* 异步通知地址
|
||||
*/
|
||||
private String notifyUrl;
|
||||
|
||||
/**
|
||||
* 页面跳转地址
|
||||
*/
|
||||
private String returnUrl;
|
||||
|
||||
/**
|
||||
* 买家备注
|
||||
*/
|
||||
private String buyerRemark;
|
||||
|
||||
/**
|
||||
* 卖家备注
|
||||
*/
|
||||
private String sellerRemark;
|
||||
|
||||
/**
|
||||
* 商户拓展员ID
|
||||
*/
|
||||
private Long epUserId;
|
||||
|
||||
/**
|
||||
* 门店收银员ID
|
||||
*/
|
||||
private Long storeUserId;
|
||||
|
||||
/**
|
||||
* 会员ID
|
||||
*/
|
||||
private String mbrId;
|
||||
|
||||
/**
|
||||
* 会员手机号
|
||||
*/
|
||||
private String mbrTel;
|
||||
|
||||
/**
|
||||
* 订单失效时间
|
||||
*/
|
||||
private Date expiredTime;
|
||||
|
||||
/**
|
||||
* 订单支付成功时间
|
||||
*/
|
||||
private Date successTime;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
private Date createdAt;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
private Date updatedAt;
|
||||
|
||||
/**
|
||||
* 交易卡类型 00:借记卡 01:贷记卡 02:零钱/余额 03:花呗 04:数字货币 99:其他
|
||||
*/
|
||||
private String drType;
|
||||
|
||||
/**
|
||||
* 结算类型 D0 D1 T1 DS 定时结算
|
||||
*/
|
||||
private String settleType;
|
||||
|
||||
|
||||
/**
|
||||
* 优惠金额
|
||||
*/
|
||||
private Long discountAmt;
|
||||
|
||||
/**
|
||||
* 优惠折扣
|
||||
*/
|
||||
private BigDecimal discountScale;
|
||||
|
||||
/**
|
||||
* 实付金额
|
||||
*/
|
||||
private Long findAmt;
|
||||
|
||||
/**
|
||||
* 扩展分账金额
|
||||
*/
|
||||
private Long extDivAmt;
|
||||
|
||||
/**
|
||||
* 营销活动补贴金额
|
||||
*/
|
||||
private Long marketAmt;
|
||||
|
||||
|
||||
/**
|
||||
* 提现费率
|
||||
*/
|
||||
private BigDecimal cashRate;
|
||||
|
||||
/**
|
||||
* 提现费率
|
||||
*/
|
||||
private Long cashFee;
|
||||
|
||||
private String payData;
|
||||
|
||||
private String routeId;
|
||||
|
||||
@TableField(exist = false)
|
||||
private String mchFeeRateNum;
|
||||
|
||||
@TableField(exist = false)
|
||||
private String ifName;
|
||||
|
||||
@TableField(exist = false)
|
||||
private String appName;
|
||||
|
||||
@TableField(exist = false)
|
||||
private String isvName;
|
||||
|
||||
@TableField(exist = false)
|
||||
private String wayName;
|
||||
|
||||
@TableField(exist = false)
|
||||
private Integer number;
|
||||
|
||||
@TableField(exist = false)
|
||||
private String agentName;
|
||||
|
||||
@TableField(exist = false)
|
||||
private String mchUserName;
|
||||
|
||||
/**
|
||||
* 用户电话
|
||||
*/
|
||||
@TableField(exist = false)
|
||||
private String mchUserPhone;
|
||||
|
||||
@TableField(exist = false)
|
||||
private String agentContactTel;
|
||||
|
||||
@TableField(exist = false)
|
||||
private String storeInfo;
|
||||
|
||||
/**
|
||||
* 三合一订单
|
||||
*/
|
||||
@TableField(exist = false)
|
||||
private String unionOrderId;
|
||||
|
||||
// 二合一商户/代理号
|
||||
@TableField(exist = false)
|
||||
private String unionInfoNo;
|
||||
|
||||
@TableField(exist = false)
|
||||
private Date firstDate;
|
||||
|
||||
@TableField(exist = false)
|
||||
private Date lastDate;
|
||||
|
||||
// 多状态查询
|
||||
@TableField(exist = false)
|
||||
private List<String> unionOrderState;
|
||||
|
||||
// 多状态查询
|
||||
@TableField(exist = false)
|
||||
private List<String> unionWayCodeType;
|
||||
|
||||
@TableField(exist = false)
|
||||
List<String> subAgentNoList;
|
||||
|
||||
@TableField(exist = false)
|
||||
List<String> storeIdList;
|
||||
|
||||
@TableField(exist = false)
|
||||
private String tk;
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
package com.jeequan.jeepay.db.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 分账记录表
|
||||
* </p>
|
||||
*
|
||||
* @author [mybatis plus generator]
|
||||
* @since 2021-08-19
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@Accessors(chain = true)
|
||||
@TableName("t_pay_order_division_record")
|
||||
public class PayOrderDivisionRecord extends com.jeequan.jeepay.core.entity.PayOrderDivisionRecord {
|
||||
|
||||
public static final byte STATE_WAIT = 0; // 待分账
|
||||
public static final byte STATE_SUCCESS = 1; // 分账成功(明确成功)
|
||||
public static final byte STATE_FAIL = 2; // 分账失败(明确失败)
|
||||
public static final byte STATE_ING = 3; // 分账处理中(一般为渠道侧或定时任务)
|
||||
public static final byte STATE_ACCEPT = 4; // 分账已受理(上游受理)
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
public static final LambdaQueryWrapper<PayOrderDivisionRecord> gw(){
|
||||
return new LambdaQueryWrapper<>();
|
||||
}
|
||||
|
||||
/**
|
||||
* 分账记录ID
|
||||
*/
|
||||
@TableId(value = "record_id", type = IdType.AUTO)
|
||||
private Long recordId;
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,45 @@
|
||||
package com.jeequan.jeepay.db.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 支付订单分账退款记录表
|
||||
* </p>
|
||||
*
|
||||
* @author [mybatis plus generator]
|
||||
* @since 2022-06-09
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@Accessors(chain = true)
|
||||
@TableName("t_pay_order_division_refund_record")
|
||||
public class PayOrderDivisionRefundRecord extends com.jeequan.jeepay.core.entity.PayOrderDivisionRefundRecord {
|
||||
|
||||
public static final byte STATE_ING = 0; // 退款中
|
||||
public static final byte STATE_SUCCESS = 1; // 成功
|
||||
public static final byte STATE_FAIL = 2; // 失败
|
||||
|
||||
public static final LambdaQueryWrapper<PayOrderDivisionRefundRecord> gw(){
|
||||
return new LambdaQueryWrapper<>();
|
||||
}
|
||||
|
||||
private static final long serialVersionUID=1L;
|
||||
|
||||
/**
|
||||
* 分账退款订单号(支付系统生成订单号)
|
||||
*/
|
||||
@TableId
|
||||
private String divisionRefundId;
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,74 @@
|
||||
package com.jeequan.jeepay.db.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.jeequan.jeepay.core.model.BaseModel;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
*
|
||||
* </p>
|
||||
*
|
||||
* @author [mybatis plus generator]
|
||||
* @since 2024-01-17
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@Accessors(chain = true)
|
||||
@TableName("t_pay_user")
|
||||
@NoArgsConstructor
|
||||
public class PayUser extends BaseModel {
|
||||
|
||||
private static final long serialVersionUID=1L;
|
||||
|
||||
/**
|
||||
* 支付用户id
|
||||
*/
|
||||
@TableId(type = IdType.INPUT)
|
||||
private String payUserId;
|
||||
|
||||
/**
|
||||
* 所属用户号
|
||||
*/
|
||||
private String mchNo;
|
||||
|
||||
/**
|
||||
* 初次关联的订单号
|
||||
*/
|
||||
private String fastFlowNo;
|
||||
|
||||
/**
|
||||
* 来源:WECHAT 微信 ALIPAY 支付宝 YSFPAY 云闪付 UNIONPAY 银联 OTHER 其他
|
||||
*/
|
||||
private String type;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
private Date createdAt;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
private Date updatedAt;
|
||||
|
||||
|
||||
public PayUser(PayOrder payOrder) {
|
||||
this.payUserId = payOrder.getChannelUser();
|
||||
this.mchNo = payOrder.getMchNo();
|
||||
this.type = payOrder.getWayCodeType();
|
||||
this.fastFlowNo = payOrder.getPayOrderId();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,66 @@
|
||||
package com.jeequan.jeepay.db.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.jeequan.jeepay.core.model.BaseModel;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 支付方式表
|
||||
* </p>
|
||||
*
|
||||
* @author [mybatis plus generator]
|
||||
* @since 2021-04-27
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@Accessors(chain = true)
|
||||
@TableName("t_pay_way")
|
||||
public class PayWay extends BaseModel implements Serializable {
|
||||
|
||||
public static final LambdaQueryWrapper<PayWay> gw(){
|
||||
return new LambdaQueryWrapper<>();
|
||||
}
|
||||
|
||||
private static final long serialVersionUID=1L;
|
||||
|
||||
/**
|
||||
* 支付方式代码 例如: wxpay_jsapi
|
||||
*/
|
||||
@TableId
|
||||
private String wayCode;
|
||||
|
||||
/**
|
||||
* 支付方式名称
|
||||
*/
|
||||
private String wayName;
|
||||
|
||||
/**
|
||||
* 支付方式分类:WECHAT-微信, ALIPAY-支付宝, YSFPAY-云闪付, UNIONPAY-银联, OTHER-其他
|
||||
*/
|
||||
private String wayType;
|
||||
|
||||
/**
|
||||
* 产品类型:PAY-支付产品, TRANSFER-转账产品
|
||||
*/
|
||||
private String productType;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
private Date createdAt;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
private Date updatedAt;
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,75 @@
|
||||
package com.jeequan.jeepay.db.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import java.util.Date;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import java.io.Serializable;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 商户应用产品关联表
|
||||
* </p>
|
||||
*
|
||||
* @author [mybatis plus generator]
|
||||
* @since 2023-11-23
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@Accessors(chain = true)
|
||||
@TableName("t_product_app_conn")
|
||||
public class ProductAppConn implements Serializable {
|
||||
|
||||
private static final long serialVersionUID=1L;
|
||||
|
||||
/**
|
||||
* ID
|
||||
*/
|
||||
@TableId(value = "id", type = IdType.AUTO)
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 产品ID
|
||||
*/
|
||||
private Long productId;
|
||||
|
||||
/**
|
||||
* appID
|
||||
*/
|
||||
private String appId;
|
||||
|
||||
/**
|
||||
* 商户号
|
||||
*/
|
||||
private String mchNo;
|
||||
|
||||
/**
|
||||
* 状态 0: 未绑定;1:已绑定
|
||||
*/
|
||||
private Integer state;
|
||||
|
||||
/**
|
||||
* 审核原因
|
||||
*/
|
||||
private String stateDesc;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
private Date createdAt;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
private Date updatedAt;
|
||||
|
||||
/**
|
||||
* 创建人
|
||||
*/
|
||||
private String createdBy;
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,255 @@
|
||||
package com.jeequan.jeepay.db.entity;
|
||||
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler;
|
||||
import com.jeequan.jeepay.core.model.BaseModel;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 服务商信息表
|
||||
* </p>
|
||||
*
|
||||
* @author [mybatis plus generator]
|
||||
* @since 2022-03-12
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@Accessors(chain = true)
|
||||
@TableName(value = "t_product_info",autoResultMap = true)
|
||||
public class ProductInfo extends BaseModel {
|
||||
|
||||
public static final LambdaQueryWrapper<ProductInfo> gw(){
|
||||
return new LambdaQueryWrapper<>();
|
||||
}
|
||||
|
||||
private static final long serialVersionUID=1L;
|
||||
|
||||
/** 待上架 **/
|
||||
public static final Integer PRODUCT_STATE_NOT = 0;
|
||||
/** 已上架 **/
|
||||
public static final Integer PRODUCT_STATE_ON = 1;
|
||||
|
||||
/** 需要审核 **/
|
||||
public static final Integer PRODUCT_STATE_AUDIT = 1;
|
||||
/** 不需要审核 **/
|
||||
public static final Integer PRODUCT_STATE_AUTO_AUDIT = 0;
|
||||
|
||||
/** 需要绑定应用 **/
|
||||
public static final Integer PRODUCT_STATE_BINDING = 1;
|
||||
/** 不需要绑定应用 **/
|
||||
public static final Integer PRODUCT_STATE_ON_BINDING = 0;
|
||||
|
||||
/** 收费 **/
|
||||
public static final Integer PRODUCT_STATE_CHARGE = 1;
|
||||
/** 不收费 **/
|
||||
public static final Integer PRODUCT_STATE_ON_CHARGE = 0;
|
||||
|
||||
|
||||
public static final String JSON_STR= "[{\"versionName\": \"免费版本\",\"validTime\": 365,\"sellingPrice\": 0.00,\"lineationPrice\": 0.00}]";
|
||||
|
||||
public static final String API_CODE_FIRST= "API_";
|
||||
public static final String API_CODE_LAST= "_CP_PAY";
|
||||
|
||||
|
||||
/**
|
||||
* 产品ID
|
||||
*/
|
||||
@TableId
|
||||
private String productId;
|
||||
|
||||
/**
|
||||
* 产品名称
|
||||
*/
|
||||
private String productName;
|
||||
|
||||
/**
|
||||
* 产品简介
|
||||
*/
|
||||
private String productDesc;
|
||||
|
||||
/**
|
||||
* 产品付费信息
|
||||
*/
|
||||
@TableField(typeHandler = FastjsonTypeHandler.class)
|
||||
private JSONArray productText;
|
||||
|
||||
/**
|
||||
* 排序
|
||||
*/
|
||||
private Integer productSort;
|
||||
|
||||
/**
|
||||
* 产品内容
|
||||
*/
|
||||
private String productContent;
|
||||
|
||||
/**
|
||||
* 开发文档地址
|
||||
*/
|
||||
private String productUrl;
|
||||
|
||||
/**
|
||||
* 产品状态 0-待上架 1-已上架
|
||||
*/
|
||||
private Integer productState;
|
||||
|
||||
/**
|
||||
* 产品分类
|
||||
*/
|
||||
private Integer productType;
|
||||
|
||||
/**
|
||||
* 产品logo地址
|
||||
*/
|
||||
private String productLogoUrl;
|
||||
|
||||
/**
|
||||
* 产品类型 0-服务型 1-接口型 数组[]
|
||||
*/
|
||||
@TableField(typeHandler = FastjsonTypeHandler.class)
|
||||
private JSONArray productSpecs;
|
||||
|
||||
/**
|
||||
* 关联产品的ids,多个,逗号隔开
|
||||
*/
|
||||
private String productIds;
|
||||
|
||||
/**
|
||||
* 关联方案的id,多个,逗号隔开
|
||||
*/
|
||||
private String packageIds;
|
||||
|
||||
/**
|
||||
* 关联通道的code,多个,逗号隔开
|
||||
*/
|
||||
private String payInterfaceCodes;
|
||||
|
||||
/**
|
||||
* 定义的唯一标识,方便支付那边取值
|
||||
*/
|
||||
private String apiCode;
|
||||
|
||||
/**
|
||||
* 产品价格
|
||||
*/
|
||||
private Long price;
|
||||
|
||||
/**
|
||||
* 是否需要审核0:否;1:是
|
||||
*/
|
||||
private Integer audit;
|
||||
|
||||
/**
|
||||
* 是否收费0:否;1:是
|
||||
*/
|
||||
private Integer charge;
|
||||
|
||||
|
||||
/**
|
||||
* 是否需要绑定应用0:否;1:是
|
||||
*/
|
||||
private Integer bindingApp;
|
||||
|
||||
/**
|
||||
* 产品特殊资质信息
|
||||
*/
|
||||
@TableField(typeHandler = FastjsonTypeHandler.class)
|
||||
private JSONArray specialCertificationText;
|
||||
|
||||
/**
|
||||
* 是否需要资质0:否;1:是
|
||||
*/
|
||||
private Integer certification;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
private Date createdAt;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
private Date updatedAt;
|
||||
|
||||
/**
|
||||
* 创建者
|
||||
*/
|
||||
private String createdBy;
|
||||
|
||||
|
||||
@TableField(exist = false)
|
||||
private Integer state;
|
||||
|
||||
@TableField(exist = false)
|
||||
private String typeName;
|
||||
|
||||
@TableField(exist = false)
|
||||
private String stateDesc;
|
||||
|
||||
@TableField(exist = false)
|
||||
private String mchName;
|
||||
|
||||
@TableField(exist = false)
|
||||
private String id;
|
||||
|
||||
@TableField(exist = false)
|
||||
private Integer checkState;
|
||||
|
||||
@TableField(exist = false)
|
||||
private List<ProductInfo> productInfoRelevancyList;
|
||||
|
||||
@TableField(exist = false)
|
||||
private List<PackageInfo> packageInfoRelevancyList;
|
||||
|
||||
@TableField(exist = false)
|
||||
private List<PayInterfaceDefine> payInterRelevancyList;
|
||||
|
||||
@TableField(exist = false)
|
||||
private Integer applyCount;
|
||||
|
||||
//申请数量
|
||||
@TableField(exist = false)
|
||||
private Integer applyForCount;
|
||||
|
||||
//定订购数量
|
||||
@TableField(exist = false)
|
||||
private Integer orderCount;
|
||||
|
||||
@TableField(exist = false)
|
||||
private Date firstDate;
|
||||
|
||||
@TableField(exist = false)
|
||||
private Date lastDate;
|
||||
|
||||
@TableField(exist = false)
|
||||
private List<String> bindingAppList;
|
||||
|
||||
@TableField(exist = false)
|
||||
private String productIdsName;
|
||||
|
||||
@TableField(exist = false)
|
||||
private String packageIdsName;
|
||||
|
||||
@TableField(exist = false)
|
||||
private String payInterfaceCodesName;
|
||||
|
||||
@TableField(exist = false)
|
||||
private List<PackageOrder> packageOrderList;
|
||||
|
||||
/**
|
||||
* 剩余总时间
|
||||
*/
|
||||
@TableField(exist = false)
|
||||
private Long allRemainingDays;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,60 @@
|
||||
package com.jeequan.jeepay.db.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.jeequan.jeepay.core.model.BaseModel;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 产品分类表
|
||||
* </p>
|
||||
*
|
||||
* @author [mybatis plus generator]
|
||||
* @since 2022-03-12
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@Accessors(chain = true)
|
||||
@TableName("t_product_type")
|
||||
public class ProductType extends BaseModel {
|
||||
|
||||
public static final LambdaQueryWrapper<ProductType> gw(){
|
||||
return new LambdaQueryWrapper<>();
|
||||
}
|
||||
|
||||
private static final long serialVersionUID=1L;
|
||||
|
||||
/**
|
||||
* 分类ID
|
||||
*/
|
||||
@TableId(value = "type_id", type = IdType.AUTO)
|
||||
private String typeId;
|
||||
|
||||
/**
|
||||
* 分类名称
|
||||
*/
|
||||
private String typeName;
|
||||
|
||||
/**
|
||||
* 创建者
|
||||
*/
|
||||
private String createdBy;
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
private Date createdAt;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
private Date updatedAt;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
package com.jeequan.jeepay.db.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.SqlCondition;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
@TableName(value = "t_qualification_define", autoResultMap = true)
|
||||
public class QualificationDefineEntity {
|
||||
|
||||
public static final String API_CODE_FIRST= "API_";
|
||||
public static final String API_CODE_LAST= "_ZZMB";
|
||||
|
||||
@TableId
|
||||
private String code;
|
||||
|
||||
@TableField(condition = SqlCondition.LIKE)
|
||||
private String name;
|
||||
|
||||
@TableField(typeHandler = FastjsonTypeHandler.class)
|
||||
private List<Item> params;
|
||||
|
||||
@Data
|
||||
public static class Item {
|
||||
private String name;
|
||||
|
||||
private String inputType;
|
||||
|
||||
private String propertyName;
|
||||
|
||||
private List<String> optionList;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,243 @@
|
||||
package com.jeequan.jeepay.db.entity;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler;
|
||||
import com.jeequan.jeepay.core.model.BaseModel;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.experimental.Accessors;
|
||||
import lombok.experimental.SuperBuilder;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 费率配置表
|
||||
* </p>
|
||||
*
|
||||
* @author [mybatis plus generator]
|
||||
* @since 2022-03-12
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@Accessors(chain = true)
|
||||
@SuperBuilder(toBuilder = true)
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@TableName(value = "t_rate_config", autoResultMap = true)
|
||||
public class RateConfig extends BaseModel {
|
||||
|
||||
|
||||
public static LambdaQueryWrapper<RateConfig> gw(){
|
||||
return new LambdaQueryWrapper<>();
|
||||
}
|
||||
|
||||
/** infoId 的后缀 ( 也是 map的分类key ) **/
|
||||
public static final String AGENTRATE = "AGENTRATE";
|
||||
public static final String MCHRATE = "MCHRATE";
|
||||
/**
|
||||
* 渠道商底价
|
||||
*/
|
||||
public static final String ISVCOST = "ISVCOST";
|
||||
/**
|
||||
* 下级服务商默认费率
|
||||
*/
|
||||
public static final String AGENTDEF = "AGENTDEF";
|
||||
/**
|
||||
* 下级服务商最大费率
|
||||
*/
|
||||
public static final String AGENTMAX = "AGENTMAX";
|
||||
/**
|
||||
* 下级商户默认费率
|
||||
*/
|
||||
public static final String MCHAPPLYDEF = "MCHAPPLYDEF";
|
||||
/**
|
||||
* 下级商户最大费率
|
||||
*/
|
||||
public static final String MCHAPPLYMAX = "MCHAPPLYMAX";
|
||||
|
||||
public static String buildInfoId(String infoId, String suffix){
|
||||
return infoId + "_" + suffix;
|
||||
}
|
||||
|
||||
// 以下两个用于页面显示使用。 (DB不会用到)
|
||||
public static final String READONLYISVCOST = "READONLYISVCOST";
|
||||
public static final String READONLYPARENTAGENT = "READONLYPARENTAGENT";
|
||||
public static final String READONLYPARENTDEFRATE = "READONLYPARENTDEFRATE"; // 读取上级配置的默认费率
|
||||
// public static final String READONLYMCHMAX = "READONLYMCHMAX"; // 当前服务商的商户最大费率
|
||||
public static final String READONLYPARENTMCHMAX = "READONLYPARENTMCHMAX"; // 读取上级配置的商户最大费率
|
||||
public static final String READONLYPARENTSUBAGENTMAX = "READONLYPARENTSUBAGENTMAX"; // 读取上级的可开下级的最大费率
|
||||
|
||||
|
||||
public static String getRealInfoId(String infoId){
|
||||
return infoId.replace( "_" + AGENTRATE, "")
|
||||
.replace("_" + MCHRATE, "")
|
||||
.replace("_" + ISVCOST, "")
|
||||
.replace("_" + AGENTDEF, "")
|
||||
.replace("_" + MCHAPPLYDEF, "")
|
||||
.replace("_" + MCHAPPLYMAX, "")
|
||||
.replace("_" + AGENTMAX, "");
|
||||
}
|
||||
|
||||
public static String appendInfoByAgent(String agentNo){
|
||||
return agentNo + "_" + AGENTRATE;
|
||||
}
|
||||
|
||||
public static String appendInfoByMchApp(String mchAppId){
|
||||
return mchAppId + "_" + MCHRATE;
|
||||
}
|
||||
|
||||
public static String appendInfoByIsvCost(String isvNo){
|
||||
return isvNo + "_" + ISVCOST;
|
||||
}
|
||||
|
||||
public static String appendInfoByAgentDef(String infoId){
|
||||
return infoId + "_" + AGENTDEF;
|
||||
}
|
||||
|
||||
public static String appendInfoByMchDef(String infoId){
|
||||
return infoId + "_" + MCHAPPLYDEF;
|
||||
}
|
||||
|
||||
public static String appendInfoByMchMax(String infoId){
|
||||
return infoId + "_" + MCHAPPLYMAX;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
* ( mgrIsv ) 运营平台对服务商的配置: 查询【服务商所有支持的支付方式】
|
||||
* 支付产品 、 [配置]渠道商底价、 [配置]服务商默认费率、 [配置]商户默认费率。
|
||||
*
|
||||
* ( mgrAgent ) 运营平台对服务商的费率配置: 查询: 【代理的所属服务商 、 所属上级服务商的所有开通的支付产品】
|
||||
* 支付产品、 [显示]渠道商底价, [显示]上级服务商费率、 [配置]服务商的费率、 [配置]下级服务商的默认费率、 [配置]商户默认费率。
|
||||
*
|
||||
* ( mgrMch ) 运营平台对商户: 查询【商户的所属服务商 、 所属上级服务商的所有开通的支付产品】
|
||||
* 支付产品、 [显示]渠道商底价, [显示]上级服务商费率、 [配置]商户的费率。
|
||||
*
|
||||
* ( agentSelf ) 服务商 对自己: 查询【当前服务商已经开通的产品】
|
||||
* 支付产品、 [显示]当前服务商的费率、 [配置]下级服务商的默认费率、 [配置]商户默认费率。
|
||||
*
|
||||
* ( agentSubagent ) 服务商对下级服务商: 查询【当前服务商已经开通的产品】
|
||||
* 支付产品、 [显示]当前服务商的费率、 [配置]下级服务商的费率
|
||||
*
|
||||
* ( agentMch ) 服务商对商户: 查询【当前服务商已经开通的产品】
|
||||
* 支付产品、 [显示]上级服务商费率、 [配置]商户的费率。
|
||||
*
|
||||
*
|
||||
* * ( mchSelfApp1 ) 商户: 配置自己应用的配置 (普通商户)
|
||||
*
|
||||
* * ( mchSelfApp2 ) 商户: 配置自己应用的配置 (特约商户)
|
||||
*
|
||||
*/
|
||||
public static final String CONFIG_MODE_MGRISV = "mgrIsv";
|
||||
public static final String CONFIG_MODE_MGRAGENT = "mgrAgent";
|
||||
public static final String CONFIG_MODE_MGRMCH = "mgrMch";
|
||||
public static final String CONFIG_MODE_AGENTSELF = "agentSelf";
|
||||
public static final String CONFIG_MODE_AGENTSUBAGENT = "agentSubagent";
|
||||
public static final String CONFIG_MODE_AGENTEMCH = "agentMch";
|
||||
|
||||
public static final String CONFIG_MODE_MGRAPPLYMENT = "mgrApplyment";
|
||||
public static final String CONFIG_MODE_AGENTAPPLYMENT = "agentApplyment";
|
||||
public static final String CONFIG_MODE_MCHAPPLYMENT = "mchApplyment";
|
||||
|
||||
public static final String CONFIG_MODE_MCHSELFAPP1 = "mchSelfApp1"; // 普通
|
||||
public static final String CONFIG_MODE_MCHSELFAPP2 = "mchSelfApp2"; //特约
|
||||
|
||||
private static final long serialVersionUID=1L;
|
||||
|
||||
/**
|
||||
* 服务商/服务商/商户应用ID
|
||||
* @since 2024-01-15
|
||||
* 应用不再配置费率<br/>
|
||||
* 渠道商/服务商/用户ID
|
||||
*/
|
||||
private String infoId;
|
||||
|
||||
/**
|
||||
* 系统类型: 参考:SYS_TYPE
|
||||
* @since 2024-01-15
|
||||
* ISV / AGENT / MCH
|
||||
*/
|
||||
private String infoType;
|
||||
|
||||
/**
|
||||
* 费率关联渠道号
|
||||
*/
|
||||
private String isvNo;
|
||||
|
||||
/**
|
||||
* 支付接口代码
|
||||
*/
|
||||
private String ifCode;
|
||||
|
||||
/**
|
||||
* 支付方式代码
|
||||
*/
|
||||
private String wayCode;
|
||||
|
||||
/**
|
||||
* 进件是否显示(仅服务商配置)
|
||||
*/
|
||||
private Byte applymentSupport;
|
||||
|
||||
/**
|
||||
* 是否可编辑,1-可编辑;0-不可编辑
|
||||
* <p>
|
||||
* 若可编辑。<br/>
|
||||
* 那么设置一级代理,或者下级代理该费率时可以修改。
|
||||
* </p>
|
||||
* <p>
|
||||
* 若不可编辑,<br/>
|
||||
* 那么一级代理,此项费率值与渠道设置的模板费率保持一致;
|
||||
* 代理的费率与上级设置的模板费率保持一致
|
||||
* </p>
|
||||
*/
|
||||
private Byte editable;
|
||||
|
||||
/**
|
||||
* 冗余字段: 费率方式: SINGLE LEVEL
|
||||
*/
|
||||
private String feeType;
|
||||
|
||||
/**
|
||||
* 冗余字段:单笔费率
|
||||
*/
|
||||
private BigDecimal feeRate;
|
||||
|
||||
/**
|
||||
* 费率配置 (参考: ApplymentBasicInfo.paywayFeeList)
|
||||
*/
|
||||
@TableField(typeHandler = FastjsonTypeHandler.class)
|
||||
private JSONObject paywayFeeDetail;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
private Date createdAt;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
private Date updatedAt;
|
||||
|
||||
/**
|
||||
* 0: 线下,
|
||||
* 1: 线上
|
||||
*/
|
||||
@TableField("`range`")
|
||||
private Integer range;
|
||||
|
||||
/**
|
||||
* 业务类型编码
|
||||
*/
|
||||
private String mccCode;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,122 @@
|
||||
package com.jeequan.jeepay.db.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.jeequan.jeepay.core.model.BaseModel;
|
||||
import com.jeequan.jeepay.core.utils.SeqKit;
|
||||
import com.jeequan.jeepay.model.RedPacketAccountOperate;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
*
|
||||
* </p>
|
||||
*
|
||||
* @author [mybatis plus generator]
|
||||
* @since 2024-01-17
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@Accessors(chain = true)
|
||||
@TableName("t_red_packet_account")
|
||||
@NoArgsConstructor
|
||||
public class RedPacketAccount extends BaseModel {
|
||||
|
||||
private static final long serialVersionUID=1L;
|
||||
|
||||
/**
|
||||
* 红包账户id
|
||||
*/
|
||||
@TableId(type = IdType.INPUT)
|
||||
private String accountId;
|
||||
|
||||
/**
|
||||
* 所属付款用户id
|
||||
*/
|
||||
private String payUserId;
|
||||
|
||||
/**
|
||||
* 所属用户
|
||||
*/
|
||||
private String mchNo;
|
||||
|
||||
/**
|
||||
* 所属门店
|
||||
*/
|
||||
private String storeId;
|
||||
|
||||
/**
|
||||
* 所属门店名称
|
||||
*/
|
||||
private String storeName;
|
||||
|
||||
/**
|
||||
* 头像
|
||||
*/
|
||||
private String headImg;
|
||||
|
||||
/**
|
||||
* 昵称
|
||||
*/
|
||||
private String nickName;
|
||||
|
||||
/**
|
||||
* 手机号
|
||||
*/
|
||||
private String phone;
|
||||
|
||||
/**
|
||||
* 余额
|
||||
*/
|
||||
private Long balance;
|
||||
|
||||
/**
|
||||
* 最后一次消费时间
|
||||
*/
|
||||
private Date lastTransTime;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
private Date updatedAt;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
private Date createdAt;
|
||||
|
||||
/**
|
||||
* 来源:WECHAT 微信 ALIPAY 支付宝 YSFPAY 云闪付 UNIONPAY 银联 OTHER 其他
|
||||
*/
|
||||
private String type;
|
||||
|
||||
/**
|
||||
* 初次关联的订单号
|
||||
*/
|
||||
private String fastFlowNo;
|
||||
|
||||
|
||||
public RedPacketAccount(RedPacketAccountOperate operate, Long balance) {
|
||||
this.accountId = SeqKit.genAccountNo();
|
||||
this.payUserId = operate.getPayUserId();
|
||||
this.mchNo = operate.getMchNo();
|
||||
this.storeId = operate.getStoreId();
|
||||
this.storeName = operate.getStoreName();
|
||||
this.balance = balance;
|
||||
this.fastFlowNo = operate.getFlowNo();
|
||||
this.type = operate.getPayType();
|
||||
}
|
||||
|
||||
public static LambdaQueryWrapper<RedPacketAccount> gw(RedPacketAccount info) {
|
||||
return new LambdaQueryWrapper<>(info);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,118 @@
|
||||
package com.jeequan.jeepay.db.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.jeequan.jeepay.core.model.BaseModel;
|
||||
import com.jeequan.jeepay.model.RedPacketAccountOperate;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 账户变动明细表
|
||||
* </p>
|
||||
*
|
||||
* @author [mybatis plus generator]
|
||||
* @since 2024-01-18
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@Accessors(chain = true)
|
||||
@TableName("t_red_packet_account_detail")
|
||||
@NoArgsConstructor
|
||||
public class RedPacketAccountDetail extends BaseModel {
|
||||
|
||||
private static final long serialVersionUID=1L;
|
||||
|
||||
public final static byte PAYMENT = 1;
|
||||
|
||||
public final static byte REFUND = 2;
|
||||
|
||||
public final static byte DEDUCT = 3;
|
||||
|
||||
/**
|
||||
* id
|
||||
*/
|
||||
@TableId(value = "id", type = IdType.AUTO)
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 用户号
|
||||
*/
|
||||
private String mchNo;
|
||||
|
||||
/**
|
||||
* 关联流水号
|
||||
*/
|
||||
private String flowNo;
|
||||
|
||||
/**
|
||||
* 门店id
|
||||
*/
|
||||
private String storeId;
|
||||
|
||||
/**
|
||||
* 门店名称
|
||||
*/
|
||||
private String storeName;
|
||||
|
||||
/**
|
||||
* 所属付款用户id
|
||||
*/
|
||||
private String payUserId;
|
||||
|
||||
/**
|
||||
* 类型:1:下单奖励 2:消费退款 3:红包抵扣
|
||||
*/
|
||||
private Byte type;
|
||||
|
||||
/**
|
||||
* 变动前余额
|
||||
*/
|
||||
private Long beforeAmt;
|
||||
|
||||
/**
|
||||
* 变动金额
|
||||
*/
|
||||
private Long changeAmt;
|
||||
|
||||
/**
|
||||
* 变动后余额
|
||||
*/
|
||||
private Long afterAmt;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
private Date createdAt;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
private Date updatedAt;
|
||||
|
||||
public RedPacketAccountDetail(RedPacketAccount packetAccount, RedPacketAccountOperate operate,Long beforeAmt,Long changeAmt) {
|
||||
this.mchNo = packetAccount.getMchNo();
|
||||
this.payUserId = packetAccount.getPayUserId();
|
||||
this.storeId = packetAccount.getStoreId();
|
||||
this.storeName = packetAccount.getStoreName();
|
||||
this.flowNo = operate.getFlowNo();
|
||||
this.beforeAmt = beforeAmt;
|
||||
this.changeAmt = changeAmt;
|
||||
this.afterAmt = BigDecimal.valueOf(beforeAmt).add(BigDecimal.valueOf(changeAmt)).longValue();
|
||||
this.type = operate.getType();
|
||||
}
|
||||
|
||||
|
||||
public static LambdaQueryWrapper<RedPacketAccountDetail> gw(RedPacketAccountDetail info) {
|
||||
return new LambdaQueryWrapper<>(info);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,161 @@
|
||||
package com.jeequan.jeepay.db.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.baomidou.mybatisplus.core.conditions.Wrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.jeequan.jeepay.core.model.BaseModel;
|
||||
import com.jeequan.jeepay.model.RedPacketAccountOperate;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 红包记录
|
||||
* </p>
|
||||
*
|
||||
* @author [mybatis plus generator]
|
||||
* @since 2024-01-18
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@Accessors(chain = true)
|
||||
@TableName("t_red_packet_info")
|
||||
@NoArgsConstructor
|
||||
public class RedPacketInfo extends BaseModel {
|
||||
|
||||
private static final long serialVersionUID=1L;
|
||||
|
||||
public static final byte NO_USE = 1;
|
||||
|
||||
public static final byte IN_USE = 2;
|
||||
|
||||
public static final byte YES_USE = 3;
|
||||
|
||||
public static final byte EXPIRE = 4;
|
||||
|
||||
public static final byte REFUND = 5;
|
||||
|
||||
/**
|
||||
* 关联流水号
|
||||
*/
|
||||
@TableId(type = IdType.INPUT)
|
||||
private String flowNo;
|
||||
|
||||
/**
|
||||
* 付款用户ID
|
||||
*/
|
||||
private String payUserId;
|
||||
|
||||
/**
|
||||
* 用户号
|
||||
*/
|
||||
private String mchNo;
|
||||
|
||||
/**
|
||||
* 门店ID
|
||||
*/
|
||||
private String storeId;
|
||||
|
||||
/**
|
||||
* 门店名称
|
||||
*/
|
||||
private String storeName;
|
||||
|
||||
/**
|
||||
* 交易金额
|
||||
*/
|
||||
private Long transAmt;
|
||||
|
||||
/**
|
||||
* 实付金额
|
||||
*/
|
||||
private Long findAmt;
|
||||
|
||||
/**
|
||||
* 红包折扣
|
||||
*/
|
||||
private BigDecimal discountScale;
|
||||
|
||||
/**
|
||||
* 红包奖励金额
|
||||
*/
|
||||
private Long rewardAmt;
|
||||
|
||||
/**
|
||||
* 实际差额
|
||||
*/
|
||||
private Long actualAmt;
|
||||
|
||||
/**
|
||||
* 已使用红包金额
|
||||
*/
|
||||
private Long useAmt;
|
||||
|
||||
/**
|
||||
* 交易时间
|
||||
*/
|
||||
private Date transTime;
|
||||
|
||||
/**
|
||||
* 来源 WECHAT:微信 ALIPAY:支付宝
|
||||
*/
|
||||
private String type;
|
||||
|
||||
/**
|
||||
* 红包有效期
|
||||
*/
|
||||
private Date expireTime;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
private Date createdAt;
|
||||
|
||||
/**
|
||||
* 状态1:未使用 2:使用中 3:已使用 4:已过期 5:已退款
|
||||
*/
|
||||
private Byte state;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
private Date updatedAt;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
public RedPacketInfo(RedPacketAccount packetAccount, RedPacketAccountOperate operate, Long findAmt, Long rewardAmt, BigDecimal marketScale, Date expireTime) {
|
||||
this.flowNo = operate.getFlowNo();
|
||||
this.payUserId = packetAccount.getPayUserId();
|
||||
this.mchNo = packetAccount.getMchNo();
|
||||
this.storeId = packetAccount.getStoreId();
|
||||
this.storeName = packetAccount.getStoreName();
|
||||
this.transAmt = operate.getOrderAmt();
|
||||
this.findAmt = findAmt;
|
||||
this.rewardAmt = rewardAmt;
|
||||
this.discountScale = marketScale;
|
||||
this.expireTime = expireTime;
|
||||
this.type = operate.getPayType();
|
||||
if(operate.getTransTime() == null){
|
||||
this.transTime = new Date();
|
||||
}else{
|
||||
this.transTime = operate.getTransTime();
|
||||
}
|
||||
}
|
||||
|
||||
public static LambdaQueryWrapper<RedPacketInfo> gw() {
|
||||
return new LambdaQueryWrapper<>();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,158 @@
|
||||
package com.jeequan.jeepay.db.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.jeequan.jeepay.core.exception.BizException;
|
||||
import com.jeequan.jeepay.core.model.BaseModel;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.experimental.Accessors;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 红包规则表
|
||||
* </p>
|
||||
*
|
||||
* @author [mybatis plus generator]
|
||||
* @since 2024-01-17
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@Accessors(chain = true)
|
||||
@TableName("t_red_packet_rule")
|
||||
public class RedPacketRule extends BaseModel {
|
||||
/**
|
||||
* 指定门店
|
||||
*/
|
||||
public final static int APPOINT = 2;
|
||||
/**
|
||||
* 全部门店
|
||||
*/
|
||||
public final static int ALL = 1;
|
||||
|
||||
private static final long serialVersionUID=1L;
|
||||
|
||||
/**
|
||||
* 规则id
|
||||
*/
|
||||
@TableId(type = IdType.AUTO)
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 用户号
|
||||
*/
|
||||
private String mchNo;
|
||||
|
||||
/**
|
||||
* 红包类型 1:门店专享 2:平台通用
|
||||
*/
|
||||
private Byte packetType;
|
||||
|
||||
/**
|
||||
* 营销折扣比例 0.8 8折 0.95 表示95折 以此类推
|
||||
*/
|
||||
private BigDecimal marketScale;
|
||||
|
||||
/**
|
||||
* 平台补贴
|
||||
*/
|
||||
private BigDecimal platScale;
|
||||
|
||||
/**
|
||||
* 用户补贴红包比例 0.1 表示10% 0.2 表示 20%
|
||||
*/
|
||||
private BigDecimal userPerkScale;
|
||||
|
||||
/**
|
||||
* 红包有效天数
|
||||
*/
|
||||
private Integer expireNumber;
|
||||
|
||||
/**
|
||||
* 状态:1:启用 0:禁用
|
||||
*/
|
||||
private Byte state;
|
||||
|
||||
/**
|
||||
* 门店ID
|
||||
*/
|
||||
private String storeId;
|
||||
|
||||
/**
|
||||
* 门店名称
|
||||
*/
|
||||
private String storeName;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
private Date createdAt;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
private Date updatedAt;
|
||||
|
||||
/**
|
||||
* 门店集合
|
||||
*/
|
||||
@TableField(exist = false)
|
||||
private List<String> storeIdList;
|
||||
|
||||
/**
|
||||
* 配置类型 1:配置所有门店 2:指定门店
|
||||
*/
|
||||
@TableField(exist = false)
|
||||
private Integer configType;
|
||||
|
||||
|
||||
public static LambdaQueryWrapper<RedPacketRule> gw() {
|
||||
return new LambdaQueryWrapper<>();
|
||||
}
|
||||
public static LambdaQueryWrapper<RedPacketRule> gw(RedPacketRule info) {
|
||||
return new LambdaQueryWrapper<>(info);
|
||||
}
|
||||
|
||||
public void check(){
|
||||
if(this.getPacketType() == null){
|
||||
throw new BizException("红包类型不能为空");
|
||||
}
|
||||
if(this.getMarketScale() == null){
|
||||
throw new BizException("营销折扣比例不能为空");
|
||||
}
|
||||
if(this.getPlatScale() == null){
|
||||
throw new BizException("平台补贴比例不能为空");
|
||||
}
|
||||
if(this.getPlatScale() == null){
|
||||
throw new BizException("顾客获得红包比例不能为空");
|
||||
}
|
||||
if(this.getExpireNumber() == null){
|
||||
throw new BizException("有效期不能为空");
|
||||
}
|
||||
}
|
||||
|
||||
public void preCheck() {
|
||||
check();
|
||||
if(this.getConfigType() == null){
|
||||
throw new BizException("配置规则类型不能为空");
|
||||
}
|
||||
if(StringUtils.isEmpty(this.getMchNo())){
|
||||
throw new BizException("所属商户不能为空");
|
||||
}
|
||||
//如果为指定门店的时候
|
||||
if(this.getConfigType() == APPOINT){
|
||||
if(this.getStoreIdList() == null || this.getStoreIdList().isEmpty()){
|
||||
throw new BizException("配置规则类型为指定门店的时候,请选择支持的门店");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,298 @@
|
||||
package com.jeequan.jeepay.db.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.jeequan.jeepay.core.constants.CS;
|
||||
import com.jeequan.jeepay.core.model.openapi.biz.RefundResultResp;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.experimental.Accessors;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 退款订单表
|
||||
* </p>
|
||||
*
|
||||
* @author [mybatis plus generator]
|
||||
* @since 2021-04-27
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@Accessors(chain = true)
|
||||
@TableName("t_refund_order")
|
||||
public class RefundOrder extends com.jeequan.jeepay.core.entity.RefundOrder {
|
||||
|
||||
public static final byte STATE_INIT = 0; //订单生成
|
||||
public static final byte STATE_ING = 1; //退款中
|
||||
public static final byte STATE_SUCCESS = 2; //退款成功
|
||||
public static final byte STATE_FAIL = 3; //退款失败
|
||||
public static final byte STATE_CLOSED = 4; //退款任务关闭
|
||||
|
||||
public static final LambdaQueryWrapper<RefundOrder> gw(){
|
||||
return new LambdaQueryWrapper<>();
|
||||
}
|
||||
|
||||
private static final long serialVersionUID=1L;
|
||||
|
||||
/**
|
||||
* 退款订单号(支付系统生成订单号)
|
||||
*/
|
||||
@TableId
|
||||
private String refundOrderId;
|
||||
|
||||
/**
|
||||
* 支付订单号(与t_pay_order对应)
|
||||
*/
|
||||
private String payOrderId;
|
||||
|
||||
/**
|
||||
* 渠道支付单号(与t_pay_order channel_order_no对应)
|
||||
*/
|
||||
private String channelPayOrderNo;
|
||||
|
||||
/**
|
||||
* 商户号(更改为用户号)
|
||||
*/
|
||||
private String mchNo;
|
||||
|
||||
/**
|
||||
* 商户号,也就是现在的申请单编号
|
||||
*/
|
||||
private String mchExtNo;
|
||||
|
||||
/**
|
||||
* 服务商号
|
||||
*/
|
||||
private String isvNo;
|
||||
|
||||
/**
|
||||
* 服务商号
|
||||
*/
|
||||
private String agentNo;
|
||||
|
||||
/**
|
||||
* 顶级服务商号
|
||||
*/
|
||||
private String topAgentNo;
|
||||
|
||||
/**
|
||||
* 商户门店ID
|
||||
*/
|
||||
private String storeId;
|
||||
|
||||
/**
|
||||
* 门店名称
|
||||
*/
|
||||
private String storeName;
|
||||
|
||||
/**
|
||||
* 应用ID
|
||||
*/
|
||||
private String appId;
|
||||
|
||||
/**
|
||||
* 商户名称
|
||||
*/
|
||||
private String mchName;
|
||||
|
||||
/**
|
||||
* 类型: 1-普通商户, 2-特约商户(服务商模式)
|
||||
*/
|
||||
private Byte mchType;
|
||||
|
||||
/**
|
||||
* 设备类型:qr_code-码牌,scan_pos-扫码POS,auto_pos-智能POS,other-其他
|
||||
*/
|
||||
private String deviceType;
|
||||
|
||||
/**
|
||||
* 设备号
|
||||
*/
|
||||
private String deviceNo;
|
||||
|
||||
/**
|
||||
* 设备厂商,参考商户门店设备表
|
||||
*/
|
||||
private String deviceProvider;
|
||||
|
||||
/**
|
||||
* 商户退款单号(商户系统的订单号)
|
||||
*/
|
||||
private String mchRefundNo;
|
||||
|
||||
/**
|
||||
* 支付方式代码
|
||||
*/
|
||||
private String wayCode;
|
||||
|
||||
/**
|
||||
* 支付方式类型
|
||||
*/
|
||||
private String wayCodeType;
|
||||
|
||||
/**
|
||||
* 支付接口代码
|
||||
*/
|
||||
private String ifCode;
|
||||
|
||||
/**
|
||||
* 支付金额,单位分
|
||||
*/
|
||||
private Long payAmount;
|
||||
|
||||
/**
|
||||
* 退款金额,单位分
|
||||
*/
|
||||
private Long refundAmount;
|
||||
|
||||
/**
|
||||
* 手续费退还金额, 单位:分
|
||||
*/
|
||||
private Long refundFeeAmount;
|
||||
|
||||
/**
|
||||
* 三位货币代码,人民币:cny
|
||||
*/
|
||||
private String currency;
|
||||
|
||||
/**
|
||||
* 退款状态:0-订单生成,1-退款中,2-退款成功,3-退款失败,4-退款任务关闭
|
||||
*/
|
||||
private Byte state;
|
||||
|
||||
/**
|
||||
* 客户端IP
|
||||
*/
|
||||
private String clientIp;
|
||||
|
||||
/**
|
||||
* 退款原因
|
||||
*/
|
||||
private String refundReason;
|
||||
|
||||
/**
|
||||
* 渠道订单号
|
||||
*/
|
||||
private String channelOrderNo;
|
||||
|
||||
/**
|
||||
* 渠道特殊业务数据,各渠道业务自处理数据
|
||||
*/
|
||||
private String channelBizData;
|
||||
|
||||
/**
|
||||
* 渠道错误码
|
||||
*/
|
||||
private String errCode;
|
||||
|
||||
/**
|
||||
* 渠道错误描述
|
||||
*/
|
||||
private String errMsg;
|
||||
|
||||
/**
|
||||
* 特定渠道发起时额外参数
|
||||
*/
|
||||
private String channelExtra;
|
||||
|
||||
/**
|
||||
* 通知地址
|
||||
*/
|
||||
private String notifyUrl;
|
||||
|
||||
/**
|
||||
* 扩展参数 暂时扩展为退款模式 “1”收款商户号退款,"2"平台一般户退款
|
||||
*/
|
||||
private String extParam;
|
||||
|
||||
/**
|
||||
* 门店收银员ID
|
||||
*/
|
||||
private Long storeUserId;
|
||||
|
||||
/**
|
||||
* 订单退款成功时间
|
||||
*/
|
||||
private Date successTime;
|
||||
|
||||
/**
|
||||
* 退款失效时间(失效后系统更改为退款任务关闭状态)
|
||||
*/
|
||||
private Date expiredTime;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
private Date createdAt;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
private Date updatedAt;
|
||||
|
||||
/**
|
||||
* 退款类型 1:全额退款 2:部分退款
|
||||
*/
|
||||
private Byte refundType;
|
||||
|
||||
/**
|
||||
* 绑定的应用名称
|
||||
*/
|
||||
@TableField(exist = false)
|
||||
private String appName;
|
||||
|
||||
/**
|
||||
* 渠道名称
|
||||
*/
|
||||
@TableField(exist = false)
|
||||
private String isvName;
|
||||
|
||||
/**
|
||||
* 渠道简称
|
||||
*/
|
||||
@TableField(exist = false)
|
||||
private String isvShortName;
|
||||
|
||||
/**
|
||||
* 服务商名称
|
||||
*/
|
||||
@TableField(exist = false)
|
||||
private String agentName;
|
||||
|
||||
@TableField(exist = false)
|
||||
private String agentContactTel;
|
||||
|
||||
@TableField(exist = false)
|
||||
private String mchUserName;
|
||||
|
||||
@TableField(exist = false)
|
||||
private String mchUserPhone;
|
||||
|
||||
public RefundResultResp bulidResult() {
|
||||
RefundResultResp resp = new RefundResultResp();
|
||||
resp.setRefundOrderId(this.getRefundOrderId());
|
||||
resp.setRefundReason(this.getRefundReason());
|
||||
resp.setMchRefundNo(this.getMchRefundNo());
|
||||
resp.setRefundAmt(this.getRefundAmount());
|
||||
resp.setIfCode(this.getIfCode());
|
||||
resp.setOriPayOrderId(this.getPayOrderId());
|
||||
resp.setMercNo(this.getMchExtNo());
|
||||
CS.OpenRefundState val = CS.OpenRefundState.getVal(this.getState());
|
||||
resp.setState(val.getCode());
|
||||
String note = StringUtils.isNotEmpty(this.getErrMsg()) ? this.getErrMsg() : val.getDesc();
|
||||
resp.setNote(note);
|
||||
resp.setOriAmount(this.getPayAmount());
|
||||
resp.setMercNo(this.getMchExtNo());
|
||||
resp.setRefundType(this.getRefundType());
|
||||
resp.setPayType(this.getWayCodeType());
|
||||
resp.setRefundTime(this.getSuccessTime());
|
||||
resp.setExtParam(this.getExtParam());
|
||||
// resp.setOriMchOrderNo(mchOrderNo);
|
||||
return resp;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
package com.jeequan.jeepay.db.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
*
|
||||
* </p>
|
||||
*
|
||||
* @author [mybatis plus generator]
|
||||
* @since 2024-03-06
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@Accessors(chain = true)
|
||||
@TableName("t_region_code_pay_ryx")
|
||||
public class RegionCodePayRyx implements Serializable {
|
||||
|
||||
private static final long serialVersionUID=1L;
|
||||
|
||||
@TableId(value = "id", type = IdType.AUTO)
|
||||
private Integer id;
|
||||
|
||||
private String provinceCode;
|
||||
|
||||
private String provinceName;
|
||||
|
||||
private String cityCode;
|
||||
|
||||
private String cityName;
|
||||
|
||||
private String areaCode;
|
||||
|
||||
private String areaName;
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,172 @@
|
||||
package com.jeequan.jeepay.db.entity;
|
||||
|
||||
import cn.hutool.core.lang.Assert;
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler;
|
||||
import com.jeequan.jeepay.core.model.BaseModel;
|
||||
import com.jeequan.jeepay.model.RuleStrategy;
|
||||
import com.jeequan.jeepay.model.SeniorStrategy;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.math.RoundingMode;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 商户支付路由
|
||||
* </p>
|
||||
*
|
||||
* @author [mybatis plus generator]
|
||||
* @since 2024-04-19
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@Accessors(chain = true)
|
||||
@TableName(value = "t_route",autoResultMap = true)
|
||||
public class Route extends BaseModel {
|
||||
|
||||
private static final long serialVersionUID=1L;
|
||||
|
||||
public static final byte DEFAULT = 0;
|
||||
|
||||
public static final byte LITE = 1;
|
||||
/**
|
||||
* id
|
||||
*/
|
||||
@TableId(value = "route_id", type = IdType.INPUT)
|
||||
private String routeId;
|
||||
|
||||
/**
|
||||
* 路由名称
|
||||
*/
|
||||
private String name;
|
||||
|
||||
/**
|
||||
* 所属商户
|
||||
*/
|
||||
private String mchNo;
|
||||
|
||||
|
||||
@TableField(typeHandler = FastjsonTypeHandler.class)
|
||||
private RuleStrategy ruleStrategy;
|
||||
|
||||
/**
|
||||
* 高级策略
|
||||
*/
|
||||
@TableField(typeHandler = FastjsonTypeHandler.class)
|
||||
private SeniorStrategy seniorStrategy;
|
||||
|
||||
/**
|
||||
* 创建者用户ID
|
||||
*/
|
||||
private Long createdUid;
|
||||
|
||||
/**
|
||||
* 创建者姓名
|
||||
*/
|
||||
private String createdBy;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
private Date createdAt;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
private Date updatedAt;
|
||||
|
||||
/**
|
||||
* 运行次数
|
||||
*/
|
||||
private Integer num;
|
||||
|
||||
/**
|
||||
* 成功交易金额
|
||||
*/
|
||||
private Long succAmount;
|
||||
|
||||
|
||||
/**
|
||||
* 总交易金额
|
||||
*/
|
||||
private Long totalAmount;
|
||||
|
||||
|
||||
/**
|
||||
* 成功交易笔数
|
||||
*/
|
||||
private Integer succNum;
|
||||
|
||||
/**
|
||||
* 总交易笔数
|
||||
*/
|
||||
private Integer totalNum;
|
||||
|
||||
/**
|
||||
* 状态 1:正常 0:禁用
|
||||
*/
|
||||
private Byte state;
|
||||
/**
|
||||
* 页面支付方式 0:默认 1:小程序
|
||||
*/
|
||||
private Byte payMethod;
|
||||
|
||||
/**
|
||||
* 是否默认
|
||||
*/
|
||||
private Byte isDefault;
|
||||
|
||||
/**
|
||||
* 所属商户
|
||||
*/
|
||||
@TableField(exist = false)
|
||||
private String mchName;
|
||||
|
||||
/**
|
||||
* 成功率
|
||||
*/
|
||||
@TableField(exist = false)
|
||||
private BigDecimal succRate;
|
||||
|
||||
/**
|
||||
* 门店数量
|
||||
*/
|
||||
@TableField(exist = false)
|
||||
private Long storeNum;
|
||||
|
||||
|
||||
/**
|
||||
* 参数 校验
|
||||
*/
|
||||
public void preCheck() {
|
||||
Assert.notEmpty(this.getName(),"路由名称不能为空");
|
||||
Assert.notNull(this.getRuleStrategy(),"路由策略规则不能为空");
|
||||
Assert.notNull(this.getIsDefault(),"是否是默认的路由策略不能为空");
|
||||
this.getRuleStrategy().preCheck();
|
||||
if(this.getSeniorStrategy() != null){
|
||||
this.getSeniorStrategy().preCheck();
|
||||
}else{
|
||||
SeniorStrategy seniorStrategy = new SeniorStrategy();
|
||||
this.setSeniorStrategy(seniorStrategy);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 重写成功率
|
||||
* @return
|
||||
*/
|
||||
public BigDecimal getSuccRate() {
|
||||
if(this.getTotalNum() == null || this.getTotalNum() == BigDecimal.ZERO.intValue()){
|
||||
return BigDecimal.ZERO;
|
||||
}
|
||||
return new BigDecimal(this.getSuccNum()).divide(new BigDecimal(this.getTotalNum()),4, RoundingMode.HALF_EVEN).multiply(BigDecimal.valueOf(100));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,229 @@
|
||||
package com.jeequan.jeepay.db.entity;
|
||||
|
||||
import cn.hutool.core.lang.Assert;
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler;
|
||||
import com.jeequan.jeepay.core.constants.CS;
|
||||
import com.jeequan.jeepay.core.model.BaseModel;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.Getter;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.math.BigDecimal;
|
||||
import java.math.RoundingMode;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 路由管理
|
||||
* </p>
|
||||
*
|
||||
* @author [mybatis plus generator]
|
||||
* @since 2024-04-19
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@Accessors(chain = true)
|
||||
@TableName(value = "t_route_manage",autoResultMap = true)
|
||||
public class RouteManage extends BaseModel {
|
||||
|
||||
|
||||
public static final LambdaQueryWrapper<RouteManage> gw(){
|
||||
return new LambdaQueryWrapper<>();
|
||||
}
|
||||
|
||||
/**
|
||||
* 门店id
|
||||
*/
|
||||
@TableId(type = IdType.INPUT)
|
||||
private String storeId;
|
||||
|
||||
|
||||
private String applyId;
|
||||
/**
|
||||
* 所属用户
|
||||
*/
|
||||
private String mchNo;
|
||||
|
||||
/**
|
||||
* 所属应用
|
||||
*/
|
||||
private String appid;
|
||||
|
||||
private String ifCode;
|
||||
|
||||
private String isvNo;
|
||||
|
||||
@TableField(typeHandler = FastjsonTypeHandler.class)
|
||||
private List<String> payType;
|
||||
|
||||
@TableField(typeHandler = FastjsonTypeHandler.class)
|
||||
private List<String> amtRange;
|
||||
|
||||
@TableField(typeHandler = FastjsonTypeHandler.class)
|
||||
private List<String> timeRange;
|
||||
|
||||
|
||||
/**
|
||||
* 成功交易笔数
|
||||
*/
|
||||
private Integer succNum;
|
||||
|
||||
/**
|
||||
* 成功交易金额
|
||||
*/
|
||||
private Long succAmount;
|
||||
|
||||
/**
|
||||
* 总交易数量
|
||||
*/
|
||||
private Integer totalNum;
|
||||
|
||||
/**
|
||||
* 总交易金额
|
||||
*/
|
||||
private Long totalAmount;
|
||||
|
||||
/**
|
||||
* 路由id
|
||||
*/
|
||||
private String routeId;
|
||||
|
||||
/**
|
||||
* 结算类型
|
||||
*/
|
||||
private String settleType;
|
||||
|
||||
/**
|
||||
* 状态 0:禁用 1:启用
|
||||
*/
|
||||
private Byte state;
|
||||
|
||||
/**
|
||||
* 路由状态 0:不路由 1:正常
|
||||
*/
|
||||
private Byte routeState;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 创建者用户ID
|
||||
*/
|
||||
private Long createdUid;
|
||||
|
||||
/**
|
||||
* 创建者姓名
|
||||
*/
|
||||
private String createdBy;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
private Date createdAt;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
private Date updatedAt;
|
||||
|
||||
/**
|
||||
* 门店名称
|
||||
*/
|
||||
@TableField(exist = false)
|
||||
private String storeName;
|
||||
|
||||
/**
|
||||
* 所属通道名称
|
||||
*/
|
||||
@TableField(exist = false)
|
||||
private String ifName;
|
||||
|
||||
|
||||
/**
|
||||
* 商户名称
|
||||
*/
|
||||
@TableField(exist = false)
|
||||
private String mchShortName;
|
||||
|
||||
/**
|
||||
* 路由策略名称
|
||||
*/
|
||||
@TableField(exist = false)
|
||||
private String routeName;
|
||||
|
||||
/**
|
||||
* 路由策略名称
|
||||
*/
|
||||
@TableField(exist = false)
|
||||
private String appName;
|
||||
|
||||
/**
|
||||
* 路由策略名称
|
||||
*/
|
||||
@TableField(exist = false)
|
||||
private String isvName;
|
||||
|
||||
/**
|
||||
* 门店id集合
|
||||
*/
|
||||
@TableField(exist = false)
|
||||
private List<String> storeIdList;
|
||||
|
||||
/**
|
||||
* 订单号
|
||||
*/
|
||||
@TableField(exist = false)
|
||||
private String payOrderId;
|
||||
|
||||
@TableField(exist = false)
|
||||
private String opType;
|
||||
|
||||
@TableField(exist = false)
|
||||
private Boolean isSend = false;
|
||||
|
||||
@TableField(exist = false)
|
||||
private String sendVal;
|
||||
|
||||
@TableField(exist = false)
|
||||
private RouteRecord routeRecord;
|
||||
|
||||
@TableField(exist = false)
|
||||
private Route route;
|
||||
/**
|
||||
* 成功率限制
|
||||
*/
|
||||
@TableField(exist = false)
|
||||
private BigDecimal succRate;
|
||||
|
||||
/**
|
||||
* 参数校验
|
||||
*/
|
||||
public void preCheck() {
|
||||
Assert.notEmpty(this.getStoreIdList(),"请选择门店信息不能为空");
|
||||
Assert.notEmpty(this.getRouteId(),"路由策略不能为空");
|
||||
}
|
||||
|
||||
/**
|
||||
* 重写成功率
|
||||
* @return
|
||||
*/
|
||||
public BigDecimal getSuccRate() {
|
||||
if(this.getTotalNum() == null || this.getTotalNum() == BigDecimal.ZERO.intValue()){
|
||||
return BigDecimal.ZERO;
|
||||
}
|
||||
return new BigDecimal(this.getSuccNum()).divide(new BigDecimal(this.getTotalNum()),4, RoundingMode.HALF_EVEN).multiply(BigDecimal.valueOf(100));
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,132 @@
|
||||
package com.jeequan.jeepay.db.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.jeequan.jeepay.core.model.BaseModel;
|
||||
import com.jeequan.jeepay.model.Condition;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 策略运行结果
|
||||
* </p>
|
||||
*
|
||||
* @author [mybatis plus generator]
|
||||
* @since 2024-05-09
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@Accessors(chain = true)
|
||||
@TableName("t_route_record")
|
||||
@NoArgsConstructor
|
||||
public class RouteRecord extends BaseModel {
|
||||
|
||||
private static final long serialVersionUID=1L;
|
||||
|
||||
/**
|
||||
* 订单号
|
||||
*/
|
||||
@TableId(type = IdType.INPUT)
|
||||
private String orderId;
|
||||
|
||||
/**
|
||||
* 用户号
|
||||
*/
|
||||
private String mchNo;
|
||||
|
||||
/**
|
||||
* 路由ID
|
||||
*/
|
||||
private String routeId;
|
||||
|
||||
/**
|
||||
* 路由名称
|
||||
*/
|
||||
private String routeName;
|
||||
|
||||
/**
|
||||
* 门店信息
|
||||
*/
|
||||
private String storeId;
|
||||
|
||||
/**
|
||||
* 商户号
|
||||
*/
|
||||
private String applyId;
|
||||
|
||||
/**
|
||||
* 执行目标对象
|
||||
*/
|
||||
private String target;
|
||||
|
||||
/**
|
||||
* 触发条件
|
||||
*/
|
||||
@TableField(value = "`condition`")
|
||||
private String condition;
|
||||
|
||||
/**
|
||||
* 执行结果
|
||||
*/
|
||||
private String result;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 创建者用户ID
|
||||
*/
|
||||
private Long createdUid;
|
||||
|
||||
/**
|
||||
* 创建者姓名
|
||||
*/
|
||||
private String createdBy;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
private Date createdAt;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
private Date updatedAt;
|
||||
|
||||
/**
|
||||
* 商户名称
|
||||
*/
|
||||
@TableField(exist = false)
|
||||
private String mchShortName;
|
||||
|
||||
/**
|
||||
* 门店名称
|
||||
*/
|
||||
@TableField(exist = false)
|
||||
private String storeName;
|
||||
|
||||
/**
|
||||
*
|
||||
* @param routeManage
|
||||
*/
|
||||
public RouteRecord(RouteManage routeManage,String routeName, String condition,String resultMsg) {
|
||||
this.mchNo = routeManage.getMchNo();
|
||||
this.routeName = routeName;
|
||||
this.routeId = routeManage.getRouteId();
|
||||
this.target = routeManage.getStoreName() + "["+routeManage.getStoreId()+"]";
|
||||
this.condition = condition;
|
||||
this.result = resultMsg;
|
||||
this.remark = routeManage.getRemark();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,40 @@
|
||||
package com.jeequan.jeepay.db.entity;
|
||||
|
||||
|
||||
import com.alibaba.excel.annotation.ExcelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class SettleBatchExcel {
|
||||
|
||||
@ExcelProperty("账户类型 B:对公、企业 C:对私、个人")
|
||||
private String accountType;
|
||||
|
||||
@ExcelProperty("账户所属渠道 支付宝: ZFB、微信: WX、银行账户: BANK")
|
||||
private String entryType;
|
||||
|
||||
@ExcelProperty("姓名(或营业执照名称)")
|
||||
private String accountName;
|
||||
|
||||
@ExcelProperty("账号(支付宝账号或银行卡)")
|
||||
private String accountNo;
|
||||
|
||||
@ExcelProperty("省(对公必填)")
|
||||
private String instProvince;
|
||||
|
||||
@ExcelProperty("市(对公必填)")
|
||||
private String instCity;
|
||||
|
||||
@ExcelProperty("银行卡名称(对公必填)")
|
||||
private String instName;
|
||||
|
||||
@ExcelProperty("银行卡支行名称(对公必填)")
|
||||
private String instBranchName;
|
||||
|
||||
@ExcelProperty("金额(元)")
|
||||
private String transAmount;
|
||||
|
||||
@ExcelProperty("转账备注")
|
||||
private String transferDesc;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,319 @@
|
||||
package com.jeequan.jeepay.db.entity;
|
||||
|
||||
import cn.hutool.core.date.DatePattern;
|
||||
import cn.hutool.core.date.DateTime;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.util.DesensitizedUtil;
|
||||
import cn.hutool.core.util.RandomUtil;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.jeequan.jeepay.core.constants.CS;
|
||||
import com.jeequan.jeepay.core.model.BaseModel;
|
||||
import com.jeequan.jeepay.db.typehandler.EncryptTypeHandler;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.experimental.Accessors;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
import java.util.Locale;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
*
|
||||
* </p>
|
||||
*
|
||||
* @author [mybatis plus generator]
|
||||
* @since 2023-12-06
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@Accessors(chain = true)
|
||||
@TableName(value = "t_settle_info",autoResultMap = true)
|
||||
@NoArgsConstructor
|
||||
public class SettleInfo extends BaseModel {
|
||||
|
||||
private static final long serialVersionUID=1L;
|
||||
|
||||
public static final String TRANS_SCOPE_DATE_SPLIT = "~";
|
||||
|
||||
/**
|
||||
* 结算状态 -1:付款失败 0:待付款 1:付款中 2:付款成功,3:暂缓 4:冻结 5:退票 98:待查看(针对部分通道没有结算记录的情况下,使用该状态让客户核实银行卡的到账流水) 99:其他
|
||||
*/
|
||||
public static final byte FAIL = -1;
|
||||
public static final byte WAIT = 0;
|
||||
public static final byte PROGRESS = 1;
|
||||
public static final byte SUCCESS = 2;
|
||||
public static final byte SUSPEND = 3;
|
||||
public static final byte FREEZE = 4;
|
||||
public static final byte TICKET = 5;
|
||||
public static final byte CONFIRM = 98;
|
||||
public static final byte OTHER = 99;
|
||||
|
||||
|
||||
|
||||
public static final LambdaQueryWrapper<SettleInfo> gw(SettleInfo settleInfo){
|
||||
return new LambdaQueryWrapper<>(settleInfo);
|
||||
}
|
||||
|
||||
public static final LambdaQueryWrapper<SettleInfo> gw(){
|
||||
return new LambdaQueryWrapper<>();
|
||||
}
|
||||
|
||||
public static String SETTLE_NO_PRIFEX = "ST";
|
||||
|
||||
/**
|
||||
* 结算编号
|
||||
*/
|
||||
@TableId
|
||||
private String settleNo;
|
||||
|
||||
/**
|
||||
* 通道结算账单号
|
||||
*/
|
||||
private String billNo;
|
||||
|
||||
/**
|
||||
* 应用ID
|
||||
*/
|
||||
private String appid;
|
||||
|
||||
/**
|
||||
* 用户号(原先的商户号)
|
||||
*/
|
||||
private String mchNo;
|
||||
|
||||
/**
|
||||
* 商户号 也就是申请单编号 现在改成商户号了
|
||||
*/
|
||||
private String mchExtNo;
|
||||
|
||||
/**
|
||||
* 服务商号
|
||||
*/
|
||||
private String isvNo;
|
||||
|
||||
/**
|
||||
* 服务商号
|
||||
*/
|
||||
private String agentNo;
|
||||
|
||||
/**
|
||||
* 商户名称
|
||||
*/
|
||||
private String mchName;
|
||||
|
||||
/**
|
||||
* 通道商户编号
|
||||
*/
|
||||
private String channelMchNo;
|
||||
|
||||
/**
|
||||
* D0 D1 T1
|
||||
*/
|
||||
private String settleType;
|
||||
|
||||
|
||||
/**
|
||||
* 预付金额 单位分
|
||||
*/
|
||||
private Long planAmt;
|
||||
|
||||
/**
|
||||
* 结算金额 单位分
|
||||
*/
|
||||
private Long settleAmt;
|
||||
|
||||
/**
|
||||
* 手续费 分
|
||||
*/
|
||||
private Long fee;
|
||||
|
||||
/**
|
||||
* 结算状态 -1:付款失败 0:待付款 1:付款中 2:付款成功,3:暂缓 4:冻结 5:退票 98:待查看(针对部分通道没有结算记录的情况下,使用该状态让客户核实银行卡的到账流水) 99:其他
|
||||
*/
|
||||
private Byte state;
|
||||
|
||||
/**
|
||||
* 结算账户号
|
||||
*/
|
||||
@TableField(typeHandler = EncryptTypeHandler.class)
|
||||
private String accountNo;
|
||||
|
||||
/**
|
||||
* 结算账户名
|
||||
*/
|
||||
@TableField(typeHandler = EncryptTypeHandler.class)
|
||||
private String accountName;
|
||||
|
||||
/**
|
||||
* 结算日期
|
||||
*/
|
||||
private String settleDate;
|
||||
|
||||
/**
|
||||
* 扩展流水号
|
||||
*/
|
||||
private String extFlowNo;
|
||||
|
||||
/**
|
||||
* 通道错误码
|
||||
*/
|
||||
private String channelCode;
|
||||
|
||||
/**
|
||||
* 备注 一般用于存储通道相关的返回信息
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 扩展json参数
|
||||
*/
|
||||
private String extra;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
private Date createdAt;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
private Date updatedAt;
|
||||
|
||||
/**
|
||||
* 通道类型
|
||||
*/
|
||||
private String ifCode;
|
||||
|
||||
|
||||
private String bankName;
|
||||
|
||||
/**
|
||||
* 交易金额(订单表里的实付金额)
|
||||
*/
|
||||
private Long transactionAmount;
|
||||
|
||||
/**
|
||||
* 交易数量
|
||||
*/
|
||||
private Integer transactionNumber;
|
||||
|
||||
/**
|
||||
* 通道返回的结算状态
|
||||
*/
|
||||
private String channelState;
|
||||
|
||||
|
||||
@TableField(exist = false)
|
||||
private String ifName;
|
||||
|
||||
@TableField(exist = false)
|
||||
private Date settleTime;
|
||||
|
||||
/**
|
||||
* 渠道简称
|
||||
*/
|
||||
@TableField(exist = false)
|
||||
private String isvShortName;
|
||||
|
||||
@TableField(exist = false)
|
||||
private String isvName;
|
||||
|
||||
@TableField(exist = false)
|
||||
private String appName;
|
||||
|
||||
@TableField(exist = false)
|
||||
private String nameAndNo;
|
||||
|
||||
@TableField(exist = false)
|
||||
private String agentName;
|
||||
|
||||
@TableField(exist = false)
|
||||
private String agentContactTel;
|
||||
|
||||
@TableField(exist = false)
|
||||
private String mchUserName;
|
||||
|
||||
@TableField(exist = false)
|
||||
private String mchUserPhone;
|
||||
|
||||
private Long cashFee;
|
||||
|
||||
/**
|
||||
* 交易日期范围
|
||||
*/
|
||||
private String transDateScope;
|
||||
|
||||
/**
|
||||
* 结算数据构造方法
|
||||
* @param order
|
||||
* @param totalRefundAmount
|
||||
* @param stateTransDate
|
||||
* @param endTransDate
|
||||
*/
|
||||
public SettleInfo(PayOrder order,Long totalRefundAmount,Date stateTransDate,Date endTransDate) {
|
||||
//生成一个系统结算单号
|
||||
this.settleNo = SETTLE_NO_PRIFEX + DateUtil.format(new DateTime(), DatePattern.PURE_DATETIME_MS_FORMAT) + RandomUtil.randomString(RandomUtil.BASE_CHAR,1).toUpperCase(Locale.ROOT);
|
||||
this.mchNo = order.getMchNo();
|
||||
this.mchExtNo = order.getMchExtNo();
|
||||
this.isvNo = order.getIsvNo();
|
||||
this.agentNo = order.getAgentNo();
|
||||
this.mchName = order.getMchName();
|
||||
this.channelMchNo = order.getChannelMchNo();
|
||||
this.settleType = order.getSettleType();
|
||||
this.planAmt = order.getFindAmt() - totalRefundAmount - order.getMchFeeAmount() - order.getCashFee();
|
||||
this.ifCode = order.getIfCode();
|
||||
this.settleDate = DateUtil.formatDate(new DateTime());
|
||||
this.appid = order.getAppId();
|
||||
this.cashFee = order.getCashFee();
|
||||
this.extFlowNo = order.getPayOrderId();
|
||||
this.remark = "数据初始化";
|
||||
this.transactionNumber = order.getNumber();
|
||||
this.transactionAmount = order.getFindAmt() - totalRefundAmount;
|
||||
this.transDateScope = DateUtil.format(stateTransDate,DatePattern.NORM_DATE_PATTERN) + TRANS_SCOPE_DATE_SPLIT + DateUtil.format(endTransDate,DatePattern.NORM_DATE_PATTERN);
|
||||
this.fee = order.getMchFeeAmount();
|
||||
//TODO 如果是拉卡拉 除了支付宝和微信 金额小与10元 则D1结算
|
||||
if(CS.IF_CODE.LKLSPAY.equals(order.getIfCode())){
|
||||
if(!CS.PAY_WAY_CODE_TYPE.WECHAT.equals(order.getWayCodeType()) && !CS.PAY_WAY_CODE_TYPE.ALIPAY.equals(order.getWayCodeType())){
|
||||
this.settleType = CS.SETTLEMENT_TYPE.D1;
|
||||
this.setRemark(this.remark + "(拉卡拉通道银联云闪付交易或单笔超限交易均转为D1次日到账)");
|
||||
}
|
||||
if(order.getFindAmt().longValue() <= 100){
|
||||
this.settleType = CS.SETTLEMENT_TYPE.D1;
|
||||
this.setRemark(this.remark + "(拉卡拉通道单笔结算金额低于10元将会转为次日到账)");
|
||||
}
|
||||
}
|
||||
|
||||
//如果是D0 则设置结算金额 DO 交易 直接变成待确认
|
||||
if(CS.SETTLEMENT_TYPE.D0.equals(this.getSettleType())){
|
||||
this.settleAmt = BigDecimal.valueOf(order.getFindAmt()).subtract(BigDecimal.valueOf(order.getMchFeeAmount())).subtract(BigDecimal.valueOf(order.getCashFee())).longValue();
|
||||
this.state = CONFIRM;
|
||||
this.remark = "请登录对应的银行app,核实银行卡的到账流水";
|
||||
}
|
||||
}
|
||||
|
||||
public String getAccountNo() {
|
||||
if(StringUtils.isEmpty(this.accountNo)){
|
||||
return null;
|
||||
}
|
||||
if(this.accountNo.contains("*")){
|
||||
return this.accountNo;
|
||||
}
|
||||
return DesensitizedUtil.bankCard(this.accountNo);
|
||||
}
|
||||
|
||||
public String getAccountName() {
|
||||
if(StringUtils.isEmpty(this.accountName)){
|
||||
return null;
|
||||
}
|
||||
if(this.accountName.contains("*")){
|
||||
return this.accountName;
|
||||
}
|
||||
return DesensitizedUtil.chineseName(this.accountName);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,43 @@
|
||||
package com.jeequan.jeepay.db.entity;
|
||||
|
||||
import com.jeequan.jeepay.core.entity.TransferOrder;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
public class SettlementDataModel {
|
||||
|
||||
/**
|
||||
* 取值范围 WX ZFB BANK
|
||||
*/
|
||||
private String entryType;
|
||||
|
||||
/**
|
||||
* B:对公 C:对私
|
||||
*/
|
||||
private String accountType;
|
||||
|
||||
private String infoId;
|
||||
|
||||
private String infoType;
|
||||
|
||||
/**
|
||||
* 转账发起方
|
||||
*/
|
||||
private String transferSubjectIdFq;
|
||||
|
||||
private String taskId;
|
||||
|
||||
private List<TransferOrder> transferOrders;
|
||||
|
||||
//1:单笔 2:批量
|
||||
private Integer type;
|
||||
|
||||
/**
|
||||
* 转账描述
|
||||
*/
|
||||
private String transferDesc;
|
||||
|
||||
private String isvNo;
|
||||
}
|
||||
@@ -0,0 +1,139 @@
|
||||
package com.jeequan.jeepay.db.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 通道数据统计表
|
||||
* </p>
|
||||
*
|
||||
* @author [mybatis plus generator]
|
||||
* @since 2022-12-20
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@Accessors(chain = true)
|
||||
@TableName("t_stats_channel")
|
||||
public class StatsChannel implements Serializable {
|
||||
|
||||
public static final LambdaQueryWrapper<StatsChannel> gw(){
|
||||
return new LambdaQueryWrapper<>();
|
||||
}
|
||||
|
||||
private static final long serialVersionUID=1L;
|
||||
|
||||
/**
|
||||
* ID
|
||||
*/
|
||||
@TableId(value = "id", type = IdType.AUTO)
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 统计日期
|
||||
*/
|
||||
private Date statsDate;
|
||||
|
||||
/**
|
||||
* 支付接口代码
|
||||
*/
|
||||
private String ifCode;
|
||||
|
||||
/**
|
||||
* 商户号
|
||||
*/
|
||||
private String mchNo;
|
||||
|
||||
/**
|
||||
* 服务商号
|
||||
*/
|
||||
private String agentNo;
|
||||
|
||||
/**
|
||||
* 服务商号
|
||||
*/
|
||||
private String isvNo;
|
||||
|
||||
/**
|
||||
* 订单总笔数
|
||||
*/
|
||||
private Long totalCount;
|
||||
|
||||
/**
|
||||
* 订单总金额,单位分
|
||||
*/
|
||||
private Long totalAmount;
|
||||
|
||||
/**
|
||||
* 成交订单笔数,含退款
|
||||
*/
|
||||
private Long successCount;
|
||||
|
||||
/**
|
||||
* 成交订单金额,单位分,含退款金额和手续费
|
||||
*/
|
||||
private Long successAmount;
|
||||
|
||||
/**
|
||||
* 商户手续费,单位分
|
||||
*/
|
||||
private Long fee;
|
||||
|
||||
/**
|
||||
* 商户手续费回退,单位分,退款时退还的手续费
|
||||
*/
|
||||
private Long refundFee;
|
||||
|
||||
/**
|
||||
* 实收金额,单位分,成交订单金额减去手续费
|
||||
*/
|
||||
private Long realAmount;
|
||||
|
||||
/**
|
||||
* 退款总笔数,一笔订单多次退款,则计多次
|
||||
*/
|
||||
private Long refundCount;
|
||||
|
||||
/**
|
||||
* 退款金额,单位分
|
||||
*/
|
||||
private Long refundAmount;
|
||||
|
||||
/**
|
||||
* 交易成功率,成交订单笔数/订单总笔数
|
||||
*/
|
||||
private String successRate;
|
||||
|
||||
/**
|
||||
* 状态,1-完成 0-异常
|
||||
*/
|
||||
private Byte state;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
private Date createdAt;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
private Date updatedAt;
|
||||
|
||||
/**
|
||||
* 实付金额
|
||||
*/
|
||||
private Long finalAmt;
|
||||
|
||||
/**
|
||||
* 垫资手续费
|
||||
*/
|
||||
private Long cashFee;
|
||||
}
|
||||
@@ -0,0 +1,151 @@
|
||||
package com.jeequan.jeepay.db.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 设备数据统计表
|
||||
* </p>
|
||||
*
|
||||
* @author [mybatis plus generator]
|
||||
* @since 2022-12-20
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@Accessors(chain = true)
|
||||
@TableName("t_stats_device")
|
||||
public class StatsDevice implements Serializable {
|
||||
|
||||
public static final LambdaQueryWrapper<StatsDevice> gw(){
|
||||
return new LambdaQueryWrapper<>();
|
||||
}
|
||||
|
||||
private static final long serialVersionUID=1L;
|
||||
|
||||
/**
|
||||
* ID
|
||||
*/
|
||||
@TableId(value = "id", type = IdType.AUTO)
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 统计日期
|
||||
*/
|
||||
private Date statsDate;
|
||||
|
||||
/**
|
||||
* 设备类型,参考t_pay_order
|
||||
*/
|
||||
private String deviceType;
|
||||
|
||||
/**
|
||||
* 设备号
|
||||
*/
|
||||
private String deviceNo;
|
||||
|
||||
/**
|
||||
* 设备厂商:参考配置表
|
||||
*/
|
||||
private String provider;
|
||||
|
||||
/**
|
||||
* 门店ID
|
||||
*/
|
||||
private String storeId;
|
||||
|
||||
/**
|
||||
* 商户号
|
||||
*/
|
||||
private String mchNo;
|
||||
|
||||
/**
|
||||
* 服务商号
|
||||
*/
|
||||
private String agentNo;
|
||||
|
||||
/**
|
||||
* 服务商号
|
||||
*/
|
||||
private String isvNo;
|
||||
|
||||
/**
|
||||
* 订单总笔数
|
||||
*/
|
||||
private Long totalCount;
|
||||
|
||||
/**
|
||||
* 订单总金额,单位分
|
||||
*/
|
||||
private Long totalAmount;
|
||||
|
||||
/**
|
||||
* 成交订单笔数,含退款
|
||||
*/
|
||||
private Long successCount;
|
||||
|
||||
/**
|
||||
* 成交订单金额,单位分,含退款金额和手续费
|
||||
*/
|
||||
private Long successAmount;
|
||||
|
||||
/**
|
||||
* 商户手续费,单位分
|
||||
*/
|
||||
private Long fee;
|
||||
|
||||
/**
|
||||
* 实收金额,单位分,成交订单金额减去手续费
|
||||
*/
|
||||
private Long realAmount;
|
||||
|
||||
/**
|
||||
* 退款总笔数,一笔订单多次退款,则计多次
|
||||
*/
|
||||
private Long refundCount;
|
||||
|
||||
/**
|
||||
* 退款金额,单位分
|
||||
*/
|
||||
private Long refundAmount;
|
||||
|
||||
/**
|
||||
* 交易成功率,成交订单笔数/订单总笔数
|
||||
*/
|
||||
private String successRate;
|
||||
|
||||
/**
|
||||
* 状态,1-完成 0-异常
|
||||
*/
|
||||
private Byte state;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
private Date createdAt;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
private Date updatedAt;
|
||||
|
||||
|
||||
/**
|
||||
* 实付金额
|
||||
*/
|
||||
private Long finalAmt;
|
||||
|
||||
/**
|
||||
* 垫资手续费
|
||||
*/
|
||||
private Long cashFee;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,144 @@
|
||||
package com.jeequan.jeepay.db.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 支付方式数据统计表
|
||||
* </p>
|
||||
*
|
||||
* @author [mybatis plus generator]
|
||||
* @since 2022-12-20
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@Accessors(chain = true)
|
||||
@TableName("t_stats_pay_way")
|
||||
public class StatsPayWay implements Serializable {
|
||||
|
||||
public static final LambdaQueryWrapper<StatsPayWay> gw(){
|
||||
return new LambdaQueryWrapper<>();
|
||||
}
|
||||
|
||||
private static final long serialVersionUID=1L;
|
||||
|
||||
/**
|
||||
* ID
|
||||
*/
|
||||
@TableId(value = "id", type = IdType.AUTO)
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 统计日期
|
||||
*/
|
||||
private Date statsDate;
|
||||
|
||||
/**
|
||||
* 支付接口代码
|
||||
*/
|
||||
private String wayCode;
|
||||
|
||||
/**
|
||||
* 支付接口代码类型
|
||||
*/
|
||||
private String wayCodeType;
|
||||
|
||||
/**
|
||||
* 门店ID
|
||||
*/
|
||||
private String storeId;
|
||||
|
||||
/**
|
||||
* 商户号
|
||||
*/
|
||||
private String mchNo;
|
||||
|
||||
/**
|
||||
* 服务商号
|
||||
*/
|
||||
private String agentNo;
|
||||
|
||||
/**
|
||||
* 服务商号
|
||||
*/
|
||||
private String isvNo;
|
||||
|
||||
/**
|
||||
* 订单总笔数
|
||||
*/
|
||||
private Long totalCount;
|
||||
|
||||
/**
|
||||
* 订单总金额,单位分
|
||||
*/
|
||||
private Long totalAmount;
|
||||
|
||||
/**
|
||||
* 成交订单笔数,含退款
|
||||
*/
|
||||
private Long successCount;
|
||||
|
||||
/**
|
||||
* 成交订单金额,单位分,含退款金额和手续费
|
||||
*/
|
||||
private Long successAmount;
|
||||
|
||||
/**
|
||||
* 商户手续费,单位分
|
||||
*/
|
||||
private Long fee;
|
||||
|
||||
/**
|
||||
* 实收金额,单位分,成交订单金额减去手续费
|
||||
*/
|
||||
private Long realAmount;
|
||||
|
||||
/**
|
||||
* 退款总笔数,一笔订单多次退款,则计多次
|
||||
*/
|
||||
private Long refundCount;
|
||||
|
||||
/**
|
||||
* 退款金额,单位分
|
||||
*/
|
||||
private Long refundAmount;
|
||||
|
||||
/**
|
||||
* 交易成功率,成交订单笔数/订单总笔数
|
||||
*/
|
||||
private String successRate;
|
||||
|
||||
/**
|
||||
* 状态,1-完成 0-异常
|
||||
*/
|
||||
private Byte state;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
private Date createdAt;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
private Date updatedAt;
|
||||
|
||||
/**
|
||||
* 实付金额
|
||||
*/
|
||||
private Long finalAmt;
|
||||
|
||||
/**
|
||||
* 垫资手续费
|
||||
*/
|
||||
private Long cashFee;
|
||||
}
|
||||
@@ -0,0 +1,95 @@
|
||||
package com.jeequan.jeepay.db.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 数据统计任务记录表
|
||||
* </p>
|
||||
*
|
||||
* @author [mybatis plus generator]
|
||||
* @since 2023-02-07
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@Accessors(chain = true)
|
||||
@TableName("t_stats_task_record")
|
||||
public class StatsTaskRecord implements Serializable {
|
||||
|
||||
public static final LambdaQueryWrapper<StatsTaskRecord> gw(){
|
||||
return new LambdaQueryWrapper<>();
|
||||
}
|
||||
|
||||
// 任务类型: 1-统计定时任务 2-平台数据修复
|
||||
public static Byte TASK_TYPE_CRON = 1;
|
||||
public static Byte TASK_TYPE_REPAIR = 2;
|
||||
|
||||
// 状态 0-任务进行中 1-任务完成 2-任务失败
|
||||
public static Byte TASK_STATE_ING = 0;
|
||||
public static Byte TASK_STATE_SUCCESS = 1;
|
||||
public static Byte TASK_STATE_FAIL = 2;
|
||||
|
||||
private static final long serialVersionUID=1L;
|
||||
|
||||
/**
|
||||
* ID
|
||||
*/
|
||||
@TableId(value = "id", type = IdType.AUTO)
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 任务类型: 1-统计定时任务 2-平台数据修复
|
||||
*/
|
||||
private Byte taskType;
|
||||
|
||||
/**
|
||||
* 任务开始时间
|
||||
*/
|
||||
private Date beginTime;
|
||||
|
||||
/**
|
||||
* 任务结束时间
|
||||
*/
|
||||
private Date endTime;
|
||||
|
||||
/**
|
||||
* 统计开始日期
|
||||
*/
|
||||
private String statsBeginDate;
|
||||
|
||||
/**
|
||||
* 统计结束日期
|
||||
*/
|
||||
private String statsEndDate;
|
||||
|
||||
/**
|
||||
* 状态,0-任务进行中 1-任务完成 2-任务失败
|
||||
*/
|
||||
private Byte state;
|
||||
|
||||
/**
|
||||
* 任务成功/失败描述
|
||||
*/
|
||||
private String errMsg;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
private Date createdAt;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
private Date updatedAt;
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,160 @@
|
||||
package com.jeequan.jeepay.db.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 交易数据统计表
|
||||
* </p>
|
||||
*
|
||||
* @author [mybatis plus generator]
|
||||
* @since 2022-12-20
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@Accessors(chain = true)
|
||||
@TableName("t_stats_trade")
|
||||
public class StatsTrade implements Serializable {
|
||||
|
||||
public static final LambdaQueryWrapper<StatsTrade> gw(){
|
||||
return new LambdaQueryWrapper<>();
|
||||
}
|
||||
|
||||
private static final long serialVersionUID=1L;
|
||||
|
||||
/**
|
||||
* ID
|
||||
*/
|
||||
@TableId(value = "id", type = IdType.AUTO)
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 统计日期
|
||||
*/
|
||||
private Date statsDate;
|
||||
|
||||
/**
|
||||
* 门店ID
|
||||
*/
|
||||
private String storeId;
|
||||
|
||||
/**
|
||||
* 商户号
|
||||
*/
|
||||
private String mchNo;
|
||||
|
||||
/**
|
||||
* 服务商号
|
||||
*/
|
||||
private String agentNo;
|
||||
|
||||
/**
|
||||
* 服务商号
|
||||
*/
|
||||
private String isvNo;
|
||||
|
||||
/**
|
||||
* 订单总笔数
|
||||
*/
|
||||
private Long totalCount;
|
||||
|
||||
/**
|
||||
* 订单总金额,单位分
|
||||
*/
|
||||
private Long totalAmount;
|
||||
|
||||
/**
|
||||
* 成交订单笔数,含退款
|
||||
*/
|
||||
private Long successCount;
|
||||
|
||||
/**
|
||||
* 成交订单金额,单位分,含退款金额和手续费
|
||||
*/
|
||||
private Long successAmount;
|
||||
|
||||
/**
|
||||
* 商户手续费,单位分
|
||||
*/
|
||||
private Long fee;
|
||||
|
||||
/**
|
||||
* 商户手续费回退,单位分,退款时退换的手续费
|
||||
*/
|
||||
private Long refundFee;
|
||||
|
||||
/**
|
||||
* 实收金额,单位分,成交订单金额减去手续费
|
||||
*/
|
||||
private Long realAmount;
|
||||
|
||||
/**
|
||||
* 退款总笔数,一笔订单多次退款,则计多次
|
||||
*/
|
||||
private Long refundCount;
|
||||
|
||||
/**
|
||||
* 退款金额,单位分
|
||||
*/
|
||||
private Long refundAmount;
|
||||
|
||||
/**
|
||||
* 服务商佣金,单位分
|
||||
*/
|
||||
private Long agentProfit;
|
||||
|
||||
/**
|
||||
* 交易成功率,成交订单笔数/订单总笔数
|
||||
*/
|
||||
private String successRate;
|
||||
|
||||
/**
|
||||
* 状态,1-完成 0-异常
|
||||
*/
|
||||
private Byte state;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
private Date createdAt;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
private Date updatedAt;
|
||||
|
||||
/**
|
||||
* 优惠金额
|
||||
*/
|
||||
private Long discountAmt;
|
||||
|
||||
|
||||
/**
|
||||
* 补贴金额
|
||||
*/
|
||||
private Long marketAmt;
|
||||
|
||||
/**
|
||||
* 实收金额
|
||||
*/
|
||||
private Long findAmt;
|
||||
|
||||
/**
|
||||
* 扩展分账金额
|
||||
*/
|
||||
private Long extDivAmt;
|
||||
|
||||
/**
|
||||
* 垫资手续费
|
||||
*/
|
||||
private Long cashFee;
|
||||
}
|
||||
@@ -0,0 +1,141 @@
|
||||
package com.jeequan.jeepay.db.entity;
|
||||
|
||||
import com.alibaba.fastjson.annotation.JSONField;
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.jeequan.jeepay.core.model.BaseModel;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 代付数据统计
|
||||
*
|
||||
* @author [mybatis plus generator]
|
||||
* @since 2024-05-22
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@Accessors(chain = true)
|
||||
@TableName("t_stats_transfer")
|
||||
public class StatsTransferEntity extends BaseModel implements Serializable {
|
||||
|
||||
private static final long serialVersionUID=1L;
|
||||
|
||||
/**
|
||||
* ID
|
||||
*/
|
||||
@TableId(value = "id", type = IdType.AUTO)
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 统计日期
|
||||
*/
|
||||
@JSONField(format = "yyyy-MM-dd")
|
||||
private Date statsDate;
|
||||
|
||||
/**
|
||||
* 转账发起方ID
|
||||
*/
|
||||
private String subjectId;
|
||||
|
||||
/**
|
||||
* 通道编码
|
||||
*/
|
||||
private String ifCode;
|
||||
|
||||
/**
|
||||
* 商户号
|
||||
*/
|
||||
private String mchNo;
|
||||
|
||||
/**
|
||||
* 服务商号
|
||||
*/
|
||||
private String agentNo;
|
||||
|
||||
/**
|
||||
* 渠道号
|
||||
*/
|
||||
private String isvNo;
|
||||
|
||||
/**
|
||||
* 订单总笔数
|
||||
*/
|
||||
private Long totalCount;
|
||||
|
||||
/**
|
||||
* 订单总金额,单位分
|
||||
*/
|
||||
private Long totalAmount;
|
||||
|
||||
private Long wxTotalCount;
|
||||
|
||||
private Long zfbTotalCount;
|
||||
|
||||
private Long bankTotalCount;
|
||||
|
||||
private Long wxTotalAmount;
|
||||
|
||||
private Long zfbTotalAmount;
|
||||
|
||||
private Long bankTotalAmount;
|
||||
|
||||
/**
|
||||
* 充值订单总笔数
|
||||
*/
|
||||
private Long totalChargeCount;
|
||||
|
||||
/**
|
||||
* 充值订单总金额
|
||||
*/
|
||||
private Long totalChargeAmount;
|
||||
|
||||
/**
|
||||
* 商户手续费,单位分
|
||||
*/
|
||||
private Long fee;
|
||||
|
||||
/**
|
||||
* 实收金额,单位分
|
||||
*/
|
||||
private Long realAmount;
|
||||
|
||||
/**
|
||||
* 代理商佣金,单位分
|
||||
*/
|
||||
private Long agentProfit;
|
||||
|
||||
/**
|
||||
* 状态,1-完成 0-异常
|
||||
*/
|
||||
private Byte state;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
private Date createdAt;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
private Date updatedAt;
|
||||
|
||||
@TableField(exist = false)
|
||||
private String ifCodeName;
|
||||
@TableField(exist = false)
|
||||
private String mchName;
|
||||
@TableField(exist = false)
|
||||
private String agentName;
|
||||
@TableField(exist = false)
|
||||
private String isvName;
|
||||
@TableField(exist = false)
|
||||
private String subjectName;
|
||||
@TableField(exist = false)
|
||||
private String transChannelMchNo;
|
||||
}
|
||||
@@ -0,0 +1,124 @@
|
||||
package com.jeequan.jeepay.db.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.jeequan.jeepay.core.model.BaseModel;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 商户员工交接班记录表
|
||||
* </p>
|
||||
*
|
||||
* @author [mybatis plus generator]
|
||||
* @since 2023-01-28
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@Accessors(chain = true)
|
||||
@TableName("t_store_user_work_record")
|
||||
public class StoreUserWorkRecord extends BaseModel {
|
||||
|
||||
public static final LambdaQueryWrapper<StoreUserWorkRecord> gw(){
|
||||
return new LambdaQueryWrapper<>();
|
||||
}
|
||||
|
||||
private static final long serialVersionUID=1L;
|
||||
/** 员工交接班状态 1-上班 2-下班 **/
|
||||
public static final byte WORK_STATE_START =1;
|
||||
public static final byte WORK_STATE_END =2;
|
||||
|
||||
/**
|
||||
* ID
|
||||
*/
|
||||
@TableId(value = "id", type = IdType.AUTO)
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 用户ID
|
||||
*/
|
||||
private Long sysUserId;
|
||||
|
||||
/**
|
||||
* 登录用户名
|
||||
*/
|
||||
private String loginUsername;
|
||||
|
||||
/**
|
||||
* 真实姓名
|
||||
*/
|
||||
private String realname;
|
||||
|
||||
/**
|
||||
* 员工编号
|
||||
*/
|
||||
private String userNo;
|
||||
|
||||
/**
|
||||
* 门店ID
|
||||
*/
|
||||
private String storeId;
|
||||
|
||||
/**
|
||||
* 商户编号
|
||||
*/
|
||||
private String mchNo;
|
||||
|
||||
/**
|
||||
* 成交订单笔数,含退款
|
||||
*/
|
||||
private Long successCount;
|
||||
|
||||
/**
|
||||
* 成交订单金额,单位分,含退款金额和手续费
|
||||
*/
|
||||
private Long successAmount;
|
||||
|
||||
/**
|
||||
* 退款总笔数,一笔订单多次退款,则计多次
|
||||
*/
|
||||
private Long refundCount;
|
||||
|
||||
/**
|
||||
* 退款金额,单位分
|
||||
*/
|
||||
private Long refundAmount;
|
||||
|
||||
/**
|
||||
* 登录时间
|
||||
*/
|
||||
private Date workStartTime;
|
||||
|
||||
/**
|
||||
* 登录方式, 参考:JWTPayload
|
||||
*/
|
||||
private String loginPageType;
|
||||
|
||||
/**
|
||||
* 退出时间
|
||||
*/
|
||||
private Date workEndTime;
|
||||
|
||||
/**
|
||||
* 登出方式, 参考:JWTPayload
|
||||
*/
|
||||
private String logoutPageType;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
private Date createdAt;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
private Date updatedAt;
|
||||
|
||||
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user