Bläddra i källkod

Merge remote-tracking branch 'origin/master'

liude 1 år sedan
förälder
incheckning
a212ca6926

+ 13 - 0
vehicle-client/src/main/java/com/chelvc/cloud/vehicle/client/AssetClient.java

@@ -0,0 +1,13 @@
+package com.chelvc.cloud.vehicle.client;
+
+import com.chelvc.cloud.vehicle.client.dto.MerchantAssetDTO;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+
+@FeignClient("vehicle")
+public interface AssetClient {
+
+    @GetMapping("/asset/merchant/{merchantId}")
+    public MerchantAssetDTO getMerchantAsset(@PathVariable("merchantId") Long merchantId);
+}

+ 1 - 0
vehicle-client/src/main/java/com/chelvc/cloud/vehicle/client/dto/BalanceDetailDTO.java

@@ -38,5 +38,6 @@ public class BalanceDetailDTO implements Serializable {
      * 剩余金额
      */
     private BigDecimal surplusAmount;
+
     private Date createTime;
 }

+ 46 - 0
vehicle-client/src/main/java/com/chelvc/cloud/vehicle/client/dto/MerchantAssetDTO.java

@@ -0,0 +1,46 @@
+package com.chelvc.cloud.vehicle.client.dto;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.SuperBuilder;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+/**
+ * 商户资产
+ */
+@Data
+@SuperBuilder
+@NoArgsConstructor
+@AllArgsConstructor
+public class MerchantAssetDTO implements Serializable {
+
+    private static final long serialVersionUID = 9032680117461829078L;
+
+    /**
+     * 我的资产
+     */
+    private BigDecimal asset = BigDecimal.ZERO;
+
+    /**
+     * 总收益
+     */
+    private BigDecimal totalEarnings;
+
+    /**
+     * 今日收益
+     */
+    private BigDecimal todayEarnings;
+
+    /**
+     * 昨日收益
+     */
+    private BigDecimal yesterdayEarnings;
+
+    /**
+     * 可提现金额
+     */
+    private BigDecimal withdraw = BigDecimal.ZERO;
+}

+ 21 - 0
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/controller/AssetController.java

@@ -0,0 +1,21 @@
+package com.chelvc.cloud.vehicle.server.controller;
+
+import com.chelvc.cloud.vehicle.client.dto.MerchantAssetDTO;
+import com.chelvc.cloud.vehicle.server.service.AssetService;
+import lombok.RequiredArgsConstructor;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+@RequiredArgsConstructor(onConstructor = @__(@Autowired))
+public class AssetController {
+
+    private final AssetService assetService;
+
+    @GetMapping("/asset/merchant/{merchantId}")
+    public MerchantAssetDTO getMerchantAsset(@PathVariable("merchantId") Long merchantId) {
+        return this.assetService.getMerchantAsset(merchantId);
+    }
+}

+ 6 - 0
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/dao/BalanceDetailMapper.java

@@ -6,14 +6,20 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.Constants;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.chelvc.cloud.vehicle.client.dto.BalanceDetailDTO;
+import com.chelvc.cloud.vehicle.client.dto.MerchantAssetDTO;
 import com.chelvc.cloud.vehicle.server.entity.BalanceDetail;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 import org.springframework.stereotype.Repository;
 
+import java.time.LocalDateTime;
+
 @Mapper
 @Repository
 public interface BalanceDetailMapper extends BaseMapper<BalanceDetail> {
 
     IPage<BalanceDetailDTO> queryByUserId(@Param("page") Page<BalanceDetailDTO> page, @Param(Constants.WRAPPER) QueryWrapper<BalanceDetail> queryWrapper);
+
+    MerchantAssetDTO getMerchantAsset(@Param("merchantId") Long merchantId, @Param("midnight") LocalDateTime midnight,
+                                      @Param("yesterdayMidnight") LocalDateTime yesterdayMidnight);
 }

+ 3 - 0
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/service/AssetService.java

@@ -1,5 +1,6 @@
 package com.chelvc.cloud.vehicle.server.service;
 
+import com.chelvc.cloud.vehicle.client.dto.MerchantAssetDTO;
 import com.chelvc.cloud.vehicle.server.entity.Asset;
 
 import java.math.BigDecimal;
@@ -25,4 +26,6 @@ public interface AssetService {
     BigDecimal updateAsset(Integer operateType, BigDecimal operateAmount, Long userId, Integer type, Integer amountType);
 
     void updatePlatformAsset(BigDecimal platformRealityAmount, BigDecimal payAmount);
+
+    MerchantAssetDTO getMerchantAsset(Long merchantId);
 }

+ 4 - 0
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/service/BalanceDetailService.java

@@ -1,8 +1,10 @@
 package com.chelvc.cloud.vehicle.server.service;
 
 import com.chelvc.cloud.vehicle.client.dto.BalanceDetailDTO;
+import com.chelvc.cloud.vehicle.client.dto.MerchantAssetDTO;
 import com.chelvc.cloud.vehicle.client.param.QueryMerchantBalanceParam;
 import com.chelvc.framework.common.model.Pagination;
+import org.apache.ibatis.annotations.Param;
 
 import java.math.BigDecimal;
 
@@ -23,4 +25,6 @@ public interface BalanceDetailService {
 
     Pagination<BalanceDetailDTO> queryByMerchantId(QueryMerchantBalanceParam param, Integer pageNum,
                                                    Integer pageSize, Integer type);
+
+    MerchantAssetDTO getMerchantAsset(@Param("merchantId") Long merchantId);
 }

+ 24 - 0
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/service/impl/AssetServiceImpl.java

@@ -4,9 +4,11 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.chelvc.cloud.vehicle.client.constant.PlatformConstant;
+import com.chelvc.cloud.vehicle.client.dto.MerchantAssetDTO;
 import com.chelvc.cloud.vehicle.server.dao.AssetMapper;
 import com.chelvc.cloud.vehicle.server.entity.Asset;
 import com.chelvc.cloud.vehicle.server.service.AssetService;
+import com.chelvc.cloud.vehicle.server.service.BalanceDetailService;
 import com.chelvc.framework.common.exception.ResourceUnavailableException;
 import lombok.RequiredArgsConstructor;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -18,6 +20,9 @@ import java.time.LocalDateTime;
 @Service
 @RequiredArgsConstructor(onConstructor = @__(@Autowired))
 public class AssetServiceImpl extends ServiceImpl<AssetMapper, Asset> implements AssetService {
+
+    private final BalanceDetailService balanceDetailService;
+
     @Override
     public Asset queryAsset(Long userId, Integer type) {
         LambdaQueryWrapper<Asset> wrapper = Wrappers.lambdaQuery();
@@ -78,4 +83,23 @@ public class AssetServiceImpl extends ServiceImpl<AssetMapper, Asset> implements
         }
         baseMapper.updatePlatformAsset(platformRealityAmount, payAmount, LocalDateTime.now(), PlatformConstant.PLATFORM_ID);
     }
+
+    @Override
+    public MerchantAssetDTO getMerchantAsset(Long merchantId) {
+        if(merchantId == null){
+            return null;
+        }
+        MerchantAssetDTO merchantAsset = balanceDetailService.getMerchantAsset(merchantId);
+        LambdaQueryWrapper<Asset> wrapper = Wrappers.lambdaQuery();
+        wrapper.eq(Asset::getUserId, merchantId);
+        wrapper.eq(Asset::getType, 2);
+        Asset asset = baseMapper.selectOne(wrapper);
+        if(asset != null){
+            BigDecimal total = asset.getTotal();
+            BigDecimal frozen = asset.getFrozen();
+            merchantAsset.setAsset(total);
+            merchantAsset.setWithdraw(total.subtract(frozen));
+        }
+        return merchantAsset;
+    }
 }

+ 12 - 0
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/service/impl/BalanceDetailServiceImpl.java

@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.chelvc.cloud.vehicle.client.dto.BalanceDetailDTO;
+import com.chelvc.cloud.vehicle.client.dto.MerchantAssetDTO;
 import com.chelvc.cloud.vehicle.client.param.QueryMerchantBalanceParam;
 import com.chelvc.cloud.vehicle.server.dao.BalanceDetailMapper;
 import com.chelvc.cloud.vehicle.server.entity.BalanceDetail;
@@ -16,7 +17,9 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.math.BigDecimal;
+import java.time.LocalDate;
 import java.time.LocalDateTime;
+import java.time.LocalTime;
 
 @Service
 @RequiredArgsConstructor(onConstructor = @__(@Autowired))
@@ -54,6 +57,15 @@ public class BalanceDetailServiceImpl extends ServiceImpl<BalanceDetailMapper, B
                 .records(result.getRecords()).build();
     }
 
+    @Override
+    public MerchantAssetDTO getMerchantAsset(Long merchantId) {
+        LocalDate today = LocalDate.now(); // 获取今天的日期
+        LocalDateTime midnight = LocalDateTime.of(today, LocalTime.MIDNIGHT); // 获取今天凌晨的时间
+        LocalDate yesterday = today.minusDays(1);
+        LocalDateTime yesterdayMidnight = LocalDateTime.of(yesterday, LocalTime.MIN);
+        return merchantBalanceDetailMapper.getMerchantAsset(merchantId, midnight, yesterdayMidnight);
+    }
+
     public QueryWrapper<BalanceDetail> queryWrapper(QueryMerchantBalanceParam param, Long merchantId, Integer type) {
         QueryWrapper<BalanceDetail> lqw = Wrappers.query();
         lqw.eq("t1.type", type);

+ 2 - 0
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/service/impl/OderHandleServiceImpl.java

@@ -149,6 +149,8 @@ public class OderHandleServiceImpl implements OrderHandleService {
         currencyRecordService.recordFlow(PlatformConstant.PLATFORM_ID, 0, 0, orderId, userId, 3, platformAmount, deduct, platformRealityAmount);
 
         omsOrderOperateHistoryService.insertOmsOrderOperateHistory(omsOrder.getId(), userId, omsOrder.getStatus());
+
+        //以下注释为以前逻辑,先不用管
         /*BigDecimal platformSurplusAmount = assetService.updateAsset(1, operateAmount, 0L, 0);
         balanceDetailService.recordFlow(omsOrder.getId(), 0, 0L, operateAmount, platformSurplusAmount, 1, 1,
                 merchantId);

+ 26 - 0
vehicle-server/src/main/resources/mapper/BalanceDetailMapper.xml

@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.chelvc.cloud.vehicle.server.dao.BalanceDetailMapper">
+
+    <select id="getMerchantAsset" resultType="com.chelvc.cloud.vehicle.client.dto.MerchantAssetDTO">
+        SELECT
+            SUM(operate_amount) as totalEarnings,
+            SUM(CASE WHEN create_time >= #{midnight} THEN operate_amount ELSE 0 END) as todayEarnings,
+            SUM(CASE WHEN create_time >= #{yesterdayMidnight} and create_time <![CDATA[ < ]]> #{midnight} THEN operate_amount ELSE 0 END) as yesterdayEarnings
+        FROM
+            balance_detail
+        WHERE
+            target_id = #{merchantId}
+          AND type = 2
+          AND flow_type = 0
+          AND operate_type = 1
+    </select>
+
+    <select id="queryByUserId" resultType="com.chelvc.cloud.vehicle.client.dto.BalanceDetailDTO">
+        SELECT
+            t1.*
+        FROM
+            balance_detail t1
+            ${ew.getCustomSqlSegment}
+    </select>
+</mapper>