shuhao 1 week ago
parent
commit
4e0a206e9f
100 changed files with 1342 additions and 1850 deletions
  1. 8 0
      admin/pom.xml
  2. 0 100
      admin/src/main/java/com/flyer/foster/controller/AreaController.java
  3. 2 4
      admin/src/main/java/com/flyer/foster/controller/FarmController.java
  4. 0 17
      admin/src/main/java/com/flyer/foster/controller/FosterRecordController.java
  5. 0 18
      admin/src/main/java/com/flyer/foster/controller/TbFarmFosterCodeController.java
  6. 0 77
      admin/src/main/java/com/flyer/foster/controller/TreeController.java
  7. 0 17
      admin/src/main/java/com/flyer/foster/controller/TreeImageController.java
  8. 0 36
      admin/src/main/java/com/flyer/foster/controller/app/AppAreaController.java
  9. 120 0
      admin/src/main/java/com/flyer/foster/controller/app/AppFarmController.java
  10. 0 92
      admin/src/main/java/com/flyer/foster/controller/app/AppFosterRecordController.java
  11. 0 53
      admin/src/main/java/com/flyer/foster/controller/app/AppGardenController.java
  12. 71 43
      admin/src/main/java/com/flyer/foster/controller/app/AppTreeController.java
  13. 0 1
      admin/src/main/java/com/flyer/foster/controller/app/AppTreePosterContentController.java
  14. 0 68
      admin/src/main/java/com/flyer/foster/controller/app/AppUserController.java
  15. 68 0
      admin/src/main/java/com/flyer/foster/controller/app/TbAddressController.java
  16. 68 0
      admin/src/main/java/com/flyer/foster/controller/app/TbFarmFosterCodeController.java
  17. 0 44
      admin/src/main/java/com/flyer/foster/dto/AreaAddDTO.java
  18. 0 42
      admin/src/main/java/com/flyer/foster/dto/AreaQueryDTO.java
  19. 0 39
      admin/src/main/java/com/flyer/foster/dto/AreaRespDTO.java
  20. 0 46
      admin/src/main/java/com/flyer/foster/dto/AreaUpdateDTO.java
  21. 25 0
      admin/src/main/java/com/flyer/foster/dto/FosterDataDto.java
  22. 24 0
      admin/src/main/java/com/flyer/foster/dto/SampleQueryDto.java
  23. 8 10
      admin/src/main/java/com/flyer/foster/dto/TreeAddDTO.java
  24. 2 14
      admin/src/main/java/com/flyer/foster/dto/TreeUpdateDTO.java
  25. 0 27
      admin/src/main/java/com/flyer/foster/dto/app/AppFosterRecordAddDTO.java
  26. 0 24
      admin/src/main/java/com/flyer/foster/dto/app/AppFosterRecordQueryDTO.java
  27. 0 52
      admin/src/main/java/com/flyer/foster/dto/app/AppFosterRecordRespDTO.java
  28. 20 0
      admin/src/main/java/com/flyer/foster/dto/app/AppSampleAge.java
  29. 20 0
      admin/src/main/java/com/flyer/foster/dto/app/AppSampleSpeciesItem.java
  30. 0 16
      admin/src/main/java/com/flyer/foster/dto/app/AppUserQueryDTO.java
  31. 0 54
      admin/src/main/java/com/flyer/foster/dto/app/AppUserRespDTO.java
  32. 0 19
      admin/src/main/java/com/flyer/foster/dto/app/AppUserUpdateDTO.java
  33. 0 98
      admin/src/main/java/com/flyer/foster/entity/Area.java
  34. 2 2
      admin/src/main/java/com/flyer/foster/entity/Farm.java
  35. 22 13
      admin/src/main/java/com/flyer/foster/entity/Sample.java
  36. 67 0
      admin/src/main/java/com/flyer/foster/entity/TbAddress.java
  37. 29 2
      admin/src/main/java/com/flyer/foster/entity/TbFarmFosterCode.java
  38. 0 103
      admin/src/main/java/com/flyer/foster/entity/Tree.java
  39. 0 93
      admin/src/main/java/com/flyer/foster/entity/TreeImage.java
  40. 1 1
      admin/src/main/java/com/flyer/foster/entity/TreePosterContent.java
  41. 0 16
      admin/src/main/java/com/flyer/foster/mapper/IAppUserMapper.java
  42. 0 35
      admin/src/main/java/com/flyer/foster/mapper/IAreaMapper.java
  43. 0 21
      admin/src/main/java/com/flyer/foster/mapper/IFosterRecordMapper.java
  44. 2 3
      admin/src/main/java/com/flyer/foster/mapper/IGardenMapper.java
  45. 0 16
      admin/src/main/java/com/flyer/foster/mapper/ITreeImageMapper.java
  46. 2 16
      admin/src/main/java/com/flyer/foster/mapper/ITreeMapper.java
  47. 16 0
      admin/src/main/java/com/flyer/foster/mapper/TbAddressMapper.java
  48. 3 0
      admin/src/main/java/com/flyer/foster/mapper/TbFarmFosterCodeMapper.java
  49. 0 0
      admin/src/main/java/com/flyer/foster/mapper/xml/AppInfoMapper.xml
  50. 0 0
      admin/src/main/java/com/flyer/foster/mapper/xml/AppSubscribeMapper.xml
  51. 0 0
      admin/src/main/java/com/flyer/foster/mapper/xml/CartoonMapper.xml
  52. 0 0
      admin/src/main/java/com/flyer/foster/mapper/xml/CartoonUrlMapper.xml
  53. 0 0
      admin/src/main/java/com/flyer/foster/mapper/xml/GardenMapper.xml
  54. 0 0
      admin/src/main/java/com/flyer/foster/mapper/xml/MenuMapper.xml
  55. 0 0
      admin/src/main/java/com/flyer/foster/mapper/xml/PosterLibMapper.xml
  56. 0 0
      admin/src/main/java/com/flyer/foster/mapper/xml/RoleMapper.xml
  57. 0 0
      admin/src/main/java/com/flyer/foster/mapper/xml/RoleMenuMapper.xml
  58. 0 0
      admin/src/main/java/com/flyer/foster/mapper/xml/ScoreMapper.xml
  59. 1 1
      admin/src/main/java/com/flyer/foster/mapper/xml/TbAddressMapper.xml
  60. 0 0
      admin/src/main/java/com/flyer/foster/mapper/xml/TenantMapper.xml
  61. 0 0
      admin/src/main/java/com/flyer/foster/mapper/xml/TreeImageMapper.xml
  62. 2 2
      admin/src/main/java/com/flyer/foster/mapper/xml/TreeMapper.xml
  63. 0 0
      admin/src/main/java/com/flyer/foster/mapper/xml/TreePosterContentMapper.xml
  64. 0 0
      admin/src/main/java/com/flyer/foster/mapper/xml/UserMapper.xml
  65. 0 0
      admin/src/main/java/com/flyer/foster/mapper/xml/UserRoleMapper.xml
  66. 0 0
      admin/src/main/java/com/flyer/foster/mapper/xml/WhisperMapper.xml
  67. 0 0
      admin/src/main/java/com/flyer/foster/mapper/xml/WorldMapMapper.xml
  68. 0 2
      admin/src/main/java/com/flyer/foster/service/IAppSubscribeService.java
  69. 0 22
      admin/src/main/java/com/flyer/foster/service/IAppUserService.java
  70. 0 44
      admin/src/main/java/com/flyer/foster/service/IAreaService.java
  71. 0 37
      admin/src/main/java/com/flyer/foster/service/IFosterRecordService.java
  72. 2 3
      admin/src/main/java/com/flyer/foster/service/IGardenService.java
  73. 0 1
      admin/src/main/java/com/flyer/foster/service/IPosterLibService.java
  74. 18 0
      admin/src/main/java/com/flyer/foster/service/ITbAddressService.java
  75. 12 0
      admin/src/main/java/com/flyer/foster/service/ITbFarmFosterCodeService.java
  76. 0 16
      admin/src/main/java/com/flyer/foster/service/ITreeImageService.java
  77. 2 10
      admin/src/main/java/com/flyer/foster/service/ITreeService.java
  78. 0 1
      admin/src/main/java/com/flyer/foster/service/impl/AppSubscribeServiceImpl.java
  79. 0 113
      admin/src/main/java/com/flyer/foster/service/impl/AppUserServiceImpl.java
  80. 0 77
      admin/src/main/java/com/flyer/foster/service/impl/AreaServiceImpl.java
  81. 0 109
      admin/src/main/java/com/flyer/foster/service/impl/FosterRecordServiceImpl.java
  82. 27 40
      admin/src/main/java/com/flyer/foster/service/impl/GardenServiceImpl.java
  83. 5 8
      admin/src/main/java/com/flyer/foster/service/impl/ScoreServiceImpl.java
  84. 31 0
      admin/src/main/java/com/flyer/foster/service/impl/TbAddressServiceImpl.java
  85. 50 0
      admin/src/main/java/com/flyer/foster/service/impl/TbFarmFosterCodeServiceImpl.java
  86. 0 20
      admin/src/main/java/com/flyer/foster/service/impl/TreeImageServiceImpl.java
  87. 3 12
      admin/src/main/java/com/flyer/foster/service/impl/TreeServiceImpl.java
  88. 25 0
      admin/src/main/java/com/flyer/foster/service/rpc/farm/FeignFarmRegionService.java
  89. 23 0
      admin/src/main/java/com/flyer/foster/service/rpc/farm/FeignFarmService.java
  90. 27 0
      admin/src/main/java/com/flyer/foster/service/rpc/farm/FeignFarmWorkService.java
  91. 19 0
      admin/src/main/java/com/flyer/foster/service/rpc/farm/model/FarmWorkPrescription.java
  92. 59 0
      admin/src/main/java/com/flyer/foster/service/rpc/farm/model/FeignFarmDto.java
  93. 33 0
      admin/src/main/java/com/flyer/foster/service/rpc/farm/model/FeignRegionDto.java
  94. 135 0
      admin/src/main/java/com/flyer/foster/service/rpc/farm/model/ZFarmWorkOrderPesticideFertilizerVo.java
  95. 78 0
      admin/src/main/java/com/flyer/foster/service/rpc/farm/model/ZFarmWorkRecordSampleDetailVo.java
  96. 43 0
      admin/src/main/java/com/flyer/foster/service/rpc/sample/FeignSampleService.java
  97. 95 0
      admin/src/main/java/com/flyer/foster/service/rpc/sample/model/FeignSampleDto.java
  98. 18 0
      admin/src/main/java/com/flyer/foster/service/rpc/species/FeignBotanyTypeService.java
  99. 22 0
      admin/src/main/java/com/flyer/foster/service/rpc/species/FeignPCitySpeciesItemService.java
  100. 32 0
      admin/src/main/java/com/flyer/foster/service/rpc/species/FeignSpeciesItemService.java

+ 8 - 0
admin/pom.xml

@@ -130,6 +130,14 @@
                 <groupId>org.springframework.boot</groupId>
                 <artifactId>spring-boot-maven-plugin</artifactId>
             </plugin>
+            <!-- 测试 -->
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-surefire-plugin</artifactId>
+                <configuration>
+                    <skipTests>true</skipTests><!-- 忽略测试 -->
+                </configuration>
+            </plugin>
         </plugins>
     </build>
 </project>

+ 0 - 100
admin/src/main/java/com/flyer/foster/controller/AreaController.java

@@ -1,100 +0,0 @@
-package com.flyer.foster.controller;
-
-import cn.dev33.satoken.annotation.SaCheckLogin;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.flyer.exception.BusinessException;
-import com.flyer.foster.dto.AreaAddDTO;
-import com.flyer.foster.dto.AreaQueryDTO;
-import com.flyer.foster.dto.AreaRespDTO;
-import com.flyer.foster.dto.AreaUpdateDTO;
-import com.flyer.foster.entity.Area;
-import com.flyer.foster.service.IAreaService;
-import com.flyer.util.R;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.*;
-
-import javax.validation.Valid;
-import java.util.List;
-
-/**
- * 区域
- *
- * @author flyer
- * @since 2024-05-09
- */
-@RestController
-@RequestMapping("/admin/area")
-public class AreaController {
-    @Autowired
-    private IAreaService iAreaService;
-
-    /**
-     * 区域列表-分页
-     *
-     * @param current 当前页
-     * @param size    当前页显示条数
-     * @return
-     */
-    @GetMapping("/list/{current}/{size}")
-    public R getPageList(@PathVariable Integer current, @PathVariable Integer size, AreaQueryDTO queryDTO) {
-        IPage<AreaRespDTO> page = new Page<>(current, size);
-        return R.ok().result(iAreaService.getPageList(page, queryDTO));
-    }
-
-    /**
-     * 根据区域id获取区域详情
-     *
-     * @param areaId
-     * @return
-     */
-    @GetMapping("/{areaId}")
-    public R getById(@PathVariable Integer areaId) {
-        return R.ok().result(iAreaService.getById(areaId));
-    }
-
-    /**
-     * 区域列表
-     *
-     * @param areaQueryDTO 查询对象
-     * @return
-     */
-    @GetMapping("/list")
-    public R getByGardenId(@Valid AreaQueryDTO areaQueryDTO) {
-        return R.ok().result(iAreaService.lambdaQuery().eq(Area::getGardenId, areaQueryDTO.getGardenId()).list());
-    }
-
-    /**
-     * 新增区域
-     *
-     * @param addDTOList
-     * @return
-     */
-    @PostMapping("")
-    public R addArea(@Valid @RequestBody List<AreaAddDTO> addDTOList) {
-        return R.ok().result(iAreaService.addArea(addDTOList));
-    }
-
-    /**
-     * 修改区域
-     *
-     * @param areaId
-     * @param updateDTO
-     * @return
-     */
-    @PutMapping("/{areaId}")
-    public R updateArea(@PathVariable Integer areaId, @RequestBody AreaUpdateDTO updateDTO) {
-        updateDTO.setId(areaId);
-        return R.ok().result(iAreaService.updateArea(updateDTO));
-    }
-
-    /**
-     * 删除区域
-     *
-     * @return
-     */
-    @PostMapping("/delete")
-    public R deleteArea(@RequestBody List<Integer> idList) {
-        return R.ok().result(iAreaService.deleteByIdList(idList));
-    }
-}

+ 2 - 4
admin/src/main/java/com/flyer/foster/controller/GardenController.java → admin/src/main/java/com/flyer/foster/controller/FarmController.java

@@ -1,10 +1,8 @@
 package com.flyer.foster.controller;
 
-import cn.dev33.satoken.annotation.SaCheckLogin;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.flyer.foster.dto.*;
-import com.flyer.foster.entity.Garden;
 import com.flyer.foster.service.IGardenService;
 import com.flyer.util.R;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -20,8 +18,8 @@ import java.util.List;
  * @since 2024-05-09
  */
 @RestController
-@RequestMapping("/admin/garden")
-public class GardenController {
+@RequestMapping("/admin/farm")
+public class FarmController {
     @Autowired
     private IGardenService iGardenService;
 

+ 0 - 17
admin/src/main/java/com/flyer/foster/controller/FosterRecordController.java

@@ -1,17 +0,0 @@
-package com.flyer.foster.controller;
-
-import cn.dev33.satoken.annotation.SaCheckLogin;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-/**
- * 领养记录
- *
- * @author flyer
- * @since 2024-05-09
- */
-@RestController
-@RequestMapping("/admin/foster-record")
-public class FosterRecordController {
-
-}

+ 0 - 18
admin/src/main/java/com/flyer/foster/controller/TbFarmFosterCodeController.java

@@ -1,18 +0,0 @@
-package com.flyer.foster.controller;
-
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.stereotype.Controller;
-
-/**
- * <p>
- * 果园 前端控制器
- * </p>
- *
- * @author shuhao
- * @since 2025-03-14
- */
-@Controller
-@RequestMapping("/tbFarmFosterCode")
-public class TbFarmFosterCodeController {
-
-}

+ 0 - 77
admin/src/main/java/com/flyer/foster/controller/TreeController.java

@@ -1,77 +0,0 @@
-package com.flyer.foster.controller;
-
-import cn.dev33.satoken.annotation.SaCheckLogin;
-import com.flyer.foster.dto.AreaAddDTO;
-import com.flyer.foster.dto.PosterLibUpdateDTO;
-import com.flyer.foster.dto.TreeAddDTO;
-import com.flyer.foster.dto.TreeUpdateDTO;
-import com.flyer.foster.entity.PosterLib;
-import com.flyer.foster.entity.Tree;
-import com.flyer.foster.service.IAreaService;
-import com.flyer.foster.service.ITreeService;
-import com.flyer.util.R;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.*;
-
-import javax.validation.Valid;
-import java.util.List;
-
-/**
- * 树
- *
- * @author flyer
- * @since 2024-05-09
- */
-@RestController
-@RequestMapping("/admin/tree")
-public class TreeController {
-    @Autowired
-    private ITreeService iTreeService;
-
-    /**
-     * 新增果树
-     *
-     * @param addDTO
-     * @return
-     */
-    @PostMapping("")
-    public R addTree(@Valid @RequestBody TreeAddDTO addDTO) {
-        return R.ok().result(iTreeService.addTree(addDTO));
-    }
-
-    /**
-     * 修改树
-     */
-    @PutMapping("")
-    public R updatePosterLib(@Valid @RequestBody TreeUpdateDTO updateDTO) {
-        return R.ok().result(
-                iTreeService.lambdaUpdate()
-                        .set(Tree::getWkt, updateDTO.getWkt())
-                        .set(Tree::getGardenId, updateDTO.getGardenId())
-                        .set(Tree::getAreaId, updateDTO.getAreaId())
-                        .eq(Tree::getId, updateDTO.getId())
-                        .update());
-    }
-
-    /**
-     * 根据gardenId获取详情
-     *
-     * @param gardenId
-     * @return
-     */
-    @GetMapping("/{gardenId}")
-    public R getTreeById(@PathVariable Integer gardenId) {
-        return R.ok().result(iTreeService.getTreeById(gardenId));
-    }
-
-    /**
-     * 删除树
-     *
-     * @param idList id集合
-     * @return
-     */
-    @PostMapping("/delete")
-    public R deleteTree(@RequestBody List<Integer> idList) {
-        return R.ok().result(iTreeService.deleteByIdList(idList));
-    }
-}

+ 0 - 17
admin/src/main/java/com/flyer/foster/controller/TreeImageController.java

@@ -1,17 +0,0 @@
-package com.flyer.foster.controller;
-
-import cn.dev33.satoken.annotation.SaCheckLogin;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-/**
- * 树照片
- *
- * @author flyer
- * @since 2024-05-09
- */
-@RestController
-@RequestMapping("/admin/tree-image")
-public class TreeImageController {
-
-}

+ 0 - 36
admin/src/main/java/com/flyer/foster/controller/app/AppAreaController.java

@@ -1,36 +0,0 @@
-package com.flyer.foster.controller.app;
-
-import com.flyer.foster.dto.AreaQueryDTO;
-import com.flyer.foster.entity.Area;
-import com.flyer.foster.service.IAreaService;
-import com.flyer.util.R;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-import javax.validation.Valid;
-
-/**
- * 区域(小程序)
- *
- * @author flyer
- * @since 2024-05-09
- */
-@RestController
-@RequestMapping("/app/area")
-public class AppAreaController {
-    @Autowired
-    private IAreaService iAreaService;
-
-    /**
-     * 区域列表
-     * @param areaQueryDTO 查询对象
-     * @return
-     */
-    @GetMapping("/list")
-    public R getByGardenId(@Valid AreaQueryDTO areaQueryDTO) {
-        return R.ok().result(iAreaService.lambdaQuery().eq(Area::getGardenId, areaQueryDTO.getGardenId()).list());
-    }
-
-}

+ 120 - 0
admin/src/main/java/com/flyer/foster/controller/app/AppFarmController.java

@@ -0,0 +1,120 @@
+package com.flyer.foster.controller.app;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.flyer.foster.dto.GardenQueryDTO;
+import com.flyer.foster.dto.GardenRespDTO;
+import com.flyer.foster.dto.SampleQueryDto;
+import com.flyer.foster.dto.app.AppSampleAge;
+import com.flyer.foster.dto.app.AppSampleSpeciesItem;
+import com.flyer.foster.entity.Farm;
+import com.flyer.foster.service.IGardenService;
+import com.flyer.foster.service.rpc.farm.FeignFarmRegionService;
+import com.flyer.foster.service.rpc.farm.FeignFarmService;
+import com.flyer.foster.service.rpc.farm.model.FeignFarmDto;
+import com.flyer.foster.service.rpc.farm.model.FeignRegionDto;
+import com.flyer.foster.service.rpc.sample.FeignSampleService;
+import com.flyer.foster.service.rpc.sample.model.FeignSampleDto;
+import com.flyer.foster.service.rpc.species.FeignSpeciesItemService;
+import com.flyer.foster.service.rpc.species.model.SpeciesItem;
+import com.flyer.util.R;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 农场(小程序)
+ *
+ * @author flyer
+ * @since 2024-05-09
+ */
+@RestController
+@RequestMapping("/app/farm")
+public class AppFarmController {
+    @Autowired
+    private IGardenService iGardenService;
+    @Autowired
+    private FeignFarmService feignFarmService;
+    @Autowired
+    private FeignFarmRegionService feignFarmRegionService;
+    @Autowired
+    private FeignSampleService feignSampleService;
+    @Autowired
+    private FeignSpeciesItemService feignSpeciesItemService;
+
+    /**
+     * 获取真实农场采样点List
+     * @return
+     */
+    @PostMapping("/getRealFarmSampleList")
+    public R getRealFarmSampleList(@RequestBody SampleQueryDto dto){
+        FeignFarmDto farm = feignFarmService.get(dto.getFarmId());
+        List<SpeciesItem> speciesItems = feignSpeciesItemService.listByPid(farm.getSpeciesId());
+        Map<Long, SpeciesItem> map = new HashMap<>();
+        for (SpeciesItem item : speciesItems) {
+            map.put(item.getId(), item);
+        }
+
+        List<FeignSampleDto> list = feignSampleService.list(dto);
+        Map<Long, AppSampleSpeciesItem> speciesItemMap = new HashMap<>();
+        //统计品种和树龄
+        for (FeignSampleDto sample : list) {
+            speciesItemMap.put(sample.getSpeciesItemId(),
+                    new AppSampleSpeciesItem(sample.getSpeciesItemId(),map.get(sample.getSpeciesItemId()).getName()));
+        }
+        //构造树龄标准
+        List<AppSampleAge> ageList = new ArrayList<>(3);
+        ageList.add(new AppSampleAge("1-3年", new Integer[]{0,3}));
+        ageList.add(new AppSampleAge("3-5年", new Integer[]{3,5}));
+        ageList.add(new AppSampleAge("超过10年", new Integer[]{10,100}));
+        return R.ok().result(list).extData(new Object[]{speciesItemMap.values()
+        ,ageList});
+    }
+
+    /**
+     * 获取真实农场区域信息
+     * @return
+     */
+    @PostMapping("/getRealFarmRegionList")
+    public R getRealFarmRegionList(@RequestBody SampleQueryDto dto){
+        List<FeignRegionDto> list = feignFarmRegionService.list(dto);
+        return R.ok().result(list);
+    }
+
+    /**
+     * 获取真实农场信息
+     * @return
+     */
+    @GetMapping("/getRealFarm")
+    public R getRealFarm(@RequestParam Integer farmId){
+        FeignFarmDto dto = feignFarmService.get(farmId);
+        return R.ok().result(dto);
+    }
+
+    /**
+     * 果园信息获取
+     * @return
+     */
+    @GetMapping("/get")
+    public R get(@RequestParam Integer farmId) {
+        Farm bean = iGardenService.lambdaQuery().eq(Farm::getBirdseyeFarmId, farmId).one();
+        return R.ok().result(bean);
+    }
+
+    /**
+     * 果园列表-分页
+     *
+     * @param current 当前页
+     * @param size    当前页显示条数
+     * @return
+     */
+    @GetMapping("/list/{current}/{size}")
+    public R getPageList(@PathVariable Integer current, @PathVariable Integer size, GardenQueryDTO queryDTO) {
+        IPage<GardenRespDTO> page = new Page<>(current, size);
+        return R.ok().result(iGardenService.getPageList(page, queryDTO));
+    }
+}

+ 0 - 92
admin/src/main/java/com/flyer/foster/controller/app/AppFosterRecordController.java

@@ -1,92 +0,0 @@
-package com.flyer.foster.controller.app;
-
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.flyer.foster.dto.app.AppFosterRecordAddDTO;
-import com.flyer.foster.dto.TreeUpdateDTO;
-import com.flyer.foster.dto.app.AppFosterRecordQueryDTO;
-import com.flyer.foster.entity.FosterRecord;
-import com.flyer.foster.entity.Tree;
-import com.flyer.foster.pojo.StpAppUtil;
-import com.flyer.foster.service.IFosterRecordService;
-import com.flyer.util.R;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.*;
-
-import javax.validation.Valid;
-import java.util.List;
-
-/**
- * 领养记录(小程序)
- *
- * @author flyer
- * @since 2024-05-09
- */
-@RestController
-@RequestMapping("/app/foster-record")
-public class AppFosterRecordController {
-
-    @Autowired
-    private IFosterRecordService iFosterRecordService;
-
-    /**
-     * 根据果园id查询领养记录
-     *
-     * @return
-     */
-    @GetMapping("/list/{gardenId}")
-    public R list(@PathVariable Integer gardenId) {
-        String appUserId = StpAppUtil.getLoginId().toString();
-        List<FosterRecord> res = iFosterRecordService.lambdaQuery().
-                eq(FosterRecord::getAppUserId, appUserId)
-                .eq(FosterRecord::getGardenId, gardenId)
-                .list();
-        return R.ok().result(res);
-    }
-
-    /**
-     * 修改树
-     */
-    @PutMapping("")
-    public R update(@RequestBody FosterRecord updateDTO) {
-        String appUserId = StpAppUtil.getLoginId().toString();
-        return R.ok().result(
-                iFosterRecordService.lambdaUpdate()
-                        .set(FosterRecord::getName, updateDTO.getName())
-                        .eq(FosterRecord::getAppUserId, appUserId)
-                        .eq(FosterRecord::getGardenId, updateDTO.getGardenId())
-                        .update());
-    }
-
-    /**
-     * 领养记录-分页
-     *
-     * @param current
-     * @param size
-     * @param queryDTO
-     * @return
-     */
-    @GetMapping("/list/{current}/{size}")
-    public R getPageList(@PathVariable Integer current, @PathVariable Integer size, AppFosterRecordQueryDTO queryDTO) {
-        return R.ok().result(iFosterRecordService.getPageList(new Page<>(current, size), queryDTO));
-    }
-
-    /**
-     * 确认领养
-     *
-     * @return
-     */
-    @PostMapping("")
-    public R addFosterRecord(@Valid @RequestBody AppFosterRecordAddDTO addDTO) {
-        return R.ok().result(iFosterRecordService.addFosterRecord(addDTO));
-    }
-
-    /**
-     * 认养天数
-     *
-     * @return
-     */
-    @GetMapping("/foster-days")
-    public R getFosterDays(AppFosterRecordQueryDTO queryDTO) {
-        return R.ok().result(iFosterRecordService.getFosterDays(queryDTO));
-    }
-}

+ 0 - 53
admin/src/main/java/com/flyer/foster/controller/app/AppGardenController.java

@@ -1,53 +0,0 @@
-package com.flyer.foster.controller.app;
-
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.flyer.foster.dto.GardenAddDTO;
-import com.flyer.foster.dto.GardenQueryDTO;
-import com.flyer.foster.dto.GardenRespDTO;
-import com.flyer.foster.dto.GardenUpdateDTO;
-import com.flyer.foster.entity.Garden;
-import com.flyer.foster.service.IGardenService;
-import com.flyer.util.R;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.*;
-
-import javax.validation.Valid;
-import java.util.List;
-
-/**
- * 果园(小程序)
- *
- * @author flyer
- * @since 2024-05-09
- */
-@RestController
-@RequestMapping("/app/garden")
-public class AppGardenController {
-    @Autowired
-    private IGardenService iGardenService;
-
-    /**
-     * 果园列表
-     *
-     * @return
-     */
-    @GetMapping("/get")
-    public R get(@RequestParam Integer id) {
-        Garden bean = iGardenService.getById(id);
-        return R.ok().result(bean);
-    }
-
-    /**
-     * 果园列表-分页
-     *
-     * @param current 当前页
-     * @param size    当前页显示条数
-     * @return
-     */
-    @GetMapping("/list/{current}/{size}")
-    public R getPageList(@PathVariable Integer current, @PathVariable Integer size, GardenQueryDTO queryDTO) {
-        IPage<GardenRespDTO> page = new Page<>(current, size);
-        return R.ok().result(iGardenService.getPageList(page, queryDTO));
-    }
-}

+ 71 - 43
admin/src/main/java/com/flyer/foster/controller/app/AppTreeController.java

@@ -1,88 +1,116 @@
 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.TreeRespDTO;
 import com.flyer.foster.dto.TreeUpdateDTO;
-import com.flyer.foster.entity.FosterRecord;
-import com.flyer.foster.entity.Tree;
+import com.flyer.foster.entity.Sample;
 import com.flyer.foster.pojo.StpAppUtil;
-import com.flyer.foster.service.IFosterRecordService;
+import com.flyer.foster.service.ITbFarmFosterCodeService;
 import com.flyer.foster.service.ITreeService;
+import com.flyer.foster.service.impl.TbFarmFosterCodeServiceImpl;
+import com.flyer.foster.service.rpc.farm.FeignFarmWorkService;
+import com.flyer.foster.service.rpc.farm.model.ZFarmWorkRecordSampleDetailVo;
+import com.flyer.foster.service.rpc.sample.FeignSampleService;
+import com.flyer.foster.service.rpc.sample.model.FeignSampleDto;
+import com.flyer.model.PageAndListResult;
+import com.flyer.util.CopyUtil;
 import com.flyer.util.R;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.*;
 
-import javax.validation.Valid;
 import java.time.LocalDateTime;
 import java.util.List;
+import java.util.Map;
 import java.util.stream.Collectors;
 
 /**
  * 树(小程序)
- *
  * @author flyer
  * @since 2024-05-09
  */
 @RestController
-@RequestMapping("/app/tree")
+@RequestMapping("/app/sample")
 public class AppTreeController {
     @Autowired
     private ITreeService iTreeService;
+    @Autowired
+    private FeignFarmWorkService feignFarmWorkService;
+    @Autowired
+    private FeignSampleService feignSampleService;
+    @Autowired
+    private ITbFarmFosterCodeService tbFarmFosterCodeService;
 
     /**
-     * 根据果园id查询树
-     *
-     * @param gardenId
-     * @return
+     * 使用认养码并且保存树
      */
-    @GetMapping("/list/{gardenId}")
-    public R getTreeByGardenId(@PathVariable Integer gardenId) {
-        return R.ok().result(iTreeService.getTreeById(gardenId));
+    @PostMapping("useFosterCodeSaveSample")
+    @Transactional
+    public R useFosterCodeSaveSample(TreeAddDTO dto){
+        FeignSampleDto feignSampleDto = feignSampleService.getById(dto.getSampleId());
+        Sample sample = new Sample();
+        sample.setName(dto.getName());
+        sample.setFarmId(feignSampleDto.getFarmId());
+        sample.setRegionId(feignSampleDto.getRegionId());
+        sample.setAppUserId(StpAppUtil.getLoginIdAsInt());
+        sample.setSampleId(dto.getSampleId());
+        iTreeService.save(sample);
+        tbFarmFosterCodeService.useFosterCode(dto.getFosterCode());
+        return R.ok();
     }
 
+
     /**
      * 修改树
      */
-    @PutMapping("")
+    @PostMapping("update")
     public R update(@RequestBody TreeUpdateDTO updateDTO) {
-        return R.ok().result(
-                iTreeService.lambdaUpdate()
-                        .set(Tree::getName, updateDTO.getGardenId())
-                        .eq(Tree::getId, updateDTO.getId())
-                        .update());
+        Sample sample = iTreeService.getById(updateDTO.getId());
+        BeanUtils.copyProperties(updateDTO, sample, CopyUtil.nullNames(updateDTO));
+        iTreeService.updateById(sample);
+        return R.ok().result(sample);
     }
 
     /**
-     * get tree
+     * 已认养的树List
+     * @param farmId
+     * @return
      */
-    @GetMapping("/{treeId}")
-    public R get(@PathVariable Integer treeId) {
-        Tree tree = iTreeService.lambdaQuery().eq(Tree::getName ,treeId).one();
-        TreeRespDTO dto = new TreeRespDTO();
-        BeanUtils.copyProperties(tree, dto);
-        return R.ok().result(dto);
+    @GetMapping("/list/{farmId}")
+    public R list(@PathVariable Integer farmId) {
+        Integer userId = StpAppUtil.getLoginIdAsInt();
+        List<Sample> list = iTreeService.lambdaQuery()
+                .eq(Sample::getFarmId,farmId)
+                .eq(Sample::getAppUserId ,userId).list();
+        //获取成熟状态
+        List<FeignSampleDto> feignSampleDtos = feignSampleService.getByIds(list.stream().map(Sample::getSampleId).collect(Collectors.toList()));
+        Map<Integer, FeignSampleDto> map = feignSampleDtos.stream().collect(Collectors.toMap(FeignSampleDto::getId, item -> item));
+        for(Sample sample : list){
+            FeignSampleDto item =map.get(sample.getSampleId());
+            if(item!=null){
+                sample.setIsBeRipe(item.getIsBeRipe());
+            }
+        }
+        return R.ok().result(list);
     }
 
+
+
     /**
-     * 返回区域随机的一棵树
-     *
+     * 采样点农事记录
+     * @param sampleId
+     * @param page
+     * @param limit
      * @return
      */
-    @GetMapping("/getRandomTree/{gardenId}")
-    public R getRandomTree(@PathVariable Integer gardenId) {
-        int tenantId = StpAppUtil.getTokenSession().getInt("tenantId");
-        Tree tree = new Tree();
-        tree.setGardenId(gardenId);
-        tree.setTenantId(tenantId);
-        tree.setCreatedBy("kelei");
-        tree.setCreatedTime(LocalDateTime.now());
-        tree.setUpdatedBy("kelei");
-        tree.setUpdatedTime(LocalDateTime.now());
-        // 根据果园id创建一颗树
-        iTreeService.save(tree);
-        // 获取新插入的树的信息并返回给前端
-        return R.ok().result(iTreeService.getById(tree.getId()));
+    @GetMapping("/listBySampleId/{page}/{limit}")
+    public R listBySampleId(
+            @RequestParam Integer sampleId,
+            @PathVariable Integer page,
+            @PathVariable Integer limit
+    ){
+        PageAndListResult<ZFarmWorkRecordSampleDetailVo> res = feignFarmWorkService.listBySampleId(sampleId, page, limit);
+        return R.ok().result(res);
     }
 }

+ 0 - 1
admin/src/main/java/com/flyer/foster/controller/app/AppTreePosterContentController.java

@@ -2,7 +2,6 @@ package com.flyer.foster.controller.app;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.flyer.foster.dto.AreaRespDTO;
 import com.flyer.foster.dto.app.AppTreePosterContentAddDTO;
 import com.flyer.foster.dto.app.AppTreePosterContentQueryDTO;
 import com.flyer.foster.dto.app.AppTreePosterContentRespDTO;

+ 0 - 68
admin/src/main/java/com/flyer/foster/controller/app/AppUserController.java

@@ -2,13 +2,10 @@ package com.flyer.foster.controller.app;
 
 import com.flyer.foster.consts.WechatConst;
 import com.flyer.foster.dto.app.AppSubscribeRespDTO;
-import com.flyer.foster.dto.app.AppUserQueryDTO;
-import com.flyer.foster.dto.app.AppUserUpdateDTO;
 import com.flyer.foster.entity.AppInfo;
 import com.flyer.foster.entity.AppSubscribe;
 import com.flyer.foster.service.IAppInfoService;
 import com.flyer.foster.service.IAppSubscribeService;
-import com.flyer.foster.service.IAppUserService;
 import com.flyer.foster.util.WeChatApiUtil;
 import com.flyer.util.JwtUtil;
 import com.flyer.util.R;
@@ -28,70 +25,5 @@ import java.util.Map;
 @RestController
 @RequestMapping("/app/user")
 public class AppUserController {
-    @Autowired
-    private JwtUtil jwtUtil;
 
-    @Autowired
-    private IAppUserService iAppUserService;
-
-    @Autowired
-    private WeChatApiUtil weChatApiUtil;
-
-    @Autowired
-    private IAppSubscribeService iAppSubscribeService;
-
-    @Autowired
-    private IAppInfoService iAppInfoService;
-
-    @RequestMapping("/login")
-    public R login(@RequestBody AppUserQueryDTO dto, @RequestHeader(value = "appid") String appid) {
-        return R.ok().result(iAppUserService.login(dto, appid));
-    }
-
-    /**
-     * 生成飞鸟看园token
-     *
-     * @return
-     */
-    @PostMapping("/generate-birdseye-token")
-    public R generateBirdseyeToken() {
-        String audience = "sysuimars";
-        String subject = "api";
-        Map<String, Object> claims = new HashMap<>();
-        claims.put("userid", 12);
-        String birdseyeToken = jwtUtil.createBirdseyeToken(claims, audience, subject);
-        return R.ok().result(birdseyeToken);
-    }
-
-    /**
-     * 给订阅用户发送消息
-     *
-     * @return
-     */
-    @PostMapping("/send-sub-msg")
-    public R sendSubscribeMessage(@RequestHeader(value = "appid") String appid) {
-        AppInfo appInfo = iAppInfoService.getByAppId(appid);
-        String accessToken = weChatApiUtil.getAccessToken(appInfo.getAppId(), appInfo.getAppSecret());
-
-        // 获取已经订阅用户信息
-        List<AppSubscribeRespDTO> subscribeUserInfoList = iAppSubscribeService.getSubscribeUserInfo();
-        for (AppSubscribeRespDTO respDTO : subscribeUserInfoList) {
-            int count = respDTO.getCount();
-            // 订阅次数-1
-            iAppSubscribeService
-                    .lambdaUpdate()
-                    .set(AppSubscribe::getCount, --count)
-                    .eq(AppSubscribe::getAppUserId, respDTO.getAppUserId())
-                    .update();
-            // 给订阅用户发消息
-            weChatApiUtil.subscribeMessage(accessToken, respDTO.getOpenId(), WechatConst.SUBSCRIBE_TEMPLATE1);
-        }
-        return R.ok();
-    }
-
-    @PutMapping("/{userId}")
-    public R updateUser(@PathVariable Integer userId, @RequestBody AppUserUpdateDTO updateDTO) {
-        updateDTO.setUserId(userId);
-        return R.ok().result(iAppUserService.updateUser(updateDTO));
-    }
 }

+ 68 - 0
admin/src/main/java/com/flyer/foster/controller/app/TbAddressController.java

@@ -0,0 +1,68 @@
+package com.flyer.foster.controller.app;
+
+import com.flyer.foster.entity.TbAddress;
+import com.flyer.foster.pojo.StpAppUtil;
+import com.flyer.foster.service.ITbAddressService;
+import com.flyer.util.CopyUtil;
+import com.flyer.util.R;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.stereotype.Controller;
+
+import java.util.List;
+
+/**
+ * 地址管理前端控制器
+ * @author shuhao
+ * @since 2025-03-16
+ */
+@RestController
+@RequestMapping("/app/address")
+public class TbAddressController {
+
+    @Autowired
+    private ITbAddressService tbAddressService;
+
+    /**
+     * 获取用户地址列表
+     * @return
+     */
+    @GetMapping("/list")
+    public R list(){
+        List<TbAddress> res = tbAddressService.lambdaQuery().eq(TbAddress::getAppUserId, StpAppUtil.getLoginIdAsInt())
+                .orderByAsc(TbAddress::getSort).list();
+        return R.ok().result(res);
+    }
+
+    /**
+     * 保存或更新地址信息
+     * @param req
+     * @return
+     */
+    @PostMapping("/save")
+    @Transactional
+    public R save(@RequestBody TbAddress req){
+        TbAddress bean = null;
+        Integer appUserId = StpAppUtil.getLoginIdAsInt();
+        if(req.getId() == null){
+            bean = new TbAddress();
+        }else{
+            bean = tbAddressService.getById(req.getId());
+        }
+        BeanUtils.copyProperties(req, bean, CopyUtil.nullNames(req));
+        bean.setAppUserId(appUserId);
+        tbAddressService.saveOrUpdate(bean);
+        //是否设置默认地址
+        if(req.getIsDefault() != null && req.getIsDefault().equals(1)){
+            Integer minSort = tbAddressService.minSort(appUserId, bean.getId());
+            bean.setSort(minSort);
+        }
+        if(bean.getSort() == null){
+            bean.setSort(bean.getId());
+        }
+        tbAddressService.updateById(bean);
+        return R.ok().result(bean);
+    }
+}

+ 68 - 0
admin/src/main/java/com/flyer/foster/controller/app/TbFarmFosterCodeController.java

@@ -0,0 +1,68 @@
+package com.flyer.foster.controller.app;
+
+import com.flyer.foster.dto.FosterDataDto;
+import com.flyer.foster.entity.TbFarmFosterCode;
+import com.flyer.foster.service.ITbFarmFosterCodeService;
+import com.flyer.util.R;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.time.LocalDateTime;
+
+/**
+ * 认养码前端控制器
+ * @author shuhao
+ * @since 2025-03-14
+ */
+@RestController
+@RequestMapping("/app/tbFarmFosterCode")
+public class TbFarmFosterCodeController {
+
+    @Autowired
+    private ITbFarmFosterCodeService tbFarmFosterCodeService;
+
+    /**
+     * 创建果园寄养码
+     * @param farmId
+     * @param fosterType
+     * @param targetId
+     * @return
+     */
+    @GetMapping("/create")
+    public R create(@RequestParam Integer farmId,
+                    @RequestParam Integer fosterType,
+                    @RequestParam Integer targetId){
+        TbFarmFosterCode tbFarmFosterCode = new TbFarmFosterCode();
+        tbFarmFosterCode.setFarmId(farmId);
+        tbFarmFosterCode.setFosterCode(tbFarmFosterCodeService.generateFosterCode(farmId));
+        tbFarmFosterCode.setFosterData(new FosterDataDto(targetId).toJsonString());
+        tbFarmFosterCode.setFosterUse(0);
+        tbFarmFosterCode.setFosterType(fosterType);
+        tbFarmFosterCode.setExpTime(LocalDateTime.now().plusDays(3));
+        tbFarmFosterCodeService.save(tbFarmFosterCode);
+        return R.ok().result(tbFarmFosterCode);
+    }
+
+    /**
+     * 返回果园寄养码信息
+     * @param fosterCode
+     * @return
+     */
+    @GetMapping("/getFosterCodeInfo")
+    public R getFosterCodeInfo(
+            @RequestParam String fosterCode,
+            @RequestParam Integer farmId
+    ){
+        TbFarmFosterCode tbFarmFosterCode = tbFarmFosterCodeService.getFosterCodeByFosterCode(farmId, fosterCode);
+        if(tbFarmFosterCode == null){
+            throw new IllegalArgumentException("无效的认养码!");
+        }
+        tbFarmFosterCode.transFosterDataDto();
+        return R.ok().result(tbFarmFosterCode);
+    }
+
+}

+ 0 - 44
admin/src/main/java/com/flyer/foster/dto/AreaAddDTO.java

@@ -1,44 +0,0 @@
-package com.flyer.foster.dto;
-
-import lombok.Data;
-
-import javax.validation.constraints.NotBlank;
-
-/**
- * AreaSearchDTO
- *
- * @author kelei
- * @since 2024/5/9/10:54
- */
-@Data
-public class AreaAddDTO {
-    private Integer id;
-
-    /**
-     * 果园id
-     */
-    @NotBlank(message = "果园不能为空")
-    private Integer gardenId;
-
-    /**
-     * 区域名称
-     */
-    @NotBlank(message = "区域名称不能为空")
-    private String name;
-
-    /**
-     * 坐标
-     */
-    @NotBlank(message = "坐标不能为空")
-    private String wkt;
-
-    /**
-     * 状态-{0.不可用 1.可用}
-     */
-    private Integer status;
-
-    /**
-     * 租户号
-     */
-    private Integer tenantId;
-}

+ 0 - 42
admin/src/main/java/com/flyer/foster/dto/AreaQueryDTO.java

@@ -1,42 +0,0 @@
-package com.flyer.foster.dto;
-
-import lombok.Data;
-
-import javax.validation.constraints.NotNull;
-
-/**
- * AreaSearchDTO
- *
- * @author kelei
- * @since 2024/5/9/10:54
- */
-@Data
-public class AreaQueryDTO {
-    private Integer id;
-
-    /**
-     * 果园id
-     */
-    @NotNull(message = "果园id不能为空")
-    private Integer gardenId;
-
-    /**
-     * 区域名称
-     */
-    private String name;
-
-    /**
-     * 坐标
-     */
-    private String wkt;
-
-    /**
-     * 状态-{0.不可用 1.可用}
-     */
-    private Integer status;
-
-    /**
-     * 租户号
-     */
-    private Integer tenantId;
-}

+ 0 - 39
admin/src/main/java/com/flyer/foster/dto/AreaRespDTO.java

@@ -1,39 +0,0 @@
-package com.flyer.foster.dto;
-
-import lombok.Data;
-
-/**
- * AreaRespDTO
- *
- * @author kelei
- * @since 2024/5/9/10:58
- */
-@Data
-public class AreaRespDTO {
-    private Integer id;
-
-    /**
-     * 区域名称
-     */
-    private String name;
-
-    /**
-     * 区域状态-{0:禁用,1:启用}
-     */
-    private String areaStatus;
-
-    /**
-     * 果园名称
-     */
-    private String gardenName;
-
-    /**
-     * 区域创建时间
-     */
-    private String createdTime;
-
-    /**
-     * 区域修改时间
-     */
-    private String updatedTime;
-}

+ 0 - 46
admin/src/main/java/com/flyer/foster/dto/AreaUpdateDTO.java

@@ -1,46 +0,0 @@
-package com.flyer.foster.dto;
-
-import lombok.Data;
-
-import javax.validation.constraints.NotBlank;
-import javax.validation.constraints.NotNull;
-
-/**
- * AreaSearchDTO
- *
- * @author kelei
- * @since 2024/5/9/10:54
- */
-@Data
-public class AreaUpdateDTO {
-    @NotNull(message = "id不能为空")
-    private Integer id;
-
-    /**
-     * 果园id
-     */
-    @NotBlank(message = "果园不能为空")
-    private Integer gardenId;
-
-    /**
-     * 区域名称
-     */
-    @NotBlank(message = "区域名称不能为空")
-    private String name;
-
-    /**
-     * 坐标
-     */
-    @NotBlank(message = "坐标不能为空")
-    private String wkt;
-
-    /**
-     * 状态-{0.不可用 1.可用}
-     */
-    private Integer status;
-
-    /**
-     * 租户号
-     */
-    private Integer tenantId;
-}

+ 25 - 0
admin/src/main/java/com/flyer/foster/dto/FosterDataDto.java

@@ -0,0 +1,25 @@
+package com.flyer.foster.dto;
+
+import com.alibaba.fastjson.JSON;
+import lombok.Data;
+
+/**
+ * 认养数据传输对象
+ */
+@Data
+public class FosterDataDto {
+
+    public FosterDataDto(Integer targetId) {
+        this.targetId = targetId;
+    }
+
+    /**
+     * 目标id
+     */
+    private Integer targetId;
+
+    public String toJsonString(){
+        return JSON.toJSONString(this);
+    }
+
+}

+ 24 - 0
admin/src/main/java/com/flyer/foster/dto/SampleQueryDto.java

@@ -0,0 +1,24 @@
+package com.flyer.foster.dto;
+
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+
+/**
+ * 采样点查询dto
+ */
+@Data
+public class SampleQueryDto implements java.io.Serializable {
+
+
+    /**
+     * 果园id
+     */
+    @NotNull
+    private Integer farmId;
+
+    /**
+     * 大区id
+     */
+    private Integer regionId;
+}

+ 8 - 10
admin/src/main/java/com/flyer/foster/dto/TreeAddDTO.java

@@ -13,23 +13,21 @@ import javax.validation.constraints.NotNull;
  */
 @Data
 public class TreeAddDTO {
-    private Integer id;
 
     /**
-     * 果id
+     * 果id
      */
-    @NotNull(message = "果id不能为空")
-    private Integer gardenId;
+    @NotNull(message = "果id不能为空")
+    private Integer sampleId;
 
     /**
-     * 区域id
+     * 果树名称
      */
-    @NotNull(message = "区域id不能为空")
-    private Integer areaId;
+    private String name;
 
     /**
-     * 坐标
+     * 认养码
      */
-    @NotBlank(message = "坐标不能为空")
-    private String wkt;
+    private String fosterCode;
+
 }

+ 2 - 14
admin/src/main/java/com/flyer/foster/dto/TreeUpdateDTO.java

@@ -16,12 +16,6 @@ public class TreeUpdateDTO {
     @NotNull(message = "id不能为空")
     private Integer id;
 
-    /**
-     * 果园id
-     */
-    @NotNull(message = "果园id不能为空")
-    private Integer gardenId;
-
 
     /**
      * 果shu name
@@ -29,14 +23,8 @@ public class TreeUpdateDTO {
     private String name;
 
     /**
-     * 区域id
+     * 使用地址id
      */
-    @NotNull(message = "区域id不能为空")
-    private Integer areaId;
+    private Integer addressId;
 
-    /**
-     * 坐标
-     */
-    @NotBlank(message = "坐标不能为空")
-    private String wkt;
 }

+ 0 - 27
admin/src/main/java/com/flyer/foster/dto/app/AppFosterRecordAddDTO.java

@@ -1,27 +0,0 @@
-package com.flyer.foster.dto.app;
-
-import lombok.Data;
-
-import javax.validation.constraints.NotNull;
-
-/**
- * FosterRecordAddDTO
- *
- * @author kelei
- * @since 2024/5/13/13:50
- */
-@Data
-public class AppFosterRecordAddDTO {
-    /**
-     * 用户id
-     */
-    @NotNull(message = "用户id不能为空")
-    private Integer appUserId;
-
-    @NotNull(message = "果园id不能为空")
-    private Integer gardenId;
-
-    @NotNull(message = "treeId不能为空")
-    private Integer treeId;
-
-}

+ 0 - 24
admin/src/main/java/com/flyer/foster/dto/app/AppFosterRecordQueryDTO.java

@@ -1,24 +0,0 @@
-package com.flyer.foster.dto.app;
-
-import lombok.Data;
-
-import javax.validation.constraints.NotNull;
-
-/**
- * FosterRecordAddDTO
- *
- * @author kelei
- * @since 2024/5/13/13:50
- */
-@Data
-public class AppFosterRecordQueryDTO {
-    /**
-     * 用户id
-     */
-    private Integer appUserId;
-
-    private Integer gardenId;
-
-    private Integer treeId;
-
-}

+ 0 - 52
admin/src/main/java/com/flyer/foster/dto/app/AppFosterRecordRespDTO.java

@@ -1,52 +0,0 @@
-package com.flyer.foster.dto.app;
-
-import lombok.Data;
-
-import java.time.LocalDateTime;
-
-/**
- * FosterRecordAddDTO
- *
- * @author kelei
- * @since 2024/5/13/13:50
- */
-@Data
-public class AppFosterRecordRespDTO {
-    private Integer id;
-
-    /**
-     * 小程序用户id
-     */
-    private Integer appUserId;
-
-    /**
-     * 用户名
-     */
-    private String appUserName;
-
-    /**
-     * 果园id
-     */
-    private Integer gardenId;
-
-    /**
-     * 果园名
-     */
-    private String gardenName;
-
-    /**
-     * 领养树id
-     */
-    private Integer treeId;
-
-    /**
-     * 飞鸟看园树id
-     */
-    private Integer birdseyeTreeId;
-
-    /**
-     * 创建时间
-     */
-    private LocalDateTime createdTime;
-
-}

+ 20 - 0
admin/src/main/java/com/flyer/foster/dto/app/AppSampleAge.java

@@ -0,0 +1,20 @@
+package com.flyer.foster.dto.app;
+
+import lombok.Data;
+
+/**
+ * 树龄信息
+ */
+@Data
+public class AppSampleAge {
+
+    public AppSampleAge(String name, Integer[] range) {
+        this.name = name;
+        this.range = range;
+    }
+
+    private String name;
+
+    private Integer[] range;
+
+}

+ 20 - 0
admin/src/main/java/com/flyer/foster/dto/app/AppSampleSpeciesItem.java

@@ -0,0 +1,20 @@
+package com.flyer.foster.dto.app;
+
+import lombok.Data;
+
+/**
+ * 品种信息
+ */
+@Data
+public class AppSampleSpeciesItem {
+
+    public AppSampleSpeciesItem(Long speciesItemId, String speciesItemName) {
+        this.speciesItemId = speciesItemId;
+        this.speciesItemName = speciesItemName;
+    }
+
+    private Long speciesItemId;
+
+    private String speciesItemName;
+
+}

+ 0 - 16
admin/src/main/java/com/flyer/foster/dto/app/AppUserQueryDTO.java

@@ -1,16 +0,0 @@
-package com.flyer.foster.dto.app;
-
-import lombok.Data;
-
-/**
- * AppUserQueryDTO
- *
- * @author kelei
- * @since 2024/5/11/14:15
- */
-@Data
-public class AppUserQueryDTO {
-    private Integer gardenId;
-
-    private String code;
-}

+ 0 - 54
admin/src/main/java/com/flyer/foster/dto/app/AppUserRespDTO.java

@@ -1,54 +0,0 @@
-package com.flyer.foster.dto.app;
-
-import lombok.Data;
-
-/**
- * AppUserQueryDTO
- *
- * @author kelei
- * @since 2024/5/11/14:15
- */
-@Data
-public class AppUserRespDTO {
-    private Integer id;
-
-    private String gardenId;
-
-    private String unionId;
-
-    /**
-     * 手机号
-     */
-    private String tel;
-
-    /**
-     * 用户名
-     */
-    private String name;
-
-    /**
-     * 性别-{0:女,1:男}
-     */
-    private Integer sex;
-
-    private String openId;
-
-    /**
-     * 用户总积分
-     */
-    private Integer totalScore;
-
-    /**
-     * 是否完成新人引导-{0:未完成,1:已完成}
-     */
-    private Integer isFinishGuide;
-
-    /**
-     * 机构id
-     */
-    private String icon;
-
-    private String appId;
-
-    private String token;
-}

+ 0 - 19
admin/src/main/java/com/flyer/foster/dto/app/AppUserUpdateDTO.java

@@ -1,19 +0,0 @@
-package com.flyer.foster.dto.app;
-
-import lombok.Data;
-
-/**
- * AppUserQueryDTO
- *
- * @author kelei
- * @since 2024/5/11/14:15
- */
-@Data
-public class AppUserUpdateDTO {
-    private Integer userId;
-
-    /**
-     * 是否完成新人引导-{0:未完成,1:已完成}
-     */
-    private Integer isFinishGuide;
-}

+ 0 - 98
admin/src/main/java/com/flyer/foster/entity/Area.java

@@ -1,98 +0,0 @@
-package com.flyer.foster.entity;
-
-import com.baomidou.mybatisplus.annotation.FieldFill;
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableLogic;
-import com.baomidou.mybatisplus.annotation.TableName;
-import com.baomidou.mybatisplus.annotation.Version;
-import java.io.Serializable;
-import java.time.LocalDateTime;
-import lombok.Getter;
-import lombok.Setter;
-
-/**
- * <p>
- * 区域
- * </p>
- *
- * @author flyer
- * @since 2024-05-09
- */
-@Getter
-@Setter
-@TableName("tb_area")
-public class Area implements Serializable {
-
-    private static final long serialVersionUID = 1L;
-
-    /**
-     * 主键
-     */
-    @TableId(value = "id", type = IdType.AUTO)
-    private Integer id;
-
-    /**
-     * 果园id
-     */
-    private Integer gardenId;
-
-    /**
-     * 区域名称
-     */
-    private String name;
-
-    /**
-     * 坐标
-     */
-    private String wkt;
-
-    /**
-     * 状态-{0.不可用 1.可用}
-     */
-    private Integer status;
-
-    /**
-     * 租户号
-     */
-    private Integer tenantId;
-
-    /**
-     * 乐观锁
-     */
-    @Version
-    private Integer version;
-
-    /**
-     * 是否删除
-     */
-    @TableLogic
-    private Integer isDeleted;
-
-    /**
-     * 创建人
-     */
-    @TableField(fill = FieldFill.INSERT)
-    private String createdBy;
-
-    /**
-     * 创建时间
-     */
-    @TableField(fill = FieldFill.INSERT)
-    private LocalDateTime createdTime;
-
-    /**
-     * 更新人
-     */
-    @TableField(fill = FieldFill.UPDATE)
-    private String updatedBy;
-
-    /**
-     * 更新时间
-     */
-    @TableField(fill = FieldFill.UPDATE)
-    private LocalDateTime updatedTime;
-
-
-}

+ 2 - 2
admin/src/main/java/com/flyer/foster/entity/Garden.java → admin/src/main/java/com/flyer/foster/entity/Farm.java

@@ -25,7 +25,7 @@ import lombok.Setter;
 @Getter
 @Setter
 @TableName("tb_farm")
-public class Garden implements Serializable {
+public class Farm implements Serializable {
 
     private static final long serialVersionUID = 1L;
 
@@ -68,7 +68,7 @@ public class Garden implements Serializable {
     /**
      * 飞鸟看园果园id
      */
-    private Integer birdseyeGardenId;
+    private Integer birdseyeFarmId;
 
     /**
      * 用户id

+ 22 - 13
admin/src/main/java/com/flyer/foster/entity/FosterRecord.java → admin/src/main/java/com/flyer/foster/entity/Sample.java

@@ -7,16 +7,14 @@ import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableLogic;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.baomidou.mybatisplus.annotation.Version;
-
 import java.io.Serializable;
 import java.time.LocalDateTime;
-
 import lombok.Getter;
 import lombok.Setter;
 
 /**
  * <p>
- * 领养记录
+ * 
  * </p>
  *
  * @author flyer
@@ -24,8 +22,8 @@ import lombok.Setter;
  */
 @Getter
 @Setter
-@TableName("tb_foster_record")
-public class FosterRecord implements Serializable {
+@TableName("tb_sample")
+public class Sample implements Serializable {
 
     private static final long serialVersionUID = 1L;
 
@@ -41,24 +39,24 @@ public class FosterRecord implements Serializable {
     private String name;
 
     /**
-     * 小程序用户id
+     * 果园id
      */
-    private Integer appUserId;
+    private Integer farmId;
 
     /**
-     * 果园id
+     * 区域id
      */
-    private Integer gardenId;
+    private Integer regionId;
 
     /**
-     * id
+     * 采样点id
      */
-    private Integer treeId;
+    private Integer sampleId;
 
     /**
-     * 飞鸟看园树id
+     * 用户id
      */
-    private Integer birdseyeTreeId;
+    private Integer appUserId;
 
     /**
      * 状态-{0.不可用 1.可用}
@@ -66,6 +64,17 @@ public class FosterRecord implements Serializable {
     private Integer status;
 
     /**
+     * 使用地址id
+     */
+    private Integer addressId;
+
+    /**
+     * 是否成熟(0否 1是)
+     */
+    @TableField(exist = false)
+    private Integer isBeRipe;
+
+    /**
      * 租户号
      */
     private Integer tenantId;

+ 67 - 0
admin/src/main/java/com/flyer/foster/entity/TbAddress.java

@@ -0,0 +1,67 @@
+package com.flyer.foster.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ *
+ * </p>
+ *
+ * @author shuhao
+ * @since 2025-03-16
+ */
+@Getter
+@Setter
+@TableName("tb_address")
+public class TbAddress implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * id
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 省
+     */
+    private String province;
+
+    /**
+     * 市
+     */
+    private String city;
+
+    /**
+     * 县
+     */
+    private String districts;
+
+    /**
+     * 详细地址
+     */
+    private String address;
+
+    /**
+     * 用户id
+     */
+    private Integer appUserId;
+
+    /**
+     * 地址顺序
+     */
+    @TableField(value = "`sort`")
+    private Integer sort;
+
+    @TableField(exist = false)
+    private Integer isDefault;
+
+
+}

+ 29 - 2
admin/src/main/java/com/flyer/foster/entity/TbFarmFosterCode.java

@@ -1,12 +1,18 @@
 package com.flyer.foster.entity;
 
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.annotation.JSONField;
 import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import java.io.Serializable;
 import java.time.LocalDateTime;
+
+import com.flyer.foster.dto.FosterDataDto;
 import lombok.Getter;
 import lombok.Setter;
+import lombok.experimental.FieldNameConstants;
 
 /**
  * <p>
@@ -18,6 +24,7 @@ import lombok.Setter;
  */
 @Getter
 @Setter
+@FieldNameConstants
 @TableName("tb_farm_foster_code")
 public class TbFarmFosterCode implements Serializable {
 
@@ -40,15 +47,29 @@ public class TbFarmFosterCode implements Serializable {
     private String fosterCode;
 
     /**
-     * 认养类型(0指定单颗树 1指定区域选择)
+     * 认养类型(0指定单颗树 1指定区域选择 2指定果园)
      */
     private Integer fosterType;
 
     /**
-     * 认养的数据(区域id 或者树id)
+     * 认养的数据(区域id 或者树id 或者果园id
      */
+    @JSONField(serialize = false)
     private String fosterData;
 
+    @TableField(exist = false)
+    private FosterDataDto fosterDataDto;
+
+    /**
+     * 认养码是否已使用
+     */
+    private Integer fosterUse;
+
+    /**
+     * 过期时间
+     */
+    private LocalDateTime expTime;
+
     /**
      * 租户号
      */
@@ -84,5 +105,11 @@ public class TbFarmFosterCode implements Serializable {
      */
     private LocalDateTime updatedTime;
 
+    public void transFosterDataDto() {
+        if (this.fosterData != null) {
+            this.fosterDataDto = JSON.parseObject(this.fosterData, FosterDataDto.class);
+        }
+    }
+
 
 }

+ 0 - 103
admin/src/main/java/com/flyer/foster/entity/Tree.java

@@ -1,103 +0,0 @@
-package com.flyer.foster.entity;
-
-import com.baomidou.mybatisplus.annotation.FieldFill;
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableLogic;
-import com.baomidou.mybatisplus.annotation.TableName;
-import com.baomidou.mybatisplus.annotation.Version;
-import java.io.Serializable;
-import java.time.LocalDateTime;
-import lombok.Getter;
-import lombok.Setter;
-
-/**
- * <p>
- * 树
- * </p>
- *
- * @author flyer
- * @since 2024-05-09
- */
-@Getter
-@Setter
-@TableName("tb_tree")
-public class Tree implements Serializable {
-
-    private static final long serialVersionUID = 1L;
-
-    /**
-     * 主键
-     */
-    @TableId(value = "id", type = IdType.AUTO)
-    private Integer id;
-
-    /**
-     * name
-     */
-    private String name;
-
-    /**
-     * 果园id
-     */
-    private Integer gardenId;
-
-    /**
-     * 区域id
-     */
-    private Integer areaId;
-
-    /**
-     * 坐标
-     */
-    private String wkt;
-
-    /**
-     * 状态-{0.不可用 1.可用}
-     */
-    private Integer status;
-
-    /**
-     * 租户号
-     */
-    private Integer tenantId;
-
-    /**
-     * 乐观锁
-     */
-    @Version
-    private Integer version;
-
-    /**
-     * 是否删除
-     */
-    @TableLogic
-    private Integer isDeleted;
-
-    /**
-     * 创建人
-     */
-    @TableField(fill = FieldFill.INSERT)
-    private String createdBy;
-
-    /**
-     * 创建时间
-     */
-    @TableField(fill = FieldFill.INSERT)
-    private LocalDateTime createdTime;
-
-    /**
-     * 更新人
-     */
-    @TableField(fill = FieldFill.UPDATE)
-    private String updatedBy;
-
-    /**
-     * 更新时间
-     */
-    @TableField(fill = FieldFill.UPDATE)
-    private LocalDateTime updatedTime;
-
-
-}

+ 0 - 93
admin/src/main/java/com/flyer/foster/entity/TreeImage.java

@@ -1,93 +0,0 @@
-package com.flyer.foster.entity;
-
-import com.baomidou.mybatisplus.annotation.FieldFill;
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableLogic;
-import com.baomidou.mybatisplus.annotation.TableName;
-import com.baomidou.mybatisplus.annotation.Version;
-import java.io.Serializable;
-import java.time.LocalDateTime;
-import lombok.Getter;
-import lombok.Setter;
-
-/**
- * <p>
- * 树照片
- * </p>
- *
- * @author flyer
- * @since 2024-05-09
- */
-@Getter
-@Setter
-@TableName("tb_tree_image")
-public class TreeImage implements Serializable {
-
-    private static final long serialVersionUID = 1L;
-
-    /**
-     * 主键
-     */
-    @TableId(value = "id", type = IdType.AUTO)
-    private Integer id;
-
-    /**
-     * 树id
-     */
-    private String treeId;
-
-    /**
-     * 图片地址
-     */
-    private String url;
-
-    /**
-     * 状态-{0.不可用 1.可用}
-     */
-    private Integer status;
-
-    /**
-     * 租户号
-     */
-    private Integer tenantId;
-
-    /**
-     * 乐观锁
-     */
-    @Version
-    private Integer version;
-
-    /**
-     * 是否删除
-     */
-    @TableLogic
-    private Integer isDeleted;
-
-    /**
-     * 创建人
-     */
-    @TableField(fill = FieldFill.INSERT)
-    private String createdBy;
-
-    /**
-     * 创建时间
-     */
-    @TableField(fill = FieldFill.INSERT)
-    private LocalDateTime createdTime;
-
-    /**
-     * 更新人
-     */
-    @TableField(fill = FieldFill.UPDATE)
-    private String updatedBy;
-
-    /**
-     * 更新时间
-     */
-    @TableField(fill = FieldFill.UPDATE)
-    private LocalDateTime updatedTime;
-
-
-}

+ 1 - 1
admin/src/main/java/com/flyer/foster/entity/TreePosterContent.java

@@ -22,7 +22,7 @@ import lombok.Setter;
  */
 @Getter
 @Setter
-@TableName("tb_tree_poster_content")
+@TableName("tb_sample_poster_content")
 public class TreePosterContent implements Serializable {
 
     private static final long serialVersionUID = 1L;

+ 0 - 16
admin/src/main/java/com/flyer/foster/mapper/IAppUserMapper.java

@@ -1,16 +0,0 @@
-package com.flyer.foster.mapper;
-
-import com.flyer.foster.entity.AppUser;
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-
-/**
- * <p>
- * 小程序用户 Mapper 接口
- * </p>
- *
- * @author flyer
- * @since 2024-05-09
- */
-public interface IAppUserMapper extends BaseMapper<AppUser> {
-
-}

+ 0 - 35
admin/src/main/java/com/flyer/foster/mapper/IAreaMapper.java

@@ -1,35 +0,0 @@
-package com.flyer.foster.mapper;
-
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.flyer.foster.dto.AreaRespDTO;
-import com.flyer.foster.dto.AreaQueryDTO;
-import com.flyer.foster.entity.Area;
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import org.apache.ibatis.annotations.Param;
-
-import java.util.List;
-
-/**
- * <p>
- * 区域 Mapper 接口
- * </p>
- *
- * @author flyer
- * @since 2024-05-09
- */
-public interface IAreaMapper extends BaseMapper<Area> {
-    /**
-     *区域列表-分页
-     * @param page
-     * @param queryDTO
-     * @return
-     */
-    IPage<AreaRespDTO> getPageList(@Param("page") IPage<AreaRespDTO> page, @Param("queryDTO") AreaQueryDTO queryDTO);
-
-    /**
-     * 物理删除
-     * @param idList
-     * @return
-     */
-    boolean deleteByIdList(@Param("idList") List<Integer> idList);
-}

+ 0 - 21
admin/src/main/java/com/flyer/foster/mapper/IFosterRecordMapper.java

@@ -1,21 +0,0 @@
-package com.flyer.foster.mapper;
-
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.flyer.foster.dto.app.AppFosterRecordQueryDTO;
-import com.flyer.foster.dto.app.AppFosterRecordRespDTO;
-import com.flyer.foster.entity.FosterRecord;
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-
-/**
- * <p>
- * 领养记录 Mapper 接口
- * </p>
- *
- * @author flyer
- * @since 2024-05-09
- */
-public interface IFosterRecordMapper extends BaseMapper<FosterRecord> {
-
-    IPage<AppFosterRecordRespDTO> getPageList(Page<AppFosterRecordRespDTO> page, AppFosterRecordQueryDTO queryDTO);
-}

+ 2 - 3
admin/src/main/java/com/flyer/foster/mapper/IGardenMapper.java

@@ -1,10 +1,9 @@
 package com.flyer.foster.mapper;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.flyer.foster.dto.GardenQueryDTO;
 import com.flyer.foster.dto.GardenRespDTO;
-import com.flyer.foster.entity.Garden;
+import com.flyer.foster.entity.Farm;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import org.apache.ibatis.annotations.Param;
 
@@ -18,7 +17,7 @@ import java.util.List;
  * @author flyer
  * @since 2024-05-09
  */
-public interface IGardenMapper extends BaseMapper<Garden> {
+public interface IGardenMapper extends BaseMapper<Farm> {
 
     /**
      * 物理删除

+ 0 - 16
admin/src/main/java/com/flyer/foster/mapper/ITreeImageMapper.java

@@ -1,16 +0,0 @@
-package com.flyer.foster.mapper;
-
-import com.flyer.foster.entity.TreeImage;
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-
-/**
- * <p>
- * 树照片 Mapper 接口
- * </p>
- *
- * @author flyer
- * @since 2024-05-09
- */
-public interface ITreeImageMapper extends BaseMapper<TreeImage> {
-
-}

+ 2 - 16
admin/src/main/java/com/flyer/foster/mapper/ITreeMapper.java

@@ -1,7 +1,7 @@
 package com.flyer.foster.mapper;
 
 import com.flyer.foster.dto.TreeRespDTO;
-import com.flyer.foster.entity.Tree;
+import com.flyer.foster.entity.Sample;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import org.apache.ibatis.annotations.Param;
 
@@ -15,20 +15,6 @@ import java.util.List;
  * @author flyer
  * @since 2024-05-09
  */
-public interface ITreeMapper extends BaseMapper<Tree> {
+public interface ITreeMapper extends BaseMapper<Sample> {
 
-    /**
-     * 物理删除
-     *
-     * @param idList
-     * @return
-     */
-    boolean deleteByIdList(@Param("idList") List<Integer> idList);
-
-    /**
-     * 根据gardenId获取详情
-     * @param gardenId
-     * @return
-     */
-    List<TreeRespDTO> getTreeById(@Param("gardenId") Integer gardenId);
 }

+ 16 - 0
admin/src/main/java/com/flyer/foster/mapper/TbAddressMapper.java

@@ -0,0 +1,16 @@
+package com.flyer.foster.mapper;
+
+import com.flyer.foster.entity.TbAddress;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author shuhao
+ * @since 2025-03-16
+ */
+public interface TbAddressMapper extends BaseMapper<TbAddress> {
+
+}

+ 3 - 0
admin/src/main/java/com/flyer/foster/mapper/TbFarmFosterCodeMapper.java

@@ -2,6 +2,9 @@ package com.flyer.foster.mapper;
 
 import com.flyer.foster.entity.TbFarmFosterCode;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Select;
+
+import java.util.List;
 
 /**
  * <p>

+ 0 - 0
admin/src/main/resources/mapper/AppInfoMapper.xml → admin/src/main/java/com/flyer/foster/mapper/xml/AppInfoMapper.xml


+ 0 - 0
admin/src/main/resources/mapper/AppSubscribeMapper.xml → admin/src/main/java/com/flyer/foster/mapper/xml/AppSubscribeMapper.xml


+ 0 - 0
admin/src/main/resources/mapper/CartoonMapper.xml → admin/src/main/java/com/flyer/foster/mapper/xml/CartoonMapper.xml


+ 0 - 0
admin/src/main/resources/mapper/CartoonUrlMapper.xml → admin/src/main/java/com/flyer/foster/mapper/xml/CartoonUrlMapper.xml


+ 0 - 0
admin/src/main/resources/mapper/GardenMapper.xml → admin/src/main/java/com/flyer/foster/mapper/xml/GardenMapper.xml


+ 0 - 0
admin/src/main/resources/mapper/MenuMapper.xml → admin/src/main/java/com/flyer/foster/mapper/xml/MenuMapper.xml


+ 0 - 0
admin/src/main/resources/mapper/PosterLibMapper.xml → admin/src/main/java/com/flyer/foster/mapper/xml/PosterLibMapper.xml


+ 0 - 0
admin/src/main/resources/mapper/RoleMapper.xml → admin/src/main/java/com/flyer/foster/mapper/xml/RoleMapper.xml


+ 0 - 0
admin/src/main/resources/mapper/RoleMenuMapper.xml → admin/src/main/java/com/flyer/foster/mapper/xml/RoleMenuMapper.xml


+ 0 - 0
admin/src/main/resources/mapper/ScoreMapper.xml → admin/src/main/java/com/flyer/foster/mapper/xml/ScoreMapper.xml


+ 1 - 1
admin/src/main/resources/mapper/AppUserMapper.xml → admin/src/main/java/com/flyer/foster/mapper/xml/TbAddressMapper.xml

@@ -1,5 +1,5 @@
 <?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.flyer.foster.mapper.IAppUserMapper">
+<mapper namespace="com.flyer.foster.mapper.TbAddressMapper">
 
 </mapper>

+ 0 - 0
admin/src/main/resources/mapper/TenantMapper.xml → admin/src/main/java/com/flyer/foster/mapper/xml/TenantMapper.xml


+ 0 - 0
admin/src/main/resources/mapper/TreeImageMapper.xml → admin/src/main/java/com/flyer/foster/mapper/xml/TreeImageMapper.xml


+ 2 - 2
admin/src/main/resources/mapper/TreeMapper.xml → admin/src/main/java/com/flyer/foster/mapper/xml/TreeMapper.xml

@@ -3,7 +3,7 @@
 <mapper namespace="com.flyer.foster.mapper.ITreeMapper">
 
     <delete id="deleteByIdList">
-        delete from tb_tree where id in
+        delete from tb_sample where id in
         <foreach collection="idList" item="id" open="(" separator="," close=")">
             #{id}
         </foreach>
@@ -22,7 +22,7 @@
                a.created_time                                      as createdTime,
                a.updated_by                                        as updatedBy,
                a.updated_time                                      as updatedTime
-        from tb_tree a
+        from tb_sample a
                  left join tb_farm b on a.garden_id = b.id
                  left join tb_area c on a.area_id = c.id
         <where>

+ 0 - 0
admin/src/main/resources/mapper/TreePosterContentMapper.xml → admin/src/main/java/com/flyer/foster/mapper/xml/TreePosterContentMapper.xml


+ 0 - 0
admin/src/main/resources/mapper/UserMapper.xml → admin/src/main/java/com/flyer/foster/mapper/xml/UserMapper.xml


+ 0 - 0
admin/src/main/resources/mapper/UserRoleMapper.xml → admin/src/main/java/com/flyer/foster/mapper/xml/UserRoleMapper.xml


+ 0 - 0
admin/src/main/resources/mapper/WhisperMapper.xml → admin/src/main/java/com/flyer/foster/mapper/xml/WhisperMapper.xml


+ 0 - 0
admin/src/main/resources/mapper/WorldMapMapper.xml → admin/src/main/java/com/flyer/foster/mapper/xml/WorldMapMapper.xml


+ 0 - 2
admin/src/main/java/com/flyer/foster/service/IAppSubscribeService.java

@@ -1,8 +1,6 @@
 package com.flyer.foster.service;
 
-import com.flyer.foster.dto.UserAddOrUpdateDTO;
 import com.flyer.foster.dto.app.AppSubscribeRespDTO;
-import com.flyer.foster.dto.app.AppUserUpdateDTO;
 import com.flyer.foster.entity.AppSubscribe;
 import com.baomidou.mybatisplus.extension.service.IService;
 

+ 0 - 22
admin/src/main/java/com/flyer/foster/service/IAppUserService.java

@@ -1,22 +0,0 @@
-package com.flyer.foster.service;
-
-import com.flyer.foster.dto.app.AppUserQueryDTO;
-import com.flyer.foster.dto.app.AppUserRespDTO;
-import com.flyer.foster.dto.app.AppUserUpdateDTO;
-import com.flyer.foster.entity.AppUser;
-import com.baomidou.mybatisplus.extension.service.IService;
-
-/**
- * <p>
- * 小程序用户 服务类
- * </p>
- *
- * @author flyer
- * @since 2024-05-09
- */
-public interface IAppUserService extends IService<AppUser> {
-
-    AppUserRespDTO login(AppUserQueryDTO dto, String appid);
-
-    boolean updateUser(AppUserUpdateDTO updateDTO);
-}

+ 0 - 44
admin/src/main/java/com/flyer/foster/service/IAreaService.java

@@ -1,44 +0,0 @@
-package com.flyer.foster.service;
-
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.flyer.foster.dto.AreaAddDTO;
-import com.flyer.foster.dto.AreaRespDTO;
-import com.flyer.foster.dto.AreaQueryDTO;
-import com.flyer.foster.dto.AreaUpdateDTO;
-import com.flyer.foster.entity.Area;
-import com.baomidou.mybatisplus.extension.service.IService;
-
-import java.util.List;
-
-/**
- * <p>
- * 区域 服务类
- * </p>
- *
- * @author flyer
- * @since 2024-05-09
- */
-public interface IAreaService extends IService<Area> {
-    IPage<AreaRespDTO> getPageList(IPage<AreaRespDTO> page, AreaQueryDTO queryDTO);
-
-    /**
-     * 新增区域
-     * @param addDTOList
-     * @return
-     */
-    boolean addArea(List<AreaAddDTO> addDTOList);
-
-    /**
-     * 物理删除
-     * @param idList
-     * @return
-     */
-    boolean deleteByIdList(List<Integer> idList);
-
-    /**
-     * 修改区域
-     * @param updateDTO
-     * @return
-     */
-    boolean updateArea(AreaUpdateDTO updateDTO);
-}

+ 0 - 37
admin/src/main/java/com/flyer/foster/service/IFosterRecordService.java

@@ -1,37 +0,0 @@
-package com.flyer.foster.service;
-
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.flyer.foster.dto.app.AppFosterRecordAddDTO;
-import com.flyer.foster.dto.app.AppFosterRecordQueryDTO;
-import com.flyer.foster.dto.app.AppFosterRecordRespDTO;
-import com.flyer.foster.entity.FosterRecord;
-import com.baomidou.mybatisplus.extension.service.IService;
-
-/**
- * <p>
- * 领养记录 服务类
- * </p>
- *
- * @author flyer
- * @since 2024-05-09
- */
-public interface IFosterRecordService extends IService<FosterRecord> {
-
-    /**
-     * 确认领养
-     * @param addDTO
-     * @return
-     */
-    Integer addFosterRecord(AppFosterRecordAddDTO addDTO);
-
-    /**
-     * 领养列表-分页
-     * @param page
-     * @param queryDTO
-     * @return
-     */
-    IPage<AppFosterRecordRespDTO> getPageList(Page<AppFosterRecordRespDTO> page, AppFosterRecordQueryDTO queryDTO);
-
-    Integer getFosterDays(AppFosterRecordQueryDTO queryDTO);
-}

+ 2 - 3
admin/src/main/java/com/flyer/foster/service/IGardenService.java

@@ -1,9 +1,8 @@
 package com.flyer.foster.service;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.flyer.foster.dto.*;
-import com.flyer.foster.entity.Garden;
+import com.flyer.foster.entity.Farm;
 import com.baomidou.mybatisplus.extension.service.IService;
 
 import java.util.List;
@@ -16,7 +15,7 @@ import java.util.List;
  * @author flyer
  * @since 2024-05-09
  */
-public interface IGardenService extends IService<Garden> {
+public interface IGardenService extends IService<Farm> {
 
     IPage<GardenRespDTO> getPageList(IPage<GardenRespDTO> page, GardenQueryDTO queryDTO);
 

+ 0 - 1
admin/src/main/java/com/flyer/foster/service/IPosterLibService.java

@@ -1,7 +1,6 @@
 package com.flyer.foster.service;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.flyer.foster.dto.AreaQueryDTO;
 import com.flyer.foster.dto.PosterLibAddDTO;
 import com.flyer.foster.dto.PosterLibQueryDTO;
 import com.flyer.foster.dto.PosterLibRespDTO;

+ 18 - 0
admin/src/main/java/com/flyer/foster/service/ITbAddressService.java

@@ -0,0 +1,18 @@
+package com.flyer.foster.service;
+
+import com.flyer.foster.entity.TbAddress;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author shuhao
+ * @since 2025-03-16
+ */
+public interface ITbAddressService extends IService<TbAddress> {
+
+    Integer minSort(Integer appUserId, Integer ignoreId);
+
+}

+ 12 - 0
admin/src/main/java/com/flyer/foster/service/ITbFarmFosterCodeService.java

@@ -13,4 +13,16 @@ import com.baomidou.mybatisplus.extension.service.IService;
  */
 public interface ITbFarmFosterCodeService extends IService<TbFarmFosterCode> {
 
+    String generateFosterCode(Integer farmId);
+
+    /**
+     * 根据果园id和领养码获取领养码信息
+     * @param farmId
+     * @param fosterCode
+     * @return
+     */
+    TbFarmFosterCode getFosterCodeByFosterCode(Integer farmId, String fosterCode);
+
+    void useFosterCode(String fosterCode);
+
 }

+ 0 - 16
admin/src/main/java/com/flyer/foster/service/ITreeImageService.java

@@ -1,16 +0,0 @@
-package com.flyer.foster.service;
-
-import com.flyer.foster.entity.TreeImage;
-import com.baomidou.mybatisplus.extension.service.IService;
-
-/**
- * <p>
- * 树照片 服务类
- * </p>
- *
- * @author flyer
- * @since 2024-05-09
- */
-public interface ITreeImageService extends IService<TreeImage> {
-
-}

+ 2 - 10
admin/src/main/java/com/flyer/foster/service/ITreeService.java

@@ -2,7 +2,7 @@ package com.flyer.foster.service;
 
 import com.flyer.foster.dto.TreeAddDTO;
 import com.flyer.foster.dto.TreeRespDTO;
-import com.flyer.foster.entity.Tree;
+import com.flyer.foster.entity.Sample;
 import com.baomidou.mybatisplus.extension.service.IService;
 
 import java.util.List;
@@ -15,7 +15,7 @@ import java.util.List;
  * @author flyer
  * @since 2024-05-09
  */
-public interface ITreeService extends IService<Tree> {
+public interface ITreeService extends IService<Sample> {
 
     /**
      * 新增树
@@ -24,12 +24,4 @@ public interface ITreeService extends IService<Tree> {
      */
     Integer addTree(TreeAddDTO addDTO);
 
-    /**
-     * 物理删除
-     * @param idList
-     * @return
-     */
-    boolean deleteByIdList(List<Integer> idList);
-
-    List<TreeRespDTO> getTreeById(Integer gardenId);
 }

+ 0 - 1
admin/src/main/java/com/flyer/foster/service/impl/AppSubscribeServiceImpl.java

@@ -2,7 +2,6 @@ package com.flyer.foster.service.impl;
 
 import com.flyer.foster.dto.UserAddOrUpdateDTO;
 import com.flyer.foster.dto.app.AppSubscribeRespDTO;
-import com.flyer.foster.dto.app.AppUserUpdateDTO;
 import com.flyer.foster.entity.AppSubscribe;
 import com.flyer.foster.entity.AppUser;
 import com.flyer.foster.entity.User;

+ 0 - 113
admin/src/main/java/com/flyer/foster/service/impl/AppUserServiceImpl.java

@@ -1,113 +0,0 @@
-package com.flyer.foster.service.impl;
-
-import cn.dev33.satoken.session.SaSession;
-import cn.dev33.satoken.stp.StpUtil;
-import cn.hutool.core.bean.BeanUtil;
-import com.flyer.exception.BusinessException;
-import com.flyer.foster.consts.LoginDevice;
-import com.flyer.foster.consts.WechatConst;
-import com.flyer.foster.dto.app.AppUserQueryDTO;
-import com.flyer.foster.dto.app.AppUserRespDTO;
-import com.flyer.foster.dto.app.AppUserUpdateDTO;
-import com.flyer.foster.entity.AppInfo;
-import com.flyer.foster.entity.AppUser;
-import com.flyer.foster.entity.Garden;
-import com.flyer.foster.mapper.IAppUserMapper;
-import com.flyer.foster.pojo.Code2SessionResp;
-import com.flyer.foster.pojo.StpAppUtil;
-import com.flyer.foster.service.IAppInfoService;
-import com.flyer.foster.service.IAppUserService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.flyer.foster.service.IGardenService;
-import com.flyer.foster.util.WeChatApiUtil;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-import org.springframework.web.bind.annotation.RequestHeader;
-
-import java.time.LocalDateTime;
-
-/**
- * <p>
- * 小程序用户 服务实现类
- * </p>
- *
- * @author flyer
- * @since 2024-05-09
- */
-@Service
-public class AppUserServiceImpl extends ServiceImpl<IAppUserMapper, AppUser> implements IAppUserService {
-    /**
-     * 默认用户名
-     */
-    public static final String DEFAUT_NAME = "微信用户";
-    /**
-     * 默认用户头像
-     */
-    public static final String DEFAULT_ICON = "https://thirdwx.qlogo.cn/mmopen/vi_32/POgEwh4mIHO4nibH0KlMECNjjGxQUq24ZEaGT4poC6icRiccVGKSyXwibcPq4BWmiaIGuG1icwxaQX6grC9VemZoJ8rg/132";
-
-    @Autowired
-    private WeChatApiUtil weChatApiUtil;
-
-    @Autowired
-    private IAppUserService iAppUserService;
-
-    @Autowired
-    private IGardenService iGardenService;
-
-    @Autowired
-    private IAppInfoService iAppInfoService;
-
-    @Override
-    public AppUserRespDTO login(AppUserQueryDTO dto, String appid) {
-        AppInfo appInfo = iAppInfoService.getByAppId(appid);
-        // 查找用户信息
-        Code2SessionResp code2Session = weChatApiUtil.getCode2Session(dto.getCode(), appInfo.getAppId(), appInfo.getAppSecret());
-        String openid = code2Session.getOpenid();
-        // 根据gardenId获取租户id
-        Garden garden = iGardenService.getById(dto.getGardenId());
-        if (garden == null) {
-            throw new BusinessException("无效的gardenId");
-        }
-        // 查找用户信息,存在更新,不存在新增
-        AppUser appUser = iAppUserService.lambdaQuery().eq(AppUser::getOpenId, openid).one();
-        if (appUser == null) {
-            // 存入用户信息
-            appUser = new AppUser();
-            appUser.setUnionId(code2Session.getUnionid());
-            appUser.setOpenId(code2Session.getOpenid());
-            appUser.setName(DEFAUT_NAME);
-            appUser.setIcon(DEFAULT_ICON);
-            appUser.setTenantId(garden.getTenantId());
-            appUser.setCreatedBy("kelei");
-            appUser.setCreatedTime(LocalDateTime.now());
-            appUser.setUpdatedBy("kelei");
-            appUser.setUpdatedTime(LocalDateTime.now());
-            appUser.setGardenId(dto.getGardenId());
-            this.save(appUser);
-        }
-        StpAppUtil.login(appUser.getId(), LoginDevice.APP);
-        SaSession tokenSession = StpAppUtil.getTokenSession();
-        // 设置tenantId
-        tokenSession.set("tenantId", appUser.getTenantId());
-
-        AppUserRespDTO respDTO = new AppUserRespDTO();
-        BeanUtil.copyProperties(appUser, respDTO);
-        respDTO.setToken(StpAppUtil.getTokenValue());
-        return respDTO;
-    }
-
-    @Override
-    public boolean updateUser(AppUserUpdateDTO updateDTO) {
-        AppUser appUser = this.lambdaQuery()
-                .eq(AppUser::getId, updateDTO.getUserId())
-                .one();
-        if (appUser == null) {
-            throw new BusinessException("无效的用户id");
-        }
-        BeanUtil.copyProperties(updateDTO, appUser);
-        return this.lambdaUpdate()
-                .set(AppUser::getIsFinishGuide, updateDTO.getIsFinishGuide())
-                .eq(AppUser::getId, appUser.getId())
-                .update();
-    }
-}

+ 0 - 77
admin/src/main/java/com/flyer/foster/service/impl/AreaServiceImpl.java

@@ -1,77 +0,0 @@
-package com.flyer.foster.service.impl;
-
-import cn.hutool.core.bean.BeanUtil;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.extension.conditions.update.LambdaUpdateChainWrapper;
-import com.flyer.exception.BusinessException;
-import com.flyer.foster.dto.AreaAddDTO;
-import com.flyer.foster.dto.AreaRespDTO;
-import com.flyer.foster.dto.AreaQueryDTO;
-import com.flyer.foster.dto.AreaUpdateDTO;
-import com.flyer.foster.entity.Area;
-import com.flyer.foster.mapper.IAreaMapper;
-import com.flyer.foster.service.IAreaService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-
-import java.util.List;
-
-/**
- * <p>
- * 区域 服务实现类
- * </p>
- *
- * @author flyer
- * @since 2024-05-09
- */
-@Service
-public class AreaServiceImpl extends ServiceImpl<IAreaMapper, Area> implements IAreaService {
-    @Override
-    public IPage<AreaRespDTO> getPageList(IPage<AreaRespDTO> page, AreaQueryDTO queryDTO) {
-        return baseMapper.getPageList(page, queryDTO);
-    }
-
-    @Transactional
-    @Override
-    public boolean addArea(List<AreaAddDTO> addDTOList) {
-        Area area = new Area();
-        for (AreaAddDTO addDTO : addDTOList) {
-            BeanUtil.copyProperties(addDTO, area);
-            if (area.getId() == null) {
-                this.save(area);
-            } else {
-                this.lambdaUpdate()
-                        .set(Area::getName, addDTO.getName())
-                        .set(Area::getGardenId, addDTO.getGardenId())
-                        .set(Area::getWkt, addDTO.getWkt())
-                        .set(Area::getStatus, addDTO.getStatus())
-                        .eq(Area::getId, addDTO.getId())
-                        .update();
-            }
-        }
-        return true;
-    }
-
-    @Transactional
-    @Override
-    public boolean deleteByIdList(List<Integer> idList) {
-        return baseMapper.deleteByIdList(idList);
-    }
-
-    @Transactional
-    @Override
-    public boolean updateArea(AreaUpdateDTO updateDTO) {
-        Area area = baseMapper.selectById(updateDTO.getId());
-        if (area == null) {
-            throw new BusinessException("无效的区域id");
-        }
-        return this.lambdaUpdate()
-                .set(Area::getName, updateDTO.getName())
-                .set(Area::getGardenId, updateDTO.getGardenId())
-                .set(Area::getWkt, updateDTO.getWkt())
-                .set(Area::getStatus, updateDTO.getStatus())
-                .eq(Area::getId, updateDTO.getId())
-                .update();
-    }
-}

+ 0 - 109
admin/src/main/java/com/flyer/foster/service/impl/FosterRecordServiceImpl.java

@@ -1,109 +0,0 @@
-package com.flyer.foster.service.impl;
-
-import cn.hutool.core.bean.BeanUtil;
-import com.alibaba.fastjson.JSON;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.flyer.exception.BusinessException;
-import com.flyer.foster.dto.app.AppFosterRecordAddDTO;
-import com.flyer.foster.dto.app.AppFosterRecordQueryDTO;
-import com.flyer.foster.dto.app.AppFosterRecordRespDTO;
-import com.flyer.foster.entity.FosterRecord;
-import com.flyer.foster.entity.Garden;
-import com.flyer.foster.mapper.IFosterRecordMapper;
-import com.flyer.foster.pojo.LzTree;
-import com.flyer.foster.pojo.StpAppUtil;
-import com.flyer.foster.service.IFosterRecordService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.flyer.foster.service.IGardenService;
-import com.flyer.util.RedisUtil;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-
-import java.time.Duration;
-import java.time.LocalDateTime;
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-
-/**
- * <p>
- * 领养记录 服务实现类
- * </p>
- *
- * @author flyer
- * @since 2024-05-09
- */
-@Service
-public class FosterRecordServiceImpl extends ServiceImpl<IFosterRecordMapper, FosterRecord> implements IFosterRecordService {
-
-    @Autowired
-    private IGardenService iGardenService;
-
-    @Autowired
-    private RedisUtil redisUtil;
-
-    @Transactional
-    @Override
-    public Integer addFosterRecord(AppFosterRecordAddDTO addDTO) {
-        int tenantId = StpAppUtil.getTokenSession().getInt("tenantId");
-        // 一个用户在同一个果园只能认领一棵树
-        FosterRecord fosterRecord = this.lambdaQuery()
-                .eq(FosterRecord::getAppUserId, addDTO.getAppUserId())
-                .eq(FosterRecord::getGardenId, addDTO.getGardenId())
-                .one();
-        if (fosterRecord == null) {
-            // 根据果园id找到配置的飞鸟看园果园id
-            Garden garden = iGardenService.getById(addDTO.getGardenId());
-            if (garden == null) {
-                throw new BusinessException("无效的果园id");
-            }
-            // 飞鸟看园果园id
-            Integer birdseyeGardenId = garden.getBirdseyeGardenId();
-            // 从缓存中取出果园下的树,获取一个未曾分配的树id,
-            Map<Object, Object> treeCache = redisUtil.hmget("birdseye:tree");
-
-            Integer birdseyeTreeId = 0;
-            for (Map.Entry<Object, Object> map : treeCache.entrySet()) {
-                if (map.getKey().equals(birdseyeGardenId.toString())) {
-                    List<LzTree> lzTreeList = JSON.parseArray(map.getValue().toString(), LzTree.class);
-                    Collections.shuffle(lzTreeList);
-                    // 获取一个飞鸟看园树id
-                    birdseyeTreeId = lzTreeList.get(0).getId();
-                    break;
-                }
-            }
-            if (birdseyeTreeId == 0) {
-                throw new BusinessException("缓存中没有获取到树的信息");
-            }
-            fosterRecord = new FosterRecord();
-            BeanUtil.copyProperties(addDTO, fosterRecord);
-            fosterRecord.setTenantId(tenantId);
-            fosterRecord.setBirdseyeTreeId(birdseyeTreeId);
-            fosterRecord.setCreatedBy("kelei");
-            fosterRecord.setCreatedTime(LocalDateTime.now());
-            fosterRecord.setUpdatedBy("kelei");
-            fosterRecord.setUpdatedTime(LocalDateTime.now());
-            this.save(fosterRecord);
-        }
-        return fosterRecord.getBirdseyeTreeId();
-    }
-
-    @Override
-    public IPage<AppFosterRecordRespDTO> getPageList(Page<AppFosterRecordRespDTO> page, AppFosterRecordQueryDTO queryDTO) {
-        return baseMapper.getPageList(page, queryDTO);
-    }
-
-    @Override
-    public Integer getFosterDays(AppFosterRecordQueryDTO queryDTO) {
-        FosterRecord fosterRecord = this.lambdaQuery()
-                .eq(FosterRecord::getAppUserId, queryDTO.getAppUserId())
-                .eq(FosterRecord::getGardenId, queryDTO.getGardenId())
-                .eq(FosterRecord::getTreeId, queryDTO.getTreeId())
-                .one();
-        LocalDateTime createdTime = fosterRecord.getCreatedTime();
-        Duration between = Duration.between(createdTime, LocalDateTime.now());
-        return between.toDays() == 0 ? 1 : (int) between.toDays();
-    }
-}

+ 27 - 40
admin/src/main/java/com/flyer/foster/service/impl/GardenServiceImpl.java

@@ -2,27 +2,22 @@ package com.flyer.foster.service.impl;
 
 import cn.dev33.satoken.stp.StpUtil;
 import cn.hutool.core.bean.BeanUtil;
-import cn.hutool.core.lang.intern.InternUtil;
 import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.flyer.exception.BusinessException;
-import com.flyer.foster.consts.WechatConst;
 import com.flyer.foster.dto.*;
 import com.flyer.foster.entity.AppInfo;
-import com.flyer.foster.entity.Area;
-import com.flyer.foster.entity.Garden;
+import com.flyer.foster.entity.Farm;
 import com.flyer.foster.entity.WorldMap;
 import com.flyer.foster.mapper.IGardenMapper;
 import com.flyer.foster.service.IAppInfoService;
-import com.flyer.foster.service.IAreaService;
 import com.flyer.foster.service.IGardenService;
 import com.flyer.foster.service.IWorldMapService;
 import com.flyer.foster.util.HttpUtils;
 import com.flyer.foster.util.WeChatApiUtil;
 import com.flyer.foster.util.WxAccessToken;
 import com.flyer.util.GeoCastUtil;
-import com.flyer.util.R;
 import okhttp3.Response;
 import org.locationtech.jts.geom.Coordinate;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -44,9 +39,7 @@ import java.util.stream.Collectors;
  * @since 2024-05-09
  */
 @Service
-public class GardenServiceImpl extends ServiceImpl<IGardenMapper, Garden> implements IGardenService {
-    @Autowired
-    private IAreaService iAreaService;
+public class GardenServiceImpl extends ServiceImpl<IGardenMapper, Farm> implements IGardenService {
 
     @Autowired
     private WeChatApiUtil weChatApiUtil;
@@ -70,12 +63,6 @@ public class GardenServiceImpl extends ServiceImpl<IGardenMapper, Garden> implem
             coordinate = GeoCastUtil.pixelToLatLng(coordinate.getX(), worldMap.getHeight() - coordinate.getY(), worldMap.getWidth(), worldMap.getHeight());
             record.setLatitude(coordinate.y);
             record.setLongitude(coordinate.x);
-            // 获取区域
-            List<String> areaNameList = iAreaService.lambdaQuery()
-                    .eq(Area::getGardenId, record.getId())
-                    .list()
-                    .stream().map(Area::getName).collect(Collectors.toList());
-            record.setAreaNameList(areaNameList);
         }
         return pageList;
     }
@@ -84,7 +71,7 @@ public class GardenServiceImpl extends ServiceImpl<IGardenMapper, Garden> implem
     @Override
     public boolean addGarden(GardenAddDTO addDTO) {
         int tenantId = StpUtil.getTokenSession().getInt("tenantId");
-        Garden garden = new Garden();
+        Farm garden = new Farm();
         garden.setTenantId(tenantId);
         BeanUtil.copyProperties(addDTO, garden);
         this.save(garden);
@@ -92,8 +79,8 @@ public class GardenServiceImpl extends ServiceImpl<IGardenMapper, Garden> implem
         String qrCode = this.generateQRCode(garden.getId(), addDTO.getAppid());
 
         return this.lambdaUpdate()
-                .set(Garden::getQrCode, qrCode)
-                .eq(Garden::getId, garden.getId()).update();
+                .set(Farm::getQrCode, qrCode)
+                .eq(Farm::getId, garden.getId()).update();
     }
 
     /**
@@ -132,34 +119,34 @@ public class GardenServiceImpl extends ServiceImpl<IGardenMapper, Garden> implem
     @Transactional
     @Override
     public boolean updateGarden(GardenUpdateDTO updateDTO) {
-        Garden garden = baseMapper.selectById(updateDTO.getId());
+        Farm garden = baseMapper.selectById(updateDTO.getId());
         if (garden == null) {
             throw new BusinessException("无效的果园id");
         }
         // 生成二维码
         String qrCode = this.generateQRCode(garden.getId(), updateDTO.getAppid());
         return this.lambdaUpdate()
-                .set(StrUtil.isNotBlank(updateDTO.getName()), Garden::getName, updateDTO.getName())
-                .set(Garden::getQrCode, qrCode)
-                .set(updateDTO.getWorldMapId() != null, Garden::getWorldMapId, updateDTO.getWorldMapId())
-                .set(StrUtil.isNotBlank(updateDTO.getWkt()), Garden::getWkt, updateDTO.getWkt())
-                .set(StrUtil.isNotBlank(updateDTO.getIcon()), Garden::getIcon, updateDTO.getIcon())
-                .set(StrUtil.isNotBlank(updateDTO.getAppid()), Garden::getAppid, updateDTO.getAppid())
-                .set(StrUtil.isNotBlank(updateDTO.getDayBg()), Garden::getDayBg, updateDTO.getDayBg())
-                .set(StrUtil.isNotBlank(updateDTO.getNightBg()), Garden::getNightBg, updateDTO.getNightBg())
-                .set(updateDTO.getBirdseyeGardenId() != null, Garden::getBirdseyeGardenId, updateDTO.getBirdseyeGardenId())
-                .set(updateDTO.getUserId() != null, Garden::getUserId, updateDTO.getUserId())
-                .set(StrUtil.isNotBlank(updateDTO.getBaseMapUrl()), Garden::getBaseMapUrl, updateDTO.getBaseMapUrl())
-                .set(StrUtil.isNotBlank(updateDTO.getBgMusic()), Garden::getBgMusic, updateDTO.getBgMusic())
-                .set(StrUtil.isNotBlank(updateDTO.getCoverUrl1()), Garden::getCoverUrl1, updateDTO.getCoverUrl1())
-                .set(StrUtil.isNotBlank(updateDTO.getCoverUrl1Content()), Garden::getCoverUrl1Content, updateDTO.getCoverUrl1Content())
-                .set(StrUtil.isNotBlank(updateDTO.getCoverUrl2()), Garden::getCoverUrl2, updateDTO.getCoverUrl2())
-                .set(StrUtil.isNotBlank(updateDTO.getCoverUrl2Content()), Garden::getCoverUrl2Content, updateDTO.getCoverUrl2Content())
-                .set(StrUtil.isNotBlank(updateDTO.getCoverUrl3()), Garden::getCoverUrl3, updateDTO.getCoverUrl3())
-                .set(StrUtil.isNotBlank(updateDTO.getCoverUrl3Content()), Garden::getCoverUrl3Content, updateDTO.getCoverUrl3Content())
-                .set(StrUtil.isNotBlank(updateDTO.getCoverUrl4()), Garden::getCoverUrl4, updateDTO.getCoverUrl4())
-                .set(StrUtil.isNotBlank(updateDTO.getCoverUrl4Content()), Garden::getCoverUrl4Content, updateDTO.getCoverUrl4Content())
-                .eq(Garden::getId, updateDTO.getId())
+                .set(StrUtil.isNotBlank(updateDTO.getName()), Farm::getName, updateDTO.getName())
+                .set(Farm::getQrCode, qrCode)
+                .set(updateDTO.getWorldMapId() != null, Farm::getWorldMapId, updateDTO.getWorldMapId())
+                .set(StrUtil.isNotBlank(updateDTO.getWkt()), Farm::getWkt, updateDTO.getWkt())
+                .set(StrUtil.isNotBlank(updateDTO.getIcon()), Farm::getIcon, updateDTO.getIcon())
+                .set(StrUtil.isNotBlank(updateDTO.getAppid()), Farm::getAppid, updateDTO.getAppid())
+                .set(StrUtil.isNotBlank(updateDTO.getDayBg()), Farm::getDayBg, updateDTO.getDayBg())
+                .set(StrUtil.isNotBlank(updateDTO.getNightBg()), Farm::getNightBg, updateDTO.getNightBg())
+                .set(updateDTO.getBirdseyeGardenId() != null, Farm::getBirdseyeFarmId, updateDTO.getBirdseyeGardenId())
+                .set(updateDTO.getUserId() != null, Farm::getUserId, updateDTO.getUserId())
+                .set(StrUtil.isNotBlank(updateDTO.getBaseMapUrl()), Farm::getBaseMapUrl, updateDTO.getBaseMapUrl())
+                .set(StrUtil.isNotBlank(updateDTO.getBgMusic()), Farm::getBgMusic, updateDTO.getBgMusic())
+                .set(StrUtil.isNotBlank(updateDTO.getCoverUrl1()), Farm::getCoverUrl1, updateDTO.getCoverUrl1())
+                .set(StrUtil.isNotBlank(updateDTO.getCoverUrl1Content()), Farm::getCoverUrl1Content, updateDTO.getCoverUrl1Content())
+                .set(StrUtil.isNotBlank(updateDTO.getCoverUrl2()), Farm::getCoverUrl2, updateDTO.getCoverUrl2())
+                .set(StrUtil.isNotBlank(updateDTO.getCoverUrl2Content()), Farm::getCoverUrl2Content, updateDTO.getCoverUrl2Content())
+                .set(StrUtil.isNotBlank(updateDTO.getCoverUrl3()), Farm::getCoverUrl3, updateDTO.getCoverUrl3())
+                .set(StrUtil.isNotBlank(updateDTO.getCoverUrl3Content()), Farm::getCoverUrl3Content, updateDTO.getCoverUrl3Content())
+                .set(StrUtil.isNotBlank(updateDTO.getCoverUrl4()), Farm::getCoverUrl4, updateDTO.getCoverUrl4())
+                .set(StrUtil.isNotBlank(updateDTO.getCoverUrl4Content()), Farm::getCoverUrl4Content, updateDTO.getCoverUrl4Content())
+                .eq(Farm::getId, updateDTO.getId())
                 .update();
     }
 }

+ 5 - 8
admin/src/main/java/com/flyer/foster/service/impl/ScoreServiceImpl.java

@@ -8,7 +8,6 @@ import com.flyer.foster.entity.AppUser;
 import com.flyer.foster.entity.Score;
 import com.flyer.foster.mapper.IScoreMapper;
 import com.flyer.foster.pojo.StpAppUtil;
-import com.flyer.foster.service.IAppUserService;
 import com.flyer.foster.service.IScoreService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -28,8 +27,6 @@ import java.time.LocalDateTime;
  */
 @Service
 public class ScoreServiceImpl extends ServiceImpl<IScoreMapper, Score> implements IScoreService {
-    @Autowired
-    private IAppUserService iAppUserService;
 
     @Transactional
     @Override
@@ -50,12 +47,12 @@ public class ScoreServiceImpl extends ServiceImpl<IScoreMapper, Score> implement
             // 插入用户积分
             this.save(entity);
             // 修改用户总积分
-            AppUser appUser = iAppUserService.getById(entity.getAppUserId());
+//            AppUser appUser = iAppUserService.getById(entity.getAppUserId());
             // 原始积分
-            Integer totalScore = appUser.getTotalScore();
-            totalScore += addDTO.getScore();
-            appUser.setTotalScore(totalScore);
-            iAppUserService.saveOrUpdate(appUser);
+//            Integer totalScore = appUser.getTotalScore();
+//            totalScore += addDTO.getScore();
+//            appUser.setTotalScore(totalScore);
+//            iAppUserService.saveOrUpdate(appUser);
             return true;
         }
         return false;

+ 31 - 0
admin/src/main/java/com/flyer/foster/service/impl/TbAddressServiceImpl.java

@@ -0,0 +1,31 @@
+package com.flyer.foster.service.impl;
+
+import com.flyer.foster.entity.TbAddress;
+import com.flyer.foster.mapper.TbAddressMapper;
+import com.flyer.foster.pojo.StpAppUtil;
+import com.flyer.foster.service.ITbAddressService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author shuhao
+ * @since 2025-03-16
+ */
+@Service
+public class TbAddressServiceImpl extends ServiceImpl<TbAddressMapper, TbAddress> implements ITbAddressService {
+
+    @Override
+    public Integer minSort(Integer appUserId, Integer ignoreId) {
+        TbAddress address = this.lambdaQuery().eq(TbAddress::getAppUserId, appUserId)
+                .ne(TbAddress::getId, ignoreId)
+                .orderByAsc(TbAddress::getSort).last("LIMIT 1").one();
+        if(address == null){
+            return null;
+        }
+        return address.getSort() - 1;
+    }
+}

+ 50 - 0
admin/src/main/java/com/flyer/foster/service/impl/TbFarmFosterCodeServiceImpl.java

@@ -1,11 +1,19 @@
 package com.flyer.foster.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.flyer.foster.entity.TbFarmFosterCode;
 import com.flyer.foster.mapper.TbFarmFosterCodeMapper;
 import com.flyer.foster.service.ITbFarmFosterCodeService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springframework.stereotype.Service;
 
+import java.time.LocalDateTime;
+import java.util.List;
+import java.util.Random;
+import java.util.Set;
+import java.util.concurrent.ThreadLocalRandom;
+import java.util.stream.Collectors;
+
 /**
  * <p>
  * 果园 服务实现类
@@ -17,4 +25,46 @@ import org.springframework.stereotype.Service;
 @Service
 public class TbFarmFosterCodeServiceImpl extends ServiceImpl<TbFarmFosterCodeMapper, TbFarmFosterCode> implements ITbFarmFosterCodeService {
 
+
+    @Override
+    public String generateFosterCode(Integer farmId) {
+        List<TbFarmFosterCode> tbFarmFosterCodes = this.lambdaQuery().select(TbFarmFosterCode::getFosterCode)
+                .eq(TbFarmFosterCode::getFarmId, farmId)
+                .eq(TbFarmFosterCode::getFosterUse, 0)
+                .gt(TbFarmFosterCode::getExpTime, LocalDateTime.now())
+                .list();
+
+        Set<String> codes = tbFarmFosterCodes.stream().map(TbFarmFosterCode::getFosterCode).collect(Collectors.toSet());
+        return generateCode(codes);
+    }
+
+    @Override
+    public TbFarmFosterCode getFosterCodeByFosterCode(Integer farmId, String fosterCode) {
+        return this.lambdaQuery().eq(TbFarmFosterCode::getFarmId, farmId)
+                .eq(TbFarmFosterCode::getFosterCode, fosterCode)
+               .eq(TbFarmFosterCode::getFosterUse, 0)
+               .gt(TbFarmFosterCode::getExpTime, LocalDateTime.now())
+               .last("LIMIT 1")
+               .one();
+    }
+
+    @Override
+    public void useFosterCode(String fosterCode) {
+        this.lambdaUpdate().set(TbFarmFosterCode::getFosterUse, 1)
+                .eq(TbFarmFosterCode::getFosterCode, fosterCode);
+    }
+
+
+    private String generateCode(Set<String> codes) {
+        // 生成一个6位数的随机数字字符串
+        String res = String.format("%06d", ThreadLocalRandom.current().nextInt(0, 1000000));
+        // 如果生成的随机数字字符串已经存在,则重新生成
+        while (codes.contains(res)) {
+            res = String.format("%06d", ThreadLocalRandom.current().nextInt(0, 1000000));
+        }
+        return res;
+    }
+
 }
+
+

+ 0 - 20
admin/src/main/java/com/flyer/foster/service/impl/TreeImageServiceImpl.java

@@ -1,20 +0,0 @@
-package com.flyer.foster.service.impl;
-
-import com.flyer.foster.entity.TreeImage;
-import com.flyer.foster.mapper.ITreeImageMapper;
-import com.flyer.foster.service.ITreeImageService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import org.springframework.stereotype.Service;
-
-/**
- * <p>
- * 树照片 服务实现类
- * </p>
- *
- * @author flyer
- * @since 2024-05-09
- */
-@Service
-public class TreeImageServiceImpl extends ServiceImpl<ITreeImageMapper, TreeImage> implements ITreeImageService {
-
-}

+ 3 - 12
admin/src/main/java/com/flyer/foster/service/impl/TreeServiceImpl.java

@@ -3,7 +3,7 @@ package com.flyer.foster.service.impl;
 import cn.hutool.core.bean.BeanUtil;
 import com.flyer.foster.dto.TreeAddDTO;
 import com.flyer.foster.dto.TreeRespDTO;
-import com.flyer.foster.entity.Tree;
+import com.flyer.foster.entity.Sample;
 import com.flyer.foster.mapper.ITreeMapper;
 import com.flyer.foster.service.ITreeService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -20,23 +20,14 @@ import java.util.List;
  * @since 2024-05-09
  */
 @Service
-public class TreeServiceImpl extends ServiceImpl<ITreeMapper, Tree> implements ITreeService {
+public class TreeServiceImpl extends ServiceImpl<ITreeMapper, Sample> implements ITreeService {
 
     @Override
     public Integer addTree(TreeAddDTO addDTO) {
-        Tree tree = new Tree();
+        Sample tree = new Sample();
         BeanUtil.copyProperties(addDTO, tree);
         this.save(tree);
         return tree.getId();
     }
 
-    @Override
-    public boolean deleteByIdList(List<Integer> idList) {
-        return baseMapper.deleteByIdList(idList);
-    }
-
-    @Override
-    public List<TreeRespDTO> getTreeById(Integer gardenId) {
-        return baseMapper.getTreeById(gardenId);
-    }
 }

+ 25 - 0
admin/src/main/java/com/flyer/foster/service/rpc/farm/FeignFarmRegionService.java

@@ -0,0 +1,25 @@
+package com.flyer.foster.service.rpc.farm;
+
+import com.flyer.foster.dto.SampleQueryDto;
+import com.flyer.foster.service.rpc.farm.model.FeignRegionDto;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.cloud.openfeign.SpringQueryMap;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ *  农事管理模块Feign客户端接口
+ */
+@FeignClient(contextId = "FeignFarmRegionService",value = "birdseye-new-api",path = "/rpc/region")
+public interface FeignFarmRegionService {
+    /**
+     * 区域列表
+     * @return
+     */
+    @GetMapping("/list")
+    public List<FeignRegionDto> list(@SpringQueryMap SampleQueryDto dto);
+
+}

+ 23 - 0
admin/src/main/java/com/flyer/foster/service/rpc/farm/FeignFarmService.java

@@ -0,0 +1,23 @@
+package com.flyer.foster.service.rpc.farm;
+
+import com.flyer.foster.service.rpc.farm.model.FeignFarmDto;
+import com.flyer.foster.service.rpc.farm.model.ZFarmWorkRecordSampleDetailVo;
+import com.flyer.model.PageAndListResult;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestParam;
+
+/**
+ *  农事管理模块Feign客户端接口
+ */
+@FeignClient(contextId = "FeignFarmService",value = "birdseye-new-api",path = "/rpc/farm")
+public interface FeignFarmService {
+    /**
+     * 农场信息
+     * @return
+     */
+    @GetMapping("/get")
+    FeignFarmDto get(@RequestParam Integer farmId);
+
+}

+ 27 - 0
admin/src/main/java/com/flyer/foster/service/rpc/farm/FeignFarmWorkService.java

@@ -0,0 +1,27 @@
+package com.flyer.foster.service.rpc.farm;
+
+import com.flyer.foster.service.rpc.farm.model.ZFarmWorkRecordSampleDetailVo;
+import com.flyer.model.PageAndListResult;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ *  农事管理模块Feign客户端接口
+ */
+@FeignClient(contextId = "FeignFarmWorkService",value = "birdseye-new-api",path = "/rpc/farm_work")
+public interface FeignFarmWorkService {
+    /**
+     * 采样点农事记录
+     * @param sampleId
+     * @param page
+     * @param limit
+     * @return
+     */
+    @GetMapping("/listBySampleId/{page}/{limit}")
+    PageAndListResult<ZFarmWorkRecordSampleDetailVo> listBySampleId(
+            @RequestParam Integer sampleId,
+            @PathVariable Integer page,
+            @PathVariable Integer limit
+    );
+
+}

+ 19 - 0
admin/src/main/java/com/flyer/foster/service/rpc/farm/model/FarmWorkPrescription.java

@@ -0,0 +1,19 @@
+package com.flyer.foster.service.rpc.farm.model;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class FarmWorkPrescription {
+
+    private String name;
+
+    /**
+     * 使用方式
+     */
+    private String usageMode;
+
+    List<ZFarmWorkOrderPesticideFertilizerVo> pesticideFertilizerList;
+
+}

+ 59 - 0
admin/src/main/java/com/flyer/foster/service/rpc/farm/model/FeignFarmDto.java

@@ -0,0 +1,59 @@
+package com.flyer.foster.service.rpc.farm.model;
+
+import com.alibaba.fastjson.annotation.JSONField;
+import lombok.Data;
+
+/**
+ * 果树
+ */
+@Data
+public class FeignFarmDto implements java.io.Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 农场id
+     */
+    private Integer id;
+
+
+    /**
+     * 地址
+     */
+    private String address;
+
+    /**
+     * 地区
+     */
+    private String district;
+
+
+    /**
+     * 果园名字
+     */
+    private String name;
+
+    /**
+     * 面积(亩)
+     */
+    private String mianji;
+
+    private String point;
+
+    private Long speciesId;
+
+
+
+}
+
+
+
+
+
+
+
+
+
+
+
+

+ 33 - 0
admin/src/main/java/com/flyer/foster/service/rpc/farm/model/FeignRegionDto.java

@@ -0,0 +1,33 @@
+package com.flyer.foster.service.rpc.farm.model;
+
+import lombok.Data;
+
+/**
+ * 果树
+ */
+@Data
+public class FeignRegionDto implements java.io.Serializable {
+
+
+    private Integer id;
+
+    private String name;
+
+    private Long farmId;
+
+    private String geom;
+
+
+}
+
+
+
+
+
+
+
+
+
+
+
+

+ 135 - 0
admin/src/main/java/com/flyer/foster/service/rpc/farm/model/ZFarmWorkOrderPesticideFertilizerVo.java

@@ -0,0 +1,135 @@
+package com.flyer.foster.service.rpc.farm.model;
+
+import lombok.Data;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import com.alibaba.fastjson.annotation.JSONField;
+import java.math.BigDecimal;
+import java.util.List;
+
+@Data
+public class ZFarmWorkOrderPesticideFertilizerVo {
+
+        /**
+        * id
+        */
+    @JSONField(ordinal = 0)
+    private Long id;
+
+
+        /**
+        * 订单id
+        */
+    @JSONField(ordinal = 2)
+    private Long orderId;
+
+        /**
+        * 药肥id
+        */
+    @JSONField(ordinal = 4)
+    private Long pesticideFertilizerId;
+    /**
+        * 药肥编码
+        */
+    @JSONField(ordinal = 4)
+    private String pesticideFertilizerCode;
+
+    /**
+     * 药肥名称
+     */
+    @JSONField(ordinal = 5)
+    private String pesticideFertilizerName;
+
+    /**
+     * 功效类型名称
+     */
+    @JSONField(ordinal = 6)
+    private String typeName;
+
+        /**
+        * 品牌
+        */
+    @JSONField(ordinal = 6)
+    private String brand;
+
+        /**
+        * 单价
+        */
+    @JSONField(ordinal = 8)
+    private BigDecimal price;
+
+        /**
+        * 单位
+        */
+    @JSONField(ordinal = 10)
+    private String unit;
+
+        /**
+        * 执行方式
+        */
+    @JSONField(ordinal = 12)
+    private Integer executeStyle;
+
+    /**
+     * 亩用量
+     */
+    private Integer muUsage;
+    /**
+     * 亩用量无人机
+     */
+    private Integer muUsage2;
+
+    /**
+     * 单亩价格
+     */
+    private BigDecimal muPrice;
+
+    /**
+     * 默认配比
+     */
+    private Integer defaultRatio;
+    /**
+     * 默认无人机配比
+     */
+    private Integer defaultDroneRatio;
+
+    /**
+     * 配比
+     */
+    private Integer ratio;
+    /**
+     * 配比无人机
+     */
+    private Integer ratio2;
+
+    /**
+     * 默认名称
+     */
+    private String defaultName;
+
+    /**
+     * 使用方式
+     */
+    private String usageMode;
+
+    /**
+     * 使用方式列表
+     */
+    @JSONField(serialize = false)
+    private String usageModeOption;
+
+    /**
+     * 使用方式列表
+     */
+    private List<String> usageModeList;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+
+
+
+
+}

+ 78 - 0
admin/src/main/java/com/flyer/foster/service/rpc/farm/model/ZFarmWorkRecordSampleDetailVo.java

@@ -0,0 +1,78 @@
+package com.flyer.foster.service.rpc.farm.model;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.annotation.JSONField;
+import lombok.Data;
+import lombok.experimental.FieldNameConstants;
+import org.apache.commons.lang3.StringUtils;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@Data
+@FieldNameConstants
+public class ZFarmWorkRecordSampleDetailVo implements java.io.Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+        /**
+        * id
+        */
+    @JSONField(ordinal = 0)
+    private Long id;
+
+    /**
+     * 农事元数据name
+     */
+    @JSONField(ordinal = 2)
+    private String farmWorkLibName;
+
+    /**
+     * 药肥名称
+     */
+    @JSONField(ordinal = 3)
+    private List<String> pesticideFertilizerNameList;
+
+    /**
+     * 农资名称
+     */
+    @JSONField(ordinal = 5)
+    private String agriculturalName;
+
+    /**
+     * 专家名称
+     */
+    @JSONField(ordinal = 7)
+    private String expertName;
+
+    /**
+     * 安全标准
+     */
+    @JSONField(ordinal = 9)
+    private String standardOfSecurity;
+
+    @JSONField(serialize = false)
+    private String prescriptionJson;
+
+    /**
+     * 农事处方
+     */
+    @JSONField(serialize = false)
+    private List<FarmWorkPrescription> prescriptionList;
+
+    /**
+     * 转换执行蓝色分区
+     */
+    public void transformPrescriptionList() {
+        if (StringUtils.isNotBlank(prescriptionJson)) {
+            this.prescriptionList = JSON.parseArray(prescriptionJson, FarmWorkPrescription.class);
+            pesticideFertilizerNameList = new ArrayList<>();
+            for(FarmWorkPrescription prescription : this.prescriptionList){
+                for(ZFarmWorkOrderPesticideFertilizerVo pesticideFertilizer : prescription.getPesticideFertilizerList()){
+                    pesticideFertilizerNameList.add(pesticideFertilizer.getDefaultName());
+                }
+            }
+        }
+    }
+
+}

+ 43 - 0
admin/src/main/java/com/flyer/foster/service/rpc/sample/FeignSampleService.java

@@ -0,0 +1,43 @@
+package com.flyer.foster.service.rpc.sample;
+
+import com.flyer.foster.dto.SampleQueryDto;
+import com.flyer.foster.service.rpc.sample.model.FeignSampleDto;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.cloud.openfeign.SpringQueryMap;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestParam;
+
+import java.util.List;
+
+/**
+ *  果树管理
+ */
+@FeignClient(contextId = "FeignSampleService",value = "birdseye-new-api",path = "/rpc/sample")
+public interface FeignSampleService {
+
+
+    /**
+     * 果园的果树列表
+     * @param queryDto
+     * @return
+     */
+    @GetMapping("/list")
+    List<FeignSampleDto> list(@SpringQueryMap SampleQueryDto queryDto);
+
+    /**
+     * 查询单个采样点信息
+     * @return
+     */
+    @GetMapping("/getById")
+    FeignSampleDto getById(@RequestParam("id") Integer id);
+
+    /**
+     * 查询多个采样点信息
+     * @return
+     */
+    @PostMapping("/getByIds")
+    List<FeignSampleDto> getByIds(@RequestBody List<Integer> ids);
+
+}

+ 95 - 0
admin/src/main/java/com/flyer/foster/service/rpc/sample/model/FeignSampleDto.java

@@ -0,0 +1,95 @@
+package com.flyer.foster.service.rpc.sample.model;
+
+import com.alibaba.fastjson.annotation.JSONField;
+import lombok.Data;
+import org.locationtech.jts.geom.Geometry;
+
+/**
+ * 果树
+ */
+@Data
+public class FeignSampleDto implements java.io.Serializable {
+
+
+    /**
+     * 主键id
+     */
+    private Integer id;
+
+    /**
+     * 地理信息唯一编码
+     */
+    private String geoHashSample;
+
+    /**
+     * 蓝区地理信息编码
+     */
+    private String blueZoneCode;
+
+    /**
+     * 分区id
+     */
+    private Integer regionId;
+
+    /**
+     * 品种id
+     */
+    private Long speciesItemId;
+
+    /**
+     * 树龄
+     */
+    private Integer age;
+
+    /**
+     * 地块id
+     */
+    private Long subRegionId;
+
+    @JSONField(serialize = false)
+    private Geometry geometry;
+
+    /**
+     * 点位
+     */
+    private String point;
+
+    /**
+     * 农场id
+     */
+    private Integer farmId;
+
+    /**
+     * 显示状态(0正常 1 待复核 2 生长异常 3 病虫异常)
+     */
+    private Integer ycStatus;
+
+    /**
+     * 病害等级 0 1 2 3
+     */
+    private Integer diseasesLevel;
+
+    /**
+     * 虫害等级 0 1 2 3
+     */
+    private Integer pestsLevel;
+
+
+    /**
+     * 是否成熟(0否 1是)
+     */
+    private Integer isBeRipe;
+
+}
+
+
+
+
+
+
+
+
+
+
+
+

+ 18 - 0
admin/src/main/java/com/flyer/foster/service/rpc/species/FeignBotanyTypeService.java

@@ -0,0 +1,18 @@
+package com.flyer.foster.service.rpc.species;
+
+import com.flyer.foster.service.rpc.species.model.LzBotanyTypeDto;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.GetMapping;
+
+import java.util.List;
+
+@FeignClient(contextId = "FeignBotanyTypeService",value = "feiniao-weather",path = "/botany_type")
+public interface FeignBotanyTypeService {
+
+    /**
+     * 植物大类以及植物类型
+     * @return
+     */
+    @GetMapping("/list")
+    List<LzBotanyTypeDto> list();
+}

+ 22 - 0
admin/src/main/java/com/flyer/foster/service/rpc/species/FeignPCitySpeciesItemService.java

@@ -0,0 +1,22 @@
+package com.flyer.foster.service.rpc.species;
+
+import com.flyer.foster.service.rpc.species.model.PCitySpeciesItemDto;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+
+import java.util.List;
+
+/**
+ * 城市物种品种关联接口
+ */
+@FeignClient(contextId = "FeignPCitySpeciesItemService",value = "feiniao-weather",path = "/p_city_species_item")
+public interface FeignPCitySpeciesItemService {
+
+    @GetMapping("/findByPointAndPreCityId")
+    List<PCitySpeciesItemDto> findByPointAndPreCityId(@RequestParam() String point,
+                                                      @RequestParam(required = false)  Integer preCityId);
+
+    @GetMapping("/findByCityId")
+    List<PCitySpeciesItemDto> findByCityId(@RequestParam  Integer cityId);
+}

+ 32 - 0
admin/src/main/java/com/flyer/foster/service/rpc/species/FeignSpeciesItemService.java

@@ -0,0 +1,32 @@
+package com.flyer.foster.service.rpc.species;
+
+import com.flyer.foster.service.rpc.species.model.SpeciesItem;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestParam;
+
+import java.util.List;
+
+@FeignClient(contextId = "FeignFruitsTypeItemService",value = "feiniao-weather",path = "/species_item")
+public interface FeignSpeciesItemService {
+
+
+    @GetMapping("/findAll")
+    List<SpeciesItem> findAll();
+
+    @GetMapping("/get")
+    SpeciesItem get(@RequestParam Long id);
+
+    @GetMapping("/listByPid")
+    List<SpeciesItem> listByPid(@RequestParam Long fruitsTypeId);
+
+    /**
+     * ids 数组查询列表
+     * @return
+     */
+    @PostMapping("/listByIds")
+    List<SpeciesItem> listByIds(@RequestBody List<Long> ids);
+
+}

Some files were not shown because too many files changed in this diff