wujiefeng 1 год назад
Родитель
Сommit
72d670eeca

+ 20 - 0
FullCardClient/src/main/java/com/zhongshu/card/client/model/pay/QueryRechargeParam.java

@@ -0,0 +1,20 @@
+package com.zhongshu.card.client.model.pay;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+@Data
+public class QueryRechargeParam {
+
+    @Schema(name = "projectOid", description = "项目oid")
+    private String projectOid;
+
+    @Schema(name = "userId", description = "用户id")
+    private String userId;
+
+    @Schema(name = "year", description = "年")
+    private Integer year;
+
+    @Schema(name = "month", description = "月")
+    private Integer month;
+}

+ 14 - 4
FullCardServer/src/main/java/com/zhongshu/card/server/core/controller/pay/balance/RechargeController.java

@@ -1,14 +1,12 @@
 package com.zhongshu.card.server.core.controller.pay.balance;
 
+import com.zhongshu.card.client.model.pay.QueryRechargeParam;
 import com.zhongshu.card.client.model.pay.RechargeParam;
 import com.zhongshu.card.server.core.service.pay.BalancePayService;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.tags.Tag;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestMethod;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 @RestController
 @RequestMapping("balance/recharge")
@@ -23,4 +21,16 @@ public class RechargeController {
     public Object recharge(@RequestBody RechargeParam param){
         return balancePayService.recharge(param);
     }
+
+    @Operation(summary = "查询充值记录", description = "查询充值记录")
+    @RequestMapping(value = "queryRechargeOrder", method = RequestMethod.POST)
+    public Object queryRechargeOrder(@RequestBody QueryRechargeParam param){
+        return balancePayService.queryRechargeOrder(param);
+    }
+
+    @Operation(summary = "查询用户余额", description = "查询用户余额")
+    @RequestMapping(value = "queryUserBalance", method = RequestMethod.GET)
+    public Object queryUserBalance(@RequestParam("projectOid") String projectOid, @RequestParam("userId") String userId){
+        return balancePayService.queryUserBalance(projectOid, userId);
+    }
 }

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

@@ -1,9 +1,10 @@
 package com.zhongshu.card.server.core.dao.pay;
 
 import com.github.microservice.components.data.mongo.mongo.dao.MongoDao;
+import com.zhongshu.card.server.core.dao.pay.extend.BalanceRechargeOrderDaoExtend;
 import com.zhongshu.card.server.core.domain.pay.BalanceRechargeOrder;
 
-public interface BalanceRechargeOrderDao extends MongoDao<BalanceRechargeOrder> {
+public interface BalanceRechargeOrderDao extends MongoDao<BalanceRechargeOrder>, BalanceRechargeOrderDaoExtend {
 
     BalanceRechargeOrder findTopByOrderNo(String orderNo);
 }

+ 11 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/dao/pay/extend/BalanceRechargeOrderDaoExtend.java

@@ -0,0 +1,11 @@
+package com.zhongshu.card.server.core.dao.pay.extend;
+
+import com.zhongshu.card.client.model.pay.QueryRechargeParam;
+import com.zhongshu.card.server.core.domain.pay.BalanceRechargeOrder;
+
+import java.util.List;
+
+public interface BalanceRechargeOrderDaoExtend {
+
+    List<BalanceRechargeOrder> listByMonth(String projectOid, String userId, Long startTime, Long endTime);
+}

+ 48 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/dao/pay/impl/BalanceRechargeOrderDaoImpl.java

@@ -0,0 +1,48 @@
+package com.zhongshu.card.server.core.dao.pay.impl;
+
+import com.zhongshu.card.client.model.pay.QueryRechargeParam;
+import com.zhongshu.card.client.utils.DateUtils;
+import com.zhongshu.card.server.core.dao.pay.extend.BalanceRechargeOrderDaoExtend;
+import com.zhongshu.card.server.core.domain.pay.BalanceRechargeOrder;
+import com.zhongshu.card.server.core.util.CommonUtil;
+import org.apache.commons.lang3.ObjectUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Sort;
+import org.springframework.data.mongodb.core.MongoTemplate;
+import org.springframework.data.mongodb.core.query.Criteria;
+import org.springframework.data.mongodb.core.query.Query;
+
+import java.util.List;
+
+public class BalanceRechargeOrderDaoImpl implements BalanceRechargeOrderDaoExtend {
+
+    @Autowired
+    MongoTemplate mongoTemplate;
+
+    @Override
+    public List<BalanceRechargeOrder> listByMonth(String projectOid, String userId, Long startTime, Long endTime) {
+        Criteria criteria = new Criteria();
+
+        if (StringUtils.isNotEmpty(projectOid)){
+            criteria.and("projectOid").is(projectOid);
+        }
+
+        if (StringUtils.isNotEmpty(userId)){
+            criteria.and("userId").is(userId);
+        }
+
+        if (!CommonUtil.longIsEmpty(startTime)){
+            criteria.and("createTime").gte(startTime);
+        }
+
+        if (CommonUtil.longIsEmpty(endTime)){
+            criteria.and("createTime").lte(endTime);
+        }
+
+        Query query = Query.query(criteria);
+        query.with(Sort.by(Sort.Order.desc("createTime")));
+
+        return mongoTemplate.find(query, BalanceRechargeOrder.class);
+    }
+}

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

@@ -3,11 +3,13 @@ package com.zhongshu.card.server.core.service.pay;
 import com.github.microservice.core.util.JsonUtil;
 import com.github.microservice.core.util.bean.BeanUtil;
 import com.github.microservice.pay.client.model.PayProductParameter;
+import com.github.microservice.pay.client.model.ledger.GeneralLedgerModel;
 import com.github.microservice.pay.client.model.ledger.TransactionLogModel;
 import com.github.microservice.pay.client.model.ledger.TransferTransactionsModel;
 import com.github.microservice.pay.client.model.weChatMiniApp.WeChatMiniAppPayRet;
 import com.github.microservice.pay.client.ret.ResultContent;
 import com.github.microservice.pay.client.ret.ResultState;
+import com.github.microservice.pay.client.service.ledger.GeneralLedgerService;
 import com.github.microservice.pay.client.service.ledger.TransactionLogService;
 import com.github.microservice.pay.client.service.product.MiniAppPayService;
 import com.github.microservice.pay.client.type.ledger.TransactionStatus;
@@ -16,10 +18,12 @@ import com.github.microservice.types.payment.PaymentChannelType;
 import com.github.microservice.types.payment.PaymentType;
 import com.wechat.pay.java.service.payments.model.Transaction;
 import com.zhongshu.card.client.model.pay.PayAccountParam;
+import com.zhongshu.card.client.model.pay.QueryRechargeParam;
 import com.zhongshu.card.client.model.pay.RechargeOrderModel;
 import com.zhongshu.card.client.model.pay.RechargeParam;
 import com.zhongshu.card.client.type.payAccount.PayAccountLevel;
 import com.zhongshu.card.client.type.payAccount.RechargeOrderStatus;
+import com.zhongshu.card.client.utils.DateUtils;
 import com.zhongshu.card.server.core.dao.pay.BalanceRechargeOrderDao;
 import com.zhongshu.card.server.core.domain.pay.BalanceRechargeOrder;
 import com.zhongshu.card.server.core.domain.pay.PayAccount;
@@ -35,6 +39,7 @@ import java.math.BigDecimal;
 import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.stream.Collectors;
 
 @Service
 public class BalancePayService {
@@ -57,6 +62,9 @@ public class BalancePayService {
     @Autowired
     TransactionLogService transactionLogService;
 
+    @Autowired
+    GeneralLedgerService generalLedgerService;
+
 
     /**
      * 下单并生成调用支付参数
@@ -171,6 +179,22 @@ public class BalancePayService {
         return transactionLogService.transfer(transferModel);
     }
 
+    public ResultContent queryRechargeOrder(QueryRechargeParam param){
+        Long monthStartTime = DateUtils.getMonthStartTime(param.getYear(), param.getMonth());
+        Long monthEndTime = DateUtils.getMonthEndTime(param.getYear(), param.getMonth());
+        List<BalanceRechargeOrder> balanceRechargeOrders = rechargeOrderDao.listByMonth(param.getProjectOid(), param.getUserId(), monthStartTime, monthEndTime);
+        return ResultContent.buildContent(balanceRechargeOrders.stream().map(this::toModel).toList());
+    }
+
+    public ResultContent queryUserBalance(String projectOid, String userId){
+        PayAccount userBalance = payAccountService.getUserChildren(projectOid, userId, PaymentChannelType.BalancePayment);
+        ResultContent<GeneralLedgerModel> ret = generalLedgerService.get(userBalance.getLedgerId());
+        if (ret.equals(ResultState.Success)){
+            return ResultContent.buildContent(ret.getContent().getBalance());
+        }
+        return ResultContent.build(ResultState.Fail);
+    }
+
     private RechargeOrderModel toModel(BalanceRechargeOrder balanceRechargeOrder){
         RechargeOrderModel rechargeOrderModel = new RechargeOrderModel();
         if (balanceRechargeOrder != null){