diff --git a/bin/clean.bat b/bin/clean.bat
new file mode 100644
index 0000000..24c0974
--- /dev/null
+++ b/bin/clean.bat
@@ -0,0 +1,12 @@
+@echo off
+echo.
+echo [ÐÅϢ] ÇåÀí¹¤³ÌtargetÉú³É·¾¶¡£
+echo.
+
+%~d0
+cd %~dp0
+
+cd ..
+call mvn clean
+
+pause
\ No newline at end of file
diff --git a/bin/package.bat b/bin/package.bat
new file mode 100644
index 0000000..c693ec0
--- /dev/null
+++ b/bin/package.bat
@@ -0,0 +1,12 @@
+@echo off
+echo.
+echo [ÐÅϢ] ´ò°üWeb¹¤³̣¬Éú³Éwar/jar°üÎļþ¡£
+echo.
+
+%~d0
+cd %~dp0
+
+cd ..
+call mvn clean package -Dmaven.test.skip=true
+
+pause
\ No newline at end of file
diff --git a/bin/run.bat b/bin/run.bat
new file mode 100644
index 0000000..6231f4c
--- /dev/null
+++ b/bin/run.bat
@@ -0,0 +1,14 @@
+@echo off
+echo.
+echo [ÐÅϢ] ʹÓÃJarÃüÁîÔËÐÐWeb¹¤³̡£
+echo.
+
+cd %~dp0
+cd ../fp-admin/target
+
+set JAVA_OPTS=-Xms256m -Xmx1024m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=512m
+
+java -jar %JAVA_OPTS% fp-admin.jar
+
+cd bin
+pause
\ No newline at end of file
diff --git a/doc/若依环境使用手册.docx b/doc/若依环境使用手册.docx
new file mode 100644
index 0000000..9e4daef
Binary files /dev/null and b/doc/若依环境使用手册.docx differ
diff --git a/fp-admin/pom.xml b/fp-admin/pom.xml
new file mode 100644
index 0000000..bdf4edc
--- /dev/null
+++ b/fp-admin/pom.xml
@@ -0,0 +1,115 @@
+
+
+
+ schoolfood
+ com.zf
+ 3.8.8
+
+ 4.0.0
+ jar
+ fp-admin
+
+
+ web服务入口
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-devtools
+ true
+
+
+
+
+ io.springfox
+ springfox-boot-starter
+
+
+
+
+ io.swagger
+ swagger-models
+ 1.6.2
+
+
+
+
+ mysql
+ mysql-connector-java
+
+
+
+
+ com.zf
+ fp-framework
+
+
+
+
+ com.zf
+ fp-quartz
+
+
+ com.zf
+ fp-system
+
+
+
+
+ com.zf
+ fp-generator
+
+
+ org.projectlombok
+ lombok
+ provided
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
+
+ com.github.qcloudsms
+ qcloudsms
+ 1.0.6
+
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+ 2.5.15
+
+ true
+
+
+
+
+ repackage
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-war-plugin
+ 3.1.0
+
+ false
+ ${project.artifactId}
+
+
+
+ ${project.artifactId}
+
+
+
diff --git a/fp-admin/src/main/java/com/zf/foodpurchase/RuoYiApplication.java b/fp-admin/src/main/java/com/zf/foodpurchase/RuoYiApplication.java
new file mode 100644
index 0000000..7e779ea
--- /dev/null
+++ b/fp-admin/src/main/java/com/zf/foodpurchase/RuoYiApplication.java
@@ -0,0 +1,35 @@
+package com.zf.foodpurchase;
+
+import org.mybatis.spring.annotation.MapperScan;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
+import org.springframework.context.annotation.EnableAspectJAutoProxy;
+import org.springframework.scheduling.annotation.EnableScheduling;
+
+/**
+ * 启动程序
+ *
+ * @author ruoyi
+ */
+@SpringBootApplication(exclude = { DataSourceAutoConfiguration.class })
+@EnableScheduling
+@EnableAspectJAutoProxy
+public class RuoYiApplication
+{
+ public static void main(String[] args)
+ {
+ // System.setProperty("spring.devtools.restart.enabled", "false");
+ SpringApplication.run(RuoYiApplication.class, args);
+ System.out.println("(♥◠‿◠)ノ゙ 若依启动成功 ლ(´ڡ`ლ)゙ \n" +
+ " .-------. ____ __ \n" +
+ " | _ _ \\ \\ \\ / / \n" +
+ " | ( ' ) | \\ _. / ' \n" +
+ " |(_ o _) / _( )_ .' \n" +
+ " | (_,_).' __ ___(_ o _)' \n" +
+ " | |\\ \\ | || |(_,_)' \n" +
+ " | | \\ `' /| `-' / \n" +
+ " | | \\ / \\ / \n" +
+ " ''-' `'-' `-..-' ");
+ }
+}
diff --git a/fp-admin/src/main/java/com/zf/foodpurchase/RuoYiServletInitializer.java b/fp-admin/src/main/java/com/zf/foodpurchase/RuoYiServletInitializer.java
new file mode 100644
index 0000000..adf41c3
--- /dev/null
+++ b/fp-admin/src/main/java/com/zf/foodpurchase/RuoYiServletInitializer.java
@@ -0,0 +1,18 @@
+package com.zf.foodpurchase;
+
+import org.springframework.boot.builder.SpringApplicationBuilder;
+import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
+
+/**
+ * web容器中进行部署
+ *
+ * @author ruoyi
+ */
+public class RuoYiServletInitializer extends SpringBootServletInitializer
+{
+ @Override
+ protected SpringApplicationBuilder configure(SpringApplicationBuilder application)
+ {
+ return application.sources(RuoYiApplication.class);
+ }
+}
diff --git a/fp-admin/src/main/java/com/zf/foodpurchase/fdsafe/web/admin/FoodTypeController.java b/fp-admin/src/main/java/com/zf/foodpurchase/fdsafe/web/admin/FoodTypeController.java
new file mode 100644
index 0000000..6584647
--- /dev/null
+++ b/fp-admin/src/main/java/com/zf/foodpurchase/fdsafe/web/admin/FoodTypeController.java
@@ -0,0 +1,68 @@
+package com.zf.foodpurchase.fdsafe.web.admin;
+
+
+import com.zf.foodpurchase.common.core.controller.BaseController;
+import com.zf.foodpurchase.common.core.domain.AjaxResult;
+import com.zf.foodpurchase.common.core.page.TableDataInfo;
+import com.zf.foodpurchase.common.valigroud.AddGroup;
+import com.zf.foodpurchase.common.valigroud.UpdateGroup;
+import com.zf.foodpurchase.fdsafe.service.IFoodTypeService;
+import com.zf.foodpurchase.fdsafe.vo.FoodTypeVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+/**
+ *
+ * 前端控制器
+ *
+ *
+ * @author lilj
+ * @since 2025-04-17
+ */
+@RestController
+@RequestMapping("/foodType")
+public class FoodTypeController extends BaseController {
+ @Autowired
+ private IFoodTypeService foodTypeServcie;
+
+ /**
+ * 查询用
+ * @return
+ */
+ @GetMapping("/list")
+ public AjaxResult list(){
+ FoodTypeVO foodTypeVO = new FoodTypeVO();
+ foodTypeVO.setStatus(0);
+ List list = foodTypeServcie.queryFoodTypeVO(foodTypeVO);
+ return AjaxResult.success(list);
+ }
+
+ @GetMapping("/pageList")
+ public TableDataInfo pageList(FoodTypeVO foodTypeVO){
+ startPage();
+ List list = foodTypeServcie.queryFoodTypeVO(foodTypeVO);
+ return getDataTable(list);
+ }
+ @PostMapping("/add")
+ public AjaxResult add(@RequestBody @Validated(AddGroup.class) FoodTypeVO foodTypeVO){
+ return foodTypeServcie.saveVO(foodTypeVO);
+ }
+
+ @PostMapping("/update")
+ public AjaxResult update(@RequestBody @Validated(UpdateGroup.class)FoodTypeVO foodTypeVO){
+ return foodTypeServcie.updateVO(foodTypeVO);
+ }
+
+ @GetMapping("/delete")
+ public AjaxResult delete(Integer unitId){
+ if(unitId == null){
+ return error("未指定要删除的类别");
+ }
+ boolean flag = foodTypeServcie.removeById(unitId);
+ return flag ? success("删除成功") : error("删除失败");
+ }
+// 食材
+}
diff --git a/fp-admin/src/main/java/com/zf/foodpurchase/fdsafe/web/admin/FoodUnitController.java b/fp-admin/src/main/java/com/zf/foodpurchase/fdsafe/web/admin/FoodUnitController.java
new file mode 100644
index 0000000..61c1cc3
--- /dev/null
+++ b/fp-admin/src/main/java/com/zf/foodpurchase/fdsafe/web/admin/FoodUnitController.java
@@ -0,0 +1,70 @@
+package com.zf.foodpurchase.fdsafe.web.admin;
+
+
+import com.zf.foodpurchase.common.core.controller.BaseController;
+import com.zf.foodpurchase.common.core.domain.AjaxResult;
+import com.zf.foodpurchase.common.core.page.TableDataInfo;
+import com.zf.foodpurchase.common.valigroud.AddGroup;
+import com.zf.foodpurchase.common.valigroud.UpdateGroup;
+import com.zf.foodpurchase.fdsafe.service.IFoodUnitService;
+import com.zf.foodpurchase.fdsafe.vo.FoodUnitVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+/**
+ *
+ * 前端控制器
+ *
+ *
+ * @author lilj
+ * @since 2025-04-17
+ */
+@RestController
+@RequestMapping("/foodUnit")
+public class FoodUnitController extends BaseController {
+ @Autowired
+ private IFoodUnitService foodUnitService;
+
+ /**
+ * 查询用
+ * @return
+ */
+ @GetMapping("/list")
+ public AjaxResult list(){
+ FoodUnitVO foodUnitVO = new FoodUnitVO();
+ foodUnitVO.setStatus(0);
+ foodUnitVO.setDelFlag(0);
+ List list = foodUnitService.queryFoodUnitVO(foodUnitVO);
+ return AjaxResult.success(list);
+ }
+
+ @GetMapping("/pageList")
+ public TableDataInfo pageList(FoodUnitVO foodUnitVO){
+ startPage();
+ foodUnitVO.setDelFlag(0);
+ List list = foodUnitService.queryFoodUnitVO(foodUnitVO);
+ return getDataTable(list);
+ }
+ @PostMapping("/add")
+ public AjaxResult add(@RequestBody @Validated(AddGroup.class) FoodUnitVO foodUnitVO){
+ return foodUnitService.saveVO(foodUnitVO);
+ }
+
+ @PostMapping("/update")
+ public AjaxResult update(@RequestBody @Validated(UpdateGroup.class) FoodUnitVO foodUnitVO){
+ return foodUnitService.updateVO(foodUnitVO);
+ }
+
+ @GetMapping("/delete")
+ public AjaxResult delete(Integer unitId){
+ if(unitId == null){
+ return error("未指定要删除的食材规格/单位");
+ }
+ boolean flag = foodUnitService.removeById(unitId);
+ return flag ? success("删除成功") : error("删除失败");
+ }
+
+}
diff --git a/fp-admin/src/main/java/com/zf/foodpurchase/fdsafe/web/edu/EduController.java b/fp-admin/src/main/java/com/zf/foodpurchase/fdsafe/web/edu/EduController.java
new file mode 100644
index 0000000..63541f9
--- /dev/null
+++ b/fp-admin/src/main/java/com/zf/foodpurchase/fdsafe/web/edu/EduController.java
@@ -0,0 +1,65 @@
+package com.zf.foodpurchase.fdsafe.web.edu;
+
+import com.zf.foodpurchase.common.core.controller.BaseController;
+import com.zf.foodpurchase.common.core.domain.AjaxResult;
+import com.zf.foodpurchase.common.core.page.TableDataInfo;
+import com.zf.foodpurchase.common.valigroud.AddGroup;
+import com.zf.foodpurchase.common.valigroud.UpdateGroup;
+import com.zf.foodpurchase.fdsafe.service.IEduService;
+import com.zf.foodpurchase.fdsafe.vo.EduVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.constraints.NotNull;
+import java.util.List;
+
+/**
+ * @author:lilj
+ * @date:2025/4/10
+ */
+@RestController
+@RequestMapping("/edu")
+public class EduController extends BaseController {
+ @Autowired
+ private IEduService eduService;
+
+ @GetMapping("/list")
+ public AjaxResult list(EduVO eduVO){
+ List list = eduService.queryEduList(eduVO);
+ return AjaxResult.success("查询成功",list);
+ }
+
+ @GetMapping("/pageList")
+ public TableDataInfo pageList(EduVO eduVO){
+ startPage();
+ List list = eduService.queryEduList(eduVO);
+ return getDataTable(list);
+ }
+
+ @PostMapping("/add")
+ public AjaxResult add(@RequestBody @Validated(AddGroup.class) EduVO eduVO){
+ return eduService.saveVO(eduVO);
+ }
+
+ @PostMapping("/update")
+ public AjaxResult update(@RequestBody @Validated(UpdateGroup.class) EduVO eduVO){
+ return eduService.updateVO(eduVO);
+ }
+
+ @GetMapping("/delete")
+ public AjaxResult delete(Integer eduId){
+ if(eduId == null){
+ return error("未指定要删除的教育局");
+ }
+ return eduService.removeById(eduId) ? success("删除成功") : error("删除失败");
+ }
+}
+
+//晨检内容 Morning inspection contents
+// 晨检记录:
+// 晨检详情:
+// 自检内容:Self-check content
+
+//标准
diff --git a/fp-admin/src/main/java/com/zf/foodpurchase/fdsafe/web/edu/FoodController.java b/fp-admin/src/main/java/com/zf/foodpurchase/fdsafe/web/edu/FoodController.java
new file mode 100644
index 0000000..736a4e1
--- /dev/null
+++ b/fp-admin/src/main/java/com/zf/foodpurchase/fdsafe/web/edu/FoodController.java
@@ -0,0 +1,59 @@
+package com.zf.foodpurchase.fdsafe.web.edu;
+
+
+import com.zf.foodpurchase.common.core.controller.BaseController;
+import com.zf.foodpurchase.common.core.domain.AjaxResult;
+import com.zf.foodpurchase.common.core.page.TableDataInfo;
+import com.zf.foodpurchase.common.valigroud.AddGroup;
+import com.zf.foodpurchase.common.valigroud.UpdateGroup;
+import com.zf.foodpurchase.fdsafe.service.IFoodService;
+import com.zf.foodpurchase.fdsafe.vo.FoodVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+/**
+ *
+ * 食材表 前端控制器
+ *
+ *
+ * @author lilj
+ * @since 2025-04-17
+ */
+@RestController
+@RequestMapping("/food")
+public class FoodController extends BaseController {
+
+ @Autowired
+ private IFoodService foodService;
+
+ @GetMapping("/pageList")
+ public TableDataInfo pageList(FoodVO foodVO) {
+ startPage();
+ foodVO.setDelFlag(0);
+ List list = foodService.queryFoodVO(foodVO);
+ return getDataTable(list);
+ }
+
+ @PostMapping("/add")
+ public AjaxResult add(@RequestBody @Validated(AddGroup.class) FoodVO foodVO) {
+ return foodService.saveVO(foodVO);
+ }
+
+ @PostMapping("/update")
+ public AjaxResult update(@RequestBody @Validated(UpdateGroup.class) FoodVO foodVO) {
+ return foodService.updateVO(foodVO);
+ }
+
+ @GetMapping("/delete")
+ public AjaxResult delete(Integer foodId) {
+ if(foodId == null){
+ return error("未指定要删除的食材");
+ }
+ boolean flag = foodService.removeById(foodId);
+ return flag ? success("删除成功") : error("删除失败");
+ }
+
+}
diff --git a/fp-admin/src/main/java/com/zf/foodpurchase/fdsafe/web/edu/MorningInspectionContentController.java b/fp-admin/src/main/java/com/zf/foodpurchase/fdsafe/web/edu/MorningInspectionContentController.java
new file mode 100644
index 0000000..bfb6d65
--- /dev/null
+++ b/fp-admin/src/main/java/com/zf/foodpurchase/fdsafe/web/edu/MorningInspectionContentController.java
@@ -0,0 +1,59 @@
+package com.zf.foodpurchase.fdsafe.web.edu;
+
+
+import com.zf.foodpurchase.common.core.controller.BaseController;
+import com.zf.foodpurchase.common.core.domain.AjaxResult;
+import com.zf.foodpurchase.common.core.page.TableDataInfo;
+import com.zf.foodpurchase.common.valigroud.AddGroup;
+import com.zf.foodpurchase.common.valigroud.UpdateGroup;
+import com.zf.foodpurchase.fdsafe.entity.MorningInspectionContent;
+import com.zf.foodpurchase.fdsafe.service.IMorningInspectionContentService;
+import com.zf.foodpurchase.fdsafe.vo.MorningInspectionContentVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+/**
+ *
+ * 前端控制器
+ *
+ *
+ * @author lilj
+ * @since 2025-04-14
+ */
+@RestController
+@RequestMapping("/morningInspectionContent")
+public class MorningInspectionContentController extends BaseController {
+
+ @Autowired
+ private IMorningInspectionContentService morningInspectionContentService;
+
+ @GetMapping("/pageList")
+ public TableDataInfo pageList(MorningInspectionContentVO morningInspectionContentVO){
+ startPage();
+ List list = morningInspectionContentService.queryMorningInspectionContentVO(morningInspectionContentVO);
+ return getDataTable(list);
+ }
+
+ @PostMapping("/add")
+ public AjaxResult add(@RequestBody @Validated(AddGroup.class) MorningInspectionContentVO morningInspectionContentVO){
+ return morningInspectionContentService.saveVO(morningInspectionContentVO);
+ }
+
+ @PostMapping("/update")
+ public AjaxResult update(@RequestBody @Validated(UpdateGroup.class) MorningInspectionContentVO morningInspectionContentVO){
+ return morningInspectionContentService.updateVO(morningInspectionContentVO);
+ }
+
+ @GetMapping("/delete")
+ public AjaxResult delete(Integer inspectionId){
+ if (inspectionId == null){
+ return error("未指定要删除的晨检项");
+ }
+ return morningInspectionContentService.deleteWithId(inspectionId);
+ }
+
+}
+
diff --git a/fp-admin/src/main/java/com/zf/foodpurchase/fdsafe/web/edu/SelfInspectionContentController.java b/fp-admin/src/main/java/com/zf/foodpurchase/fdsafe/web/edu/SelfInspectionContentController.java
new file mode 100644
index 0000000..b6a08cd
--- /dev/null
+++ b/fp-admin/src/main/java/com/zf/foodpurchase/fdsafe/web/edu/SelfInspectionContentController.java
@@ -0,0 +1,56 @@
+package com.zf.foodpurchase.fdsafe.web.edu;
+
+
+import com.zf.foodpurchase.common.core.controller.BaseController;
+import com.zf.foodpurchase.common.core.domain.AjaxResult;
+import com.zf.foodpurchase.common.core.page.TableDataInfo;
+import com.zf.foodpurchase.common.valigroud.AddGroup;
+import com.zf.foodpurchase.common.valigroud.UpdateGroup;
+import com.zf.foodpurchase.fdsafe.service.ISelfInspectionContentService;
+import com.zf.foodpurchase.fdsafe.vo.SelfInspectionContentVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+/**
+ *
+ * 前端控制器
+ *
+ *
+ * @author lilj
+ * @since 2025-04-15
+ */
+@RestController
+@RequestMapping("/selfInspectionContent")
+public class SelfInspectionContentController extends BaseController {
+ @Autowired
+ private ISelfInspectionContentService selfInspectionContentService;
+
+ @GetMapping("/pageList")
+ public TableDataInfo pageList(SelfInspectionContentVO selfInspectionContentVO){
+ startPage();
+ List list = selfInspectionContentService.querySelfInspectionContentVO(selfInspectionContentVO);
+ return getDataTable(list);
+ }
+
+ @PostMapping("/add")
+ public AjaxResult add(@RequestBody @Validated(AddGroup.class) SelfInspectionContentVO selfInspectionContentVO){
+ return selfInspectionContentService.saveVO(selfInspectionContentVO);
+ }
+
+ @PostMapping("/update")
+ public AjaxResult update(@RequestBody @Validated(UpdateGroup.class) SelfInspectionContentVO selfInspectionContentVO){
+ return selfInspectionContentService.updateVO(selfInspectionContentVO);
+ }
+
+ @GetMapping("/delete")
+ public AjaxResult delete(Integer selfInspectionId){
+ if(selfInspectionId == null){
+ return AjaxResult.error("未指定要删除的自检内容");
+ }
+ boolean flag= selfInspectionContentService.removeById(selfInspectionId);
+ return flag ? AjaxResult.success("删除成功") : AjaxResult.error("删除失败");
+ }
+}
diff --git a/fp-admin/src/main/java/com/zf/foodpurchase/fdsafe/web/edu/SupplierController.java b/fp-admin/src/main/java/com/zf/foodpurchase/fdsafe/web/edu/SupplierController.java
new file mode 100644
index 0000000..5ac1ae8
--- /dev/null
+++ b/fp-admin/src/main/java/com/zf/foodpurchase/fdsafe/web/edu/SupplierController.java
@@ -0,0 +1,74 @@
+package com.zf.foodpurchase.fdsafe.web.edu;
+
+import com.zf.foodpurchase.common.core.controller.BaseController;
+import com.zf.foodpurchase.common.core.domain.AjaxResult;
+import com.zf.foodpurchase.common.core.page.TableDataInfo;
+import com.zf.foodpurchase.common.valigroud.AddGroup;
+import com.zf.foodpurchase.common.valigroud.UpdateGroup;
+import com.zf.foodpurchase.fdsafe.service.ISupplierService;
+import com.zf.foodpurchase.fdsafe.vo.SupplierVO;
+import org.apache.ibatis.annotations.Update;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.Valid;
+import java.util.List;
+
+/**
+ * @author:lilj
+ * @date:2025/4/18
+ */
+@RestController
+@RequestMapping("/supplier")
+public class SupplierController extends BaseController {
+
+ @Autowired
+ private ISupplierService supplierService;
+
+ @GetMapping("/pageList")
+ public TableDataInfo pageList(SupplierVO supplierVO) {
+ startPage();
+ List list = supplierService.querySupplierVO(supplierVO);
+ return getDataTable(list);
+ }
+
+ @PostMapping("/add")
+ public AjaxResult add(@RequestBody @Validated(AddGroup.class) SupplierVO supplierVO) {
+ return supplierService.saveVO(supplierVO);
+ }
+
+ // 接口需要划分:上架,信息编辑.
+ @PostMapping("/update")
+ public AjaxResult update(@RequestBody @Validated(UpdateGroup.class) SupplierVO supplierVO) {
+ return supplierService.updateVO(supplierVO);
+ }
+
+
+ // 接口需要划分:上架,信息编辑.
+ @PostMapping("/updateStatus")
+ public AjaxResult updateStatus(@RequestBody SupplierVO supplierVO) {
+ if(supplierVO.getStatus() == null){
+ return error("未指定要修改的供货商状态");
+ }
+ if(supplierVO.getSupplierId() == null){
+ return error("未指定要修改的供货商");
+ }
+ SupplierVO updateStatus = new SupplierVO();
+ updateStatus.setSupplierId(supplierVO.getSupplierId());
+ updateStatus.setStatus(supplierVO.getStatus());
+ return supplierService.updateVO(updateStatus);
+ }
+
+ @PreAuthorize("@ss.hasPermi('supplier:delete')")
+ @GetMapping("/delete")
+ public AjaxResult delete(Integer supplierId) {
+ // 权限处理.
+ if (supplierId == null) {
+ return error("未指定要删除的供货商");
+ }
+ boolean flag = supplierService.removeById(supplierId);
+ return flag ? success("删除成功") : error("删除失败");
+ }
+}
diff --git a/fp-admin/src/main/java/com/zf/foodpurchase/fdsafe/web/school/AccompanyMealController.java b/fp-admin/src/main/java/com/zf/foodpurchase/fdsafe/web/school/AccompanyMealController.java
new file mode 100644
index 0000000..e83211e
--- /dev/null
+++ b/fp-admin/src/main/java/com/zf/foodpurchase/fdsafe/web/school/AccompanyMealController.java
@@ -0,0 +1,58 @@
+package com.zf.foodpurchase.fdsafe.web.school;
+
+
+import com.zf.foodpurchase.common.core.controller.BaseController;
+import com.zf.foodpurchase.common.core.domain.AjaxResult;
+import com.zf.foodpurchase.common.core.page.TableDataInfo;
+import com.zf.foodpurchase.common.valigroud.AddGroup;
+import com.zf.foodpurchase.common.valigroud.UpdateGroup;
+import com.zf.foodpurchase.fdsafe.entity.AccompanyMeal;
+import com.zf.foodpurchase.fdsafe.service.IAccompanyMealService;
+import com.zf.foodpurchase.fdsafe.vo.AccompanyMealVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+/**
+ *
+ * 前端控制器
+ *
+ *
+ * @author lilj
+ * @since 2025-04-11
+ */
+@RestController
+@RequestMapping("/accompanyMeal")
+public class AccompanyMealController extends BaseController {
+ @Autowired
+ private IAccompanyMealService accompanyMealService;
+
+ @RequestMapping("/pageList")
+ public TableDataInfo pageList(AccompanyMealVO accompanyMealVO) {
+ startPage();
+ List list = accompanyMealService.queryAccompanyMealVO(accompanyMealVO);
+ return getDataTable(list);
+ }
+
+ @RequestMapping("/add")
+ public AjaxResult add(@RequestBody @Validated(AddGroup.class) AccompanyMealVO accompanyMealVO) {
+ return accompanyMealService.saveVO(accompanyMealVO);
+ }
+
+ @RequestMapping("/update")
+ public AjaxResult update(@RequestBody @Validated(UpdateGroup.class) AccompanyMealVO accompanyMealVO) {
+ return accompanyMealService.updateVO(accompanyMealVO);
+ }
+
+ @RequestMapping("/delete")
+ public AjaxResult delete(Integer accompanyMealId) {
+ if(accompanyMealId == null){
+ return error("请选择要删除的陪餐记录");
+ }
+ return accompanyMealService.removeWithId(accompanyMealId);
+ }
+}
diff --git a/fp-admin/src/main/java/com/zf/foodpurchase/fdsafe/web/school/CattenController.java b/fp-admin/src/main/java/com/zf/foodpurchase/fdsafe/web/school/CattenController.java
new file mode 100644
index 0000000..dc7870e
--- /dev/null
+++ b/fp-admin/src/main/java/com/zf/foodpurchase/fdsafe/web/school/CattenController.java
@@ -0,0 +1,55 @@
+package com.zf.foodpurchase.fdsafe.web.school;
+
+
+import com.zf.foodpurchase.common.core.controller.BaseController;
+import com.zf.foodpurchase.common.core.domain.AjaxResult;
+import com.zf.foodpurchase.common.core.page.TableDataInfo;
+import com.zf.foodpurchase.common.valigroud.AddGroup;
+import com.zf.foodpurchase.common.valigroud.UpdateGroup;
+import com.zf.foodpurchase.fdsafe.service.ICattenService;
+import com.zf.foodpurchase.fdsafe.vo.CattenVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+/**
+ *
+ * 前端控制器
+ *
+ *
+ * @author lilj
+ * @since 2025-04-11
+ */
+@RestController
+@RequestMapping("/catten")
+public class CattenController extends BaseController {
+ @Autowired
+ private ICattenService cattenService;
+
+ @RequestMapping("/pageList")
+ public TableDataInfo pageList(CattenVO cattenVO) {
+ startPage();
+ List list = cattenService.queryCattenVO(cattenVO);
+ return getDataTable(list);
+ }
+
+ @PostMapping("/add")
+ public AjaxResult add(@Validated(AddGroup.class) @RequestBody CattenVO cattenVO) {
+ return cattenService.saveVO(cattenVO);
+ }
+
+ @PostMapping("/update")
+ public AjaxResult update(@Validated(UpdateGroup.class) @RequestBody CattenVO cattenVO) {
+ return cattenService.updateVO(cattenVO);
+ }
+
+ @GetMapping("/delete")
+ public AjaxResult delete(Integer cattenId) {
+ if(cattenId == null){
+ return error("请选择要删除的食堂");
+ }
+ return cattenService.removeById(cattenId) ? success("删除成功") : error("删除失败");
+ }
+}
diff --git a/fp-admin/src/main/java/com/zf/foodpurchase/fdsafe/web/school/DishController.java b/fp-admin/src/main/java/com/zf/foodpurchase/fdsafe/web/school/DishController.java
new file mode 100644
index 0000000..7500efc
--- /dev/null
+++ b/fp-admin/src/main/java/com/zf/foodpurchase/fdsafe/web/school/DishController.java
@@ -0,0 +1,74 @@
+package com.zf.foodpurchase.fdsafe.web.school;
+
+
+import com.mysql.cj.xdevapi.Table;
+import com.zf.foodpurchase.common.core.controller.BaseController;
+import com.zf.foodpurchase.common.core.domain.AjaxResult;
+import com.zf.foodpurchase.common.core.page.TableDataInfo;
+import com.zf.foodpurchase.common.utils.PageUtils;
+import com.zf.foodpurchase.common.valigroud.AddGroup;
+import com.zf.foodpurchase.fdsafe.service.IDishFoodRelationService;
+import com.zf.foodpurchase.fdsafe.service.IDishService;
+import com.zf.foodpurchase.fdsafe.vo.DishFoodRelationVO;
+import com.zf.foodpurchase.fdsafe.vo.DishVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ *
+ * 菜品表 前端控制器
+ *
+ *
+ * @author lilj
+ * @since 2025-04-18
+ */
+@RestController
+@RequestMapping("/dish")
+public class DishController extends BaseController {
+ @Autowired
+ private IDishService dishService;
+
+ @Autowired
+ private IDishFoodRelationService dishFoodRelationService;
+
+ @RequestMapping("/pageList")
+ public TableDataInfo pageList(DishVO dishVO) {
+ List list = new ArrayList<>();
+ if(dishVO == null || dishVO.getSchoolId() == null){
+ return getDataTable(list);
+ }
+ startPage();
+ List dishVOList = dishService.queryDishVO(dishVO);
+ TableDataInfo tableDataInfo = getDataTable(dishVOList);
+ return tableDataInfo;
+ }
+
+ @PostMapping("/add")
+ public AjaxResult add(@RequestBody @Validated(AddGroup.class) DishVO dishVO) {
+ return dishService.saveVO(dishVO);
+ }
+
+ @PostMapping("/update")
+ public AjaxResult update(@RequestBody @Validated(AddGroup.class) DishVO dishVO) {
+ return dishService.updateVO(dishVO);
+ }
+
+ @GetMapping("/delete")
+ public AjaxResult delete(Integer dishId) {
+ if(dishId == null){
+ return error("未指定要删除的菜品");
+ }
+ boolean flag = dishService.removeById(dishId);
+ return flag ? success("删除成功") : error("删除失败");
+ }
+
+ @GetMapping("/detail")
+ public AjaxResult detail(Integer dishId){
+ List dishFoodRelationVOList = dishFoodRelationService.detail(dishId);
+ return AjaxResult.success(dishFoodRelationVOList);
+ }
+}
diff --git a/fp-admin/src/main/java/com/zf/foodpurchase/fdsafe/web/school/DishFoodRelationController.java b/fp-admin/src/main/java/com/zf/foodpurchase/fdsafe/web/school/DishFoodRelationController.java
new file mode 100644
index 0000000..b1449d8
--- /dev/null
+++ b/fp-admin/src/main/java/com/zf/foodpurchase/fdsafe/web/school/DishFoodRelationController.java
@@ -0,0 +1,39 @@
+package com.zf.foodpurchase.fdsafe.web.school;
+
+
+import com.zf.foodpurchase.common.core.domain.AjaxResult;
+import com.zf.foodpurchase.fdsafe.service.IDishFoodRelationService;
+import com.zf.foodpurchase.fdsafe.vo.DishFoodRelationVO;
+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 java.util.List;
+
+/**
+ *
+ * 前端控制器
+ *
+ *
+ * @author lilj
+ * @since 2025-04-18
+ */
+@RestController
+@RequestMapping("/dishFoodRelation")
+public class DishFoodRelationController {
+ @Autowired
+ private IDishFoodRelationService dishFoodRelationService;
+
+ // @GetMapping("/detail")
+ // public AjaxResult detail(Integer dishId){
+ // List dishFoodRelationVOList = dishFoodRelationService.detail(dishId);
+ // return AjaxResult.success(dishFoodRelationVOList);
+ // }
+ //
+ // @GetMapping("/list")
+ // public AjaxResult list(DishFoodRelationVO dishFoodRelationVO){
+ // List dishFoodRelationVOList = dishFoodRelationService.queryRelationVO(dishFoodRelationVO);
+ // return AjaxResult.success(dishFoodRelationVOList);
+ // }
+}
diff --git a/fp-admin/src/main/java/com/zf/foodpurchase/fdsafe/web/school/FoodBookController.java b/fp-admin/src/main/java/com/zf/foodpurchase/fdsafe/web/school/FoodBookController.java
new file mode 100644
index 0000000..1b23835
--- /dev/null
+++ b/fp-admin/src/main/java/com/zf/foodpurchase/fdsafe/web/school/FoodBookController.java
@@ -0,0 +1,58 @@
+package com.zf.foodpurchase.fdsafe.web.school;
+
+
+import com.zf.foodpurchase.common.core.controller.BaseController;
+import com.zf.foodpurchase.common.core.domain.AjaxResult;
+import com.zf.foodpurchase.common.core.page.TableDataInfo;
+import com.zf.foodpurchase.common.valigroud.AddGroup;
+import com.zf.foodpurchase.common.valigroud.UpdateGroup;
+import com.zf.foodpurchase.fdsafe.service.IFoodBookService;
+import com.zf.foodpurchase.fdsafe.vo.FoodBookVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+/**
+ *
+ * 前端控制器
+ *
+ *
+ * @author lilj
+ * @since 2025-04-19
+ */
+@RestController
+@RequestMapping("/foodBook")
+public class FoodBookController extends BaseController {
+
+ @Autowired
+ private IFoodBookService foodBookService;
+
+ @RequestMapping("/pageList")
+ public TableDataInfo pageList(FoodBookVO foodBookVO) {
+ startPage();
+ foodBookVO.setDelFlag(0);
+ List list = foodBookService.queryFoodBookVO(foodBookVO);
+ return getDataTable(list);
+ }
+
+ @PostMapping("/add")
+ public AjaxResult add(@RequestBody @Validated(AddGroup.class) FoodBookVO foodBookVO) {
+ return foodBookService.saveVO(foodBookVO);
+ }
+
+ @PostMapping("/update")
+ public AjaxResult update(@RequestBody @Validated(UpdateGroup.class) FoodBookVO foodBookVO) {
+ return foodBookService.updateVO(foodBookVO);
+ }
+
+ @GetMapping("/delete")
+ public AjaxResult delete(Long bookId) {
+ if(bookId == null){
+ return error("未指定要删除的菜谱");
+ }
+ return foodBookService.removeWithId(bookId);
+ }
+
+}
diff --git a/fp-admin/src/main/java/com/zf/foodpurchase/fdsafe/web/school/FoodSampleController.java b/fp-admin/src/main/java/com/zf/foodpurchase/fdsafe/web/school/FoodSampleController.java
new file mode 100644
index 0000000..be4e095
--- /dev/null
+++ b/fp-admin/src/main/java/com/zf/foodpurchase/fdsafe/web/school/FoodSampleController.java
@@ -0,0 +1,57 @@
+package com.zf.foodpurchase.fdsafe.web.school;
+
+
+import com.zf.foodpurchase.common.core.controller.BaseController;
+import com.zf.foodpurchase.common.core.domain.AjaxResult;
+import com.zf.foodpurchase.common.core.page.TableDataInfo;
+import com.zf.foodpurchase.common.valigroud.AddGroup;
+import com.zf.foodpurchase.common.valigroud.UpdateGroup;
+import com.zf.foodpurchase.fdsafe.service.IFoodSampleService;
+import com.zf.foodpurchase.fdsafe.vo.FoodSampleVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.Valid;
+import java.util.List;
+
+/**
+ *
+ * 前端控制器
+ *
+ *
+ * @author lilj
+ * @since 2025-04-21
+ */
+@RestController
+@RequestMapping("/foodSample")
+public class FoodSampleController extends BaseController {
+ @Autowired
+ private IFoodSampleService foodSampleService;
+
+ @GetMapping("/pageList")
+ public TableDataInfo pageList(FoodSampleVO foodSampleVO) {
+ startPage();
+ List list = foodSampleService.queryFoodSampleVO(foodSampleVO);
+ return getDataTable(list);
+ }
+
+ @PostMapping("/add")
+ public AjaxResult add(@RequestBody @Validated(AddGroup.class) FoodSampleVO foodSampleVO) {
+ return foodSampleService.saveVO(foodSampleVO);
+ }
+
+ @PostMapping("/update")
+ public AjaxResult update(@RequestBody @Validated(UpdateGroup.class) FoodSampleVO foodSampleVO) {
+ return foodSampleService.updateVO(foodSampleVO);
+ }
+
+ @GetMapping("/delete")
+ public AjaxResult delete(Long sampleId) {
+ if(sampleId == null){
+ return error("未指定要删除的留样记录");
+ }
+ return foodSampleService.deleteWithId(sampleId);
+ }
+
+}
diff --git a/fp-admin/src/main/java/com/zf/foodpurchase/fdsafe/web/school/MorningCheckInController.java b/fp-admin/src/main/java/com/zf/foodpurchase/fdsafe/web/school/MorningCheckInController.java
new file mode 100644
index 0000000..55e2cfd
--- /dev/null
+++ b/fp-admin/src/main/java/com/zf/foodpurchase/fdsafe/web/school/MorningCheckInController.java
@@ -0,0 +1,56 @@
+package com.zf.foodpurchase.fdsafe.web.school;
+
+
+import com.zf.foodpurchase.common.core.controller.BaseController;
+import com.zf.foodpurchase.common.core.domain.AjaxResult;
+import com.zf.foodpurchase.common.core.page.TableDataInfo;
+import com.zf.foodpurchase.common.valigroud.AddGroup;
+import com.zf.foodpurchase.common.valigroud.UpdateGroup;
+import com.zf.foodpurchase.fdsafe.service.IMorningCheckInService;
+import com.zf.foodpurchase.fdsafe.vo.MorningCheckInVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import javax.xml.ws.soap.Addressing;
+import java.util.List;
+
+/**
+ *
+ * 前端控制器
+ *
+ *
+ * @author lilj
+ * @since 2025-04-14
+ */
+@RestController
+@RequestMapping("/morningCheckIn")
+public class MorningCheckInController extends BaseController {
+ @Autowired
+ private IMorningCheckInService morningCheckInService;
+
+ @GetMapping("/pageList")
+ public TableDataInfo pageList(MorningCheckInVO morningCheckInVO) {
+ startPage();
+ List list = morningCheckInService.queryMorningCheckInVO(morningCheckInVO);
+ return getDataTable(list);
+ }
+
+ @PostMapping("/add")
+ public AjaxResult save(@RequestBody @Validated(AddGroup.class) MorningCheckInVO morningCheckInVO) {
+ return morningCheckInService.saveVO(morningCheckInVO);
+ }
+
+ @PostMapping("/update")
+ public AjaxResult update(@RequestBody @Validated(UpdateGroup.class) MorningCheckInVO morningCheckInVO) {
+ return morningCheckInService.updateVO(morningCheckInVO);
+ }
+
+ @GetMapping("/delete")
+ public AjaxResult delete(Long checkInId) {
+ if(checkInId == null){
+ return error("未指定要删除的晨检登记记录");
+ }
+ return morningCheckInService.removewithId(checkInId);
+ }
+}
diff --git a/fp-admin/src/main/java/com/zf/foodpurchase/fdsafe/web/school/MorningInspectionDetailController.java b/fp-admin/src/main/java/com/zf/foodpurchase/fdsafe/web/school/MorningInspectionDetailController.java
new file mode 100644
index 0000000..31b2209
--- /dev/null
+++ b/fp-admin/src/main/java/com/zf/foodpurchase/fdsafe/web/school/MorningInspectionDetailController.java
@@ -0,0 +1,94 @@
+package com.zf.foodpurchase.fdsafe.web.school;
+
+
+import com.zf.foodpurchase.common.core.controller.BaseController;
+import com.zf.foodpurchase.common.core.domain.AjaxResult;
+import com.zf.foodpurchase.common.core.page.TableDataInfo;
+import com.zf.foodpurchase.common.valigroud.AddGroup;
+import com.zf.foodpurchase.common.valigroud.UpdateGroup;
+import com.zf.foodpurchase.fdsafe.entity.MorningInspectionDetail;
+import com.zf.foodpurchase.fdsafe.mapper.MorningCheckInMapper;
+import com.zf.foodpurchase.fdsafe.service.IMorningInspectionContentService;
+import com.zf.foodpurchase.fdsafe.service.IMorningInspectionDetailService;
+import com.zf.foodpurchase.fdsafe.service.impl.MorningInspectionContentServiceImpl;
+import com.zf.foodpurchase.fdsafe.vo.MorningInspectionDetailVO;
+import com.zf.foodpurchase.fdsafe.vo.MorningTableHeaderVO;
+import org.apache.commons.math3.analysis.function.Add;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ *
+ * 前端控制器
+ *
+ *
+ * @author lilj
+ * @since 2025-04-14
+ */
+@RestController
+@RequestMapping("/morningInspectionDetail")
+public class MorningInspectionDetailController extends BaseController {
+
+ @Autowired
+ private IMorningInspectionDetailService morningInspectionDetailService;
+
+ @Autowired
+ private IMorningInspectionContentService morningInspectionContentService;
+
+ @GetMapping("/getTableHearder")
+ public AjaxResult getTableHearder(Integer eduId){
+ // eduId后面根据token获取账号信息动态获取
+ // Integer eduId = 1;
+ List list =new ArrayList<>();
+ if(eduId == null){
+ return success(list);
+ }
+ list =morningInspectionContentService.getTableHearder(eduId);
+ return success(list);
+ }
+
+
+ @GetMapping("/pageList")
+ public TableDataInfo pageList(MorningInspectionDetailVO morningInspectionDetailVO){
+ startPage();
+ List list = morningInspectionDetailService.queryMorningInspectionDetailVO(morningInspectionDetailVO);
+ return getDataTable(list);
+ }
+
+ /**
+ * 根据晨检项id查询晨检明细
+ * @param checkInId
+ * @return
+ */
+ @GetMapping("/detail")
+ public AjaxResult detail(Long checkInId){
+ if(checkInId == null){
+ return error("未指定要查询的晨检记录");
+ }
+ List list = morningInspectionDetailService.getByCheckInId(checkInId);
+ return success(list);
+ }
+
+ @PostMapping("/add")
+ public AjaxResult add(@RequestBody @Validated({AddGroup.class}) MorningInspectionDetailVO morningInspectionDetailVO){
+ return morningInspectionDetailService.saveVO(morningInspectionDetailVO);
+ }
+
+ @PostMapping("/update")
+ public AjaxResult update(@RequestBody @Validated({UpdateGroup.class}) MorningInspectionDetailVO morningInspectionDetailVO){
+ return morningInspectionDetailService.updateVO(morningInspectionDetailVO);
+ }
+
+ @GetMapping("/delete")
+ public AjaxResult delete(Long morningDetailId){
+ if(morningDetailId == null){
+ return error("未指定要删除的晨检明细");
+ }
+ return morningInspectionDetailService.deleteWithId(morningDetailId);
+ }
+
+}
diff --git a/fp-admin/src/main/java/com/zf/foodpurchase/fdsafe/web/school/RubbishDealController.java b/fp-admin/src/main/java/com/zf/foodpurchase/fdsafe/web/school/RubbishDealController.java
new file mode 100644
index 0000000..ae8152f
--- /dev/null
+++ b/fp-admin/src/main/java/com/zf/foodpurchase/fdsafe/web/school/RubbishDealController.java
@@ -0,0 +1,56 @@
+package com.zf.foodpurchase.fdsafe.web.school;
+
+
+import com.zf.foodpurchase.common.core.controller.BaseController;
+import com.zf.foodpurchase.common.core.domain.AjaxResult;
+import com.zf.foodpurchase.common.core.page.TableDataInfo;
+import com.zf.foodpurchase.common.valigroud.AddGroup;
+import com.zf.foodpurchase.common.valigroud.UpdateGroup;
+import com.zf.foodpurchase.fdsafe.service.IRubbishDealService;
+import com.zf.foodpurchase.fdsafe.vo.RubbishDealVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+/**
+ *
+ * 厨余垃圾处理表 前端控制器
+ *
+ *
+ * @author lilj
+ * @since 2025-04-12
+ */
+@RestController
+@RequestMapping("/rubbishDeal")
+public class RubbishDealController extends BaseController {
+
+ @Autowired
+ private IRubbishDealService rubbishDealService;
+
+ @GetMapping("/pageList")
+ public TableDataInfo pageList(RubbishDealVO rubbishDealVO) {
+ startPage();
+ List list = rubbishDealService.queryRubbishDealVO(rubbishDealVO);
+ return getDataTable(list);
+ }
+
+ @PostMapping("/add")
+ public AjaxResult add(@Validated(AddGroup.class) @RequestBody RubbishDealVO rubbishDealVO) {
+ return rubbishDealService.saveVO(rubbishDealVO);
+ }
+
+ @PostMapping("/update")
+ public AjaxResult update(@Validated(UpdateGroup.class) @RequestBody RubbishDealVO rubbishDealVO) {
+ return rubbishDealService.updateVO(rubbishDealVO);
+ }
+
+ @GetMapping("/delete")
+ public AjaxResult delete(Integer dealId) {
+ if(dealId == null){
+ return error("请选择要删除的厨余垃圾处理记录");
+ }
+ return rubbishDealService.deleteWithId(dealId);
+ }
+}
diff --git a/fp-admin/src/main/java/com/zf/foodpurchase/fdsafe/web/school/SchoolCartItemController.java b/fp-admin/src/main/java/com/zf/foodpurchase/fdsafe/web/school/SchoolCartItemController.java
new file mode 100644
index 0000000..6323470
--- /dev/null
+++ b/fp-admin/src/main/java/com/zf/foodpurchase/fdsafe/web/school/SchoolCartItemController.java
@@ -0,0 +1,65 @@
+package com.zf.foodpurchase.fdsafe.web.school;
+
+
+import com.zf.foodpurchase.common.core.controller.BaseController;
+import com.zf.foodpurchase.common.core.domain.AjaxResult;
+import com.zf.foodpurchase.common.core.page.TableDataInfo;
+import com.zf.foodpurchase.common.valigroud.AddGroup;
+import com.zf.foodpurchase.common.valigroud.UpdateGroup;
+import com.zf.foodpurchase.fdsafe.service.ISchoolCartItemService;
+import com.zf.foodpurchase.fdsafe.vo.SchoolCartItemVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+/**
+ *
+ * 学校购物车 前端控制器
+ *
+ *
+ * @author lilj
+ * @since 2025-04-23
+ */
+@RestController
+@RequestMapping("/schoolCartItem")
+public class SchoolCartItemController extends BaseController {
+
+ @Autowired
+ private ISchoolCartItemService schoolCartItemService;
+ @GetMapping("/pageList")
+ public TableDataInfo pageList(SchoolCartItemVO schoolCartItemVO) {
+ startPage();
+ List list = schoolCartItemService.querySchoolCartItemVO(schoolCartItemVO);
+ return getDataTable(list);
+ }
+
+ @PostMapping("/add")
+ public AjaxResult add(@RequestBody @Validated(AddGroup.class) SchoolCartItemVO schoolCartItemVO) {
+ if(schoolCartItemVO == null){
+ return error("未指定要添加的购物项");
+ }
+ return schoolCartItemService.saveVO(schoolCartItemVO);
+ }
+
+ @PostMapping("/update")
+ public AjaxResult update(@RequestBody @Validated(UpdateGroup .class) SchoolCartItemVO schoolCartItemVO) {
+ if(schoolCartItemVO == null || schoolCartItemVO.getCartItemId() == null){
+ return error("未指定要修改的购物项");
+ }
+ return schoolCartItemService.updateVO(schoolCartItemVO);
+ }
+
+ @GetMapping("/delete")
+ public AjaxResult delete(Long cartItemId) {
+ if(cartItemId == null){
+ return error("未指定要删除的购物项");
+ }
+ boolean result = schoolCartItemService.removeById(cartItemId);
+ return result ? success("删除成功") : error("删除失败");
+ }
+
+
+}
+
diff --git a/fp-admin/src/main/java/com/zf/foodpurchase/fdsafe/web/school/SchoolController.java b/fp-admin/src/main/java/com/zf/foodpurchase/fdsafe/web/school/SchoolController.java
new file mode 100644
index 0000000..e9da240
--- /dev/null
+++ b/fp-admin/src/main/java/com/zf/foodpurchase/fdsafe/web/school/SchoolController.java
@@ -0,0 +1,54 @@
+package com.zf.foodpurchase.fdsafe.web.school;
+
+import com.zf.foodpurchase.common.core.controller.BaseController;
+import com.zf.foodpurchase.common.core.domain.AjaxResult;
+import com.zf.foodpurchase.common.core.page.TableDataInfo;
+import com.zf.foodpurchase.common.utils.DateUtils;
+import com.zf.foodpurchase.common.valigroud.AddGroup;
+import com.zf.foodpurchase.common.valigroud.UpdateGroup;
+import com.zf.foodpurchase.fdsafe.service.ISchoolService;
+import com.zf.foodpurchase.fdsafe.vo.SchoolVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.constraints.NotNull;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author:lilj
+ * @date:2025/4/10
+ */
+@RestController
+@RequestMapping("/school")
+public class SchoolController extends BaseController {
+
+ @Autowired
+ private ISchoolService schoolService;
+
+ @GetMapping("/pageList")
+ public TableDataInfo pageList(SchoolVO schoolVO){
+ startPage();
+ List list = schoolService.querySchoolList(schoolVO);
+ return getDataTable(list);
+ }
+
+ @PostMapping("/add")
+ public AjaxResult add(@RequestBody @Validated(AddGroup.class) SchoolVO schoolVO){
+ return schoolService.saveVO(schoolVO);
+ }
+
+ @PostMapping("/update")
+ public AjaxResult update(@RequestBody @Validated(UpdateGroup.class) SchoolVO schoolVO){
+ return schoolService.updateVO(schoolVO);
+ }
+
+ @GetMapping("/delete")
+ public AjaxResult delete(Integer schoolId){
+ if(schoolId == null){
+ return error("未指定要删除的学校");
+ }
+ return schoolService.removeById(schoolId) ? success("删除成功") : error("删除失败");
+ }
+}
diff --git a/fp-admin/src/main/java/com/zf/foodpurchase/fdsafe/web/school/SchoolOrderController.java b/fp-admin/src/main/java/com/zf/foodpurchase/fdsafe/web/school/SchoolOrderController.java
new file mode 100644
index 0000000..4b3ae73
--- /dev/null
+++ b/fp-admin/src/main/java/com/zf/foodpurchase/fdsafe/web/school/SchoolOrderController.java
@@ -0,0 +1,90 @@
+package com.zf.foodpurchase.fdsafe.web.school;
+
+
+import com.zf.foodpurchase.common.core.controller.BaseController;
+import com.zf.foodpurchase.common.core.domain.AjaxResult;
+import com.zf.foodpurchase.common.core.page.TableDataInfo;
+import com.zf.foodpurchase.fdsafe.service.ISchoolOrderItemService;
+import com.zf.foodpurchase.fdsafe.service.ISchoolOrderService;
+import com.zf.foodpurchase.fdsafe.vo.*;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.Valid;
+import java.util.List;
+
+/**
+ *
+ * 前端控制器
+ *
+ *
+ * @author lilj
+ * @since 2025-04-24
+ */
+@RestController
+@RequestMapping("/schoolOrder")
+public class SchoolOrderController extends BaseController {
+
+ @Autowired
+ private ISchoolOrderService schoolOrderService;
+
+ @Autowired
+ private ISchoolOrderItemService schoolOrderItemService;
+
+
+ @GetMapping("/pageList")
+ public TableDataInfo pageList(SchoolOrderVO schoolOrderVO) {
+ startPage();
+ List list = schoolOrderService.querySchoolOrderVO(schoolOrderVO);
+ return getDataTable(list);
+ }
+
+ /**
+ * 提交订单:
+ * 1.校验:商品有效性校验,订单金额校验
+ * 2.订单入库:订单表,订单详情表,购物车表
+ * 3.订单入库成功后,删除购物车项
+ * @param submitOrderVO
+ * @return
+ */
+ @PostMapping("/submitOrder")
+ public AjaxResult submitOrder(@RequestBody @Valid SchoolSubmitOrderVO submitOrderVO) {
+ return schoolOrderService.submitOrder(submitOrderVO);
+ }
+
+ /**
+ * 取消订单
+ */
+ @PostMapping("/cancelOrder")
+ public AjaxResult cancelOrder(@RequestBody @Valid SchoolCancelOrderVO cancelOrderVO) {
+ return schoolOrderService.cancelOrder(cancelOrderVO);
+ }
+
+ /**
+ * 订单备注修改
+ */
+ @PostMapping("/updateOrderRemark")
+ public AjaxResult updateOrderRemark(@RequestBody @Valid SchoolModifyOrderRemarkVO remarkVO) {
+ return schoolOrderService.updateOrderRemark(remarkVO);
+ }
+
+ /**
+ * 订单子项查询
+ */
+ @GetMapping("/queryOrderItem")
+ public AjaxResult queryOrderItem(String orderNo) {
+ SchoolOrderItemVO schoolOrderVO = new SchoolOrderItemVO();
+ schoolOrderVO.setOrderNo(orderNo);
+ List list = schoolOrderItemService.querySchoolOrderItemVO(schoolOrderVO);
+ return success(list);
+ }
+
+ /**
+ * 供货商接单
+ */
+ @GetMapping("/supplierAcceptOrder")
+ public AjaxResult supplierAcceptOrder(@Validated SupplierAcceptOrderVO supplierAcceptOrderVO) {
+ return schoolOrderService.supplierAcceptOrder(supplierAcceptOrderVO);
+ }
+}
diff --git a/fp-admin/src/main/java/com/zf/foodpurchase/fdsafe/web/school/SchoolOrderItemController.java b/fp-admin/src/main/java/com/zf/foodpurchase/fdsafe/web/school/SchoolOrderItemController.java
new file mode 100644
index 0000000..fb6dca5
--- /dev/null
+++ b/fp-admin/src/main/java/com/zf/foodpurchase/fdsafe/web/school/SchoolOrderItemController.java
@@ -0,0 +1,44 @@
+package com.zf.foodpurchase.fdsafe.web.school;
+
+
+import com.zf.foodpurchase.common.core.controller.BaseController;
+import com.zf.foodpurchase.common.core.domain.AjaxResult;
+import com.zf.foodpurchase.common.core.page.TableDataInfo;
+import com.zf.foodpurchase.fdsafe.entity.SchoolOrderItem;
+import com.zf.foodpurchase.fdsafe.service.ISchoolOrderItemService;
+import com.zf.foodpurchase.fdsafe.vo.SchoolOrderItemVO;
+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 java.util.List;
+
+/**
+ *
+ * 前端控制器
+ *
+ *
+ * @author lilj
+ * @since 2025-04-24
+ */
+@RestController
+@RequestMapping("/schoolOrderItem")
+public class SchoolOrderItemController extends BaseController {
+ @Autowired
+ private ISchoolOrderItemService schoolOrderItemService;
+
+ @GetMapping("/list")
+ public AjaxResult list(SchoolOrderItemVO schoolOrderItemVO) {
+ List list = schoolOrderItemService.querySchoolOrderItemVO(schoolOrderItemVO);
+ return AjaxResult.success(list);
+ }
+
+ @GetMapping("/pageList")
+ public TableDataInfo pageList(SchoolOrderItemVO schoolOrderItemVO) {
+ startPage();
+ List list = schoolOrderItemService.querySchoolOrderItemVO(schoolOrderItemVO);
+ return getDataTable(list);
+ }
+}
diff --git a/fp-admin/src/main/java/com/zf/foodpurchase/fdsafe/web/school/SchoolRefundController.java b/fp-admin/src/main/java/com/zf/foodpurchase/fdsafe/web/school/SchoolRefundController.java
new file mode 100644
index 0000000..8292156
--- /dev/null
+++ b/fp-admin/src/main/java/com/zf/foodpurchase/fdsafe/web/school/SchoolRefundController.java
@@ -0,0 +1,89 @@
+package com.zf.foodpurchase.fdsafe.web.school;
+
+
+import com.zf.foodpurchase.common.core.controller.BaseController;
+import com.zf.foodpurchase.common.core.domain.AjaxResult;
+import com.zf.foodpurchase.common.core.page.TableDataInfo;
+import com.zf.foodpurchase.common.utils.StringUtils;
+import com.zf.foodpurchase.common.valigroud.AddGroup;
+import com.zf.foodpurchase.common.valigroud.UpdateGroup;
+import com.zf.foodpurchase.fdsafe.entity.SchoolRefund;
+import com.zf.foodpurchase.fdsafe.service.ISchoolRefundItemService;
+import com.zf.foodpurchase.fdsafe.service.ISchoolRefundService;
+import com.zf.foodpurchase.fdsafe.service.ISchoolService;
+import com.zf.foodpurchase.fdsafe.vo.RefundCheckVO;
+import com.zf.foodpurchase.fdsafe.vo.RefundItemAddUpdateVO;
+import com.zf.foodpurchase.fdsafe.vo.SchoolRefundItemVO;
+import com.zf.foodpurchase.fdsafe.vo.SchoolRefundVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.Valid;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ *
+ * 前端控制器
+ *
+ *
+ * @author lilj
+ * @since 2025-04-28
+ */
+@RestController
+@RequestMapping("/schoolRefund")
+public class SchoolRefundController extends BaseController {
+ @Autowired
+ private ISchoolRefundItemService schoolRefundItemService;
+
+ @Autowired
+ private ISchoolRefundService schoolRefundService;
+
+ // 查询接口,根据退款总单号查询
+ @GetMapping("/querySchoolRefund")
+ public TableDataInfo querySchoolRefund(SchoolRefundVO schoolRefundVO) {
+ startPage();
+ List schoolRefunds = schoolRefundService.querySchoolRefund(schoolRefundVO);
+ return getDataTable(schoolRefunds);
+ }
+
+ // 查询详情
+ @GetMapping("/querySchoolRefundDetail")
+ public AjaxResult querySchoolRefundDetail(String refundNo) {
+ if(StringUtils.isBlank(refundNo)){
+ return AjaxResult.success(new ArrayList<>());
+ }
+ List refundItems = schoolRefundItemService.queryRefundItem(refundNo);
+ return AjaxResult.success(refundItems);
+ }
+
+ /**
+ * 几个字段:
+ * 1.子单编号
+ * 2.退货原因
+ * 3.退货数量
+ * @param refundItemAddUpdateVO
+ * @return
+ */
+ @PostMapping("/addRefundItem")
+ public AjaxResult addRefundItem(@RequestBody @Validated(AddGroup.class) RefundItemAddUpdateVO refundItemAddUpdateVO) {
+ return schoolRefundItemService.addRefundItem(refundItemAddUpdateVO);
+ }
+
+ /**
+ * 修改退款项
+ */
+ @PostMapping("/updateRefundItem")
+ public AjaxResult updateRefundItem(@RequestBody @Validated(UpdateGroup.class) RefundItemAddUpdateVO refundItemAddUpdateVO) {
+ return schoolRefundItemService.updateRefundItem(refundItemAddUpdateVO);
+ }
+
+ /**
+ * 退货单审核
+ */
+ @PostMapping("/checkSchoolRefund")
+ public AjaxResult checkSchoolRefund(@RequestBody @Valid RefundCheckVO checkVO) {
+ return schoolRefundService.checkSchoolRefund(checkVO);
+ }
+}
diff --git a/fp-admin/src/main/java/com/zf/foodpurchase/fdsafe/web/school/SchoolRefundItemController.java b/fp-admin/src/main/java/com/zf/foodpurchase/fdsafe/web/school/SchoolRefundItemController.java
new file mode 100644
index 0000000..5412c95
--- /dev/null
+++ b/fp-admin/src/main/java/com/zf/foodpurchase/fdsafe/web/school/SchoolRefundItemController.java
@@ -0,0 +1,23 @@
+package com.zf.foodpurchase.fdsafe.web.school;
+
+
+import com.zf.foodpurchase.common.core.domain.AjaxResult;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ *
+ * 前端控制器
+ *
+ *
+ * @author lilj
+ * @since 2025-04-28
+ */
+@RestController
+@RequestMapping("/schoolRefundItem")
+public class SchoolRefundItemController {
+
+
+}
diff --git a/fp-admin/src/main/java/com/zf/foodpurchase/fdsafe/web/school/SchoolSettleController.java b/fp-admin/src/main/java/com/zf/foodpurchase/fdsafe/web/school/SchoolSettleController.java
new file mode 100644
index 0000000..ab71804
--- /dev/null
+++ b/fp-admin/src/main/java/com/zf/foodpurchase/fdsafe/web/school/SchoolSettleController.java
@@ -0,0 +1,97 @@
+package com.zf.foodpurchase.fdsafe.web.school;
+
+
+import com.zf.foodpurchase.common.constant.OrderStatusConstants;
+import com.zf.foodpurchase.common.core.controller.BaseController;
+import com.zf.foodpurchase.common.core.domain.AjaxResult;
+import com.zf.foodpurchase.common.core.page.TableDataInfo;
+import com.zf.foodpurchase.common.utils.StringUtils;
+import com.zf.foodpurchase.fdsafe.service.ISchoolOrderService;
+import com.zf.foodpurchase.fdsafe.service.ISchoolSettleService;
+import com.zf.foodpurchase.fdsafe.vo.SchoolOrderVO;
+import com.zf.foodpurchase.fdsafe.vo.SchoolSettleCheckVO;
+import com.zf.foodpurchase.fdsafe.vo.SchoolSettleSubmitVO;
+import com.zf.foodpurchase.fdsafe.vo.SchoolSettleVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.Valid;
+import java.util.List;
+
+/**
+ *
+ * 结算单 前端控制器
+ *
+ *
+ * @author lilj
+ * @since 2025-05-06
+ */
+@RestController
+@RequestMapping("/schoolSettle")
+public class SchoolSettleController extends BaseController {
+ @Autowired
+ private ISchoolOrderService schoolOrderService;
+
+ @Autowired
+ private ISchoolSettleService schoolSettleService;
+
+ /**
+ * 查询可结算订单
+ */
+ @GetMapping("/queryCanSettleOrder")
+ public TableDataInfo queryCanSettleOrder(SchoolOrderVO schoolOrderVO) {
+ startPage();
+ schoolOrderVO.setOrderSettleStatus(OrderStatusConstants.CAN_SETTLEMENT);
+ List list = schoolOrderService.querySchoolOrderVO(schoolOrderVO);
+ return getDataTable(list);
+ }
+
+ /**
+ * 发起订单结算
+ */
+ @PostMapping("/submitSettle")
+ public AjaxResult submitSettle(@RequestBody @Valid SchoolSettleSubmitVO submitVO) {
+ return schoolSettleService.submitSettle(submitVO);
+ }
+
+ /**
+ * 订单结算审核
+ */
+ @PostMapping("/checkSettle")
+ public AjaxResult checkSettle(@RequestBody @Valid SchoolSettleCheckVO checkVO) {
+ return schoolSettleService.checkSettle(checkVO);
+ }
+
+ /**
+ * 学校结算单支付状态更新
+ */
+ @GetMapping("/updateSettlePayStatus")
+ public AjaxResult updateSettlePayStatus(String settleNo) {
+ if(StringUtils.isEmpty(settleNo)){
+ return AjaxResult.warn("结算单号不能为空");
+ }
+ return schoolSettleService.updateSettlePayStatus(settleNo);
+ }
+
+ /**
+ * 供货商结算单收款确认
+ */
+ @GetMapping("/updateSettleConfirmStatus")
+ public AjaxResult updateSettleConfirmStatus(String settleNo) {
+ if(StringUtils.isEmpty(settleNo)){
+ return AjaxResult.warn("结算单号不能为空");
+ }
+ return schoolSettleService.updateSettleConfirmStatus(settleNo);
+ }
+
+ /**
+ * 结算单查询接口
+ */
+ @GetMapping("/querySettleList")
+ public TableDataInfo querySettleList(SchoolSettleVO settleVO) {
+ startPage();
+ List list = schoolSettleService.qeurySettleVO(settleVO);
+ return getDataTable(list);
+ }
+
+}
diff --git a/fp-admin/src/main/java/com/zf/foodpurchase/fdsafe/web/school/SchoolStaffController.java b/fp-admin/src/main/java/com/zf/foodpurchase/fdsafe/web/school/SchoolStaffController.java
new file mode 100644
index 0000000..af5e2ff
--- /dev/null
+++ b/fp-admin/src/main/java/com/zf/foodpurchase/fdsafe/web/school/SchoolStaffController.java
@@ -0,0 +1,69 @@
+package com.zf.foodpurchase.fdsafe.web.school;
+
+
+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.zf.foodpurchase.common.core.controller.BaseController;
+import com.zf.foodpurchase.common.core.domain.AjaxResult;
+import com.zf.foodpurchase.common.core.page.TableDataInfo;
+import com.zf.foodpurchase.common.valigroud.AddGroup;
+import com.zf.foodpurchase.common.valigroud.UpdateGroup;
+import com.zf.foodpurchase.fdsafe.service.ISchoolStaffService;
+import com.zf.foodpurchase.fdsafe.utils.ArrayStringUtils;
+import com.zf.foodpurchase.fdsafe.vo.SchoolStaffVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.util.CollectionUtils;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import java.time.LocalDateTime;
+import java.util.Date;
+import java.util.List;
+
+/**
+ *
+ * 前端控制器
+ *
+ *
+ * @author lilj
+ * @since 2025-04-11
+ */
+@RestController
+@RequestMapping("/schoolStaff")
+public class SchoolStaffController extends BaseController {
+ @Autowired
+ private ISchoolStaffService schoolStaffService;
+
+ @GetMapping("/pageList")
+ public TableDataInfo pageList(SchoolStaffVO schoolStaffVO) {
+ startPage();
+ List list = schoolStaffService.querySchoolStaffVO(schoolStaffVO);
+ if(!CollectionUtils.isEmpty(list)){
+ list.forEach(item->{
+ item.setHealthCertImg(ArrayStringUtils.stringToArray(item.getHealthCertImgStr()));
+ });
+ }
+ return getDataTable(list);
+ }
+
+ @PostMapping("/add")
+ public AjaxResult add(@Validated(AddGroup.class) @RequestBody SchoolStaffVO schoolStaffVO) {
+ return schoolStaffService.saveVO(schoolStaffVO);
+ }
+
+ @PostMapping("/update")
+ public AjaxResult update(@Validated(UpdateGroup.class) @RequestBody SchoolStaffVO schoolStaffVO) {
+ return schoolStaffService.updateVO(schoolStaffVO);
+ }
+
+ @GetMapping("/delete")
+ public AjaxResult delete(Integer staffId) {
+ if(staffId == null){
+ return error("请选择要删除的学校人员");
+ }
+ boolean flag = schoolStaffService.removeById(staffId);
+ return flag ? success("删除成功") : error("删除失败");
+ }
+}
diff --git a/fp-admin/src/main/java/com/zf/foodpurchase/fdsafe/web/school/SchoolTypeController.java b/fp-admin/src/main/java/com/zf/foodpurchase/fdsafe/web/school/SchoolTypeController.java
new file mode 100644
index 0000000..4e5a2a3
--- /dev/null
+++ b/fp-admin/src/main/java/com/zf/foodpurchase/fdsafe/web/school/SchoolTypeController.java
@@ -0,0 +1,56 @@
+package com.zf.foodpurchase.fdsafe.web.school;
+
+import com.zf.foodpurchase.common.core.controller.BaseController;
+import com.zf.foodpurchase.common.core.domain.AjaxResult;
+import com.zf.foodpurchase.common.core.page.TableDataInfo;
+import com.zf.foodpurchase.common.valigroud.AddGroup;
+import com.zf.foodpurchase.common.valigroud.UpdateGroup;
+import com.zf.foodpurchase.fdsafe.entity.SchoolType;
+import com.zf.foodpurchase.fdsafe.service.ISchoolTypeService;
+import com.zf.foodpurchase.fdsafe.vo.SchoolTypeVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+/**
+ * @author:lilj
+ * @date:2025/4/11
+ */
+@RestController
+@RequestMapping("/schoolType")
+public class SchoolTypeController extends BaseController {
+
+ @Autowired
+ private ISchoolTypeService schoolTypeService;
+
+ @GetMapping("/list")
+ public AjaxResult list(SchoolTypeVO schoolTypeVO){
+ List list = schoolTypeService.querySchoolTypeVO(schoolTypeVO);
+ return AjaxResult.success(list);
+ }
+
+ @GetMapping("/pageList")
+ public TableDataInfo pageList(SchoolTypeVO schoolTypeVO){
+ startPage();
+ List list = schoolTypeService.querySchoolTypeVO(schoolTypeVO);
+ return getDataTable(list);
+ }
+
+ @PostMapping("/add")
+ public AjaxResult add(@Validated(AddGroup.class) @RequestBody SchoolTypeVO schoolTypeVO){
+ return schoolTypeService.saveVO(schoolTypeVO);
+ }
+
+ @PostMapping("/update")
+ public AjaxResult update(@Validated(UpdateGroup.class) @RequestBody SchoolTypeVO schoolTypeVO){
+ return schoolTypeService.updateVO(schoolTypeVO);
+ }
+
+ @GetMapping("/delete")
+ public AjaxResult delete(Integer schoolTypeId){
+ boolean flag = schoolTypeService.removeById(schoolTypeId);
+ return flag ? AjaxResult.success("删除成功") : AjaxResult.error("删除失败");
+ }
+}
diff --git a/fp-admin/src/main/java/com/zf/foodpurchase/fdsafe/web/school/SelfInspectionDetailController.java b/fp-admin/src/main/java/com/zf/foodpurchase/fdsafe/web/school/SelfInspectionDetailController.java
new file mode 100644
index 0000000..aaeb87f
--- /dev/null
+++ b/fp-admin/src/main/java/com/zf/foodpurchase/fdsafe/web/school/SelfInspectionDetailController.java
@@ -0,0 +1,29 @@
+package com.zf.foodpurchase.fdsafe.web.school;
+
+import com.zf.foodpurchase.common.core.domain.AjaxResult;
+import com.zf.foodpurchase.fdsafe.service.ISelfInspectionDetailService;
+import com.zf.foodpurchase.fdsafe.vo.SelfInspectionDetailVO;
+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 java.util.List;
+
+/**
+ * @author:lilj
+ * @date:2025/4/16
+ */
+@RestController
+@RequestMapping("/selfInspectionDetail")
+public class SelfInspectionDetailController {
+
+ @Autowired
+ private ISelfInspectionDetailService selfInspectionDetailService;
+
+ @GetMapping("/getDetail")
+ public AjaxResult getDetail(Long selfRecordId){
+ List list = selfInspectionDetailService.getDetail(selfRecordId);
+ return AjaxResult.success(list);
+ }
+}
diff --git a/fp-admin/src/main/java/com/zf/foodpurchase/fdsafe/web/school/SelfInspectionRecordController.java b/fp-admin/src/main/java/com/zf/foodpurchase/fdsafe/web/school/SelfInspectionRecordController.java
new file mode 100644
index 0000000..716fcef
--- /dev/null
+++ b/fp-admin/src/main/java/com/zf/foodpurchase/fdsafe/web/school/SelfInspectionRecordController.java
@@ -0,0 +1,57 @@
+package com.zf.foodpurchase.fdsafe.web.school;
+
+
+import com.zf.foodpurchase.common.core.controller.BaseController;
+import com.zf.foodpurchase.common.core.domain.AjaxResult;
+import com.zf.foodpurchase.common.core.page.TableDataInfo;
+import com.zf.foodpurchase.common.valigroud.AddGroup;
+import com.zf.foodpurchase.common.valigroud.UpdateGroup;
+import com.zf.foodpurchase.fdsafe.service.ISelfInspectionRecordService;
+import com.zf.foodpurchase.fdsafe.vo.SelfInspectionDetailVO;
+import com.zf.foodpurchase.fdsafe.vo.SelfInspectionRecordVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+/**
+ *
+ * 前端控制器
+ *
+ *
+ * @author lilj
+ * @since 2025-04-15
+ */
+@RestController
+@RequestMapping("/selfInspectionRecord")
+public class SelfInspectionRecordController extends BaseController {
+
+ @Autowired
+ private ISelfInspectionRecordService selfInspectionRecordService;
+
+ @GetMapping("/pageList")
+ public TableDataInfo pageList(SelfInspectionRecordVO selfInspectionRecordVO) {
+ startPage();
+ List list = selfInspectionRecordService.querySelfInspectionRecordVO(selfInspectionRecordVO);
+ return getDataTable(list);
+ }
+
+ @PostMapping("/add")
+ public AjaxResult add(@RequestBody @Validated(AddGroup.class) SelfInspectionRecordVO selfInspectionRecordVO) {
+ return selfInspectionRecordService.saveVO(selfInspectionRecordVO);
+ }
+
+ @PostMapping("/update")
+ public AjaxResult update(@RequestBody @Validated(UpdateGroup.class) SelfInspectionRecordVO selfInspectionRecordVO) {
+ return selfInspectionRecordService.updateVO(selfInspectionRecordVO);
+ }
+
+ @GetMapping("/delete")
+ public AjaxResult delete(Long selfRecordId) {
+ if(selfRecordId == null){
+ return error("未指定要删除的自检记录");
+ }
+ return selfInspectionRecordService.deleteWithId(selfRecordId);
+ }
+}
diff --git a/fp-admin/src/main/java/com/zf/foodpurchase/fdsafe/web/school/WxAppUserController.java b/fp-admin/src/main/java/com/zf/foodpurchase/fdsafe/web/school/WxAppUserController.java
new file mode 100644
index 0000000..a34a013
--- /dev/null
+++ b/fp-admin/src/main/java/com/zf/foodpurchase/fdsafe/web/school/WxAppUserController.java
@@ -0,0 +1,89 @@
+package com.zf.foodpurchase.fdsafe.web.school;
+
+import com.zf.foodpurchase.common.core.controller.BaseController;
+import com.zf.foodpurchase.common.core.domain.AjaxResult;
+import com.zf.foodpurchase.common.core.domain.entity.SysUser;
+import com.zf.foodpurchase.common.core.domain.model.LoginUser;
+import com.zf.foodpurchase.common.core.page.TableDataInfo;
+import com.zf.foodpurchase.common.utils.SecurityUtils;
+import com.zf.foodpurchase.common.valigroud.AddGroup;
+import com.zf.foodpurchase.common.valigroud.UpdateGroup;
+import com.zf.foodpurchase.fdsafe.entity.WxAppUser;
+import com.zf.foodpurchase.fdsafe.service.IWxAppUserService;
+import com.zf.foodpurchase.fdsafe.vo.WxAppUserViewVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+/**
+ * @author:lilj
+ * @date:2025/5/13
+ */
+@RequestMapping("/wxAppUser")
+@RestController
+public class WxAppUserController extends BaseController {
+
+ @Autowired
+ private IWxAppUserService wxAppUserService;
+
+ @GetMapping("/pageList")
+ public TableDataInfo pageList(WxAppUserViewVO wxAppUserViewVO) {
+ startPage();
+ SysUser loginUser = getLoginUser().getUser();
+ if (!loginUser.isAdmin()) {
+ wxAppUserViewVO.setAccountType(loginUser.getAccountType());
+ wxAppUserViewVO.setDeptId(loginUser.getDeptId().intValue());
+ }
+ List list = wxAppUserService.pageList(wxAppUserViewVO);
+ return getDataTable(list);
+ }
+
+ @PostMapping("/add")
+ public AjaxResult add(@RequestBody @Validated(AddGroup.class) WxAppUserViewVO wxAppUserViewVO) {
+ SysUser loginUser = getLoginUser().getUser();
+ if (!loginUser.isAdmin()) {
+ wxAppUserViewVO.setAccountType(loginUser.getAccountType());
+ wxAppUserViewVO.setDeptId(loginUser.getDeptId().intValue());
+ } else {
+ if (wxAppUserViewVO.getAccountType() == null) {
+ return error("请指定用户类型");
+ }
+ if (wxAppUserViewVO.getDeptId() == null) {
+ return error("请指定用户所属部门");
+ }
+ }
+ wxAppUserViewVO.setPassword(SecurityUtils.encryptPassword(wxAppUserViewVO.getPassword()));
+ return wxAppUserService.saveVO(wxAppUserViewVO);
+ }
+
+ /**
+ * 修改项:
+ * 昵称
+ * 姓名
+ * 头像
+ * 性别
+ * 状态
+ * 部门
+ * @param wxAppUserViewVO
+ * @return
+ */
+ @PostMapping("/update")
+ public AjaxResult update(@RequestBody @Validated(UpdateGroup.class) WxAppUserViewVO wxAppUserViewVO) {
+ SysUser loginUser = getLoginUser().getUser();
+ if (!loginUser.isAdmin()) {
+ wxAppUserViewVO.setAccountType(loginUser.getAccountType());
+ wxAppUserViewVO.setDeptId(loginUser.getDeptId().intValue());
+ }
+ return wxAppUserService.updateVO(wxAppUserViewVO);
+ }
+
+ @GetMapping("/delete")
+ public AjaxResult delete(Long id) {
+ if(id == null){
+ return error("请指定要删除的用户");
+ }
+ return wxAppUserService.removeById(id) ? success("删除成功") : error("删除失败");
+ }
+}
diff --git a/fp-admin/src/main/java/com/zf/foodpurchase/fdsafe/web/supplier/FoodProductController.java b/fp-admin/src/main/java/com/zf/foodpurchase/fdsafe/web/supplier/FoodProductController.java
new file mode 100644
index 0000000..85ca003
--- /dev/null
+++ b/fp-admin/src/main/java/com/zf/foodpurchase/fdsafe/web/supplier/FoodProductController.java
@@ -0,0 +1,87 @@
+package com.zf.foodpurchase.fdsafe.web.supplier;
+
+
+import com.zf.foodpurchase.common.core.controller.BaseController;
+import com.zf.foodpurchase.common.core.domain.AjaxResult;
+import com.zf.foodpurchase.common.core.page.TableDataInfo;
+import com.zf.foodpurchase.common.valigroud.AddGroup;
+import com.zf.foodpurchase.common.valigroud.CheckGroup;
+import com.zf.foodpurchase.common.valigroud.UpdateGroup;
+import com.zf.foodpurchase.fdsafe.entity.FoodProduct;
+import com.zf.foodpurchase.fdsafe.service.IFoodProductService;
+import com.zf.foodpurchase.fdsafe.utils.RestTemplateUtils;
+import com.zf.foodpurchase.fdsafe.vo.FoodProductVO;
+import com.zf.foodpurchase.fdsafe.vo.ReferencePriceVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+/**
+ *
+ * 前端控制器
+ *
+ *
+ * @author lilj
+ * @since 2025-04-22
+ */
+@RestController
+@RequestMapping("/foodProduct")
+public class FoodProductController extends BaseController {
+ @Autowired
+ private IFoodProductService foodProductService;
+
+ @GetMapping("/pageList")
+ public TableDataInfo pageList(FoodProductVO foodProductVO) {
+ startPage();
+ foodProductVO.setDelFlag(0);
+ List list = foodProductService.queryFoodProductVO(foodProductVO);
+ return getDataTable(list);
+ }
+
+ /**
+ * 供货商发布商品
+ */
+ @PostMapping("/supplierAdd")
+ public AjaxResult supplierAdd(@RequestBody @Validated(AddGroup.class) FoodProductVO foodProductVO) {
+ return foodProductService.supplierAdd(foodProductVO);
+ }
+
+ /**
+ * 供货商修改商品
+ */
+ @PostMapping("/supplierUpdate")
+ public AjaxResult supplierUpdate(@RequestBody @Validated(UpdateGroup.class) FoodProductVO foodProductVO) {
+ return foodProductService.supplierUpdate(foodProductVO);
+ }
+
+ /**
+ * 教育局审核商品
+ */
+ @PostMapping("/eduCheck")
+ public AjaxResult eduCheck(@RequestBody @Validated(CheckGroup.class) FoodProductVO foodProductVO) {
+ return foodProductService.eduCheck(foodProductVO);
+ }
+
+ /**
+ * 删除商品信息
+ */
+ @GetMapping("/supplierDelete")
+ public AjaxResult supplierDelete(Long foodProductId) {
+ if(foodProductId == null){
+ return error("商品id不能为空");
+ }
+ return foodProductService.removeById(foodProductId) ? success("删除成功") : error("删除失败");
+ }
+
+ /**
+ * 获取商品参考价
+ */
+ @GetMapping("/referPrice")
+ public AjaxResult referPrice(String categoryName, String productName) {
+ List list = RestTemplateUtils.getReferencePrice(categoryName, productName);
+ return success(list);
+ }
+
+}
diff --git a/fp-admin/src/main/java/com/zf/foodpurchase/fdsafe/web/supplier/SupplierDeliveryController.java b/fp-admin/src/main/java/com/zf/foodpurchase/fdsafe/web/supplier/SupplierDeliveryController.java
new file mode 100644
index 0000000..400d781
--- /dev/null
+++ b/fp-admin/src/main/java/com/zf/foodpurchase/fdsafe/web/supplier/SupplierDeliveryController.java
@@ -0,0 +1,57 @@
+package com.zf.foodpurchase.fdsafe.web.supplier;
+
+
+import com.zf.foodpurchase.common.core.controller.BaseController;
+import com.zf.foodpurchase.common.core.domain.AjaxResult;
+import com.zf.foodpurchase.common.core.page.TableDataInfo;
+import com.zf.foodpurchase.common.valigroud.AddGroup;
+import com.zf.foodpurchase.common.valigroud.UpdateGroup;
+import com.zf.foodpurchase.fdsafe.service.ISupplierDeliveryService;
+import com.zf.foodpurchase.fdsafe.service.ISupplierService;
+import com.zf.foodpurchase.fdsafe.vo.SchoolDeliveryVO;
+import com.zf.foodpurchase.fdsafe.vo.SupplierDeliveryAddUpdateVO;
+import com.zf.foodpurchase.fdsafe.vo.SupplierDeliveryVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.Valid;
+import java.util.List;
+
+/**
+ * 送货单暂时不提供删除功能
+ *
+ * @author lilj
+ * @since 2025-04-25
+ */
+@RestController
+@RequestMapping("/supplierDelivery")
+public class SupplierDeliveryController extends BaseController {
+ @Autowired
+ private ISupplierDeliveryService supplierDeliveryService;
+
+ @GetMapping("/pageList")
+ public TableDataInfo pageList(SupplierDeliveryVO supplierDeliveryVO){
+ startPage();
+ List list = supplierDeliveryService.querySupplierDeliveryVO(supplierDeliveryVO);
+ return getDataTable(list);
+ }
+
+ @PostMapping("/addOrderDelivery")
+ public AjaxResult addOrderDelivery(@RequestBody @Validated(AddGroup.class) SupplierDeliveryAddUpdateVO deliveryAddVO){
+ return supplierDeliveryService.addOrderDelivery(deliveryAddVO);
+ }
+
+ @PostMapping("/supplierUpdateDelivery")
+ public AjaxResult supplierUpdateDelivery(@RequestBody @Validated(UpdateGroup.class) SupplierDeliveryAddUpdateVO supplierDeliveryVO){
+ return supplierDeliveryService.supplierUpdateDelivery(supplierDeliveryVO);
+ }
+
+ @PostMapping("/schoolSignDelivery")
+ public AjaxResult schoolUpdateDelivery(@RequestBody @Validated(UpdateGroup.class) SchoolDeliveryVO schoolDeliveryVO){
+ return supplierDeliveryService.schoolUpdateDelivery(schoolDeliveryVO);
+ }
+
+
+
+}
diff --git a/fp-admin/src/main/java/com/zf/foodpurchase/fdsafe/web/supplier/SupplierDeliveryItemController.java b/fp-admin/src/main/java/com/zf/foodpurchase/fdsafe/web/supplier/SupplierDeliveryItemController.java
new file mode 100644
index 0000000..e77d71c
--- /dev/null
+++ b/fp-admin/src/main/java/com/zf/foodpurchase/fdsafe/web/supplier/SupplierDeliveryItemController.java
@@ -0,0 +1,44 @@
+package com.zf.foodpurchase.fdsafe.web.supplier;
+
+
+import com.zf.foodpurchase.common.core.controller.BaseController;
+import com.zf.foodpurchase.common.core.domain.AjaxResult;
+import com.zf.foodpurchase.common.core.page.TableDataInfo;
+import com.zf.foodpurchase.common.valigroud.UpdateGroup;
+import com.zf.foodpurchase.fdsafe.service.ISupplierDeliveryItemService;
+import com.zf.foodpurchase.fdsafe.vo.SupplierDeliveryItemUpdateVO;
+import com.zf.foodpurchase.fdsafe.vo.SupplierDeliveryItemVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+/**
+ *
+ * 前端控制器
+ *
+ *
+ * @author lilj
+ * @since 2025-04-25
+ */
+@RestController
+@RequestMapping("/supplierDeliveryItem")
+public class SupplierDeliveryItemController extends BaseController {
+
+ @Autowired
+ private ISupplierDeliveryItemService supplierDeliveryItemService;
+
+ @GetMapping("/pageList")
+ public TableDataInfo pageList(SupplierDeliveryItemVO supplierDeliveryItemVO) {
+ startPage();
+ List list = supplierDeliveryItemService.querySupplierDeliveryItemVO(supplierDeliveryItemVO);
+ return getDataTable(list);
+ }
+
+ @PostMapping("/update")
+ public AjaxResult update(@RequestBody @Validated(UpdateGroup.class) SupplierDeliveryItemUpdateVO supplierDeliveryItemUpdateVO) {
+ return supplierDeliveryItemService.updateVO(supplierDeliveryItemUpdateVO);
+ }
+
+}
diff --git a/fp-admin/src/main/java/com/zf/foodpurchase/fdsafe/web/test/TestQueryController.java b/fp-admin/src/main/java/com/zf/foodpurchase/fdsafe/web/test/TestQueryController.java
new file mode 100644
index 0000000..a006521
--- /dev/null
+++ b/fp-admin/src/main/java/com/zf/foodpurchase/fdsafe/web/test/TestQueryController.java
@@ -0,0 +1,28 @@
+package com.zf.foodpurchase.fdsafe.web.test;
+
+import com.zf.foodpurchase.common.core.controller.BaseController;
+import com.zf.foodpurchase.common.core.domain.AjaxResult;
+import com.zf.foodpurchase.common.core.domain.entity.SysUser;
+import com.zf.foodpurchase.common.core.domain.model.LoginUser;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * @author:lilj
+ * @date:2025/4/10
+ */
+@RequestMapping("/testQuery")
+@RestController
+public class TestQueryController extends BaseController {
+
+ @GetMapping("/getUser")
+ public AjaxResult getUser(){
+ LoginUser loginUser = getLoginUser();
+ System.out.println(loginUser);
+ SysUser user = loginUser.getUser();
+ System.out.println(user);
+ // 用account_type结合deptId作为查询用户关联单位的信息.
+ return AjaxResult.success(loginUser);
+ }
+}
diff --git a/fp-admin/src/main/java/com/zf/foodpurchase/fdsafe/wxapp/common/WxAppCommonController.java b/fp-admin/src/main/java/com/zf/foodpurchase/fdsafe/wxapp/common/WxAppCommonController.java
new file mode 100644
index 0000000..fbcfa4c
--- /dev/null
+++ b/fp-admin/src/main/java/com/zf/foodpurchase/fdsafe/wxapp/common/WxAppCommonController.java
@@ -0,0 +1,164 @@
+package com.zf.foodpurchase.fdsafe.wxapp.common;
+
+import com.zf.foodpurchase.common.config.RuoYiConfig;
+import com.zf.foodpurchase.common.constant.Constants;
+import com.zf.foodpurchase.common.core.domain.AjaxResult;
+import com.zf.foodpurchase.common.utils.StringUtils;
+import com.zf.foodpurchase.common.utils.file.FileUploadUtils;
+import com.zf.foodpurchase.common.utils.file.FileUtils;
+import com.zf.foodpurchase.framework.config.ServerConfig;
+import com.zf.foodpurchase.web.controller.common.CommonController;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.MediaType;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author:lilj
+ * @date:2025/5/20
+ */
+@RestController
+@RequestMapping("/wxapp/common")
+public class WxAppCommonController {
+ private static final Logger log = LoggerFactory.getLogger(CommonController.class);
+
+ @Autowired
+ private ServerConfig serverConfig;
+
+ private static final String FILE_DELIMETER = ",";
+
+ /**
+ * 通用下载请求
+ *
+ * @param fileName 文件名称
+ * @param delete 是否删除
+ */
+ @GetMapping("/download")
+ public void fileDownload(String fileName, Boolean delete, HttpServletResponse response, HttpServletRequest request)
+ {
+ try
+ {
+ if (!FileUtils.checkAllowDownload(fileName))
+ {
+ throw new Exception(StringUtils.format("文件名称({})非法,不允许下载。 ", fileName));
+ }
+ String realFileName = System.currentTimeMillis() + fileName.substring(fileName.indexOf("_") + 1);
+ String filePath = RuoYiConfig.getDownloadPath() + fileName;
+
+ response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE);
+ FileUtils.setAttachmentResponseHeader(response, realFileName);
+ FileUtils.writeBytes(filePath, response.getOutputStream());
+ if (delete)
+ {
+ FileUtils.deleteFile(filePath);
+ }
+ }
+ catch (Exception e)
+ {
+ log.error("下载文件失败", e);
+ }
+ }
+
+ /**
+ * 通用上传请求(单个)
+ */
+ @PostMapping("/upload")
+ public AjaxResult uploadFile(MultipartFile file) throws Exception
+ {
+ try
+ {
+ // 上传文件路径
+ String filePath = RuoYiConfig.getUploadPath();
+ // 上传并返回新文件名称
+ String fileName = FileUploadUtils.upload(filePath, file);
+ // String url = serverConfig.getUrl() + fileName;
+ String url = RuoYiConfig.getImagePrefix() + fileName;
+ AjaxResult ajax = AjaxResult.success();
+ ajax.put("url", url);
+ ajax.put("fileName", fileName);
+ ajax.put("newFileName", FileUtils.getName(fileName));
+ ajax.put("originalFilename", file.getOriginalFilename());
+ return ajax;
+ }
+ catch (Exception e)
+ {
+ return AjaxResult.error(e.getMessage());
+ }
+ }
+
+ /**
+ * 通用上传请求(多个)
+ */
+ @PostMapping("/uploads")
+ public AjaxResult uploadFiles(List files) throws Exception
+ {
+ try
+ {
+ // 上传文件路径
+ String filePath = RuoYiConfig.getUploadPath();
+ List urls = new ArrayList();
+ List fileNames = new ArrayList();
+ List newFileNames = new ArrayList();
+ List originalFilenames = new ArrayList();
+ for (MultipartFile file : files)
+ {
+ // 上传并返回新文件名称
+ String fileName = FileUploadUtils.upload(filePath, file);
+ String url = serverConfig.getUrl() + fileName;
+ urls.add(url);
+ fileNames.add(fileName);
+ newFileNames.add(FileUtils.getName(fileName));
+ originalFilenames.add(file.getOriginalFilename());
+ }
+ AjaxResult ajax = AjaxResult.success();
+ ajax.put("urls", StringUtils.join(urls, FILE_DELIMETER));
+ ajax.put("fileNames", StringUtils.join(fileNames, FILE_DELIMETER));
+ ajax.put("newFileNames", StringUtils.join(newFileNames, FILE_DELIMETER));
+ ajax.put("originalFilenames", StringUtils.join(originalFilenames, FILE_DELIMETER));
+ return ajax;
+ }
+ catch (Exception e)
+ {
+ return AjaxResult.error(e.getMessage());
+ }
+ }
+
+ /**
+ * 本地资源通用下载
+ */
+ @GetMapping("/download/resource")
+ public void resourceDownload(String resource, HttpServletRequest request, HttpServletResponse response)
+ throws Exception
+ {
+ try
+ {
+ if (!FileUtils.checkAllowDownload(resource))
+ {
+ throw new Exception(StringUtils.format("资源文件({})非法,不允许下载。 ", resource));
+ }
+ // 本地资源路径
+ String localPath = RuoYiConfig.getProfile();
+ // 数据库资源地址
+ String downloadPath = localPath + StringUtils.substringAfter(resource, Constants.RESOURCE_PREFIX);
+ // 下载名称
+ String downloadName = StringUtils.substringAfterLast(downloadPath, "/");
+ response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE);
+ FileUtils.setAttachmentResponseHeader(response, downloadName);
+ FileUtils.writeBytes(downloadPath, response.getOutputStream());
+ }
+ catch (Exception e)
+ {
+ log.error("下载文件失败", e);
+ }
+ }
+}
diff --git a/fp-admin/src/main/java/com/zf/foodpurchase/fdsafe/wxapp/common/WxAppUserLoginController.java b/fp-admin/src/main/java/com/zf/foodpurchase/fdsafe/wxapp/common/WxAppUserLoginController.java
new file mode 100644
index 0000000..de8009e
--- /dev/null
+++ b/fp-admin/src/main/java/com/zf/foodpurchase/fdsafe/wxapp/common/WxAppUserLoginController.java
@@ -0,0 +1,167 @@
+package com.zf.foodpurchase.fdsafe.wxapp.common;
+
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.zf.foodpurchase.common.config.RuoYiConfig;
+import com.zf.foodpurchase.common.constant.Constants;
+import com.zf.foodpurchase.common.constant.UserConstants;
+import com.zf.foodpurchase.common.core.controller.BaseController;
+import com.zf.foodpurchase.common.core.domain.AjaxResult;
+import com.zf.foodpurchase.common.core.domain.entity.LoginWxUser;
+import com.zf.foodpurchase.common.core.domain.entity.User;
+import com.zf.foodpurchase.common.core.domain.entity.WxAppUserVO;
+import com.zf.foodpurchase.common.core.domain.model.WxAppLoginBody;
+import com.zf.foodpurchase.common.core.domain.model.WxAppLoginUser;
+import com.zf.foodpurchase.common.exception.ServiceException;
+import com.zf.foodpurchase.common.exception.user.UserPasswordNotMatchException;
+import com.zf.foodpurchase.common.utils.MessageUtils;
+import com.zf.foodpurchase.common.utils.SecurityUtils;
+import com.zf.foodpurchase.common.utils.StringUtils;
+import com.zf.foodpurchase.common.utils.file.FileUploadUtils;
+import com.zf.foodpurchase.common.utils.file.MimeTypeUtils;
+import com.zf.foodpurchase.fdsafe.entity.WxAppUser;
+import com.zf.foodpurchase.fdsafe.service.IWxAppUserService;
+import com.zf.foodpurchase.fdsafe.vo.WxAppUserViewVO;
+import com.zf.foodpurchase.framework.manager.AsyncManager;
+import com.zf.foodpurchase.framework.manager.factory.AsyncFactory;
+import com.zf.foodpurchase.framework.web.service.WxAppLoginService;
+import com.zf.foodpurchase.framework.web.service.WxAppTokenService;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.validation.Valid;
+import java.util.Date;
+
+/**
+ * @author:lilj
+ * @date:2025/5/12
+ */
+@RestController
+@RequestMapping("/wxapp/userLogin")
+public class WxAppUserLoginController extends BaseController {
+ @Autowired
+ private IWxAppUserService wxAppUserService;
+
+ @Autowired
+ private WxAppTokenService wxAppTokenService;
+
+ @Autowired
+ private WxAppLoginService wxAppLoginService;
+ private WxAppUserVO loginWxUser;
+
+ @PostMapping("/login")
+ public AjaxResult login(@RequestBody @Valid WxAppLoginBody wxAppLoginBody) {
+ String token = wxAppLoginService.login(wxAppLoginBody);
+ AjaxResult ajax = AjaxResult.success();
+ ajax.put(Constants.TOKEN, token);
+ return ajax;
+ }
+
+ @GetMapping("/getCurrentUser")
+ public AjaxResult getCurrentUser() {
+ WxAppLoginUser loginWxUser = getWxAppLoginUser();
+ WxAppUserVO user = loginWxUser.getUser();
+ AjaxResult response = success("查询成功");
+ response.put("user", user);
+ return response;
+ }
+
+ /**
+ * 可修改项:用户密码,昵称,头像,性别
+ *
+ * @param user
+ * @return
+ */
+ @PostMapping("/updateUser")
+ public AjaxResult updateUser(@RequestBody WxAppUserViewVO user) {
+ if (user == null || user.getId() == null) {
+ return error("用户id不能为空");
+ }
+ LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper();
+ updateWrapper.eq(WxAppUser::getId, user.getId());
+ updateWrapper.set(WxAppUser::getNickname, user.getNickname());
+ updateWrapper.set(WxAppUser::getRealName, user.getRealName());
+ updateWrapper.set(WxAppUser::getAvatarUrl, user.getAvatarUrl());
+ updateWrapper.set(WxAppUser::getGender, user.getGender());
+ updateWrapper.set(WxAppUser::getUpdateTime, new Date());
+ boolean isUpdate = wxAppUserService.update(updateWrapper);
+ if (!isUpdate) {
+ return error("修改失败");
+ }
+ WxAppUserVO newUser = wxAppUserService.getUserVOById(user.getId());
+ WxAppLoginUser loginUser = getWxAppLoginUser();
+ loginUser.setUser(newUser);
+
+ wxAppTokenService.setLoginWxAppUser(loginUser);
+ return isUpdate ? success("修改成功") : error("修改失败");
+ }
+
+ /**
+ * 修改用户密码
+ */
+ @PostMapping("/updateUserPassword")
+ public AjaxResult updateUserPassword(@RequestBody WxAppUserViewVO user) {
+ if (user == null || user.getId() == null) {
+ return error("用户id不能为空");
+ }
+ pwdCheck(user.getNewPassword());
+ WxAppUser old = wxAppUserService.getById(user.getId());
+ if (old == null) {
+ return error("用户不存在");
+ }
+ // 校验密码是否正确
+ boolean isMatch = SecurityUtils.matchesPassword(user.getPassword(), old.getPassword());
+ if (!isMatch) {
+ throw new ServiceException("原密码有误");
+ }
+
+ WxAppUser updateUser = new WxAppUser();
+ updateUser.setId(user.getId());
+ updateUser.setPassword(SecurityUtils.encryptPassword(user.getNewPassword()));
+ boolean isUpdate = wxAppUserService.updateById(updateUser);
+ return isUpdate ? success("密码修改成功") : error("密码修改失败");
+ }
+
+
+ @GetMapping("/logout")
+ public AjaxResult logout() {
+ WxAppLoginUser wxAppLoginUser = getWxAppLoginUser();
+ if (wxAppLoginUser != null) {
+ String token = wxAppLoginUser.getToken();
+ wxAppTokenService.delLoginWxAppUser(token);
+ }
+ return AjaxResult.success("退出登录成功");
+ }
+
+ public void pwdCheck(String userPwd) {
+ if (StringUtils.isBlank(userPwd)) {
+ throw new ServiceException("新密码不能为空");
+ }
+ // 密码如果不在指定范围内 错误
+ if (userPwd.length() < UserConstants.PASSWORD_MIN_LENGTH
+ || userPwd.length() > UserConstants.PASSWORD_MAX_LENGTH) {
+ throw new ServiceException("新密码位数应大于" + UserConstants.PASSWORD_MIN_LENGTH + ",小于" + UserConstants.PASSWORD_MAX_LENGTH + "位");
+ }
+ }
+
+ /**
+ * 微信头像上传
+ */
+ @PostMapping(value = "/avatar", produces = "application/json;charset=UTF-8")
+ public AjaxResult avatar(MultipartFile file) throws Exception {
+ if (!file.isEmpty()) {
+ WxAppLoginUser loginWxUser = getWxAppLoginUser();
+ // 上传文件路径
+ String filePath = RuoYiConfig.getUploadPath();
+ // D:/ruoyi/wxprofile/avatar
+ String avatar = FileUploadUtils.upload(filePath, file, MimeTypeUtils.IMAGE_EXTENSION);
+
+ avatar = RuoYiConfig.getImagePrefix() + avatar;
+ return AjaxResult.success().put("avatarUrl", avatar);
+ }
+ return error("上传图片异常");
+ }
+
+
+}
diff --git a/fp-admin/src/main/java/com/zf/foodpurchase/fdsafe/wxapp/school/WxAppAccompanyMealController.java b/fp-admin/src/main/java/com/zf/foodpurchase/fdsafe/wxapp/school/WxAppAccompanyMealController.java
new file mode 100644
index 0000000..134b66c
--- /dev/null
+++ b/fp-admin/src/main/java/com/zf/foodpurchase/fdsafe/wxapp/school/WxAppAccompanyMealController.java
@@ -0,0 +1,75 @@
+package com.zf.foodpurchase.fdsafe.wxapp.school;
+
+
+import com.zf.foodpurchase.common.constant.WxAPPAccountConstants;
+import com.zf.foodpurchase.common.core.controller.BaseController;
+import com.zf.foodpurchase.common.core.domain.AjaxResult;
+import com.zf.foodpurchase.common.core.domain.entity.WxAppUserVO;
+import com.zf.foodpurchase.common.core.domain.model.WxAppLoginUser;
+import com.zf.foodpurchase.common.core.page.TableDataInfo;
+import com.zf.foodpurchase.common.valigroud.AddGroup;
+import com.zf.foodpurchase.common.valigroud.UpdateGroup;
+import com.zf.foodpurchase.fdsafe.entity.WxAppUser;
+import com.zf.foodpurchase.fdsafe.service.IAccompanyMealService;
+import com.zf.foodpurchase.fdsafe.vo.AccompanyMealVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+/**
+ *
+ * 前端控制器
+ *
+ *
+ * @author lilj
+ * @since 2025-04-11
+ */
+@RestController
+@RequestMapping("/wxapp/accompanyMeal")
+public class WxAppAccompanyMealController extends BaseController {
+ @Autowired
+ private IAccompanyMealService accompanyMealService;
+
+ @RequestMapping("/list")
+ public AjaxResult list(AccompanyMealVO accompanyMealVO) {
+ WxAppUserVO userVO = getWxAppLoginUser().getUser();
+ if(userVO == null || !WxAPPAccountConstants.SCHOOL.equals(userVO.getAccountType())){
+ return AjaxResult.error("非学校人员账号无法操作");
+ }
+ accompanyMealVO.setSchoolId(userVO.getSchoolId());
+ List list = accompanyMealService.queryAccompanyMealVO(accompanyMealVO);
+ return AjaxResult.success(list);
+ }
+
+ @RequestMapping("/add")
+ public AjaxResult add(@RequestBody @Validated(AddGroup.class) AccompanyMealVO accompanyMealVO) {
+ WxAppUserVO userVO = getWxAppLoginUser().getUser();
+ if(userVO == null || !WxAPPAccountConstants.SCHOOL.equals(userVO.getAccountType())){
+ return AjaxResult.error("非学校人员账号无法操作");
+ }
+ accompanyMealVO.setSchoolId(userVO.getSchoolId());
+ return accompanyMealService.saveVO(accompanyMealVO);
+ }
+
+ @RequestMapping("/update")
+ public AjaxResult update(@RequestBody @Validated(UpdateGroup.class) AccompanyMealVO accompanyMealVO) {
+ WxAppUserVO userVO = getWxAppLoginUser().getUser();
+ if(userVO == null || !WxAPPAccountConstants.SCHOOL.equals(userVO.getAccountType())){
+ return AjaxResult.error("非学校人员账号无法操作");
+ }
+ accompanyMealVO.setSchoolId(userVO.getSchoolId());
+ return accompanyMealService.updateVO(accompanyMealVO);
+ }
+
+ @RequestMapping("/delete")
+ public AjaxResult delete(Integer accompanyMealId) {
+ if (accompanyMealId == null) {
+ return error("请选择要删除的陪餐记录");
+ }
+ return accompanyMealService.removeWithId(accompanyMealId);
+ }
+}
diff --git a/fp-admin/src/main/java/com/zf/foodpurchase/fdsafe/wxapp/school/WxAppCattenController.java b/fp-admin/src/main/java/com/zf/foodpurchase/fdsafe/wxapp/school/WxAppCattenController.java
new file mode 100644
index 0000000..226907d
--- /dev/null
+++ b/fp-admin/src/main/java/com/zf/foodpurchase/fdsafe/wxapp/school/WxAppCattenController.java
@@ -0,0 +1,75 @@
+package com.zf.foodpurchase.fdsafe.wxapp.school;
+
+
+import com.zf.foodpurchase.common.constant.WxAPPAccountConstants;
+import com.zf.foodpurchase.common.core.controller.BaseController;
+import com.zf.foodpurchase.common.core.domain.AjaxResult;
+import com.zf.foodpurchase.common.core.domain.entity.WxAppUserVO;
+import com.zf.foodpurchase.common.core.page.TableDataInfo;
+import com.zf.foodpurchase.common.valigroud.AddGroup;
+import com.zf.foodpurchase.common.valigroud.UpdateGroup;
+import com.zf.foodpurchase.fdsafe.service.ICattenService;
+import com.zf.foodpurchase.fdsafe.vo.CattenVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+/**
+ *
+ * 前端控制器
+ *
+ *
+ * @author lilj
+ * @since 2025-04-11
+ */
+@RestController
+@RequestMapping("/wxapp/catten")
+public class WxAppCattenController extends BaseController {
+ @Autowired
+ private ICattenService cattenService;
+
+ @RequestMapping("/list")
+ public AjaxResult list(CattenVO cattenVO) {
+ WxAppUserVO userVO = getWxAppLoginUser().getUser();
+ if(userVO == null || !WxAPPAccountConstants.SCHOOL.equals(userVO.getAccountType())){
+ return AjaxResult.error("非学校人员账号无法操作");
+ }
+ cattenVO.setSchoolId(userVO.getSchoolId());
+ List list = cattenService.queryCattenVO(cattenVO);
+ return AjaxResult.success(list);
+ }
+
+ @PostMapping("/add")
+ public AjaxResult add(@Validated(AddGroup.class) @RequestBody CattenVO cattenVO) {
+ WxAppUserVO userVO = getWxAppLoginUser().getUser();
+ if(userVO == null || !WxAPPAccountConstants.SCHOOL.equals(userVO.getAccountType())){
+ return AjaxResult.error("非学校人员账号无法操作");
+ }
+ cattenVO.setSchoolId(userVO.getSchoolId());
+ return cattenService.saveVO(cattenVO);
+ }
+
+ @PostMapping("/update")
+ public AjaxResult update(@Validated(UpdateGroup.class) @RequestBody CattenVO cattenVO) {
+ WxAppUserVO userVO = getWxAppLoginUser().getUser();
+ if(userVO == null || !WxAPPAccountConstants.SCHOOL.equals(userVO.getAccountType())){
+ return AjaxResult.error("非学校人员账号无法操作");
+ }
+ cattenVO.setSchoolId(userVO.getSchoolId());
+ return cattenService.updateVO(cattenVO);
+ }
+
+ @GetMapping("/delete")
+ public AjaxResult delete(Integer cattenId) {
+ WxAppUserVO userVO = getWxAppLoginUser().getUser();
+ if(userVO == null || !WxAPPAccountConstants.SCHOOL.equals(userVO.getAccountType())){
+ return AjaxResult.error("非学校人员账号无法操作");
+ }
+ if(cattenId == null){
+ return error("请选择要删除的食堂");
+ }
+ return cattenService.removeById(cattenId) ? success("删除成功") : error("删除失败");
+ }
+}
diff --git a/fp-admin/src/main/java/com/zf/foodpurchase/fdsafe/wxapp/school/WxAppDeliveryController.java b/fp-admin/src/main/java/com/zf/foodpurchase/fdsafe/wxapp/school/WxAppDeliveryController.java
new file mode 100644
index 0000000..a0eeecf
--- /dev/null
+++ b/fp-admin/src/main/java/com/zf/foodpurchase/fdsafe/wxapp/school/WxAppDeliveryController.java
@@ -0,0 +1,72 @@
+package com.zf.foodpurchase.fdsafe.wxapp.school;
+
+
+import com.zf.foodpurchase.common.constant.WxAPPAccountConstants;
+import com.zf.foodpurchase.common.core.controller.BaseController;
+import com.zf.foodpurchase.common.core.domain.AjaxResult;
+import com.zf.foodpurchase.common.core.domain.entity.WxAppUserVO;
+import com.zf.foodpurchase.common.core.page.TableDataInfo;
+import com.zf.foodpurchase.common.valigroud.AddGroup;
+import com.zf.foodpurchase.common.valigroud.UpdateGroup;
+import com.zf.foodpurchase.fdsafe.service.ISupplierDeliveryItemService;
+import com.zf.foodpurchase.fdsafe.service.ISupplierDeliveryService;
+import com.zf.foodpurchase.fdsafe.vo.SchoolDeliveryVO;
+import com.zf.foodpurchase.fdsafe.vo.SupplierDeliveryAddUpdateVO;
+import com.zf.foodpurchase.fdsafe.vo.SupplierDeliveryItemVO;
+import com.zf.foodpurchase.fdsafe.vo.SupplierDeliveryVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+/**
+ * 送货单暂时不提供删除功能
+ *
+ * @author lilj
+ * @since 2025-04-25
+ */
+@RestController
+@RequestMapping("/wxapp/delivery")
+public class WxAppDeliveryController extends BaseController {
+ @Autowired
+ private ISupplierDeliveryService supplierDeliveryService;
+
+ @Autowired
+ private ISupplierDeliveryItemService supplierDeliveryItemService;
+
+ @GetMapping("/list")
+ public AjaxResult list(SupplierDeliveryVO supplierDeliveryVO){
+ WxAppUserVO userVO = getWxAppLoginUser().getUser();
+ if(userVO == null || !WxAPPAccountConstants.SCHOOL.equals(userVO.getAccountType())){
+ return AjaxResult.error("非学校人员账号无法操作");
+ }
+ supplierDeliveryVO.setSchoolId(userVO.getSchoolId());
+ List list = supplierDeliveryService.querySupplierDeliveryVO(supplierDeliveryVO);
+ return AjaxResult.success(list);
+ }
+
+ @PostMapping("/schoolSignDelivery")
+ public AjaxResult schoolUpdateDelivery(@RequestBody @Validated(UpdateGroup.class) SchoolDeliveryVO schoolDeliveryVO){
+ WxAppUserVO userVO = getWxAppLoginUser().getUser();
+ if(userVO == null || !WxAPPAccountConstants.SCHOOL.equals(userVO.getAccountType())){
+ return AjaxResult.error("非学校人员账号无法操作");
+ }
+ schoolDeliveryVO.setSchoolId(userVO.getSchoolId());
+ return supplierDeliveryService.schoolUpdateDelivery(schoolDeliveryVO);
+ }
+
+
+ @GetMapping("/itemList")
+ public AjaxResult itemList(SupplierDeliveryItemVO supplierDeliveryItemVO) {
+ WxAppUserVO userVO = getWxAppLoginUser().getUser();
+ if(userVO == null || !WxAPPAccountConstants.SCHOOL.equals(userVO.getAccountType())){
+ return AjaxResult.error("非学校人员账号无法操作");
+ }
+ supplierDeliveryItemVO.setSchoolId(userVO.getSchoolId());
+ List list = supplierDeliveryItemService.querySupplierDeliveryItemVO(supplierDeliveryItemVO);
+ return AjaxResult.success(list);
+ }
+
+
+}
diff --git a/fp-admin/src/main/java/com/zf/foodpurchase/fdsafe/wxapp/school/WxAppDishController.java b/fp-admin/src/main/java/com/zf/foodpurchase/fdsafe/wxapp/school/WxAppDishController.java
new file mode 100644
index 0000000..9c0716e
--- /dev/null
+++ b/fp-admin/src/main/java/com/zf/foodpurchase/fdsafe/wxapp/school/WxAppDishController.java
@@ -0,0 +1,88 @@
+package com.zf.foodpurchase.fdsafe.wxapp.school;
+
+
+import com.zf.foodpurchase.common.constant.WxAPPAccountConstants;
+import com.zf.foodpurchase.common.core.controller.BaseController;
+import com.zf.foodpurchase.common.core.domain.AjaxResult;
+import com.zf.foodpurchase.common.core.domain.entity.WxAppUserVO;
+import com.zf.foodpurchase.common.core.page.TableDataInfo;
+import com.zf.foodpurchase.common.valigroud.AddGroup;
+import com.zf.foodpurchase.common.valigroud.UpdateGroup;
+import com.zf.foodpurchase.fdsafe.service.IDishFoodRelationService;
+import com.zf.foodpurchase.fdsafe.service.IDishService;
+import com.zf.foodpurchase.fdsafe.vo.DishFoodRelationVO;
+import com.zf.foodpurchase.fdsafe.vo.DishVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ *
+ * 菜品表 前端控制器
+ *
+ *
+ * @author lilj
+ * @since 2025-04-18
+ */
+@RestController
+@RequestMapping("/wxapp/dish")
+public class WxAppDishController extends BaseController {
+ @Autowired
+ private IDishService dishService;
+
+ @Autowired
+ private IDishFoodRelationService dishFoodRelationService;
+
+ @RequestMapping("/list")
+ public AjaxResult list(DishVO dishVO) {
+ WxAppUserVO userVO = getWxAppLoginUser().getUser();
+ if (userVO == null || !WxAPPAccountConstants.SCHOOL.equals(userVO.getAccountType())) {
+ return AjaxResult.error("非学校人员账号无法操作");
+ }
+ dishVO.setSchoolId(userVO.getSchoolId());
+ List dishVOList = dishService.queryDishVO(dishVO);
+ return AjaxResult.success(dishVOList);
+ }
+
+ @PostMapping("/add")
+ public AjaxResult add(@RequestBody @Validated(AddGroup.class) DishVO dishVO) {
+ WxAppUserVO userVO = getWxAppLoginUser().getUser();
+ if (userVO == null || !WxAPPAccountConstants.SCHOOL.equals(userVO.getAccountType())) {
+ return AjaxResult.error("非学校人员账号无法操作");
+ }
+ dishVO.setSchoolId(userVO.getSchoolId());
+ return dishService.saveVO(dishVO);
+ }
+
+ @PostMapping("/update")
+ public AjaxResult update(@RequestBody @Validated(UpdateGroup.class) DishVO dishVO) {
+ WxAppUserVO userVO = getWxAppLoginUser().getUser();
+ if (userVO == null || !WxAPPAccountConstants.SCHOOL.equals(userVO.getAccountType())) {
+ return AjaxResult.error("非学校人员账号无法操作");
+ }
+ dishVO.setSchoolId(userVO.getSchoolId());
+ return dishService.updateVO(dishVO);
+ }
+
+ @GetMapping("/delete")
+ public AjaxResult delete(Integer dishId) {
+ WxAppUserVO userVO = getWxAppLoginUser().getUser();
+ if (userVO == null || !WxAPPAccountConstants.SCHOOL.equals(userVO.getAccountType())) {
+ return AjaxResult.error("非学校人员账号无法操作");
+ }
+ if (dishId == null) {
+ return error("未指定要删除的菜品");
+ }
+ boolean flag = dishService.removeById(dishId);
+ return flag ? success("删除成功") : error("删除失败");
+ }
+
+ @GetMapping("/detail")
+ public AjaxResult detail(Integer dishId) {
+ List dishFoodRelationVOList = dishFoodRelationService.detail(dishId);
+ return AjaxResult.success(dishFoodRelationVOList);
+ }
+}
diff --git a/fp-admin/src/main/java/com/zf/foodpurchase/fdsafe/wxapp/school/WxAppFoodBookController.java b/fp-admin/src/main/java/com/zf/foodpurchase/fdsafe/wxapp/school/WxAppFoodBookController.java
new file mode 100644
index 0000000..38d677a
--- /dev/null
+++ b/fp-admin/src/main/java/com/zf/foodpurchase/fdsafe/wxapp/school/WxAppFoodBookController.java
@@ -0,0 +1,78 @@
+package com.zf.foodpurchase.fdsafe.wxapp.school;
+
+
+import com.zf.foodpurchase.common.constant.WxAPPAccountConstants;
+import com.zf.foodpurchase.common.core.controller.BaseController;
+import com.zf.foodpurchase.common.core.domain.AjaxResult;
+import com.zf.foodpurchase.common.core.domain.entity.WxAppUserVO;
+import com.zf.foodpurchase.common.core.page.TableDataInfo;
+import com.zf.foodpurchase.common.valigroud.AddGroup;
+import com.zf.foodpurchase.common.valigroud.UpdateGroup;
+import com.zf.foodpurchase.fdsafe.service.IFoodBookService;
+import com.zf.foodpurchase.fdsafe.vo.FoodBookVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+/**
+ *
+ * 前端控制器
+ *
+ *
+ * @author lilj
+ * @since 2025-04-19
+ */
+@RestController
+@RequestMapping("/wxapp/foodBook")
+public class WxAppFoodBookController extends BaseController {
+
+ @Autowired
+ private IFoodBookService foodBookService;
+
+ @RequestMapping("/list")
+ public AjaxResult list(FoodBookVO foodBookVO) {
+ WxAppUserVO userVO = getWxAppLoginUser().getUser();
+ if (userVO == null || !WxAPPAccountConstants.SCHOOL.equals(userVO.getAccountType())) {
+ return AjaxResult.error("非学校人员账号无法操作");
+ }
+ foodBookVO.setSchoolId(userVO.getSchoolId());
+ foodBookVO.setDelFlag(0);
+ List list = foodBookService.queryFoodBookVO(foodBookVO);
+ return AjaxResult.success(list);
+ }
+
+ @PostMapping("/add")
+ public AjaxResult add(@RequestBody @Validated(AddGroup.class) FoodBookVO foodBookVO) {
+ WxAppUserVO userVO = getWxAppLoginUser().getUser();
+ if (userVO == null || !WxAPPAccountConstants.SCHOOL.equals(userVO.getAccountType())) {
+ return AjaxResult.error("非学校人员账号无法操作");
+ }
+ foodBookVO.setSchoolId(userVO.getSchoolId());
+ return foodBookService.saveVO(foodBookVO);
+ }
+
+ @PostMapping("/update")
+ public AjaxResult update(@RequestBody @Validated(UpdateGroup.class) FoodBookVO foodBookVO) {
+ WxAppUserVO userVO = getWxAppLoginUser().getUser();
+ if (userVO == null || !WxAPPAccountConstants.SCHOOL.equals(userVO.getAccountType())) {
+ return AjaxResult.error("非学校人员账号无法操作");
+ }
+ foodBookVO.setSchoolId(userVO.getSchoolId());
+ return foodBookService.updateVO(foodBookVO);
+ }
+
+ @GetMapping("/delete")
+ public AjaxResult delete(Long bookId) {
+ WxAppUserVO userVO = getWxAppLoginUser().getUser();
+ if (userVO == null || !WxAPPAccountConstants.SCHOOL.equals(userVO.getAccountType())) {
+ return AjaxResult.error("非学校人员账号无法操作");
+ }
+ if(bookId == null){
+ return error("未指定要删除的菜谱");
+ }
+ return foodBookService.removeWithId(bookId);
+ }
+
+}
diff --git a/fp-admin/src/main/java/com/zf/foodpurchase/fdsafe/wxapp/school/WxAppFoodProductController.java b/fp-admin/src/main/java/com/zf/foodpurchase/fdsafe/wxapp/school/WxAppFoodProductController.java
new file mode 100644
index 0000000..65168ec
--- /dev/null
+++ b/fp-admin/src/main/java/com/zf/foodpurchase/fdsafe/wxapp/school/WxAppFoodProductController.java
@@ -0,0 +1,72 @@
+package com.zf.foodpurchase.fdsafe.wxapp.school;
+
+import com.zf.foodpurchase.common.constant.WxAPPAccountConstants;
+import com.zf.foodpurchase.common.core.controller.BaseController;
+import com.zf.foodpurchase.common.core.domain.AjaxResult;
+import com.zf.foodpurchase.common.core.domain.entity.WxAppUserVO;
+import com.zf.foodpurchase.common.core.page.TableDataInfo;
+import com.zf.foodpurchase.fdsafe.service.IFoodProductService;
+import com.zf.foodpurchase.fdsafe.service.IFoodTypeService;
+import com.zf.foodpurchase.fdsafe.service.ISupplierService;
+import com.zf.foodpurchase.fdsafe.vo.FoodProductVO;
+import com.zf.foodpurchase.fdsafe.vo.FoodTypeVO;
+import com.zf.foodpurchase.fdsafe.vo.SupplierVO;
+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 java.util.List;
+
+/**
+ * @author:lilj
+ * @date:2025/5/16
+ */
+@RequestMapping("/wxapp/foodProduct")
+@RestController
+public class WxAppFoodProductController extends BaseController {
+ @Autowired
+ private IFoodProductService foodProductService;
+
+ @Autowired
+ private IFoodTypeService foodTypeServcie;
+
+ @Autowired
+ private ISupplierService supplierService;
+
+ @GetMapping("/supplierList")
+ public AjaxResult list(SupplierVO supplierVO) {
+ WxAppUserVO userVO = getWxAppLoginUser().getUser();
+ if(userVO == null || !WxAPPAccountConstants.SCHOOL.equals(userVO.getAccountType())){
+ return AjaxResult.error("非学校人员账号无法操作");
+ }
+ supplierVO.setEduId(userVO.getEduId());
+ List list = supplierService.querySupplierVO(supplierVO);
+ return AjaxResult.success(list);
+ }
+
+ /**
+ * 查询用
+ * @return
+ */
+ @GetMapping("/foodTypeList")
+ public AjaxResult list(){
+ FoodTypeVO foodTypeVO = new FoodTypeVO();
+ foodTypeVO.setStatus(0);
+ List list = foodTypeServcie.queryFoodTypeVO(foodTypeVO);
+ return AjaxResult.success(list);
+ }
+
+ @GetMapping("/list")
+ public AjaxResult list(FoodProductVO foodProductVO) {
+ WxAppUserVO userVO = getWxAppLoginUser().getUser();
+ if(userVO == null || !WxAPPAccountConstants.SCHOOL.equals(userVO.getAccountType())){
+ return AjaxResult.error("非学校人员账号无法操作");
+ }
+ foodProductVO.setEduId(userVO.getEduId());
+ foodProductVO.setDelFlag(0);
+ List list = foodProductService.queryFoodProductVO(foodProductVO);
+ return AjaxResult.success(list);
+ }
+
+}
diff --git a/fp-admin/src/main/java/com/zf/foodpurchase/fdsafe/wxapp/school/WxAppFoodSampleController.java b/fp-admin/src/main/java/com/zf/foodpurchase/fdsafe/wxapp/school/WxAppFoodSampleController.java
new file mode 100644
index 0000000..d3a5790
--- /dev/null
+++ b/fp-admin/src/main/java/com/zf/foodpurchase/fdsafe/wxapp/school/WxAppFoodSampleController.java
@@ -0,0 +1,76 @@
+package com.zf.foodpurchase.fdsafe.wxapp.school;
+
+
+import com.zf.foodpurchase.common.constant.WxAPPAccountConstants;
+import com.zf.foodpurchase.common.core.controller.BaseController;
+import com.zf.foodpurchase.common.core.domain.AjaxResult;
+import com.zf.foodpurchase.common.core.domain.entity.WxAppUserVO;
+import com.zf.foodpurchase.common.core.page.TableDataInfo;
+import com.zf.foodpurchase.common.valigroud.AddGroup;
+import com.zf.foodpurchase.common.valigroud.UpdateGroup;
+import com.zf.foodpurchase.fdsafe.service.IFoodSampleService;
+import com.zf.foodpurchase.fdsafe.vo.FoodSampleVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+/**
+ *
+ * 前端控制器
+ *
+ *
+ * @author lilj
+ * @since 2025-04-21
+ */
+@RestController
+@RequestMapping("/wxapp/foodSample")
+public class WxAppFoodSampleController extends BaseController {
+ @Autowired
+ private IFoodSampleService foodSampleService;
+
+ @GetMapping("/list")
+ public AjaxResult list(FoodSampleVO foodSampleVO) {
+ WxAppUserVO userVO = getWxAppLoginUser().getUser();
+ if(userVO == null || !WxAPPAccountConstants.SCHOOL.equals(userVO.getAccountType())){
+ return AjaxResult.error("非学校人员账号无法操作");
+ }
+ foodSampleVO.setSchoolId(userVO.getSchoolId());
+ List list = foodSampleService.queryFoodSampleVO(foodSampleVO);
+ return AjaxResult.success(list);
+ }
+
+ @PostMapping("/add")
+ public AjaxResult add(@RequestBody @Validated(AddGroup.class) FoodSampleVO foodSampleVO) {
+ WxAppUserVO userVO = getWxAppLoginUser().getUser();
+ if(userVO == null || !WxAPPAccountConstants.SCHOOL.equals(userVO.getAccountType())){
+ return AjaxResult.error("非学校人员账号无法操作");
+ }
+ foodSampleVO.setSchoolId(userVO.getSchoolId());
+ return foodSampleService.saveVO(foodSampleVO);
+ }
+
+ @PostMapping("/update")
+ public AjaxResult update(@RequestBody @Validated(UpdateGroup.class) FoodSampleVO foodSampleVO) {
+ WxAppUserVO userVO = getWxAppLoginUser().getUser();
+ if(userVO == null || !WxAPPAccountConstants.SCHOOL.equals(userVO.getAccountType())){
+ return AjaxResult.error("非学校人员账号无法操作");
+ }
+ foodSampleVO.setSchoolId(userVO.getSchoolId());
+ return foodSampleService.updateVO(foodSampleVO);
+ }
+
+ @GetMapping("/delete")
+ public AjaxResult delete(Long sampleId) {
+ WxAppUserVO userVO = getWxAppLoginUser().getUser();
+ if(userVO == null || !WxAPPAccountConstants.SCHOOL.equals(userVO.getAccountType())){
+ return AjaxResult.error("非学校人员账号无法操作");
+ }
+ if(sampleId == null){
+ return error("未指定要删除的留样记录");
+ }
+ return foodSampleService.deleteWithId(sampleId);
+ }
+
+}
diff --git a/fp-admin/src/main/java/com/zf/foodpurchase/fdsafe/wxapp/school/WxAppMorningCheckInController.java b/fp-admin/src/main/java/com/zf/foodpurchase/fdsafe/wxapp/school/WxAppMorningCheckInController.java
new file mode 100644
index 0000000..1fcfbd0
--- /dev/null
+++ b/fp-admin/src/main/java/com/zf/foodpurchase/fdsafe/wxapp/school/WxAppMorningCheckInController.java
@@ -0,0 +1,75 @@
+package com.zf.foodpurchase.fdsafe.wxapp.school;
+
+
+import com.zf.foodpurchase.common.constant.WxAPPAccountConstants;
+import com.zf.foodpurchase.common.core.controller.BaseController;
+import com.zf.foodpurchase.common.core.domain.AjaxResult;
+import com.zf.foodpurchase.common.core.domain.entity.WxAppUserVO;
+import com.zf.foodpurchase.common.core.page.TableDataInfo;
+import com.zf.foodpurchase.common.valigroud.AddGroup;
+import com.zf.foodpurchase.common.valigroud.UpdateGroup;
+import com.zf.foodpurchase.fdsafe.service.IMorningCheckInService;
+import com.zf.foodpurchase.fdsafe.vo.MorningCheckInVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+/**
+ *
+ * 前端控制器
+ *
+ *
+ * @author lilj
+ * @since 2025-04-14
+ */
+@RestController
+@RequestMapping("/wxapp/morningCheckIn")
+public class WxAppMorningCheckInController extends BaseController {
+ @Autowired
+ private IMorningCheckInService morningCheckInService;
+
+ @GetMapping("/list")
+ public AjaxResult pageList(MorningCheckInVO morningCheckInVO) {
+ WxAppUserVO userVO = getWxAppLoginUser().getUser();
+ if(userVO == null || !WxAPPAccountConstants.SCHOOL.equals(userVO.getAccountType())){
+ return AjaxResult.error("非学校人员账号无法操作");
+ }
+ morningCheckInVO.setSchoolId(userVO.getSchoolId());
+ List list = morningCheckInService.queryMorningCheckInVO(morningCheckInVO);
+ return AjaxResult.success(list);
+ }
+
+ @PostMapping("/add")
+ public AjaxResult save(@RequestBody @Validated(AddGroup.class) MorningCheckInVO morningCheckInVO) {
+ WxAppUserVO userVO = getWxAppLoginUser().getUser();
+ if(userVO == null || !WxAPPAccountConstants.SCHOOL.equals(userVO.getAccountType())){
+ return AjaxResult.error("非学校人员账号无法操作");
+ }
+ morningCheckInVO.setSchoolId(userVO.getSchoolId());
+ return morningCheckInService.saveVO(morningCheckInVO);
+ }
+
+ @PostMapping("/update")
+ public AjaxResult update(@RequestBody @Validated(UpdateGroup.class) MorningCheckInVO morningCheckInVO) {
+ WxAppUserVO userVO = getWxAppLoginUser().getUser();
+ if(userVO == null || !WxAPPAccountConstants.SCHOOL.equals(userVO.getAccountType())){
+ return AjaxResult.error("非学校人员账号无法操作");
+ }
+ morningCheckInVO.setSchoolId(userVO.getSchoolId());
+ return morningCheckInService.updateVO(morningCheckInVO);
+ }
+
+ @GetMapping("/delete")
+ public AjaxResult delete(Long checkInId) {
+ WxAppUserVO userVO = getWxAppLoginUser().getUser();
+ if(userVO == null || !WxAPPAccountConstants.SCHOOL.equals(userVO.getAccountType())){
+ return AjaxResult.error("非学校人员账号无法操作");
+ }
+ if(checkInId == null){
+ return error("未指定要删除的晨检登记记录");
+ }
+ return morningCheckInService.removewithId(checkInId);
+ }
+}
diff --git a/fp-admin/src/main/java/com/zf/foodpurchase/fdsafe/wxapp/school/WxAppMorningInspectionDetailController.java b/fp-admin/src/main/java/com/zf/foodpurchase/fdsafe/wxapp/school/WxAppMorningInspectionDetailController.java
new file mode 100644
index 0000000..f5481ed
--- /dev/null
+++ b/fp-admin/src/main/java/com/zf/foodpurchase/fdsafe/wxapp/school/WxAppMorningInspectionDetailController.java
@@ -0,0 +1,114 @@
+package com.zf.foodpurchase.fdsafe.wxapp.school;
+
+
+import com.zf.foodpurchase.common.constant.WxAPPAccountConstants;
+import com.zf.foodpurchase.common.core.controller.BaseController;
+import com.zf.foodpurchase.common.core.domain.AjaxResult;
+import com.zf.foodpurchase.common.core.domain.entity.WxAppUserVO;
+import com.zf.foodpurchase.common.core.page.TableDataInfo;
+import com.zf.foodpurchase.common.valigroud.AddGroup;
+import com.zf.foodpurchase.common.valigroud.UpdateGroup;
+import com.zf.foodpurchase.fdsafe.service.IMorningInspectionContentService;
+import com.zf.foodpurchase.fdsafe.service.IMorningInspectionDetailService;
+import com.zf.foodpurchase.fdsafe.vo.MorningInspectionDetailVO;
+import com.zf.foodpurchase.fdsafe.vo.MorningTableHeaderVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ *
+ * 前端控制器
+ *
+ *
+ * @author lilj
+ * @since 2025-04-14
+ */
+@RestController
+@RequestMapping("/wxapp/morningInspectionDetail")
+public class WxAppMorningInspectionDetailController extends BaseController {
+
+ @Autowired
+ private IMorningInspectionDetailService morningInspectionDetailService;
+
+ @Autowired
+ private IMorningInspectionContentService morningInspectionContentService;
+
+ @GetMapping("/getTableHearder")
+ public AjaxResult getTableHearder(){
+ WxAppUserVO userVO = getWxAppLoginUser().getUser();
+ if(userVO == null || !WxAPPAccountConstants.SCHOOL.equals(userVO.getAccountType())){
+ return AjaxResult.error("非学校人员账号无法操作");
+ }
+ Integer eduId = userVO.getEduId();
+ List list =new ArrayList<>();
+ if(eduId == null){
+ return success(list);
+ }
+ list =morningInspectionContentService.getTableHearder(eduId);
+ return success(list);
+ }
+
+
+ @GetMapping("/list")
+ public AjaxResult pageList(MorningInspectionDetailVO morningInspectionDetailVO){
+ WxAppUserVO userVO = getWxAppLoginUser().getUser();
+ if(userVO == null || !WxAPPAccountConstants.SCHOOL.equals(userVO.getAccountType())){
+ return AjaxResult.error("非学校人员账号无法操作");
+ }
+ List list = morningInspectionDetailService.queryMorningInspectionDetailVO(morningInspectionDetailVO);
+ return AjaxResult.success(list);
+ }
+
+ /**
+ * 根据晨检项id查询晨检明细
+ * @param checkInId
+ * @return
+ */
+ @GetMapping("/detail")
+ public AjaxResult detail(Long checkInId){
+ WxAppUserVO userVO = getWxAppLoginUser().getUser();
+ if(userVO == null || !WxAPPAccountConstants.SCHOOL.equals(userVO.getAccountType())){
+ return AjaxResult.error("非学校人员账号无法操作");
+ }
+ if(checkInId == null){
+ return error("未指定要查询的晨检记录");
+ }
+ List list = morningInspectionDetailService.getByCheckInId(checkInId);
+ return success(list);
+ }
+
+ @PostMapping("/add")
+ public AjaxResult add(@RequestBody @Validated({AddGroup.class}) MorningInspectionDetailVO morningInspectionDetailVO){
+ WxAppUserVO userVO = getWxAppLoginUser().getUser();
+ if(userVO == null || !WxAPPAccountConstants.SCHOOL.equals(userVO.getAccountType())){
+ return AjaxResult.error("非学校人员账号无法操作");
+ }
+ return morningInspectionDetailService.saveVO(morningInspectionDetailVO);
+ }
+
+ @PostMapping("/update")
+ public AjaxResult update(@RequestBody @Validated({UpdateGroup.class}) MorningInspectionDetailVO morningInspectionDetailVO){
+ WxAppUserVO userVO = getWxAppLoginUser().getUser();
+ if(userVO == null || !WxAPPAccountConstants.SCHOOL.equals(userVO.getAccountType())){
+ return AjaxResult.error("非学校人员账号无法操作");
+ }
+ return morningInspectionDetailService.updateVO(morningInspectionDetailVO);
+ }
+
+ @GetMapping("/delete")
+ public AjaxResult delete(Long morningDetailId){
+ WxAppUserVO userVO = getWxAppLoginUser().getUser();
+ if(userVO == null || !WxAPPAccountConstants.SCHOOL.equals(userVO.getAccountType())){
+ return AjaxResult.error("非学校人员账号无法操作");
+ }
+ if(morningDetailId == null){
+ return error("未指定要删除的晨检明细");
+ }
+ return morningInspectionDetailService.deleteWithId(morningDetailId);
+ }
+
+}
diff --git a/fp-admin/src/main/java/com/zf/foodpurchase/fdsafe/wxapp/school/WxAppRubbishDealController.java b/fp-admin/src/main/java/com/zf/foodpurchase/fdsafe/wxapp/school/WxAppRubbishDealController.java
new file mode 100644
index 0000000..c94f870
--- /dev/null
+++ b/fp-admin/src/main/java/com/zf/foodpurchase/fdsafe/wxapp/school/WxAppRubbishDealController.java
@@ -0,0 +1,72 @@
+package com.zf.foodpurchase.fdsafe.wxapp.school;
+
+
+import com.zf.foodpurchase.common.constant.WxAPPAccountConstants;
+import com.zf.foodpurchase.common.core.controller.BaseController;
+import com.zf.foodpurchase.common.core.domain.AjaxResult;
+import com.zf.foodpurchase.common.core.domain.entity.WxAppUserVO;
+import com.zf.foodpurchase.common.core.page.TableDataInfo;
+import com.zf.foodpurchase.common.valigroud.AddGroup;
+import com.zf.foodpurchase.common.valigroud.UpdateGroup;
+import com.zf.foodpurchase.fdsafe.service.IRubbishDealService;
+import com.zf.foodpurchase.fdsafe.vo.RubbishDealVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+/**
+ *
+ * 厨余垃圾处理表 前端控制器
+ *
+ *
+ * @author lilj
+ * @since 2025-04-12
+ */
+@RestController
+@RequestMapping("/wxapp/rubbishDeal")
+public class WxAppRubbishDealController extends BaseController {
+
+ @Autowired
+ private IRubbishDealService rubbishDealService;
+
+ @GetMapping("/list")
+ public AjaxResult list(RubbishDealVO rubbishDealVO) {
+ WxAppUserVO userVO = getWxAppLoginUser().getUser();
+ if(userVO == null || !WxAPPAccountConstants.SCHOOL.equals(userVO.getAccountType())){
+ return AjaxResult.error("非学校人员账号无法操作");
+ }
+ rubbishDealVO.setSchoolId(userVO.getSchoolId());
+ List list = rubbishDealService.queryRubbishDealVO(rubbishDealVO);
+ return AjaxResult.success(list);
+ }
+
+ @PostMapping("/add")
+ public AjaxResult add(@Validated(AddGroup.class) @RequestBody RubbishDealVO rubbishDealVO) {
+ WxAppUserVO userVO = getWxAppLoginUser().getUser();
+ if(userVO == null || !WxAPPAccountConstants.SCHOOL.equals(userVO.getAccountType())){
+ return AjaxResult.error("非学校人员账号无法操作");
+ }
+ rubbishDealVO.setSchoolId(userVO.getSchoolId());
+ return rubbishDealService.saveVO(rubbishDealVO);
+ }
+
+ @PostMapping("/update")
+ public AjaxResult update(@Validated(UpdateGroup.class) @RequestBody RubbishDealVO rubbishDealVO) {
+ WxAppUserVO userVO = getWxAppLoginUser().getUser();
+ if(userVO == null || !WxAPPAccountConstants.SCHOOL.equals(userVO.getAccountType())){
+ return AjaxResult.error("非学校人员账号无法操作");
+ }
+ rubbishDealVO.setSchoolId(userVO.getSchoolId());
+ return rubbishDealService.updateVO(rubbishDealVO);
+ }
+
+ @GetMapping("/delete")
+ public AjaxResult delete(Integer dealId) {
+ if(dealId == null){
+ return error("请选择要删除的厨余垃圾处理记录");
+ }
+ return rubbishDealService.deleteWithId(dealId);
+ }
+}
diff --git a/fp-admin/src/main/java/com/zf/foodpurchase/fdsafe/wxapp/school/WxAppSchoolCartItemController.java b/fp-admin/src/main/java/com/zf/foodpurchase/fdsafe/wxapp/school/WxAppSchoolCartItemController.java
new file mode 100644
index 0000000..e0e70d4
--- /dev/null
+++ b/fp-admin/src/main/java/com/zf/foodpurchase/fdsafe/wxapp/school/WxAppSchoolCartItemController.java
@@ -0,0 +1,85 @@
+package com.zf.foodpurchase.fdsafe.wxapp.school;
+
+
+import com.zf.foodpurchase.common.constant.WxAPPAccountConstants;
+import com.zf.foodpurchase.common.core.controller.BaseController;
+import com.zf.foodpurchase.common.core.domain.AjaxResult;
+import com.zf.foodpurchase.common.core.domain.entity.WxAppUserVO;
+import com.zf.foodpurchase.common.core.page.TableDataInfo;
+import com.zf.foodpurchase.common.valigroud.AddGroup;
+import com.zf.foodpurchase.common.valigroud.UpdateGroup;
+import com.zf.foodpurchase.fdsafe.service.ISchoolCartItemService;
+import com.zf.foodpurchase.fdsafe.vo.SchoolCartItemVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+/**
+ *
+ * 学校购物车 前端控制器
+ *
+ *
+ * @author lilj
+ * @since 2025-04-23
+ */
+@RestController
+@RequestMapping("/wxapp/schoolCartItem")
+public class WxAppSchoolCartItemController extends BaseController {
+
+ @Autowired
+ private ISchoolCartItemService schoolCartItemService;
+ @GetMapping("/list")
+ public AjaxResult list(SchoolCartItemVO schoolCartItemVO) {
+ WxAppUserVO userVO = getWxAppLoginUser().getUser();
+ if(userVO == null || !WxAPPAccountConstants.SCHOOL.equals(userVO.getAccountType())){
+ return AjaxResult.error("非学校人员账号无法操作");
+ }
+ schoolCartItemVO.setSchoolId(userVO.getSchoolId());
+ List list = schoolCartItemService.querySchoolCartItemVO(schoolCartItemVO);
+ return AjaxResult.success(list);
+ }
+
+ @PostMapping("/add")
+ public AjaxResult add(@RequestBody @Validated(AddGroup.class) SchoolCartItemVO schoolCartItemVO) {
+ if(schoolCartItemVO == null){
+ return error("未指定要添加的购物项");
+ }
+ WxAppUserVO userVO = getWxAppLoginUser().getUser();
+ if(userVO == null || !WxAPPAccountConstants.SCHOOL.equals(userVO.getAccountType())){
+ return AjaxResult.error("非学校人员账号无法操作");
+ }
+ schoolCartItemVO.setSchoolId(userVO.getSchoolId());
+ return schoolCartItemService.saveVO(schoolCartItemVO);
+ }
+
+ @PostMapping("/update")
+ public AjaxResult update(@RequestBody @Validated(UpdateGroup .class) SchoolCartItemVO schoolCartItemVO) {
+ if(schoolCartItemVO == null || schoolCartItemVO.getCartItemId() == null){
+ return error("未指定要修改的购物项");
+ }
+ WxAppUserVO userVO = getWxAppLoginUser().getUser();
+ if(userVO == null || !WxAPPAccountConstants.SCHOOL.equals(userVO.getAccountType())){
+ return AjaxResult.error("非学校人员账号无法操作");
+ }
+ schoolCartItemVO.setSchoolId(userVO.getSchoolId());
+ return schoolCartItemService.updateVO(schoolCartItemVO);
+ }
+
+ @GetMapping("/delete")
+ public AjaxResult delete(Long cartItemId) {
+ if(cartItemId == null){
+ return error("未指定要删除的购物项");
+ }
+ WxAppUserVO userVO = getWxAppLoginUser().getUser();
+ if(userVO == null || !WxAPPAccountConstants.SCHOOL.equals(userVO.getAccountType())){
+ return AjaxResult.error("非学校人员账号无法操作");
+ }
+ boolean result = schoolCartItemService.removeById(cartItemId);
+ return result ? success("删除成功") : error("删除失败");
+ }
+
+
+}
+
diff --git a/fp-admin/src/main/java/com/zf/foodpurchase/fdsafe/wxapp/school/WxAppSchoolOrderController.java b/fp-admin/src/main/java/com/zf/foodpurchase/fdsafe/wxapp/school/WxAppSchoolOrderController.java
new file mode 100644
index 0000000..7875ffb
--- /dev/null
+++ b/fp-admin/src/main/java/com/zf/foodpurchase/fdsafe/wxapp/school/WxAppSchoolOrderController.java
@@ -0,0 +1,104 @@
+package com.zf.foodpurchase.fdsafe.wxapp.school;
+
+
+import com.zf.foodpurchase.common.constant.WxAPPAccountConstants;
+import com.zf.foodpurchase.common.core.controller.BaseController;
+import com.zf.foodpurchase.common.core.domain.AjaxResult;
+import com.zf.foodpurchase.common.core.domain.entity.WxAppUserVO;
+import com.zf.foodpurchase.common.core.page.TableDataInfo;
+import com.zf.foodpurchase.fdsafe.service.ISchoolOrderItemService;
+import com.zf.foodpurchase.fdsafe.service.ISchoolOrderService;
+import com.zf.foodpurchase.fdsafe.vo.*;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.Valid;
+import java.util.List;
+
+/**
+ *
+ * 前端控制器
+ *
+ *
+ * @author lilj
+ * @since 2025-04-24
+ */
+@RestController
+@RequestMapping("/wxapp/schoolOrder")
+public class WxAppSchoolOrderController extends BaseController {
+
+ @Autowired
+ private ISchoolOrderService schoolOrderService;
+
+ @Autowired
+ private ISchoolOrderItemService schoolOrderItemService;
+
+
+ @GetMapping("/list")
+ public AjaxResult list(SchoolOrderVO schoolOrderVO) {
+ WxAppUserVO userVO = getWxAppLoginUser().getUser();
+ if(userVO == null || !WxAPPAccountConstants.SCHOOL.equals(userVO.getAccountType())){
+ return AjaxResult.error("非学校人员账号无法操作");
+ }
+ schoolOrderVO.setSchoolId(userVO.getSchoolId());
+ List list = schoolOrderService.querySchoolOrderVO(schoolOrderVO);
+ return AjaxResult.success(list);
+ }
+
+ /**
+ * 提交订单:
+ * 1.校验:商品有效性校验,订单金额校验
+ * 2.订单入库:订单表,订单详情表,购物车表
+ * 3.订单入库成功后,删除购物车项
+ * @param submitOrderVO
+ * @return
+ */
+ @PostMapping("/submitOrder")
+ public AjaxResult submitOrder(@RequestBody @Valid SchoolSubmitOrderVO submitOrderVO) {
+ WxAppUserVO userVO = getWxAppLoginUser().getUser();
+ if(userVO == null || !WxAPPAccountConstants.SCHOOL.equals(userVO.getAccountType())){
+ return AjaxResult.error("非学校人员账号无法操作");
+ }
+ return schoolOrderService.submitOrder(submitOrderVO);
+ }
+
+ /**
+ * 取消订单
+ */
+ @PostMapping("/cancelOrder")
+ public AjaxResult cancelOrder(@RequestBody @Valid SchoolCancelOrderVO cancelOrderVO) {
+ WxAppUserVO userVO = getWxAppLoginUser().getUser();
+ if(userVO == null || !WxAPPAccountConstants.SCHOOL.equals(userVO.getAccountType())){
+ return AjaxResult.error("非学校人员账号无法操作");
+ }
+ return schoolOrderService.cancelOrder(cancelOrderVO);
+ }
+
+ /**
+ * 订单备注修改
+ */
+ @PostMapping("/updateOrderRemark")
+ public AjaxResult updateOrderRemark(@RequestBody @Valid SchoolModifyOrderRemarkVO remarkVO) {
+ WxAppUserVO userVO = getWxAppLoginUser().getUser();
+ if(userVO == null || !WxAPPAccountConstants.SCHOOL.equals(userVO.getAccountType())){
+ return AjaxResult.error("非学校人员账号无法操作");
+ }
+ return schoolOrderService.updateOrderRemark(remarkVO);
+ }
+
+ /**
+ * 订单子项查询
+ */
+ @GetMapping("/queryOrderItem")
+ public AjaxResult queryOrderItem(String orderNo) {
+ WxAppUserVO userVO = getWxAppLoginUser().getUser();
+ if(userVO == null || !WxAPPAccountConstants.SCHOOL.equals(userVO.getAccountType())){
+ return AjaxResult.error("非学校人员账号无法操作");
+ }
+ SchoolOrderItemVO schoolOrderVO = new SchoolOrderItemVO();
+ schoolOrderVO.setOrderNo(orderNo);
+ List list = schoolOrderItemService.querySchoolOrderItemVO(schoolOrderVO);
+ return success(list);
+ }
+}
diff --git a/fp-admin/src/main/java/com/zf/foodpurchase/fdsafe/wxapp/school/WxAppSchoolRefundController.java b/fp-admin/src/main/java/com/zf/foodpurchase/fdsafe/wxapp/school/WxAppSchoolRefundController.java
new file mode 100644
index 0000000..a5ac1d2
--- /dev/null
+++ b/fp-admin/src/main/java/com/zf/foodpurchase/fdsafe/wxapp/school/WxAppSchoolRefundController.java
@@ -0,0 +1,120 @@
+package com.zf.foodpurchase.fdsafe.wxapp.school;
+
+
+import com.zf.foodpurchase.common.constant.WxAPPAccountConstants;
+import com.zf.foodpurchase.common.core.controller.BaseController;
+import com.zf.foodpurchase.common.core.domain.AjaxResult;
+import com.zf.foodpurchase.common.core.domain.entity.WxAppUserVO;
+import com.zf.foodpurchase.common.core.page.TableDataInfo;
+import com.zf.foodpurchase.common.utils.StringUtils;
+import com.zf.foodpurchase.common.valigroud.AddGroup;
+import com.zf.foodpurchase.common.valigroud.UpdateGroup;
+import com.zf.foodpurchase.fdsafe.service.ISchoolOrderItemService;
+import com.zf.foodpurchase.fdsafe.service.ISchoolRefundItemService;
+import com.zf.foodpurchase.fdsafe.service.ISchoolRefundService;
+import com.zf.foodpurchase.fdsafe.vo.*;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.Valid;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ *
+ * 前端控制器
+ *
+ *
+ * @author lilj
+ * @since 2025-04-28
+ */
+@RestController
+@RequestMapping("/wxapp/schoolRefund")
+public class WxAppSchoolRefundController extends BaseController {
+ @Autowired
+ private ISchoolRefundItemService schoolRefundItemService;
+
+ @Autowired
+ private ISchoolRefundService schoolRefundService;
+
+ @Autowired
+ private ISchoolOrderItemService schoolOrderItemService;
+
+ @GetMapping("/orderItemList")
+ public AjaxResult orderItemList(SchoolOrderItemVO schoolOrderItemVO) {
+ WxAppUserVO userVO = getWxAppLoginUser().getUser();
+ if(userVO == null || !WxAPPAccountConstants.SCHOOL.equals(userVO.getAccountType())){
+ return AjaxResult.error("非学校人员账号无法操作");
+ }
+ schoolOrderItemVO.setSchoolId(userVO.getSchoolId());
+ List list = schoolOrderItemService.querySchoolOrderItemVO(schoolOrderItemVO);
+ return AjaxResult.success(list);
+ }
+ // 查询接口,根据退款总单号查询
+ @GetMapping("/querySchoolRefund")
+ public AjaxResult querySchoolRefund(SchoolRefundVO schoolRefundVO) {
+ WxAppUserVO userVO = getWxAppLoginUser().getUser();
+ if(userVO == null || !WxAPPAccountConstants.SCHOOL.equals(userVO.getAccountType())){
+ return AjaxResult.error("非学校人员账号无法操作");
+ }
+ schoolRefundVO.setSchoolId(userVO.getSchoolId());
+ List schoolRefunds = schoolRefundService.querySchoolRefund(schoolRefundVO);
+ return AjaxResult.success(schoolRefunds);
+ }
+
+ // 查询详情
+ @GetMapping("/querySchoolRefundDetail")
+ public AjaxResult querySchoolRefundDetail(String refundNo) {
+ WxAppUserVO userVO = getWxAppLoginUser().getUser();
+ if(userVO == null || !WxAPPAccountConstants.SCHOOL.equals(userVO.getAccountType())){
+ return AjaxResult.error("非学校人员账号无法操作");
+ }
+ if(StringUtils.isBlank(refundNo)){
+ return AjaxResult.success(new ArrayList<>());
+ }
+ List refundItems = schoolRefundItemService.queryRefundItem(refundNo);
+ return AjaxResult.success(refundItems);
+ }
+
+ /**
+ * 几个字段:
+ * 1.子单编号
+ * 2.退货原因
+ * 3.退货数量
+ * @param refundItemAddUpdateVO
+ * @return
+ */
+ @PostMapping("/addRefundItem")
+ public AjaxResult addRefundItem(@RequestBody @Validated(AddGroup.class) RefundItemAddUpdateVO refundItemAddUpdateVO) {
+ WxAppUserVO userVO = getWxAppLoginUser().getUser();
+ if(userVO == null || !WxAPPAccountConstants.SCHOOL.equals(userVO.getAccountType())){
+ return AjaxResult.error("非学校人员账号无法操作");
+ }
+ return schoolRefundItemService.addRefundItem(refundItemAddUpdateVO);
+ }
+
+ /**
+ * 修改退款项
+ */
+ @PostMapping("/updateRefundItem")
+ public AjaxResult updateRefundItem(@RequestBody @Validated(UpdateGroup.class) RefundItemAddUpdateVO refundItemAddUpdateVO) {
+ WxAppUserVO userVO = getWxAppLoginUser().getUser();
+ if(userVO == null || !WxAPPAccountConstants.SCHOOL.equals(userVO.getAccountType())){
+ return AjaxResult.error("非学校人员账号无法操作");
+ }
+ return schoolRefundItemService.updateRefundItem(refundItemAddUpdateVO);
+ }
+
+ /**
+ * 退货单审核
+ */
+ @PostMapping("/checkSchoolRefund")
+ public AjaxResult checkSchoolRefund(@RequestBody @Valid RefundCheckVO checkVO) {
+ WxAppUserVO userVO = getWxAppLoginUser().getUser();
+ if(userVO == null || !WxAPPAccountConstants.SCHOOL.equals(userVO.getAccountType())){
+ return AjaxResult.error("非学校人员账号无法操作");
+ }
+ return schoolRefundService.checkSchoolRefund(checkVO);
+ }
+}
diff --git a/fp-admin/src/main/java/com/zf/foodpurchase/fdsafe/wxapp/school/WxAppSchoolStaffController.java b/fp-admin/src/main/java/com/zf/foodpurchase/fdsafe/wxapp/school/WxAppSchoolStaffController.java
new file mode 100644
index 0000000..29f36a6
--- /dev/null
+++ b/fp-admin/src/main/java/com/zf/foodpurchase/fdsafe/wxapp/school/WxAppSchoolStaffController.java
@@ -0,0 +1,76 @@
+package com.zf.foodpurchase.fdsafe.wxapp.school;
+
+
+import com.zf.foodpurchase.common.constant.WxAPPAccountConstants;
+import com.zf.foodpurchase.common.core.controller.BaseController;
+import com.zf.foodpurchase.common.core.domain.AjaxResult;
+import com.zf.foodpurchase.common.core.domain.entity.WxAppUserVO;
+import com.zf.foodpurchase.common.core.page.TableDataInfo;
+import com.zf.foodpurchase.common.valigroud.AddGroup;
+import com.zf.foodpurchase.common.valigroud.UpdateGroup;
+import com.zf.foodpurchase.fdsafe.service.ISchoolStaffService;
+import com.zf.foodpurchase.fdsafe.vo.SchoolStaffVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+/**
+ *
+ * 前端控制器
+ *
+ *
+ * @author lilj
+ * @since 2025-04-11
+ */
+@RestController
+@RequestMapping("/wxapp/schoolStaff")
+public class WxAppSchoolStaffController extends BaseController {
+ @Autowired
+ private ISchoolStaffService schoolStaffService;
+
+ @GetMapping("/list")
+ public AjaxResult list(SchoolStaffVO schoolStaffVO) {
+ WxAppUserVO userVO = getWxAppLoginUser().getUser();
+ if(userVO == null || !WxAPPAccountConstants.SCHOOL.equals(userVO.getAccountType())){
+ return AjaxResult.error("非学校人员账号无法操作");
+ }
+ schoolStaffVO.setSchoolId(userVO.getSchoolId());
+ List list = schoolStaffService.querySchoolStaffVO(schoolStaffVO);
+ return AjaxResult.success(list);
+ }
+
+ @PostMapping("/add")
+ public AjaxResult add(@Validated(AddGroup.class) @RequestBody SchoolStaffVO schoolStaffVO) {
+ WxAppUserVO userVO = getWxAppLoginUser().getUser();
+ if(userVO == null || !WxAPPAccountConstants.SCHOOL.equals(userVO.getAccountType())){
+ return AjaxResult.error("非学校人员账号无法操作");
+ }
+ schoolStaffVO.setSchoolId(userVO.getSchoolId());
+ return schoolStaffService.saveVO(schoolStaffVO);
+ }
+
+ @PostMapping("/update")
+ public AjaxResult update(@Validated(UpdateGroup.class) @RequestBody SchoolStaffVO schoolStaffVO) {
+ WxAppUserVO userVO = getWxAppLoginUser().getUser();
+ if(userVO == null || !WxAPPAccountConstants.SCHOOL.equals(userVO.getAccountType())){
+ return AjaxResult.error("非学校人员账号无法操作");
+ }
+ schoolStaffVO.setSchoolId(userVO.getSchoolId());
+ return schoolStaffService.updateVO(schoolStaffVO);
+ }
+
+ @GetMapping("/delete")
+ public AjaxResult delete(Integer staffId) {
+ WxAppUserVO userVO = getWxAppLoginUser().getUser();
+ if(userVO == null || !WxAPPAccountConstants.SCHOOL.equals(userVO.getAccountType())){
+ return AjaxResult.error("非学校人员账号无法操作");
+ }
+ if(staffId == null){
+ return error("请选择要删除的学校人员");
+ }
+ boolean flag = schoolStaffService.removeById(staffId);
+ return flag ? success("删除成功") : error("删除失败");
+ }
+}
diff --git a/fp-admin/src/main/java/com/zf/foodpurchase/fdsafe/wxapp/school/WxAppSelfInspectionRecordController.java b/fp-admin/src/main/java/com/zf/foodpurchase/fdsafe/wxapp/school/WxAppSelfInspectionRecordController.java
new file mode 100644
index 0000000..e0c7309
--- /dev/null
+++ b/fp-admin/src/main/java/com/zf/foodpurchase/fdsafe/wxapp/school/WxAppSelfInspectionRecordController.java
@@ -0,0 +1,106 @@
+package com.zf.foodpurchase.fdsafe.wxapp.school;
+
+
+import com.zf.foodpurchase.common.constant.WxAPPAccountConstants;
+import com.zf.foodpurchase.common.core.controller.BaseController;
+import com.zf.foodpurchase.common.core.domain.AjaxResult;
+import com.zf.foodpurchase.common.core.domain.entity.WxAppUserVO;
+import com.zf.foodpurchase.common.core.page.TableDataInfo;
+import com.zf.foodpurchase.common.valigroud.AddGroup;
+import com.zf.foodpurchase.common.valigroud.UpdateGroup;
+import com.zf.foodpurchase.fdsafe.service.ISelfInspectionContentService;
+import com.zf.foodpurchase.fdsafe.service.ISelfInspectionDetailService;
+import com.zf.foodpurchase.fdsafe.service.ISelfInspectionRecordService;
+import com.zf.foodpurchase.fdsafe.vo.SelfInspectionContentVO;
+import com.zf.foodpurchase.fdsafe.vo.SelfInspectionDetailVO;
+import com.zf.foodpurchase.fdsafe.vo.SelfInspectionRecordVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+/**
+ *
+ * 前端控制器
+ *
+ *
+ * @author lilj
+ * @since 2025-04-15
+ */
+@RestController
+@RequestMapping("/wxapp/selfInspectionRecord")
+public class WxAppSelfInspectionRecordController extends BaseController {
+
+ @Autowired
+ private ISelfInspectionRecordService selfInspectionRecordService;
+
+ @Autowired
+ private ISelfInspectionDetailService selfInspectionDetailService;
+
+ @Autowired
+ private ISelfInspectionContentService selfInspectionContentService;
+
+ @GetMapping("/inspectionContents")
+ public AjaxResult inspectionContents(SelfInspectionContentVO selfInspectionContentVO){
+ WxAppUserVO userVO = getWxAppLoginUser().getUser();
+ if(userVO == null || !WxAPPAccountConstants.SCHOOL.equals(userVO.getAccountType())){
+ return AjaxResult.error("非学校人员账号无法操作");
+ }
+ selfInspectionContentVO.setEduId(userVO.getEduId());
+ List list = selfInspectionContentService.querySelfInspectionContentVO(selfInspectionContentVO);
+ return AjaxResult.success(list);
+ }
+
+ @GetMapping("/list")
+ public AjaxResult list(SelfInspectionRecordVO selfInspectionRecordVO) {
+ WxAppUserVO userVO = getWxAppLoginUser().getUser();
+ if(userVO == null || !WxAPPAccountConstants.SCHOOL.equals(userVO.getAccountType())){
+ return AjaxResult.error("非学校人员账号无法操作");
+ }
+ selfInspectionRecordVO.setSchoolId(userVO.getSchoolId());
+ List list = selfInspectionRecordService.querySelfInspectionRecordVO(selfInspectionRecordVO);
+ return AjaxResult.success(list);
+ }
+
+ @PostMapping("/add")
+ public AjaxResult add(@RequestBody @Validated(AddGroup.class) SelfInspectionRecordVO selfInspectionRecordVO) {
+ WxAppUserVO userVO = getWxAppLoginUser().getUser();
+ if(userVO == null || !WxAPPAccountConstants.SCHOOL.equals(userVO.getAccountType())){
+ return AjaxResult.error("非学校人员账号无法操作");
+ }
+ selfInspectionRecordVO.setSchoolId(userVO.getSchoolId());
+ selfInspectionRecordVO.setEduId(userVO.getEduId());
+ return selfInspectionRecordService.saveVO(selfInspectionRecordVO);
+ }
+
+ @PostMapping("/update")
+ public AjaxResult update(@RequestBody @Validated(UpdateGroup.class) SelfInspectionRecordVO selfInspectionRecordVO) {
+ WxAppUserVO userVO = getWxAppLoginUser().getUser();
+ if(userVO == null || !WxAPPAccountConstants.SCHOOL.equals(userVO.getAccountType())){
+ return AjaxResult.error("非学校人员账号无法操作");
+ }
+ selfInspectionRecordVO.setSchoolId(userVO.getSchoolId());
+ return selfInspectionRecordService.updateVO(selfInspectionRecordVO);
+ }
+
+ @GetMapping("/delete")
+ public AjaxResult delete(Long selfRecordId) {
+ WxAppUserVO userVO = getWxAppLoginUser().getUser();
+ if(userVO == null || !WxAPPAccountConstants.SCHOOL.equals(userVO.getAccountType())){
+ return AjaxResult.error("非学校人员账号无法操作");
+ }
+ if(selfRecordId == null){
+ return error("未指定要删除的自检记录");
+ }
+ return selfInspectionRecordService.deleteWithId(selfRecordId);
+ }
+
+
+
+ @GetMapping("/getDetail")
+ public AjaxResult getDetail(Long selfRecordId){
+ List list = selfInspectionDetailService.getDetail(selfRecordId);
+ return AjaxResult.success(list);
+ }
+}
diff --git a/fp-admin/src/main/java/com/zf/foodpurchase/web/controller/common/CaptchaController.java b/fp-admin/src/main/java/com/zf/foodpurchase/web/controller/common/CaptchaController.java
new file mode 100644
index 0000000..7ce9ae9
--- /dev/null
+++ b/fp-admin/src/main/java/com/zf/foodpurchase/web/controller/common/CaptchaController.java
@@ -0,0 +1,95 @@
+package com.zf.foodpurchase.web.controller.common;
+
+import com.google.code.kaptcha.Producer;
+import com.zf.foodpurchase.common.config.RuoYiConfig;
+import com.zf.foodpurchase.common.constant.CacheConstants;
+import com.zf.foodpurchase.common.constant.Constants;
+import com.zf.foodpurchase.common.core.domain.AjaxResult;
+import com.zf.foodpurchase.common.core.redis.RedisCache;
+import com.zf.foodpurchase.common.utils.sign.Base64;
+import com.zf.foodpurchase.common.utils.uuid.IdUtils;
+import com.zf.foodpurchase.system.service.ISysConfigService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.util.FastByteArrayOutputStream;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+import javax.imageio.ImageIO;
+import javax.servlet.http.HttpServletResponse;
+import java.awt.image.BufferedImage;
+import java.io.IOException;
+import java.util.concurrent.TimeUnit;
+
+/**
+ * 验证码操作处理
+ *
+ * @author ruoyi
+ */
+@RestController
+public class CaptchaController
+{
+ @Resource(name = "captchaProducer")
+ private Producer captchaProducer;
+
+ @Resource(name = "captchaProducerMath")
+ private Producer captchaProducerMath;
+
+ @Autowired
+ private RedisCache redisCache;
+
+ @Autowired
+ private ISysConfigService configService;
+ /**
+ * 生成验证码
+ */
+ @GetMapping("/captchaImage")
+ public AjaxResult getCode(HttpServletResponse response) throws IOException
+ {
+ AjaxResult ajax = AjaxResult.success();
+ boolean captchaEnabled = configService.selectCaptchaEnabled();
+ ajax.put("captchaEnabled", captchaEnabled);
+ if (!captchaEnabled)
+ {
+ return ajax;
+ }
+
+ // 保存验证码信息
+ String uuid = IdUtils.simpleUUID();
+ String verifyKey = CacheConstants.CAPTCHA_CODE_KEY + uuid;
+
+ String capStr = null, code = null;
+ BufferedImage image = null;
+
+ // 生成验证码
+ String captchaType = RuoYiConfig.getCaptchaType();
+ if ("math".equals(captchaType))
+ {
+ String capText = captchaProducerMath.createText();
+ capStr = capText.substring(0, capText.lastIndexOf("@"));
+ code = capText.substring(capText.lastIndexOf("@") + 1);
+ image = captchaProducerMath.createImage(capStr);
+ }
+ else if ("char".equals(captchaType))
+ {
+ capStr = code = captchaProducer.createText();
+ image = captchaProducer.createImage(capStr);
+ }
+
+ redisCache.setCacheObject(verifyKey, code, Constants.CAPTCHA_EXPIRATION, TimeUnit.MINUTES);
+ // 转换流信息写出
+ FastByteArrayOutputStream os = new FastByteArrayOutputStream();
+ try
+ {
+ ImageIO.write(image, "jpg", os);
+ }
+ catch (IOException e)
+ {
+ return AjaxResult.error(e.getMessage());
+ }
+
+ ajax.put("uuid", uuid);
+ ajax.put("img", Base64.encode(os.toByteArray()));
+ return ajax;
+ }
+}
diff --git a/fp-admin/src/main/java/com/zf/foodpurchase/web/controller/common/CommonController.java b/fp-admin/src/main/java/com/zf/foodpurchase/web/controller/common/CommonController.java
new file mode 100644
index 0000000..26ff61b
--- /dev/null
+++ b/fp-admin/src/main/java/com/zf/foodpurchase/web/controller/common/CommonController.java
@@ -0,0 +1,165 @@
+package com.zf.foodpurchase.web.controller.common;
+
+import com.zf.foodpurchase.common.config.RuoYiConfig;
+import com.zf.foodpurchase.common.constant.Constants;
+import com.zf.foodpurchase.common.core.domain.AjaxResult;
+import com.zf.foodpurchase.common.utils.StringUtils;
+import com.zf.foodpurchase.common.utils.file.FileUploadUtils;
+import com.zf.foodpurchase.common.utils.file.FileUtils;
+import com.zf.foodpurchase.framework.config.ServerConfig;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.MediaType;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 通用请求处理
+ *
+ * @author ruoyi
+ */
+@RestController
+@RequestMapping("/common")
+public class CommonController
+{
+ private static final Logger log = LoggerFactory.getLogger(CommonController.class);
+
+ @Autowired
+ private ServerConfig serverConfig;
+
+ private static final String FILE_DELIMETER = ",";
+
+ /**
+ * 通用下载请求
+ *
+ * @param fileName 文件名称
+ * @param delete 是否删除
+ */
+ @GetMapping("/download")
+ public void fileDownload(String fileName, Boolean delete, HttpServletResponse response, HttpServletRequest request)
+ {
+ try
+ {
+ if (!FileUtils.checkAllowDownload(fileName))
+ {
+ throw new Exception(StringUtils.format("文件名称({})非法,不允许下载。 ", fileName));
+ }
+ String realFileName = System.currentTimeMillis() + fileName.substring(fileName.indexOf("_") + 1);
+ String filePath = RuoYiConfig.getDownloadPath() + fileName;
+
+ response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE);
+ FileUtils.setAttachmentResponseHeader(response, realFileName);
+ FileUtils.writeBytes(filePath, response.getOutputStream());
+ if (delete)
+ {
+ FileUtils.deleteFile(filePath);
+ }
+ }
+ catch (Exception e)
+ {
+ log.error("下载文件失败", e);
+ }
+ }
+
+ /**
+ * 通用上传请求(单个)
+ */
+ @PostMapping("/upload")
+ public AjaxResult uploadFile(MultipartFile file) throws Exception
+ {
+ try
+ {
+ // 上传文件路径
+ String filePath = RuoYiConfig.getUploadPath();
+ // 上传并返回新文件名称
+ String fileName = FileUploadUtils.upload(filePath, file);
+ // String url = serverConfig.getUrl() + fileName;
+ String url = RuoYiConfig.getImagePrefix() + fileName;
+ AjaxResult ajax = AjaxResult.success();
+ ajax.put("url", url);
+ ajax.put("fileName", fileName);
+ ajax.put("newFileName", FileUtils.getName(fileName));
+ ajax.put("originalFilename", file.getOriginalFilename());
+ return ajax;
+ }
+ catch (Exception e)
+ {
+ return AjaxResult.error(e.getMessage());
+ }
+ }
+
+ /**
+ * 通用上传请求(多个)
+ */
+ @PostMapping("/uploads")
+ public AjaxResult uploadFiles(List files) throws Exception
+ {
+ try
+ {
+ // 上传文件路径
+ String filePath = RuoYiConfig.getUploadPath();
+ List urls = new ArrayList();
+ List fileNames = new ArrayList();
+ List newFileNames = new ArrayList();
+ List originalFilenames = new ArrayList();
+ for (MultipartFile file : files)
+ {
+ // 上传并返回新文件名称
+ String fileName = FileUploadUtils.upload(filePath, file);
+ String url = serverConfig.getUrl() + fileName;
+ urls.add(url);
+ fileNames.add(fileName);
+ newFileNames.add(FileUtils.getName(fileName));
+ originalFilenames.add(file.getOriginalFilename());
+ }
+ AjaxResult ajax = AjaxResult.success();
+ ajax.put("urls", StringUtils.join(urls, FILE_DELIMETER));
+ ajax.put("fileNames", StringUtils.join(fileNames, FILE_DELIMETER));
+ ajax.put("newFileNames", StringUtils.join(newFileNames, FILE_DELIMETER));
+ ajax.put("originalFilenames", StringUtils.join(originalFilenames, FILE_DELIMETER));
+ return ajax;
+ }
+ catch (Exception e)
+ {
+ return AjaxResult.error(e.getMessage());
+ }
+ }
+
+ /**
+ * 本地资源通用下载
+ */
+ @GetMapping("/download/resource")
+ public void resourceDownload(String resource, HttpServletRequest request, HttpServletResponse response)
+ throws Exception
+ {
+ try
+ {
+ if (!FileUtils.checkAllowDownload(resource))
+ {
+ throw new Exception(StringUtils.format("资源文件({})非法,不允许下载。 ", resource));
+ }
+ // 本地资源路径
+ String localPath = RuoYiConfig.getProfile();
+ // 数据库资源地址
+ String downloadPath = localPath + StringUtils.substringAfter(resource, Constants.RESOURCE_PREFIX);
+ // 下载名称
+ String downloadName = StringUtils.substringAfterLast(downloadPath, "/");
+ response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE);
+ FileUtils.setAttachmentResponseHeader(response, downloadName);
+ FileUtils.writeBytes(downloadPath, response.getOutputStream());
+ }
+ catch (Exception e)
+ {
+ log.error("下载文件失败", e);
+ }
+ }
+}
diff --git a/fp-admin/src/main/java/com/zf/foodpurchase/web/controller/monitor/CacheController.java b/fp-admin/src/main/java/com/zf/foodpurchase/web/controller/monitor/CacheController.java
new file mode 100644
index 0000000..c012148
--- /dev/null
+++ b/fp-admin/src/main/java/com/zf/foodpurchase/web/controller/monitor/CacheController.java
@@ -0,0 +1,111 @@
+package com.zf.foodpurchase.web.controller.monitor;
+
+import com.zf.foodpurchase.common.constant.CacheConstants;
+import com.zf.foodpurchase.common.core.domain.AjaxResult;
+import com.zf.foodpurchase.common.utils.StringUtils;
+import com.zf.foodpurchase.system.domain.SysCache;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.redis.core.RedisCallback;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.*;
+
+/**
+ * 缓存监控
+ *
+ * @author ruoyi
+ */
+@RestController
+@RequestMapping("/monitor/cache")
+public class CacheController
+{
+ @Autowired
+ private RedisTemplate redisTemplate;
+
+ private final static List caches = new ArrayList();
+ {
+ caches.add(new SysCache(CacheConstants.LOGIN_TOKEN_KEY, "用户信息"));
+ caches.add(new SysCache(CacheConstants.SYS_CONFIG_KEY, "配置信息"));
+ caches.add(new SysCache(CacheConstants.SYS_DICT_KEY, "数据字典"));
+ caches.add(new SysCache(CacheConstants.CAPTCHA_CODE_KEY, "验证码"));
+ caches.add(new SysCache(CacheConstants.REPEAT_SUBMIT_KEY, "防重提交"));
+ caches.add(new SysCache(CacheConstants.RATE_LIMIT_KEY, "限流处理"));
+ caches.add(new SysCache(CacheConstants.PWD_ERR_CNT_KEY, "密码错误次数"));
+ }
+
+ @PreAuthorize("@ss.hasPermi('monitor:cache:list')")
+ @GetMapping()
+ public AjaxResult getInfo() throws Exception
+ {
+ Properties info = (Properties) redisTemplate.execute((RedisCallback