licailing 5 lat temu
rodzic
commit
4c7a4da321

+ 8 - 4
src/main/java/com/izouma/jiashanxia/domain/CommissionRecord.java

@@ -1,5 +1,6 @@
 package com.izouma.jiashanxia.domain;
 
+import com.alibaba.excel.annotation.ExcelIgnore;
 import com.izouma.jiashanxia.annotations.Searchable;
 import com.izouma.jiashanxia.enums.PayMethod;
 import com.izouma.jiashanxia.enums.TransactionType;
@@ -9,6 +10,8 @@ import lombok.AllArgsConstructor;
 import lombok.Builder;
 import lombok.Data;
 import lombok.NoArgsConstructor;
+import org.hibernate.annotations.NotFound;
+import org.hibernate.annotations.NotFoundAction;
 
 import javax.persistence.*;
 import java.io.Serializable;
@@ -43,10 +46,11 @@ public class CommissionRecord extends BaseEntity implements Serializable {
     @ApiModelProperty(value = "备注", name = "remark")
     private String remark;
 
-//    @ExcelIgnore
-//    @ManyToOne(fetch = FetchType.LAZY)
-//    @JoinColumn(name = "userId", insertable = false, updatable = false, foreignKey = @ForeignKey(ConstraintMode.NO_CONSTRAINT))
-//    private User user;
+    @ExcelIgnore
+    @ManyToOne(fetch = FetchType.LAZY)
+    @JoinColumn(name = "userId", insertable = false, updatable = false, foreignKey = @ForeignKey(ConstraintMode.NO_CONSTRAINT))
+    @NotFound(action = NotFoundAction.IGNORE)
+    private User user;
 
     private Long fromUserId;
 }

+ 3 - 0
src/main/java/com/izouma/jiashanxia/repo/CommissionRecordRepo.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 CommissionRecordRepo extends JpaRepository<CommissionRecord, Long>, JpaSpecificationExecutor<CommissionRecord> {
     @Query("update CommissionRecord t set t.del = true where t.id = ?1")
     @Modifying
     @Transactional
     void softDelete(Long id);
+
+    List<CommissionRecord> findAllByUserId(Long userId);
 }

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

@@ -1,13 +1,19 @@
 package com.izouma.jiashanxia.service;
 
 import com.izouma.jiashanxia.domain.CommissionRecord;
+import com.izouma.jiashanxia.domain.User;
 import com.izouma.jiashanxia.dto.PageQuery;
+import com.izouma.jiashanxia.enums.AuthorityName;
 import com.izouma.jiashanxia.repo.CommissionRecordRepo;
+import com.izouma.jiashanxia.security.Authority;
 import com.izouma.jiashanxia.utils.JpaUtils;
 import lombok.AllArgsConstructor;
 import org.springframework.data.domain.Page;
 import org.springframework.stereotype.Service;
 
+import java.util.Map;
+import java.util.Set;
+
 @Service
 @AllArgsConstructor
 public class CommissionRecordService {
@@ -17,4 +23,16 @@ public class CommissionRecordService {
     public Page<CommissionRecord> all(PageQuery pageQuery) {
         return commissionRecordRepo.findAll(JpaUtils.toSpecification(pageQuery, CommissionRecord.class), JpaUtils.toPageRequest(pageQuery));
     }
+
+    /*
+    后台列表
+     */
+    public Page<CommissionRecord> backAll(PageQuery pageQuery, User user) {
+        Set<Authority> authorities = user.getAuthorities();
+        if (!authorities.contains(Authority.get(AuthorityName.ROLE_ADMIN)) && authorities.contains(Authority.get(AuthorityName.ROLE_CREATOR))) {
+            Map<String, Object> query = pageQuery.getQuery();
+            query.put("userId", user.getId());
+        }
+        return commissionRecordRepo.findAll(JpaUtils.toSpecification(pageQuery, CommissionRecord.class), JpaUtils.toPageRequest(pageQuery));
+    }
 }

+ 8 - 2
src/main/java/com/izouma/jiashanxia/service/OrderInfoService.java

@@ -12,11 +12,15 @@ import com.izouma.jiashanxia.exception.BusinessException;
 import com.izouma.jiashanxia.repo.*;
 import com.izouma.jiashanxia.utils.JpaUtils;
 import lombok.AllArgsConstructor;
+import org.apache.poi.ss.formula.functions.T;
 import org.springframework.data.domain.Page;
 import org.springframework.data.jpa.domain.Specification;
 import org.springframework.stereotype.Service;
 
+import javax.persistence.criteria.CriteriaBuilder;
+import javax.persistence.criteria.CriteriaQuery;
 import javax.persistence.criteria.Predicate;
+import javax.persistence.criteria.Root;
 import java.math.BigDecimal;
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
@@ -37,6 +41,7 @@ public class OrderInfoService {
     private CommissionRecordRepo commissionRecordRepo;
     private UserSetService       userSetService;
     private CompanyRepo          companyRepo;
+    private WithdrawService      withdrawService;
 
     public Page<OrderInfo> all(PageQuery pageQuery) {
         return orderInfoRepo.findAll(JpaUtils.toSpecification(pageQuery, OrderInfo.class), JpaUtils.toPageRequest(pageQuery));
@@ -49,11 +54,12 @@ public class OrderInfoService {
         return orderInfoRepo.findAll(((root, criteriaQuery, criteriaBuilder) -> {
             List<Predicate> and = JpaUtils.toPredicates(pageQuery, OrderInfo.class, root, criteriaQuery, criteriaBuilder);
             if (StrUtil.isNotEmpty(pageQuery.getSearch())) {
-                List<Predicate> or = new ArrayList<>();
+               /* List<Predicate> or = new ArrayList<>();
                 or.add(and.get(and.size() - 1));
                 and.remove(and.get(and.size() - 1));
                 or.add(criteriaBuilder.like(root.join("user").get("nickname"), "%" + pageQuery.getSearch() + "%"));
-                and.add(criteriaBuilder.or(or.toArray(new Predicate[0])));
+                and.add(criteriaBuilder.or(or.toArray(new Predicate[0])));*/
+                withdrawService.getNickname(pageQuery.getSearch(), and, root, criteriaBuilder);
             }
             return criteriaBuilder.and(and.toArray(new Predicate[0]));
         }), JpaUtils.toPageRequest(pageQuery));

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

@@ -18,7 +18,9 @@ import lombok.AllArgsConstructor;
 import org.springframework.data.domain.Page;
 import org.springframework.stereotype.Service;
 
+import javax.persistence.criteria.CriteriaBuilder;
 import javax.persistence.criteria.Predicate;
+import javax.persistence.criteria.Root;
 import java.math.BigDecimal;
 import java.time.LocalDateTime;
 import java.util.ArrayList;
@@ -43,20 +45,28 @@ public class WithdrawService {
         return withdrawRepo.findAll(((root, criteriaQuery, criteriaBuilder) -> {
             List<Predicate> and = JpaUtils.toPredicates(pageQuery, Withdraw.class, root, criteriaQuery, criteriaBuilder);
             if (StrUtil.isNotEmpty(pageQuery.getSearch())) {
-                List<Predicate> or = new ArrayList<>();
-                or.add(and.get(and.size() - 1));
-                and.remove(and.get(and.size() - 1));
-                or.add(criteriaBuilder.like(root.join("user").get("nickname"), "%" + pageQuery.getSearch() + "%"));
-                and.add(criteriaBuilder.or(or.toArray(new Predicate[0])));
+                this.getNickname(pageQuery.getSearch(), and, root, criteriaBuilder);
             }
             return criteriaBuilder.and(and.toArray(new Predicate[0]));
         }), JpaUtils.toPageRequest(pageQuery));
     }
 
+    /*
+    搜索用户昵称
+     */
+    public void getNickname(String search, List<Predicate> and, Root<?> root, CriteriaBuilder criteriaBuilder) {
+        List<Predicate> or = new ArrayList<>();
+        or.add(and.get(and.size() - 1));
+        and.remove(and.get(and.size() - 1));
+        or.add(criteriaBuilder.like(root.join("user").get("nickname"), "%" + search + "%"));
+        and.add(criteriaBuilder.or(or.toArray(new Predicate[0])));
+    }
+
+
     /*
     提现申请
      */
-    public Withdraw apply(Long userId, BigDecimal amount, PayMethod payMethod,String realName, String account) {
+    public Withdraw apply(Long userId, BigDecimal amount, PayMethod payMethod, String realName, String account) {
         if (BigDecimal.ZERO.compareTo(amount) >= 0) {
             throw new BusinessException("提现金额小于等于零");
         }

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

@@ -1,10 +1,12 @@
 package com.izouma.jiashanxia.web;
+
 import com.izouma.jiashanxia.domain.CommissionRecord;
 import com.izouma.jiashanxia.service.CommissionRecordService;
 import com.izouma.jiashanxia.dto.PageQuery;
 import com.izouma.jiashanxia.exception.BusinessException;
 import com.izouma.jiashanxia.repo.CommissionRecordRepo;
 import com.izouma.jiashanxia.utils.ObjUtils;
+import com.izouma.jiashanxia.utils.SecurityUtils;
 import com.izouma.jiashanxia.utils.excel.ExcelUtils;
 import lombok.AllArgsConstructor;
 import org.springframework.data.domain.Page;
@@ -20,13 +22,14 @@ import java.util.List;
 @AllArgsConstructor
 public class CommissionRecordController extends BaseController {
     private CommissionRecordService commissionRecordService;
-    private CommissionRecordRepo commissionRecordRepo;
+    private CommissionRecordRepo    commissionRecordRepo;
 
     //@PreAuthorize("hasRole('ADMIN')")
     @PostMapping("/save")
     public CommissionRecord save(@RequestBody CommissionRecord record) {
         if (record.getId() != null) {
-            CommissionRecord orig = commissionRecordRepo.findById(record.getId()).orElseThrow(new BusinessException("无记录"));
+            CommissionRecord orig = commissionRecordRepo.findById(record.getId())
+                    .orElseThrow(new BusinessException("无记录"));
             ObjUtils.merge(orig, record);
             return commissionRecordRepo.save(orig);
         }
@@ -40,6 +43,12 @@ public class CommissionRecordController extends BaseController {
         return commissionRecordService.all(pageQuery);
     }
 
+    @PreAuthorize("hasAnyRole('ADMIN','CREATOR')")
+    @PostMapping("/backAll")
+    public Page<CommissionRecord> backAll(@RequestBody PageQuery pageQuery) {
+        return commissionRecordService.backAll(pageQuery, SecurityUtils.getAuthenticatedUser());
+    }
+
     @GetMapping("/get/{id}")
     public CommissionRecord get(@PathVariable Long id) {
         return commissionRecordRepo.findById(id).orElseThrow(new BusinessException("无记录"));
@@ -56,5 +65,10 @@ public class CommissionRecordController extends BaseController {
         List<CommissionRecord> data = all(pageQuery).getContent();
         ExcelUtils.export(response, data);
     }
+
+    @GetMapping("/my")
+    public List<CommissionRecord> my() {
+        return commissionRecordRepo.findAllByUserId(SecurityUtils.getAuthenticatedUser().getId());
+    }
 }
 

+ 2 - 2
src/main/resources/application.yaml

@@ -57,8 +57,8 @@ wx:
         app_id: wx2375cba2eec2c479
         app_secret: 28e4829124860d9ef9e2f32aeefd1111
     ma:
-        app_id: wx47bde0e3d49633b4
-        app_secret: 65755594bbd9d330cad35c58b887f08a
+        app_id: wxde386c1d6f9fc0c8
+        app_secret: 43169574cac6803f3a16d88bbcaba814
         msg_token: msgToken
         msg_aes_key: aesKey
         msg_format: JSON

+ 26 - 8
src/main/vue/src/views/CommissionRecordList.vue

@@ -12,6 +12,15 @@
                 class="filter-item"
                 >导出EXCEL
             </el-button>
+            <el-select v-model="transactionType" multiple clearable @change="getData" collapse-tags>
+                <el-option
+                    v-for="item in transactionTypeOptions"
+                    :key="item.value"
+                    :value="item.value"
+                    :label="item.label"
+                >
+                </el-option>
+            </el-select>
         </div>
         <el-table
             :data="tableData"
@@ -25,16 +34,17 @@
         >
             <el-table-column v-if="multipleMode" align="center" type="selection" width="50"> </el-table-column>
             <el-table-column prop="id" label="ID" width="100"> </el-table-column>
-            <el-table-column prop="userId" label="用户ID"> </el-table-column>
+            <el-table-column prop="user.nickname" label="昵称"> </el-table-column>
             <el-table-column prop="transactionType" label="交易类型" :formatter="transactionTypeFormatter">
             </el-table-column>
             <el-table-column prop="amount" label="交易金额"> </el-table-column>
             <el-table-column prop="payMethod" label="支付方式" :formatter="payMethodFormatter"> </el-table-column>
-            <el-table-column prop="transactionId" label="交易单号"> </el-table-column>
+            <el-table-column prop="transactionId" label="交易单号" show-overflow-tooltip> </el-table-column>
             <el-table-column prop="remark" label="备注"> </el-table-column>
+            <el-table-column prop="createdAt" label="交易时间" show-overflow-tooltip> </el-table-column>
             <el-table-column label="操作" align="center" fixed="right" min-width="150">
                 <template slot-scope="{ row }">
-                    <el-button @click="editRow(row)" type="primary" size="mini" plain>编辑</el-button>
+                    <!--<el-button @click="editRow(row)" type="primary" size="mini" plain>编辑</el-button>-->
                     <el-button @click="deleteRow(row)" type="danger" size="mini" plain>删除</el-button>
                 </template>
             </el-table-column>
@@ -73,17 +83,19 @@ export default {
         return {
             multipleMode: false,
             search: '',
-            url: '/commissionRecord/all',
+            url: '/commissionRecord/backAll',
             downloading: false,
             transactionTypeOptions: [
-                { label: '提现', value: 'TIXIAN' },
-                { label: '收入', value: 'INCOME' },
+                { label: '提现', value: 'WITHDRAW' },
+                { label: '推广新会员', value: 'PROMOTE' },
+                { label: '员工推广新会员', value: 'EMPLOYEES_PROMOTE' },
                 { label: '退款', value: 'REFUND' }
             ],
             payMethodOptions: [
                 { label: '微信', value: 'WEIXIN' },
                 { label: '余额', value: 'YUE' }
-            ]
+            ],
+            transactionType: []
         };
     },
     computed: {
@@ -107,7 +119,13 @@ export default {
             return '';
         },
         beforeGetData() {
-            return { search: this.search };
+            return {
+                sort: 'createdAt,desc',
+                search: this.search,
+                query: {
+                    transactionType: this.transactionType
+                }
+            };
         },
         toggleMultipleMode(multipleMode) {
             this.multipleMode = multipleMode;