Compare commits
merge into: huangqizhen:master
huangqizhen:dev
huangqizhen:huangqizheng/feature-20250707173453-7.7bug修改
huangqizhen:huangqizheng/feature-20250708175155-7.8bug修复
huangqizhen:huangqizheng/feature-20250709163552-7.8导出传输对象修复
huangqizhen:huangqizheng/feature-20250710151401-数据同步完成
huangqizhen:huangqizheng/feature-20250714180618-数据同步
huangqizhen:huangqizheng/feature-20250715100115-非测试数据筛选
huangqizhen:huangqizheng/feature-20250717200321-优化导出
huangqizhen:huangqizheng/feature-20250718222252-导出修改完毕
huangqizhen:huangqizheng/feature-20250719105717-后端完毕
huangqizhen:huangqizheng/feature-20250721170818-后端周末修改
huangqizhen:huangqizheng/feature-20250722105318-BUG修改
huangqizhen:huangqizheng/feature-20250725144236-精简日志
huangqizhen:huangqizheng/feature-20250728134614-三期数据库配置
huangqizhen:huangqizheng/feature-20250731164458-地区部分修改以及导出的封装
huangqizhen:huangqizheng/feature-20250801114957-导出
huangqizhen:huangqizheng/feature-20250801180134-消费导出
huangqizhen:huangqizheng/feature-20250803175216-导出完毕
huangqizhen:huangqizheng/feature-20250804114811-打包配置
huangqizhen:huangqizheng/feature-20250805200446-配置修改及充值导出修改
huangqizhen:huangqizheng/feature-20250806120055-修复BUG
huangqizhen:huangqizheng/feature-20250808172612-bug修复
huangqizhen:huangqizheng/feature-20250809103653-修改配置导出重新上传
huangqizhen:huangqizheng/feature-20250809184038-研发部校验
huangqizhen:huangqizheng/feature-20251104113536-现金管理二期退款修改
huangqizhen:huangqizheng/feature-20251119150446-退款合并后
huangqizhen:huangqizheng/feature-20251203174217-冲刺计划
huangqizhen:huangqizheng/feature-20260106155423-红包修改
huangqizhen:huangqizheng/feature-20260113143035-现金管理0109
huangqizhen:huangqizheng/feature-20260128093535-免费金币接口
huangqizhen:huangqizheng/feature-20260129114800-验证码
huangqizhen:huangqizheng/feature-20260309142559-钱包退款
huangqizhen:lihuilin/hotfix-20250810160509-余额地区传参
huangqizhen:lihuilin/hotfix-20250815-审核默认更新时间
huangqizhen:lihuilin1015备份
huangqizhen:lijianlin/feature-20250623120104-工作台与审核
huangqizhen:lijianlin/feature-20250710152503-二期工作台与部分权限
huangqizhen:lijianlin/feature-20250728171217-三期金豆消费相关
huangqizhen:lijianlin/feature-202509231533026-现金管理-收款管理
huangqizhen:lijianlin/feature-20251104110749-现金管理二期
huangqizhen:lijianlin/feature-20251209-现金管理三期
huangqizhen:lijianlin/feature-20251211-fix
huangqizhen:lijianlin/feature-20260113-现金管理0109
huangqizhen:lijianlin/feature-20260128-金币日常优化V1.0
huangqizhen:lijianlin/feature-20260225-金币钱包体系
huangqizhen:lijianlin/feature-20260401-现金管理四期
huangqizhen:master
huangqizhen:milestone-20250702-金币重构一期
huangqizhen:milestone-20250711-金币重构二期
huangqizhen:milestone-20250727-金币重构三期
huangqizhen:milestone-20251016-现金管理
huangqizhen:milestone-20251104-现金管理二期
huangqizhen:milestone-20251125-多语言
huangqizhen:milestone-20251203-冲刺计划
huangqizhen:milestone-20251205-消费
huangqizhen:milestone-20251209-多语言二期
huangqizhen:milestone-20251215-优化
huangqizhen:milestone-20251215-红包修改
huangqizhen:milestone-20260113-现金管理0109
huangqizhen:milestone-20260128-DC金豆金币接口
huangqizhen:milestone-20260128-金币日常优化1.0
huangqizhen:milestone-20260224-现金钱包
huangqizhen:milestone-20260327-金币日常优化2.0
huangqizhen:milestone-20260401-现金管理四期
huangqizhen:sunjiabei/feature-20250623130922-消费功能
huangqizhen:sunjiabei/feature-20250710132313-二期模块
huangqizhen:sunjiabei/feature-20250725135225-金币三期
huangqizhen:sunjiabei/feature-20250822111257-平台和商品id字段替换
huangqizhen:sunjiabei/feature-20250924164720-现金管理
huangqizhen:sunjiabei/feature-20251021102635-银行接口
huangqizhen:sunjiabei/feature-20251202094523-银行接口同步
huangqizhen:sunjiabei/feature-20251210111313-消费
huangqizhen:wangguorui/feature-20251125171605-现金管理多语言配置
huangqizhen:wangguorui/hotfix-20260312160508-线上退款
huangqizhen:wangyetao/feature-20250628170337-汇率
huangqizhen:wangyetao/feature-20250715095107-地区数据权限
huangqizhen:yufenghao/feature-20251106105659-现金管理接口优化
huangqizhen:合并分支使用
huangqizhen:工作流配置
pull from: huangqizhen:milestone-20260401-现金管理四期
huangqizhen:dev
huangqizhen:huangqizheng/feature-20250707173453-7.7bug修改
huangqizhen:huangqizheng/feature-20250708175155-7.8bug修复
huangqizhen:huangqizheng/feature-20250709163552-7.8导出传输对象修复
huangqizhen:huangqizheng/feature-20250710151401-数据同步完成
huangqizhen:huangqizheng/feature-20250714180618-数据同步
huangqizhen:huangqizheng/feature-20250715100115-非测试数据筛选
huangqizhen:huangqizheng/feature-20250717200321-优化导出
huangqizhen:huangqizheng/feature-20250718222252-导出修改完毕
huangqizhen:huangqizheng/feature-20250719105717-后端完毕
huangqizhen:huangqizheng/feature-20250721170818-后端周末修改
huangqizhen:huangqizheng/feature-20250722105318-BUG修改
huangqizhen:huangqizheng/feature-20250725144236-精简日志
huangqizhen:huangqizheng/feature-20250728134614-三期数据库配置
huangqizhen:huangqizheng/feature-20250731164458-地区部分修改以及导出的封装
huangqizhen:huangqizheng/feature-20250801114957-导出
huangqizhen:huangqizheng/feature-20250801180134-消费导出
huangqizhen:huangqizheng/feature-20250803175216-导出完毕
huangqizhen:huangqizheng/feature-20250804114811-打包配置
huangqizhen:huangqizheng/feature-20250805200446-配置修改及充值导出修改
huangqizhen:huangqizheng/feature-20250806120055-修复BUG
huangqizhen:huangqizheng/feature-20250808172612-bug修复
huangqizhen:huangqizheng/feature-20250809103653-修改配置导出重新上传
huangqizhen:huangqizheng/feature-20250809184038-研发部校验
huangqizhen:huangqizheng/feature-20251104113536-现金管理二期退款修改
huangqizhen:huangqizheng/feature-20251119150446-退款合并后
huangqizhen:huangqizheng/feature-20251203174217-冲刺计划
huangqizhen:huangqizheng/feature-20260106155423-红包修改
huangqizhen:huangqizheng/feature-20260113143035-现金管理0109
huangqizhen:huangqizheng/feature-20260128093535-免费金币接口
huangqizhen:huangqizheng/feature-20260129114800-验证码
huangqizhen:huangqizheng/feature-20260309142559-钱包退款
huangqizhen:lihuilin/hotfix-20250810160509-余额地区传参
huangqizhen:lihuilin/hotfix-20250815-审核默认更新时间
huangqizhen:lihuilin1015备份
huangqizhen:lijianlin/feature-20250623120104-工作台与审核
huangqizhen:lijianlin/feature-20250710152503-二期工作台与部分权限
huangqizhen:lijianlin/feature-20250728171217-三期金豆消费相关
huangqizhen:lijianlin/feature-202509231533026-现金管理-收款管理
huangqizhen:lijianlin/feature-20251104110749-现金管理二期
huangqizhen:lijianlin/feature-20251209-现金管理三期
huangqizhen:lijianlin/feature-20251211-fix
huangqizhen:lijianlin/feature-20260113-现金管理0109
huangqizhen:lijianlin/feature-20260128-金币日常优化V1.0
huangqizhen:lijianlin/feature-20260225-金币钱包体系
huangqizhen:lijianlin/feature-20260401-现金管理四期
huangqizhen:master
huangqizhen:milestone-20250702-金币重构一期
huangqizhen:milestone-20250711-金币重构二期
huangqizhen:milestone-20250727-金币重构三期
huangqizhen:milestone-20251016-现金管理
huangqizhen:milestone-20251104-现金管理二期
huangqizhen:milestone-20251125-多语言
huangqizhen:milestone-20251203-冲刺计划
huangqizhen:milestone-20251205-消费
huangqizhen:milestone-20251209-多语言二期
huangqizhen:milestone-20251215-优化
huangqizhen:milestone-20251215-红包修改
huangqizhen:milestone-20260113-现金管理0109
huangqizhen:milestone-20260128-DC金豆金币接口
huangqizhen:milestone-20260128-金币日常优化1.0
huangqizhen:milestone-20260224-现金钱包
huangqizhen:milestone-20260327-金币日常优化2.0
huangqizhen:milestone-20260401-现金管理四期
huangqizhen:sunjiabei/feature-20250623130922-消费功能
huangqizhen:sunjiabei/feature-20250710132313-二期模块
huangqizhen:sunjiabei/feature-20250725135225-金币三期
huangqizhen:sunjiabei/feature-20250822111257-平台和商品id字段替换
huangqizhen:sunjiabei/feature-20250924164720-现金管理
huangqizhen:sunjiabei/feature-20251021102635-银行接口
huangqizhen:sunjiabei/feature-20251202094523-银行接口同步
huangqizhen:sunjiabei/feature-20251210111313-消费
huangqizhen:wangguorui/feature-20251125171605-现金管理多语言配置
huangqizhen:wangguorui/hotfix-20260312160508-线上退款
huangqizhen:wangyetao/feature-20250628170337-汇率
huangqizhen:wangyetao/feature-20250715095107-地区数据权限
huangqizhen:yufenghao/feature-20251106105659-现金管理接口优化
huangqizhen:合并分支使用
huangqizhen:工作流配置
61 Commits
master
...
milestone-
46 changed files with 1085 additions and 146 deletions
-
18pom.xml
-
63src/main/java/com/example/demo/Util/AppleJWTGenerator.java
-
6src/main/java/com/example/demo/Util/AuthKey_3J2S9VXU3V.p8
-
35src/main/java/com/example/demo/Util/ExcelHeaderTranslator.java
-
89src/main/java/com/example/demo/controller/cash/CashCollectionController.java
-
76src/main/java/com/example/demo/controller/coin/MarketController.java
-
48src/main/java/com/example/demo/controller/coin/RechargeActivityCenterController.java
-
33src/main/java/com/example/demo/domain/DTO/AddFundsDTO.java
-
19src/main/java/com/example/demo/domain/DTO/AreaPayTypeDTO.java
-
29src/main/java/com/example/demo/domain/DTO/PerformanceAdjustmentDTO.java
-
3src/main/java/com/example/demo/domain/entity/CashRecord.java
-
4src/main/java/com/example/demo/domain/entity/UserWalletRecord.java
-
20src/main/java/com/example/demo/domain/vo/cash/AreaPayTypeTreeVO.java
-
2src/main/java/com/example/demo/domain/vo/cash/CashCollection.java
-
45src/main/java/com/example/demo/domain/vo/cash/FundsDTO.java
-
16src/main/java/com/example/demo/domain/vo/cash/PayTypeVO.java
-
13src/main/java/com/example/demo/domain/vo/cash/PerformanceVO.java
-
1src/main/java/com/example/demo/domain/vo/cash/UserWalletRecordVO.java
-
13src/main/java/com/example/demo/domain/vo/coin/AreaInfo.java
-
14src/main/java/com/example/demo/mapper/cash/CashCollectionMapper.java
-
3src/main/java/com/example/demo/mapper/coin/MarketMapper.java
-
2src/main/java/com/example/demo/mapper/coin/RateMapper.java
-
4src/main/java/com/example/demo/mapper/coin/RechargeActivityCenterMapper.java
-
1src/main/java/com/example/demo/mapper/coin/UserMapper.java
-
16src/main/java/com/example/demo/service/cash/CashCollectionService.java
-
4src/main/java/com/example/demo/service/coin/MarketService.java
-
4src/main/java/com/example/demo/service/coin/RechargeActivityCenterService.java
-
5src/main/java/com/example/demo/serviceImpl/cash/BankServiceImpl.java
-
29src/main/java/com/example/demo/serviceImpl/cash/CashAuditServiceImpl.java
-
163src/main/java/com/example/demo/serviceImpl/cash/CashCollectionServiceImpl.java
-
42src/main/java/com/example/demo/serviceImpl/cash/CashRefundServiceImpl.java
-
1src/main/java/com/example/demo/serviceImpl/coin/AuditServiceImpl.java
-
4src/main/java/com/example/demo/serviceImpl/coin/ConsumeServiceImpl.java
-
4src/main/java/com/example/demo/serviceImpl/coin/ExportExcelServiceImpl.java
-
40src/main/java/com/example/demo/serviceImpl/coin/MarketServiceImpl.java
-
17src/main/java/com/example/demo/serviceImpl/coin/RechargeActivityCenterServiceImpl.java
-
7src/main/resources/application-test.yml
-
112src/main/resources/cashMapper/CashCollectionMapper.xml
-
155src/main/resources/cashMapper/CashRefundMapper.xml
-
2src/main/resources/mapper/ConsumeMapper.xml
-
12src/main/resources/mapper/MarketMapper.xml
-
3src/main/resources/mapper/RateMapper.xml
-
11src/main/resources/mapper/RechargeActivityCenterMapper.xml
-
6src/main/resources/mapper/UserMapper.xml
-
5src/main/resources/mapper/WalletMapper.xml
-
2src/main/resources/mapper/WorkBenchMapper.xml
@ -0,0 +1,63 @@ |
|||||
|
package com.example.demo.Util; |
||||
|
|
||||
|
import java.nio.file.Files; |
||||
|
import java.nio.file.Paths; |
||||
|
import java.security.KeyFactory; |
||||
|
import java.security.PrivateKey; |
||||
|
import java.security.spec.PKCS8EncodedKeySpec; |
||||
|
import java.util.Base64; |
||||
|
import java.util.Date; |
||||
|
|
||||
|
public class AppleJWTGenerator { |
||||
|
|
||||
|
// 你提供的信息 |
||||
|
private static final String KEY_ID = "3J2S9VXU3V"; |
||||
|
private static final String ISSUER_ID = "69a6de7e-1f9a-47e3-e053-5b8c7c11a4d1"; |
||||
|
private static final String P8_FILE_PATH = "E:/Work/newgold/gold-java/src/main/java/com/example/demo/Util/AuthKey_3J2S9VXU3V.p8"; |
||||
|
|
||||
|
public static void main(String[] args) { |
||||
|
try { |
||||
|
String token = generateAppleJWT(); |
||||
|
System.out.println("在 Apifox 里直接复制这一行:"); |
||||
|
System.out.println("Bearer " + token); |
||||
|
} catch (Exception e) { |
||||
|
e.printStackTrace(); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
public static String generateAppleJWT() throws Exception { |
||||
|
// 读取 p8 文件 |
||||
|
String p8Content = Files.readString(Paths.get(P8_FILE_PATH)) |
||||
|
.replace("-----BEGIN PRIVATE KEY-----", "") |
||||
|
.replace("-----END PRIVATE KEY-----", "") |
||||
|
.replaceAll("\\s+", ""); |
||||
|
|
||||
|
// 解码私钥 |
||||
|
byte[] decoded = Base64.getDecoder().decode(p8Content); |
||||
|
PKCS8EncodedKeySpec spec = new PKCS8EncodedKeySpec(decoded); |
||||
|
KeyFactory kf = KeyFactory.getInstance("EC"); |
||||
|
PrivateKey privateKey = kf.generatePrivate(spec); |
||||
|
|
||||
|
// ========== JWT Header ========== |
||||
|
String header = "{\"alg\":\"ES256\",\"kid\":\"" + KEY_ID + "\",\"typ\":\"JWT\"}"; |
||||
|
String headerBase64 = Base64.getUrlEncoder().withoutPadding().encodeToString(header.getBytes()); |
||||
|
|
||||
|
// ========== JWT Payload ========== |
||||
|
long now = new Date().getTime() / 1000; |
||||
|
String payload = String.format( |
||||
|
"{\"iss\":\"%s\",\"iat\":%d,\"exp\":%d,\"aud\":\"appstoreconnect-v1\"}", |
||||
|
ISSUER_ID, now, now + 15 * 60 // 15分钟有效期 |
||||
|
); |
||||
|
String payloadBase64 = Base64.getUrlEncoder().withoutPadding().encodeToString(payload.getBytes()); |
||||
|
|
||||
|
// ========== ES256 签名 ========== |
||||
|
String data = headerBase64 + "." + payloadBase64; |
||||
|
java.security.Signature signature = java.security.Signature.getInstance("SHA256withECDSAinP1363Format"); |
||||
|
signature.initSign(privateKey); |
||||
|
signature.update(data.getBytes()); |
||||
|
byte[] signed = signature.sign(); |
||||
|
String signatureBase64 = Base64.getUrlEncoder().withoutPadding().encodeToString(signed); |
||||
|
|
||||
|
return data + "." + signatureBase64; |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,6 @@ |
|||||
|
-----BEGIN PRIVATE KEY----- |
||||
|
MIGTAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBHkwdwIBAQQge12P08wGtrp8dttS |
||||
|
6fA0dtL46GYnBYEumTnx3/g53qGgCgYIKoZIzj0DAQehRANCAATiWWs9qLs7eYCv |
||||
|
ZIfG0JYRrLjLqotAGdEtfTii1gh+IKK4snS499kwk+vKg1vHy2ZovyZDdvmW/z+i |
||||
|
WSzRu18f |
||||
|
-----END PRIVATE KEY----- |
||||
@ -0,0 +1,33 @@ |
|||||
|
package com.example.demo.domain.DTO; |
||||
|
|
||||
|
import com.alibaba.excel.annotation.ExcelIgnore; |
||||
|
import com.fasterxml.jackson.annotation.JsonFormat; |
||||
|
import lombok.Data; |
||||
|
import lombok.NoArgsConstructor; |
||||
|
|
||||
|
import java.math.BigDecimal; |
||||
|
import java.util.Date; |
||||
|
|
||||
|
/** |
||||
|
* @program: gold-java |
||||
|
* @ClassName addFundsDTO |
||||
|
* @description: |
||||
|
* @author: Ethan |
||||
|
* @create: 2026−04-02 16:56 |
||||
|
* @Version 1.0 |
||||
|
**/ |
||||
|
@Data |
||||
|
@NoArgsConstructor |
||||
|
public class AddFundsDTO { |
||||
|
private String performanceMarket; //业绩归属地区 |
||||
|
private Integer goodNum; //商品数量 |
||||
|
private String payType; //付款方式 |
||||
|
private Integer paymentCurrency; //付款币种 |
||||
|
private BigDecimal paymentAmount; //付款金额 |
||||
|
@ExcelIgnore |
||||
|
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai") |
||||
|
private Date payTime; //付款时间 |
||||
|
private BigDecimal handlingCharge; //手续费 |
||||
|
private String remark; //备注 |
||||
|
|
||||
|
} |
||||
@ -0,0 +1,19 @@ |
|||||
|
package com.example.demo.domain.DTO; |
||||
|
|
||||
|
import lombok.Data; |
||||
|
/** |
||||
|
* @program: gold-java |
||||
|
* @ClassName AreaPayTypeDTO |
||||
|
* @description: |
||||
|
* @author: Ethan |
||||
|
* @create: 2026−04-03 16:06 |
||||
|
* @Version 1.0 |
||||
|
**/ |
||||
|
@Data |
||||
|
public class AreaPayTypeDTO { |
||||
|
private Integer areaId; |
||||
|
private String areaName; |
||||
|
private Integer payTypeId; |
||||
|
private String payTypeName; |
||||
|
private String payType; // 支付方式名称:pay_type |
||||
|
} |
||||
@ -0,0 +1,29 @@ |
|||||
|
package com.example.demo.domain.DTO; |
||||
|
|
||||
|
import com.fasterxml.jackson.annotation.JsonFormat; |
||||
|
import lombok.Data; |
||||
|
|
||||
|
import java.time.LocalDateTime; |
||||
|
import java.util.Date; |
||||
|
|
||||
|
/** |
||||
|
* @program: gold-java |
||||
|
* @ClassName PerformanceAdjustmentDTO |
||||
|
* @description: |
||||
|
* @author: Double |
||||
|
* @create: 2026−04-03 09:56 |
||||
|
* @Version 1.0 |
||||
|
**/ |
||||
|
|
||||
|
|
||||
|
|
||||
|
@Data |
||||
|
public class PerformanceAdjustmentDTO { |
||||
|
private Integer submitterId; // 提交人ID |
||||
|
private String submitterMarket; // 提交人市场 |
||||
|
private int[][] matrix = new int[6][6]; |
||||
|
private Double weight; // 权重 |
||||
|
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai") |
||||
|
private LocalDateTime time; // 时间 |
||||
|
|
||||
|
} |
||||
@ -0,0 +1,20 @@ |
|||||
|
package com.example.demo.domain.vo.cash; |
||||
|
|
||||
|
import lombok.Data; |
||||
|
|
||||
|
import java.util.List; |
||||
|
|
||||
|
/** |
||||
|
* @program: gold-java |
||||
|
* @ClassName AreaPayTypeTreeVO |
||||
|
* @description: |
||||
|
* @author: Ethan |
||||
|
* @create: 2026−04-03 16:04 |
||||
|
* @Version 1.0 |
||||
|
**/ |
||||
|
@Data |
||||
|
public class AreaPayTypeTreeVO { |
||||
|
private Integer id; // 地区ID |
||||
|
private String name; // 地区名称 |
||||
|
private List<PayTypeVO> children; // 支付方式列表 |
||||
|
} |
||||
@ -0,0 +1,16 @@ |
|||||
|
package com.example.demo.domain.vo.cash; |
||||
|
|
||||
|
import lombok.Data; |
||||
|
/** |
||||
|
* @program: gold-java |
||||
|
* @ClassName PayTypeVO |
||||
|
* @description: |
||||
|
* @author: Ethan |
||||
|
* @create: 2026−04-03 16:04 |
||||
|
* @Version 1.0 |
||||
|
**/ |
||||
|
@Data |
||||
|
public class PayTypeVO { |
||||
|
private Integer id; |
||||
|
private String name; |
||||
|
} |
||||
@ -0,0 +1,13 @@ |
|||||
|
package com.example.demo.domain.vo.coin; |
||||
|
|
||||
|
import lombok.AllArgsConstructor; |
||||
|
import lombok.Data; |
||||
|
import lombok.NoArgsConstructor; |
||||
|
|
||||
|
@Data |
||||
|
@NoArgsConstructor |
||||
|
@AllArgsConstructor |
||||
|
public class AreaInfo { |
||||
|
private String area; // 归属地 ID |
||||
|
private String areaName; // 归属地名称 |
||||
|
} |
||||
Write
Preview
Loading…
Cancel
Save
Reference in new issue