|
@@ -1,9 +1,11 @@
|
|
|
package com.flyer.foster.controller.app;
|
|
|
|
|
|
+import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
|
|
|
import com.flyer.foster.dto.TreeAddDTO;
|
|
|
import com.flyer.foster.dto.TreeUpdateDTO;
|
|
|
import com.flyer.foster.entity.FosterRecord;
|
|
|
import com.flyer.foster.entity.Tree;
|
|
|
+import com.flyer.foster.service.IFosterRecordService;
|
|
|
import com.flyer.foster.service.ITreeService;
|
|
|
import com.flyer.util.R;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
@@ -11,6 +13,7 @@ import org.springframework.web.bind.annotation.*;
|
|
|
|
|
|
import javax.validation.Valid;
|
|
|
import java.util.List;
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
|
* 树
|
|
@@ -24,6 +27,9 @@ public class AppTreeController {
|
|
|
@Autowired
|
|
|
private ITreeService iTreeService;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private IFosterRecordService iFosterRecordService;
|
|
|
+
|
|
|
/**
|
|
|
* 根据果园id查询树
|
|
|
* @param gardenId
|
|
@@ -38,10 +44,19 @@ public class AppTreeController {
|
|
|
* 返回区域随机的一棵树
|
|
|
* @return
|
|
|
*/
|
|
|
- @GetMapping("/getRandomTree/{areaId}")
|
|
|
- public R getRandomTree(@PathVariable Integer areaId){
|
|
|
- List<Tree> list = iTreeService.lambdaQuery().eq(Tree::getAreaId, areaId).list();
|
|
|
-
|
|
|
- return R.ok().result(null);
|
|
|
+ @GetMapping("/getRandomTree/{gardenId}")
|
|
|
+ public R getRandomTree(@PathVariable Integer gardenId){
|
|
|
+ List<FosterRecord> records = iFosterRecordService.lambdaQuery().eq(FosterRecord::getGardenId, gardenId).list();
|
|
|
+ //已认养的树
|
|
|
+ List<Integer> fosteredIds = records.stream().map(FosterRecord::getTreeId).collect(Collectors.toList());
|
|
|
+ LambdaQueryChainWrapper<Tree> queryChainWrapper = iTreeService.lambdaQuery().eq(Tree::getGardenId, gardenId);
|
|
|
+ if(fosteredIds.size() > 0){
|
|
|
+ queryChainWrapper = queryChainWrapper.notIn(Tree::getId, fosteredIds);
|
|
|
+ }
|
|
|
+ List<Tree> list = queryChainWrapper.list();
|
|
|
+ if(list.size() > 0){
|
|
|
+ return R.ok().result(list.get(0));
|
|
|
+ }
|
|
|
+ return R.error().message("没有可领养的树!");
|
|
|
}
|
|
|
}
|