Ver código fonte

新增apidocs

wujiefeng 1 ano atrás
pai
commit
2e12ad95a6

+ 3 - 0
FullCardClient/src/main/java/com/zhongshu/card/client/model/pay/PeriodDetailQueryModel.java

@@ -19,6 +19,9 @@ public class PeriodDetailQueryModel {
     @Schema(description = "结束时间")
     private Long endTime;
 
+    @Schema(description = "时间")
+    private String createDate;
+
     @Schema(description = "账单流水编号")
     private String transactionLogId;
 

+ 27 - 0
FullCardClient/src/main/java/com/zhongshu/card/client/model/pay/SettleDetailQueryModel.java

@@ -0,0 +1,27 @@
+package com.zhongshu.card.client.model.pay;
+
+import com.github.microservice.types.payment.PaymentType;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+@Data
+public class SettleDetailQueryModel {
+
+    @Schema(description = "projectOid")
+    private String projectOid;
+
+    @Schema(description = "时间")
+    private String createDate;
+
+    @Schema(description = "账单流水编号")
+    private String transactionLogId;
+
+    @Schema(description = "关联订单号")
+    private String orderNo;
+
+    @Schema(description = "账单类型: Credit(进账),Debit(出账)")
+    private String ledgerEntry;
+
+    @Schema(description = "支付方式:UserWallet(余额支付),UnionFrictionlessPay(银联无感支付)")
+    private PaymentType paymentType;
+}

+ 7 - 0
FullCardClient/src/main/java/com/zhongshu/card/client/model/pay/SettleDetailQueryParam.java

@@ -0,0 +1,7 @@
+package com.zhongshu.card.client.model.pay;
+
+import lombok.Data;
+
+@Data
+public class SettleDetailQueryParam {
+}

+ 5 - 0
FullCardClient/src/main/java/com/zhongshu/card/client/utils/DateUtils.java

@@ -879,5 +879,10 @@ public class DateUtils {
 
         Integer weekNumber = getWeekOfYear(System.currentTimeMillis());
         log.info("本年一共{}周,本周是第{}周,本周时间区间:{}-{}", getYearWeekCount(2023), weekNumber, paresTime(getWeekStartTime(2023, weekNumber), FORMAT_LONG), paresTime(getWeekEndTime(2023, weekNumber), FORMAT_LONG));
+
+        Long time = DateUtils.timeToLong("2024-11-8", "yyyy-MM-dd");
+        String s = DateUtils.paresTime(time, "yyyy-MM-dd");
+        System.out.println("time : " + time);
+        System.out.println("s : " + s);
     }
 }

+ 23 - 1
FullCardServer/src/main/java/com/zhongshu/card/server/core/controller/pay/statistics/PayOverviewController.java

@@ -2,6 +2,7 @@ package com.zhongshu.card.server.core.controller.pay.statistics;
 
 import com.zhongshu.card.client.model.pay.PeriodDetailQueryModel;
 import com.zhongshu.card.client.model.pay.PeriodQueryModel;
+import com.zhongshu.card.client.model.pay.SettleDetailQueryModel;
 import com.zhongshu.card.server.core.service.pay.OrgOverviewService;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.Parameter;
@@ -48,10 +49,31 @@ public class PayOverviewController {
         return orgOverviewService.queryCreditBillDetail(pageable, periodDetailQueryModel);
     }
 
-    @Operation(summary = "查询结算账单", description = "查询收入账单详情")
+    @Operation(summary = "查询结算账单", description = "查询结算账单")
     @RequestMapping(value = "querySettleBill", method = RequestMethod.POST)
     public Object querySettleBill(@Parameter(hidden = true) @PageableDefault(page = 0, size = 10) Pageable pageable,
                                   @Parameter(required = false) PeriodQueryModel param){
         return orgOverviewService.querySettleBill(pageable, param);
     }
+
+    @Operation(summary = "查询结算账单详情", description = "查询结算账单详情")
+    @RequestMapping(value = "querySettleBillDetail", method = RequestMethod.POST)
+    public Object querySettleBillDetail(@Parameter(hidden = true) @PageableDefault(page = 0, size = 10) Pageable pageable,
+                                        @Parameter(required = false) SettleDetailQueryModel settleDetailQueryModel){
+        return orgOverviewService.querySettleBillDetail(pageable, settleDetailQueryModel);
+    }
+
+    @Operation(summary = "查询提现账单", description = "查询提现账单")
+    @RequestMapping(value = "queryWithdrawBill", method = RequestMethod.POST)
+    public Object queryWithdrawBill(@Parameter(hidden = true) @PageableDefault(page = 0, size = 10) Pageable pageable,
+                                  @Parameter(required = false) PeriodQueryModel param){
+        return orgOverviewService.queryWithdrawBill(pageable, param);
+    }
+
+    @Operation(summary = "查询提现账单详情", description = "查询提现账单详情")
+    @RequestMapping(value = "queryWithdrawBillDetail", method = RequestMethod.POST)
+    public Object queryWithdrawBillDetail(@Parameter(hidden = true) @PageableDefault(page = 0, size = 10) Pageable pageable,
+                                        @Parameter(required = false) SettleDetailQueryModel settleDetailQueryModel){
+        return orgOverviewService.queryWithdrawBillDetail(pageable, settleDetailQueryModel);
+    }
 }

+ 142 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/service/pay/OrgOverviewService.java

@@ -14,6 +14,7 @@ import com.github.microservice.pay.client.type.ledger.TransactionType;
 import com.github.microservice.types.payment.PaymentChannelType;
 import com.zhongshu.card.client.model.pay.*;
 import com.zhongshu.card.client.type.PeriodType;
+import com.zhongshu.card.client.type.SettleStatus;
 import com.zhongshu.card.client.utils.DateUtils;
 import com.zhongshu.card.server.core.domain.pay.PayAccount;
 import com.zhongshu.card.server.core.service.base.SuperService;
@@ -333,6 +334,147 @@ public class OrgOverviewService extends SuperService {
         return transactionLogService.settleAggregate(queryModel);
     }
 
+    public Object querySettleBillDetail(Pageable pageable, SettleDetailQueryModel settleDetailQueryModel){
+        String projectOid = settleDetailQueryModel.getProjectOid();
+        if (StringUtils.isBlank(projectOid)) {
+            projectOid = getCurrentProjectOid();
+        }
+
+        List<String> oidList = organizationUserService.getUserOrgListOids(getCurrentUserId(), projectOid);
+        if (oidList==null || oidList.isEmpty()){
+            return com.github.microservice.net.ResultContent.buildFail("未加入机构");
+        }
+
+        PayAccount payAccount = payAccountService.getOrgChildren(projectOid, oidList.get(0), PaymentChannelType.WaitSettle);
+
+        GeneralLedgerQueryTransactionLogModel queryModel = new GeneralLedgerQueryTransactionLogModel();
+
+        PageableModel pageableModel = new PageableModel();
+        pageableModel.setPage(pageable.getPageNumber());
+        pageableModel.setSize(pageable.getPageSize());
+        pageableModel.setSort("createTime");
+        pageableModel.setDirection(Sort.Direction.DESC);
+        queryModel.setPage(pageableModel);
+
+        queryModel.setGeneralLedgerId(new String[]{payAccount.getLedgerId()});
+
+        Map<String, Object> filter = new HashMap<>();
+        Optional.ofNullable(settleDetailQueryModel.getTransactionLogId()).ifPresent((it) ->{
+            filter.put("transactionLogId", it);
+        });
+
+        Optional.ofNullable(settleDetailQueryModel.getLedgerEntry()).ifPresent((it) ->{
+            filter.put("ledgerEntry", it);
+        });
+
+        Optional.ofNullable(settleDetailQueryModel.getOrderNo()).ifPresent((it) ->{
+            filter.put("orderNumber", it);
+        });
+
+        Optional.ofNullable(settleDetailQueryModel.getPaymentType()).ifPresent((it) ->{
+            filter.put("meta.paymentType", it);
+        });
+
+        String createDate = settleDetailQueryModel.getCreateDate();
+        if (StringUtils.isBlank(createDate)){
+            return com.github.microservice.net.ResultContent.buildFail("createDate不能为空");
+        }
+
+        String formatCreateTime = DateUtils.paresTime(DateUtils.timeToLong(createDate, DateUtils.pattern), DateUtils.pattern);
+
+        filter.put("meta.settleStatus", SettleStatus.Settle);
+        filter.put("meta.settleTime", formatCreateTime);
+        filter.put("transactionType",new Document("$ne", "Settle"));
+        queryModel.setFilter(filter);
+        return ResultContent.buildContent(transactionLogService.aggregate(queryModel).getContent().getPages());
+    }
+
+
+    public Object queryWithdrawBill(Pageable pageable, PeriodQueryModel param){
+        String projectOid = param.getProjectOid();
+        if (StringUtils.isBlank(param.getProjectOid())){
+            projectOid = getCurrentProjectOid();
+        }
+
+        PageableModel pageableModel = new PageableModel();
+        pageableModel.setPage(pageable.getPageNumber());
+        pageableModel.setSize(pageable.getPageSize());
+
+        List<String> oidList = organizationUserService.getUserOrgListOids(getCurrentUserId(), projectOid);
+        if (oidList==null || oidList.isEmpty()){
+            return com.github.microservice.net.ResultContent.buildFail("未加入机构");
+        }
+
+        //获取已结算账本
+        PayAccount settleAccount = payAccountService.getOrgChildren(projectOid, oidList.get(0), PaymentChannelType.Settle);
+
+        GeneralLedgerQueryTransactionLogModel queryModel = new GeneralLedgerQueryTransactionLogModel();
+        queryModel.setGeneralLedgerId(new String[]{settleAccount.getLedgerId()});
+        queryModel.setStartTime(param.getStartTime());
+        queryModel.setEndTime(param.getEndTime());
+
+//        queryModel.setFilter(Map.of("transactionType","Withdrawal"));
+        queryModel.setFilter(Map.of("transactionType",new Document("$in", List.of(TransactionType.Withdrawal, TransactionType.WithdrawRefund))));
+        queryModel.setPage(pageableModel);
+        return transactionLogService.withdrawAggregate(queryModel);
+    }
+
+    public Object queryWithdrawBillDetail(Pageable pageable, SettleDetailQueryModel settleDetailQueryModel){
+        String projectOid = settleDetailQueryModel.getProjectOid();
+        if (StringUtils.isBlank(projectOid)) {
+            projectOid = getCurrentProjectOid();
+        }
+
+        List<String> oidList = organizationUserService.getUserOrgListOids(getCurrentUserId(), projectOid);
+        if (oidList==null || oidList.isEmpty()){
+            return com.github.microservice.net.ResultContent.buildFail("未加入机构");
+        }
+
+        PayAccount payAccount = payAccountService.getOrgChildren(projectOid, oidList.get(0), PaymentChannelType.Settle);
+
+        GeneralLedgerQueryTransactionLogModel queryModel = new GeneralLedgerQueryTransactionLogModel();
+
+        PageableModel pageableModel = new PageableModel();
+        pageableModel.setPage(pageable.getPageNumber());
+        pageableModel.setSize(pageable.getPageSize());
+        pageableModel.setSort("createTime");
+        pageableModel.setDirection(Sort.Direction.DESC);
+        queryModel.setPage(pageableModel);
+
+        queryModel.setGeneralLedgerId(new String[]{payAccount.getLedgerId()});
+
+        Map<String, Object> filter = new HashMap<>();
+        Optional.ofNullable(settleDetailQueryModel.getTransactionLogId()).ifPresent((it) ->{
+            filter.put("transactionLogId", it);
+        });
+
+        Optional.ofNullable(settleDetailQueryModel.getLedgerEntry()).ifPresent((it) ->{
+            filter.put("ledgerEntry", it);
+        });
+
+        Optional.ofNullable(settleDetailQueryModel.getOrderNo()).ifPresent((it) ->{
+            filter.put("orderNumber", it);
+        });
+
+        Optional.ofNullable(settleDetailQueryModel.getPaymentType()).ifPresent((it) ->{
+            filter.put("meta.paymentType", it);
+        });
+
+        String createDate = settleDetailQueryModel.getCreateDate();
+        if (StringUtils.isBlank(createDate)){
+            return com.github.microservice.net.ResultContent.buildFail("createDate不能为空");
+        }
+
+        Long startTime = DateUtils.timeToLong(createDate, DateUtils.pattern);
+
+        queryModel.setStartTime(startTime);
+        queryModel.setEndTime(startTime + 24*60*60*1000L);
+
+        filter.put("transactionType",new Document("$in", List.of(TransactionType.Withdrawal, TransactionType.WithdrawRefund)));
+        queryModel.setFilter(filter);
+        return ResultContent.buildContent(transactionLogService.aggregate(queryModel).getContent().getPages());
+    }
+
 
     private BigDecimal changeRate(Long todayAmount, Long yesterdayAmount) {
         BigDecimal amountChangeRate = BigDecimal.ZERO;

+ 2 - 1
FullCardServer/src/main/java/com/zhongshu/card/server/core/service/pay/SettleService.java

@@ -14,6 +14,7 @@ import com.github.microservice.pay.client.type.ledger.TransactionType;
 import com.github.microservice.types.payment.PaymentChannelType;
 import com.github.microservice.types.payment.PaymentType;
 import com.zhongshu.card.client.type.SettleStatus;
+import com.zhongshu.card.client.utils.DateUtils;
 import com.zhongshu.card.server.core.domain.pay.PayAccount;
 import com.zhongshu.card.server.core.util.CommonUtil;
 import lombok.extern.slf4j.Slf4j;
@@ -121,7 +122,7 @@ public class SettleService {
 
         UpdateMetaFieldModel updateMetaFieldModel = new UpdateMetaFieldModel();
         updateMetaFieldModel.setIds(settleList);
-        updateMetaFieldModel.setMetaField(Map.of("settleStatus", SettleStatus.Settle,"settleTime", new Date().getTime()));
+        updateMetaFieldModel.setMetaField(Map.of("settleStatus", SettleStatus.Settle,"settleTime", DateUtils.paresTime(new Date().getTime(), DateUtils.pattern)));
         ResultContent<Void> updateManyMetaField = transactionLogService.updateManyMetaField(updateMetaFieldModel);
         if (!updateManyMetaField.getState().equals(ResultState.Success)) {
             log.error("修改账单meta字段失败, projectOid: {}, paymentType: {}", projectOid, paymentType);