licailing 5 лет назад
Родитель
Сommit
5f5ae284fb

+ 1 - 0
src/main/java/com/izouma/jiashanxia/domain/CommissionRecord.java

@@ -4,6 +4,7 @@ import com.alibaba.excel.annotation.ExcelIgnore;
 import com.izouma.jiashanxia.annotations.Searchable;
 import com.izouma.jiashanxia.enums.PayMethod;
 import com.izouma.jiashanxia.enums.TransactionType;
+import com.izouma.jiashanxia.enums.WithdrawStatus;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.AllArgsConstructor;

+ 39 - 0
src/main/java/com/izouma/jiashanxia/dto/CommissionRecordDTO.java

@@ -0,0 +1,39 @@
+package com.izouma.jiashanxia.dto;
+
+import com.izouma.jiashanxia.enums.TransactionType;
+import com.izouma.jiashanxia.enums.WithdrawStatus;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+
+@AllArgsConstructor
+@NoArgsConstructor
+@Builder
+@Data
+@ApiModel(value = "佣金记录", description = "CommissionRecord")
+public class CommissionRecordDTO implements Serializable {
+    private Long id;
+
+    @ApiModelProperty(value = "用户ID", name = "userId")
+    private Long userId;
+
+    @ApiModelProperty(value = "交易类型", name = "transactionType")
+    private TransactionType transactionType;
+
+    @ApiModelProperty(value = "交易金额", name = "money")
+    private BigDecimal amount;
+
+    private String remark;
+
+    private WithdrawStatus withdrawStatus;
+
+    private LocalDateTime createdAt;
+
+}

+ 2 - 0
src/main/java/com/izouma/jiashanxia/repo/CommissionRecordRepo.java

@@ -19,6 +19,8 @@ public interface CommissionRecordRepo extends JpaRepository<CommissionRecord, Lo
 
     List<CommissionRecord> findAllByUserId(Long userId);
 
+    List<CommissionRecord> findAllByUserIdAndTransactionTypeNot(Long userId, TransactionType type);
+
     @Query("select sum(c.amount) from CommissionRecord c where c.userId = ?1 and c.transactionType = ?2")
     BigDecimal sumByUserId(Long userId, TransactionType type);
 }

+ 3 - 0
src/main/java/com/izouma/jiashanxia/repo/WithdrawRepo.java

@@ -7,10 +7,13 @@ import org.springframework.data.jpa.repository.Modifying;
 import org.springframework.data.jpa.repository.Query;
 
 import javax.transaction.Transactional;
+import java.util.List;
 
 public interface WithdrawRepo extends JpaRepository<Withdraw, Long>, JpaSpecificationExecutor<Withdraw> {
     @Query("update Withdraw t set t.del = true where t.id = ?1")
     @Modifying
     @Transactional
     void softDelete(Long id);
+
+    List<Withdraw> findAllByUserId(Long userId);
 }

+ 41 - 0
src/main/java/com/izouma/jiashanxia/service/CommissionRecordService.java

@@ -1,14 +1,18 @@
 package com.izouma.jiashanxia.service;
 
+import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
 import com.izouma.jiashanxia.domain.CommissionRecord;
 import com.izouma.jiashanxia.domain.User;
 import com.izouma.jiashanxia.domain.Withdraw;
+import com.izouma.jiashanxia.dto.CommissionRecordDTO;
 import com.izouma.jiashanxia.dto.PageQuery;
 import com.izouma.jiashanxia.enums.AuthorityName;
+import com.izouma.jiashanxia.enums.TransactionType;
 import com.izouma.jiashanxia.repo.CommissionRecordRepo;
 import com.izouma.jiashanxia.repo.UserRepo;
+import com.izouma.jiashanxia.repo.WithdrawRepo;
 import com.izouma.jiashanxia.security.Authority;
 import com.izouma.jiashanxia.utils.JpaUtils;
 import lombok.AllArgsConstructor;
@@ -16,6 +20,7 @@ import org.springframework.data.domain.Page;
 import org.springframework.stereotype.Service;
 
 import javax.persistence.criteria.Predicate;
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
@@ -28,6 +33,7 @@ public class CommissionRecordService {
     private CommissionRecordRepo commissionRecordRepo;
     private WithdrawService      withdrawService;
     private UserRepo             userRepo;
+    private WithdrawRepo         withdrawRepo;
 
     public Page<CommissionRecord> all(PageQuery pageQuery) {
         pageQuery.setSort("createdAt,desc");
@@ -74,4 +80,39 @@ public class CommissionRecordService {
         }), JpaUtils.toPageRequest(pageQuery));
 
     }
+
+    /*
+    我的
+     */
+    public List<CommissionRecordDTO> my(Long userId) {
+        List<CommissionRecordDTO> my = new ArrayList<>();
+        List<CommissionRecord> recordList = commissionRecordRepo.findAllByUserIdAndTransactionTypeNot(userId, TransactionType.WITHDRAW);
+        Set<Long> fromUserId = recordList.stream().map(CommissionRecord::getFromUserId).collect(Collectors.toSet());
+        Map<Long, User> userMap = userRepo.findAllById(fromUserId)
+                .stream()
+                .collect(Collectors.toMap(User::getId, user -> user));
+        recordList.forEach(record -> {
+            CommissionRecordDTO dto = new CommissionRecordDTO();
+            BeanUtil.copyProperties(record, dto);
+            User fromUser = userMap.get(record.getFromUserId());
+            if (ObjectUtil.isNotEmpty(fromUser)) {
+                dto.setRemark(fromUser.getNickname());
+            }
+            my.add(dto);
+        });
+
+        List<Withdraw> withdraws = withdrawRepo.findAllByUserId(userId);
+        withdraws.forEach(withdraw ->
+                my.add(CommissionRecordDTO.builder()
+                        .userId(userId)
+                        .amount(withdraw.getAmount().negate())
+                        .createdAt(withdraw.getCreatedAt())
+                        .remark("提现账号:" + withdraw.getAccount())
+                        .transactionType(TransactionType.WITHDRAW)
+                        .withdrawStatus(withdraw.getStatus())
+                        .build()
+                ));
+        return my;
+
+    }
 }

+ 1 - 1
src/main/java/com/izouma/jiashanxia/service/WithdrawService.java

@@ -106,7 +106,7 @@ public class WithdrawService {
             // 个人佣金流水
             commissionRecordRepo.save(CommissionRecord.builder()
                     .userId(withdraw.getUserId())
-                    .amount(withdraw.getAmount())
+                    .amount(withdraw.getAmount().negate())
                     .payMethod(PayMethod.YUE)
                     .transactionType(TransactionType.WITHDRAW)
                     .transactionId(withdrawId.toString())

+ 3 - 2
src/main/java/com/izouma/jiashanxia/web/CommissionRecordController.java

@@ -1,6 +1,7 @@
 package com.izouma.jiashanxia.web;
 
 import com.izouma.jiashanxia.domain.CommissionRecord;
+import com.izouma.jiashanxia.dto.CommissionRecordDTO;
 import com.izouma.jiashanxia.service.CommissionRecordService;
 import com.izouma.jiashanxia.dto.PageQuery;
 import com.izouma.jiashanxia.exception.BusinessException;
@@ -67,8 +68,8 @@ public class CommissionRecordController extends BaseController {
     }
 
     @GetMapping("/my")
-    public List<CommissionRecord> my() {
-        return commissionRecordRepo.findAllByUserId(SecurityUtils.getAuthenticatedUser().getId());
+    public List<CommissionRecordDTO> my() {
+        return commissionRecordService.my(SecurityUtils.getAuthenticatedUser().getId());
     }
 }
 

+ 24 - 0
src/test/java/com/izouma/jiashanxia/service/CommissionRecordServiceTest.java

@@ -0,0 +1,24 @@
+package com.izouma.jiashanxia.service;
+
+import com.izouma.jiashanxia.dto.CommissionRecordDTO;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.junit4.SpringRunner;
+
+import java.util.List;
+
+
+@SpringBootTest
+@RunWith(SpringRunner.class)
+public class CommissionRecordServiceTest {
+
+    @Autowired
+    private CommissionRecordService commissionRecordService;
+    @Test
+    public void my() {
+        List<CommissionRecordDTO> my = commissionRecordService.my(497L);
+        my.forEach(System.out::println);
+    }
+}