xiongzhu 5 лет назад
Родитель
Сommit
2837dcd655

+ 4 - 0
src/main/java/com/izouma/jiashanxia/dto/UserPackageFlowVO.java

@@ -18,6 +18,10 @@ public class UserPackageFlowVO {
 
     private Long userId;
 
+    private String nickname;
+
+    private String avatar;
+
     private FlowType type;
 
     private List<GoodsVO> content;

+ 33 - 2
src/main/java/com/izouma/jiashanxia/service/UserPackageFlowService.java

@@ -31,7 +31,8 @@ public class UserPackageFlowService {
     private UserPackageRepo     userPackageRepo;
 
     public Page<UserPackageFlow> all(PageQuery pageQuery) {
-        return userPackageFlowRepo.findAll(JpaUtils.toSpecification(pageQuery, UserPackageFlow.class), JpaUtils.toPageRequest(pageQuery));
+        return userPackageFlowRepo
+                .findAll(JpaUtils.toSpecification(pageQuery, UserPackageFlow.class), JpaUtils.toPageRequest(pageQuery));
     }
 
     /*
@@ -39,7 +40,8 @@ public class UserPackageFlowService {
      */
     public Page<UserPackageFlow> writeOffAll(PageQuery pageQuery) {
         return userPackageFlowRepo.findAll(((root, criteriaQuery, criteriaBuilder) -> {
-            List<Predicate> and = JpaUtils.toPredicates(pageQuery, UserPackageFlow.class, root, criteriaQuery, criteriaBuilder);
+            List<Predicate> and = JpaUtils
+                    .toPredicates(pageQuery, UserPackageFlow.class, root, criteriaQuery, criteriaBuilder);
             and.add(criteriaBuilder.equal(root.get("type"), FlowType.WRITE_OFF));
             if (StrUtil.isNotEmpty(pageQuery.getSearch())) {
                 List<Predicate> or = new ArrayList<>();
@@ -54,6 +56,35 @@ public class UserPackageFlowService {
         }), JpaUtils.toPageRequest(pageQuery));
     }
 
+    public Page<UserPackageFlowVO> writeOffAll1(PageQuery pageQuery) {
+        Map<Long, String> goodsMap = goodsInfoRepo.findAll()
+                .stream()
+                .collect(Collectors.toMap(GoodsInfo::getId, GoodsInfo::getName));
+        return userPackageFlowRepo.findAll(((root, criteriaQuery, criteriaBuilder) -> {
+            List<Predicate> and = JpaUtils
+                    .toPredicates(pageQuery, UserPackageFlow.class, root, criteriaQuery, criteriaBuilder);
+            and.add(criteriaBuilder.equal(root.get("type"), FlowType.WRITE_OFF));
+            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() + "%"));
+                or.add(criteriaBuilder.like(root.join("writeOffUser")
+                        .get("nickname"), "%" + pageQuery.getSearch() + "%"));
+                and.add(criteriaBuilder.or(or.toArray(new Predicate[0])));
+            }
+            return criteriaBuilder.and(and.toArray(new Predicate[0]));
+        }), JpaUtils.toPageRequest(pageQuery)).map(flow -> {
+            List<GoodsVO> goodsVOS = this.toGoodsVO(flow.getContent(), goodsMap);
+            UserPackageFlowVO vo = new UserPackageFlowVO();
+            BeanUtil.copyProperties(flow, vo);
+            vo.setNickname(flow.getUser().getNickname());
+            vo.setAvatar(flow.getUser().getAvatar());
+            vo.setContent(goodsVOS);
+            return vo;
+        });
+    }
+
     public List<UserPackageFlowVO> my(Long userId) {
         List<UserPackageFlowVO> vos = new ArrayList<>();
         // 查找用户相关

+ 1 - 1
src/main/java/com/izouma/jiashanxia/web/UserController.java

@@ -82,7 +82,7 @@ public class UserController extends BaseController {
         return userService.all(pageQuery);
     }
 
-    @PreAuthorize("hasRole('ADMIN')")
+    @PreAuthorize("hasAnyRole('ADMIN','WRITER')")
     @GetMapping("/get/{id}")
     public User get(@PathVariable Long id) {
         return userRepo.findById(id).orElseThrow(new BusinessException("无记录"));

+ 7 - 0
src/main/java/com/izouma/jiashanxia/web/UserPackageController.java

@@ -11,6 +11,7 @@ import com.izouma.jiashanxia.utils.SecurityUtils;
 import com.izouma.jiashanxia.utils.excel.ExcelUtils;
 import lombok.AllArgsConstructor;
 import org.springframework.data.domain.Page;
+import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletResponse;
@@ -63,5 +64,11 @@ public class UserPackageController extends BaseController {
     public List<UserPackageDTO> my() {
         return userPackageRepo.userPackage(SecurityUtils.getAuthenticatedUser().getId());
     }
+
+    @PreAuthorize("hasAnyRole('ADMIN','WRITER')")
+    @GetMapping("/byUser")
+    public List<UserPackageDTO> byUser(@RequestParam Long userId) {
+        return userPackageRepo.userPackage(userId);
+    }
 }
 

+ 8 - 1
src/main/java/com/izouma/jiashanxia/web/UserPackageFlowController.java

@@ -81,7 +81,14 @@ public class UserPackageFlowController extends BaseController {
         return userPackageFlowService.writeOffAll(pageQuery);
     }
 
-    @PreAuthorize("hasAnyAuthority('ADMIN','WRITER')")
+    @PreAuthorize("hasAnyRole('ADMIN', 'ROLE_WRITER')")
+    @PostMapping("/writeOffAll1")
+    @ApiOperation("核销记录")
+    public Page<UserPackageFlowVO> writeOffAll1(@RequestBody PageQuery pageQuery) {
+        return userPackageFlowService.writeOffAll1(pageQuery);
+    }
+
+    @PreAuthorize("hasAnyRole('ADMIN','WRITER')")
     @PostMapping("/writeOff")
     @ApiOperation("核销")
     public UserPackageFlow writeOff(@RequestBody WriteOffSaveVO vo) {