浏览代码

feat(app): 场地和赛事关联价格规则- 新增 AppSiteDTO 和 AppGameDTO 类用于封装场地和赛事的价格规则- 修改 AppSite 和 AppGame 实体类,添加相关字段- 更新 AppSiteController 和 AppGameController,使用新的 DTO 类处理请求- 新增 AppSitePriceRules 和 AppGamePriceRules 实体类- 新增对应的 Mapper 接口和 XML 文件- 更新服务层代码,实现价格规则的增删改查功能

lix 3 周之前
父节点
当前提交
44ac7a16d1
共有 24 个文件被更改,包括 532 次插入190 次删除
  1. 26 26
      national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/controller/AppGamePriceRulesController.java
  2. 43 60
      national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/controller/AppSiteController.java
  3. 29 46
      national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/controller/AppSitePriceRulesController.java
  4. 29 0
      national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/dto/AppCoursesDTO.java
  5. 30 0
      national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/dto/AppGameDTO.java
  6. 30 0
      national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/dto/AppSiteDTO.java
  7. 1 1
      national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/entity/AppGamePriceRules.java
  8. 18 6
      national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/entity/AppSite.java
  9. 5 5
      national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/entity/AppSitePriceRules.java
  10. 31 0
      national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/enums/SiteTypeEnum.java
  11. 2 2
      national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/mapper/AppGamePriceRulesMapper.java
  12. 2 5
      national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/mapper/AppSitePriceRulesMapper.java
  13. 1 1
      national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/mapper/xml/AppGamePriceRulesMapper.xml
  14. 1 1
      national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/mapper/xml/AppSitePriceRulesMapper.xml
  15. 2 2
      national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/service/IAppGamePriceRulesService.java
  16. 26 0
      national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/service/IAppGameService.java
  17. 2 2
      national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/service/IAppSitePriceRulesService.java
  18. 27 1
      national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/service/IAppSiteService.java
  19. 4 4
      national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/service/impl/AppGamePriceRulesServiceImpl.java
  20. 46 0
      national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/service/impl/AppGameServiceImpl.java
  21. 4 4
      national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/service/impl/AppSitePriceRulesServiceImpl.java
  22. 107 1
      national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/service/impl/AppSiteServiceImpl.java
  23. 66 0
      national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/utils/CusUtil.java
  24. 0 23
      national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/utils/GoodRateUtil.java

+ 26 - 26
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/controller/AppGamePeiceRulesController.java → national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/controller/AppGamePriceRulesController.java

@@ -14,8 +14,8 @@ import org.jeecg.common.api.vo.Result;
 import org.jeecg.common.system.query.QueryGenerator;
 import org.jeecg.common.system.query.QueryRuleEnum;
 import org.jeecg.common.util.oConvertUtils;
-import org.jeecg.modules.system.app.entity.AppGamePeiceRules;
-import org.jeecg.modules.system.app.service.IAppGamePeiceRulesService;
+import org.jeecg.modules.system.app.entity.AppGamePriceRules;
+import org.jeecg.modules.system.app.service.IAppGamePriceRulesService;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -46,16 +46,16 @@ import org.apache.shiro.authz.annotation.RequiresPermissions;
  */
 @Tag(name="赛事价格规则表")
 @RestController
-@RequestMapping("/org/jeecg/modules/app/appGamePeiceRules")
+@RequestMapping("/org/jeecg/modules/app/appGamePriceRules")
 @Slf4j
-public class AppGamePeiceRulesController extends JeecgController<AppGamePeiceRules, IAppGamePeiceRulesService> {
+public class AppGamePriceRulesController extends JeecgController<AppGamePriceRules, IAppGamePriceRulesService> {
 	@Autowired
-	private IAppGamePeiceRulesService appGamePeiceRulesService;
+	private IAppGamePriceRulesService appGamePriceRulesService;
 	
 	/**
 	 * 分页列表查询
 	 *
-	 * @param appGamePeiceRules
+	 * @param appGamePriceRules
 	 * @param pageNo
 	 * @param pageSize
 	 * @param req
@@ -64,30 +64,30 @@ public class AppGamePeiceRulesController extends JeecgController<AppGamePeiceRul
 	//@AutoLog(value = "赛事价格规则表-分页列表查询")
 	@Operation(summary="赛事价格规则表-分页列表查询")
 	@GetMapping(value = "/list")
-	public Result<IPage<AppGamePeiceRules>> queryPageList(AppGamePeiceRules appGamePeiceRules,
+	public Result<IPage<AppGamePriceRules>> queryPageList(AppGamePriceRules appGamePriceRules,
 								   @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
 								   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
 								   HttpServletRequest req) {
 
 
-        QueryWrapper<AppGamePeiceRules> queryWrapper = QueryGenerator.initQueryWrapper(appGamePeiceRules, req.getParameterMap());
-		Page<AppGamePeiceRules> page = new Page<AppGamePeiceRules>(pageNo, pageSize);
-		IPage<AppGamePeiceRules> pageList = appGamePeiceRulesService.page(page, queryWrapper);
+        QueryWrapper<AppGamePriceRules> queryWrapper = QueryGenerator.initQueryWrapper(appGamePriceRules, req.getParameterMap());
+		Page<AppGamePriceRules> page = new Page<AppGamePriceRules>(pageNo, pageSize);
+		IPage<AppGamePriceRules> pageList = appGamePriceRulesService.page(page, queryWrapper);
 		return Result.OK(pageList);
 	}
 	
 	/**
 	 *   添加
 	 *
-	 * @param appGamePeiceRules
+	 * @param appGamePriceRules
 	 * @return
 	 */
 	@AutoLog(value = "赛事价格规则表-添加")
 	@Operation(summary="赛事价格规则表-添加")
 	@RequiresPermissions("org.jeecg.modules.app:nm_game_peice_rules:add")
 	@PostMapping(value = "/add")
-	public Result<String> add(@RequestBody AppGamePeiceRules appGamePeiceRules) {
-		appGamePeiceRulesService.save(appGamePeiceRules);
+	public Result<String> add(@RequestBody AppGamePriceRules appGamePriceRules) {
+		appGamePriceRulesService.save(appGamePriceRules);
 
 		return Result.OK("添加成功!");
 	}
@@ -95,15 +95,15 @@ public class AppGamePeiceRulesController extends JeecgController<AppGamePeiceRul
 	/**
 	 *  编辑
 	 *
-	 * @param appGamePeiceRules
+	 * @param appGamePriceRules
 	 * @return
 	 */
 	@AutoLog(value = "赛事价格规则表-编辑")
 	@Operation(summary="赛事价格规则表-编辑")
 	@RequiresPermissions("org.jeecg.modules.app:nm_game_peice_rules:edit")
 	@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
-	public Result<String> edit(@RequestBody AppGamePeiceRules appGamePeiceRules) {
-		appGamePeiceRulesService.updateById(appGamePeiceRules);
+	public Result<String> edit(@RequestBody AppGamePriceRules appGamePriceRules) {
+		appGamePriceRulesService.updateById(appGamePriceRules);
 		return Result.OK("编辑成功!");
 	}
 	
@@ -118,7 +118,7 @@ public class AppGamePeiceRulesController extends JeecgController<AppGamePeiceRul
 	@RequiresPermissions("org.jeecg.modules.app:nm_game_peice_rules:delete")
 	@DeleteMapping(value = "/delete")
 	public Result<String> delete(@RequestParam(name="id",required=true) String id) {
-		appGamePeiceRulesService.removeById(id);
+		appGamePriceRulesService.removeById(id);
 		return Result.OK("删除成功!");
 	}
 	
@@ -133,7 +133,7 @@ public class AppGamePeiceRulesController extends JeecgController<AppGamePeiceRul
 	@RequiresPermissions("org.jeecg.modules.app:nm_game_peice_rules:deleteBatch")
 	@DeleteMapping(value = "/deleteBatch")
 	public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
-		this.appGamePeiceRulesService.removeByIds(Arrays.asList(ids.split(",")));
+		this.appGamePriceRulesService.removeByIds(Arrays.asList(ids.split(",")));
 		return Result.OK("批量删除成功!");
 	}
 	
@@ -146,24 +146,24 @@ public class AppGamePeiceRulesController extends JeecgController<AppGamePeiceRul
 	//@AutoLog(value = "赛事价格规则表-通过id查询")
 	@Operation(summary="赛事价格规则表-通过id查询")
 	@GetMapping(value = "/queryById")
-	public Result<AppGamePeiceRules> queryById(@RequestParam(name="id",required=true) String id) {
-		AppGamePeiceRules appGamePeiceRules = appGamePeiceRulesService.getById(id);
-		if(appGamePeiceRules==null) {
+	public Result<AppGamePriceRules> queryById(@RequestParam(name="id",required=true) String id) {
+		AppGamePriceRules appGamePriceRules = appGamePriceRulesService.getById(id);
+		if(appGamePriceRules==null) {
 			return Result.error("未找到对应数据");
 		}
-		return Result.OK(appGamePeiceRules);
+		return Result.OK(appGamePriceRules);
 	}
 
     /**
     * 导出excel
     *
     * @param request
-    * @param appGamePeiceRules
+    * @param appGamePriceRules
     */
     @RequiresPermissions("org.jeecg.modules.app:nm_game_peice_rules:exportXls")
     @RequestMapping(value = "/exportXls")
-    public ModelAndView exportXls(HttpServletRequest request, AppGamePeiceRules appGamePeiceRules) {
-        return super.exportXls(request, appGamePeiceRules, AppGamePeiceRules.class, "赛事价格规则表");
+    public ModelAndView exportXls(HttpServletRequest request, AppGamePriceRules appGamePriceRules) {
+        return super.exportXls(request, appGamePriceRules, AppGamePriceRules.class, "赛事价格规则表");
     }
 
     /**
@@ -176,7 +176,7 @@ public class AppGamePeiceRulesController extends JeecgController<AppGamePeiceRul
     @RequiresPermissions("org.jeecg.modules.app:nm_game_peice_rules:importExcel")
     @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
     public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
-        return super.importExcel(request, response, AppGamePeiceRules.class);
+        return super.importExcel(request, response, AppGamePriceRules.class);
     }
 
 }

+ 43 - 60
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/controller/AppSiteController.java

@@ -1,20 +1,15 @@
 package org.jeecg.modules.system.app.controller;
 
 import java.util.Arrays;
-import java.util.HashMap;
 import java.util.List;
-import java.util.Map;
-import java.util.stream.Collectors;
-import java.io.IOException;
-import java.io.UnsupportedEncodingException;
-import java.net.URLDecoder;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import org.jeecg.common.api.vo.Result;
 import org.jeecg.common.system.query.QueryGenerator;
-import org.jeecg.common.system.query.QueryRuleEnum;
-import org.jeecg.common.util.oConvertUtils;
+import org.jeecg.modules.system.app.dto.AppSiteDTO;
 import org.jeecg.modules.system.app.entity.AppSite;
+import org.jeecg.modules.system.app.entity.AppSitePriceRules;
+import org.jeecg.modules.system.app.service.IAppSitePriceRulesService;
 import org.jeecg.modules.system.app.service.IAppSiteService;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -22,23 +17,18 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import lombok.extern.slf4j.Slf4j;
 
-import org.jeecgframework.poi.excel.ExcelImportUtil;
-import org.jeecgframework.poi.excel.def.NormalExcelConstants;
-import org.jeecgframework.poi.excel.entity.ExportParams;
-import org.jeecgframework.poi.excel.entity.ImportParams;
-import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
 import org.jeecg.common.system.base.controller.JeecgController;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
-import org.springframework.web.multipart.MultipartFile;
-import org.springframework.web.multipart.MultipartHttpServletRequest;
 import org.springframework.web.servlet.ModelAndView;
-import com.alibaba.fastjson.JSON;
 import io.swagger.v3.oas.annotations.tags.Tag;
 import io.swagger.v3.oas.annotations.Operation;
 import org.jeecg.common.aspect.annotation.AutoLog;
 import org.apache.shiro.authz.annotation.RequiresPermissions;
- /**
+
+
+
+/**
  * @Description: 场地表
  * @Author: jeecg-boot
  * @Date:   2025-07-03
@@ -46,12 +36,14 @@ import org.apache.shiro.authz.annotation.RequiresPermissions;
  */
 @Tag(name="场地表")
 @RestController
-@RequestMapping("/org/jeecg/modules/app/appSite")
+@RequestMapping("/appSite")
 @Slf4j
 public class AppSiteController extends JeecgController<AppSite, IAppSiteService> {
 	@Autowired
 	private IAppSiteService appSiteService;
-	
+	@Autowired
+	private IAppSitePriceRulesService sitePriceRulesService;
+
 	/**
 	 * 分页列表查询
 	 *
@@ -68,45 +60,40 @@ public class AppSiteController extends JeecgController<AppSite, IAppSiteService>
 								   @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
 								   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
 								   HttpServletRequest req) {
-
-
         QueryWrapper<AppSite> queryWrapper = QueryGenerator.initQueryWrapper(appSite, req.getParameterMap());
 		Page<AppSite> page = new Page<AppSite>(pageNo, pageSize);
 		IPage<AppSite> pageList = appSiteService.page(page, queryWrapper);
 		return Result.OK(pageList);
 	}
-	
+
 	/**
 	 *   添加
 	 *
-	 * @param appSite
+	 * @param appSiteDTO
 	 * @return
 	 */
 	@AutoLog(value = "场地表-添加")
 	@Operation(summary="场地表-添加")
-	@RequiresPermissions("org.jeecg.modules.app:nm_site:add")
+//	@RequiresPermissions("org.jeecg.modules.app:nm_site:add")
 	@PostMapping(value = "/add")
-	public Result<String> add(@RequestBody AppSite appSite) {
-		appSiteService.save(appSite);
-
-		return Result.OK("添加成功!");
+	public Result<String> add(@RequestBody AppSiteDTO appSiteDTO) {
+		return appSiteService.saveWitchPriceRules(appSiteDTO)?Result.OK("添加成功!"):Result.error("添加失败!");
 	}
-	
+
 	/**
 	 *  编辑
 	 *
-	 * @param appSite
+	 * @param appSiteDTO
 	 * @return
 	 */
 	@AutoLog(value = "场地表-编辑")
 	@Operation(summary="场地表-编辑")
-	@RequiresPermissions("org.jeecg.modules.app:nm_site:edit")
+//	@RequiresPermissions("org.jeecg.modules.app:nm_site:edit")
 	@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
-	public Result<String> edit(@RequestBody AppSite appSite) {
-		appSiteService.updateById(appSite);
-		return Result.OK("编辑成功!");
+	public Result<String> edit(@RequestBody AppSiteDTO appSiteDTO) {
+		return appSiteService.editWitchPriceRules(appSiteDTO)?Result.OK("操作成功!"):Result.error("操作失败!");
 	}
-	
+
 	/**
 	 *   通过id删除
 	 *
@@ -115,28 +102,28 @@ public class AppSiteController extends JeecgController<AppSite, IAppSiteService>
 	 */
 	@AutoLog(value = "场地表-通过id删除")
 	@Operation(summary="场地表-通过id删除")
-	@RequiresPermissions("org.jeecg.modules.app:nm_site:delete")
+//	@RequiresPermissions("org.jeecg.modules.app:nm_site:delete")
 	@DeleteMapping(value = "/delete")
 	public Result<String> delete(@RequestParam(name="id",required=true) String id) {
-		appSiteService.removeById(id);
-		return Result.OK("删除成功!");
-	}
-	
-	/**
-	 *  批量删除
-	 *
-	 * @param ids
-	 * @return
-	 */
-	@AutoLog(value = "场地表-批量删除")
-	@Operation(summary="场地表-批量删除")
-	@RequiresPermissions("org.jeecg.modules.app:nm_site:deleteBatch")
-	@DeleteMapping(value = "/deleteBatch")
-	public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
-		this.appSiteService.removeByIds(Arrays.asList(ids.split(",")));
-		return Result.OK("批量删除成功!");
+
+		return appSiteService.deleteWitchPriceRulesById(id)? Result.OK("删除成功!"):Result.error("删除失败!");
 	}
-	
+
+//	/**
+//	 *  批量删除
+//	 *
+//	 * @param ids
+//	 * @return
+//	 */
+//	@AutoLog(value = "场地表-批量删除")
+//	@Operation(summary="场地表-批量删除")
+//	@RequiresPermissions("org.jeecg.modules.app:nm_site:deleteBatch")
+//	@DeleteMapping(value = "/deleteBatch")
+//	public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
+//		this.appSiteService.removeByIds(Arrays.asList(ids.split(",")));
+//		return Result.OK("批量删除成功!");
+//	}
+
 	/**
 	 * 通过id查询
 	 *
@@ -146,12 +133,8 @@ public class AppSiteController extends JeecgController<AppSite, IAppSiteService>
 	//@AutoLog(value = "场地表-通过id查询")
 	@Operation(summary="场地表-通过id查询")
 	@GetMapping(value = "/queryById")
-	public Result<AppSite> queryById(@RequestParam(name="id",required=true) String id) {
-		AppSite appSite = appSiteService.getById(id);
-		if(appSite==null) {
-			return Result.error("未找到对应数据");
-		}
-		return Result.OK(appSite);
+	public Result<AppSiteDTO> queryById(@RequestParam(name="id",required=true) String id) {
+			return Result.ok(appSiteService.queryWitchPriceRulesById(id));
 	}
 
     /**

+ 29 - 46
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/controller/AppSitePeiceRulesController.java → national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/controller/AppSitePriceRulesController.java

@@ -1,39 +1,22 @@
 package org.jeecg.modules.system.app.controller;
 
 import java.util.Arrays;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.stream.Collectors;
-import java.io.IOException;
-import java.io.UnsupportedEncodingException;
-import java.net.URLDecoder;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import org.jeecg.common.api.vo.Result;
 import org.jeecg.common.system.query.QueryGenerator;
-import org.jeecg.common.system.query.QueryRuleEnum;
-import org.jeecg.common.util.oConvertUtils;
-import org.jeecg.modules.system.app.entity.AppSitePeiceRules;
-import org.jeecg.modules.system.app.service.IAppSitePeiceRulesService;
+import org.jeecg.modules.system.app.entity.AppSitePriceRules;
+import org.jeecg.modules.system.app.service.IAppSitePriceRulesService;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import lombok.extern.slf4j.Slf4j;
 
-import org.jeecgframework.poi.excel.ExcelImportUtil;
-import org.jeecgframework.poi.excel.def.NormalExcelConstants;
-import org.jeecgframework.poi.excel.entity.ExportParams;
-import org.jeecgframework.poi.excel.entity.ImportParams;
-import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
 import org.jeecg.common.system.base.controller.JeecgController;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
-import org.springframework.web.multipart.MultipartFile;
-import org.springframework.web.multipart.MultipartHttpServletRequest;
 import org.springframework.web.servlet.ModelAndView;
-import com.alibaba.fastjson.JSON;
 import io.swagger.v3.oas.annotations.tags.Tag;
 import io.swagger.v3.oas.annotations.Operation;
 import org.jeecg.common.aspect.annotation.AutoLog;
@@ -46,16 +29,16 @@ import org.apache.shiro.authz.annotation.RequiresPermissions;
  */
 @Tag(name="场地价格规则表")
 @RestController
-@RequestMapping("/org/jeecg/modules/app/appSitePeiceRules")
+@RequestMapping("/org/jeecg/modules/app/appSitePriceRules")
 @Slf4j
-public class AppSitePeiceRulesController extends JeecgController<AppSitePeiceRules, IAppSitePeiceRulesService> {
+public class AppSitePriceRulesController extends JeecgController<AppSitePriceRules, IAppSitePriceRulesService> {
 	@Autowired
-	private IAppSitePeiceRulesService appSitePeiceRulesService;
+	private IAppSitePriceRulesService appSitePriceRulesService;
 	
 	/**
 	 * 分页列表查询
 	 *
-	 * @param appSitePeiceRules
+	 * @param appSitePriceRules
 	 * @param pageNo
 	 * @param pageSize
 	 * @param req
@@ -64,30 +47,30 @@ public class AppSitePeiceRulesController extends JeecgController<AppSitePeiceRul
 	//@AutoLog(value = "场地价格规则表-分页列表查询")
 	@Operation(summary="场地价格规则表-分页列表查询")
 	@GetMapping(value = "/list")
-	public Result<IPage<AppSitePeiceRules>> queryPageList(AppSitePeiceRules appSitePeiceRules,
-								   @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
-								   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
-								   HttpServletRequest req) {
+	public Result<IPage<AppSitePriceRules>> queryPageList(AppSitePriceRules appSitePriceRules,
+														  @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+														  @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+														  HttpServletRequest req) {
 
 
-        QueryWrapper<AppSitePeiceRules> queryWrapper = QueryGenerator.initQueryWrapper(appSitePeiceRules, req.getParameterMap());
-		Page<AppSitePeiceRules> page = new Page<AppSitePeiceRules>(pageNo, pageSize);
-		IPage<AppSitePeiceRules> pageList = appSitePeiceRulesService.page(page, queryWrapper);
+        QueryWrapper<AppSitePriceRules> queryWrapper = QueryGenerator.initQueryWrapper(appSitePriceRules, req.getParameterMap());
+		Page<AppSitePriceRules> page = new Page<AppSitePriceRules>(pageNo, pageSize);
+		IPage<AppSitePriceRules> pageList = appSitePriceRulesService.page(page, queryWrapper);
 		return Result.OK(pageList);
 	}
 	
 	/**
 	 *   添加
 	 *
-	 * @param appSitePeiceRules
+	 * @param appSitePriceRules
 	 * @return
 	 */
 	@AutoLog(value = "场地价格规则表-添加")
 	@Operation(summary="场地价格规则表-添加")
 	@RequiresPermissions("org.jeecg.modules.app:nm_site_peice_rules:add")
 	@PostMapping(value = "/add")
-	public Result<String> add(@RequestBody AppSitePeiceRules appSitePeiceRules) {
-		appSitePeiceRulesService.save(appSitePeiceRules);
+	public Result<String> add(@RequestBody AppSitePriceRules appSitePriceRules) {
+		appSitePriceRulesService.save(appSitePriceRules);
 
 		return Result.OK("添加成功!");
 	}
@@ -95,15 +78,15 @@ public class AppSitePeiceRulesController extends JeecgController<AppSitePeiceRul
 	/**
 	 *  编辑
 	 *
-	 * @param appSitePeiceRules
+	 * @param appSitePriceRules
 	 * @return
 	 */
 	@AutoLog(value = "场地价格规则表-编辑")
 	@Operation(summary="场地价格规则表-编辑")
 	@RequiresPermissions("org.jeecg.modules.app:nm_site_peice_rules:edit")
 	@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
-	public Result<String> edit(@RequestBody AppSitePeiceRules appSitePeiceRules) {
-		appSitePeiceRulesService.updateById(appSitePeiceRules);
+	public Result<String> edit(@RequestBody AppSitePriceRules appSitePriceRules) {
+		appSitePriceRulesService.updateById(appSitePriceRules);
 		return Result.OK("编辑成功!");
 	}
 	
@@ -118,7 +101,7 @@ public class AppSitePeiceRulesController extends JeecgController<AppSitePeiceRul
 	@RequiresPermissions("org.jeecg.modules.app:nm_site_peice_rules:delete")
 	@DeleteMapping(value = "/delete")
 	public Result<String> delete(@RequestParam(name="id",required=true) String id) {
-		appSitePeiceRulesService.removeById(id);
+		appSitePriceRulesService.removeById(id);
 		return Result.OK("删除成功!");
 	}
 	
@@ -133,7 +116,7 @@ public class AppSitePeiceRulesController extends JeecgController<AppSitePeiceRul
 	@RequiresPermissions("org.jeecg.modules.app:nm_site_peice_rules:deleteBatch")
 	@DeleteMapping(value = "/deleteBatch")
 	public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
-		this.appSitePeiceRulesService.removeByIds(Arrays.asList(ids.split(",")));
+		this.appSitePriceRulesService.removeByIds(Arrays.asList(ids.split(",")));
 		return Result.OK("批量删除成功!");
 	}
 	
@@ -146,24 +129,24 @@ public class AppSitePeiceRulesController extends JeecgController<AppSitePeiceRul
 	//@AutoLog(value = "场地价格规则表-通过id查询")
 	@Operation(summary="场地价格规则表-通过id查询")
 	@GetMapping(value = "/queryById")
-	public Result<AppSitePeiceRules> queryById(@RequestParam(name="id",required=true) String id) {
-		AppSitePeiceRules appSitePeiceRules = appSitePeiceRulesService.getById(id);
-		if(appSitePeiceRules==null) {
+	public Result<AppSitePriceRules> queryById(@RequestParam(name="id",required=true) String id) {
+		AppSitePriceRules appSitePriceRules = appSitePriceRulesService.getById(id);
+		if(appSitePriceRules==null) {
 			return Result.error("未找到对应数据");
 		}
-		return Result.OK(appSitePeiceRules);
+		return Result.OK(appSitePriceRules);
 	}
 
     /**
     * 导出excel
     *
     * @param request
-    * @param appSitePeiceRules
+    * @param appSitePriceRules
     */
     @RequiresPermissions("org.jeecg.modules.app:nm_site_peice_rules:exportXls")
     @RequestMapping(value = "/exportXls")
-    public ModelAndView exportXls(HttpServletRequest request, AppSitePeiceRules appSitePeiceRules) {
-        return super.exportXls(request, appSitePeiceRules, AppSitePeiceRules.class, "场地价格规则表");
+    public ModelAndView exportXls(HttpServletRequest request, AppSitePriceRules appSitePriceRules) {
+        return super.exportXls(request, appSitePriceRules, AppSitePriceRules.class, "场地价格规则表");
     }
 
     /**
@@ -176,7 +159,7 @@ public class AppSitePeiceRulesController extends JeecgController<AppSitePeiceRul
     @RequiresPermissions("org.jeecg.modules.app:nm_site_peice_rules:importExcel")
     @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
     public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
-        return super.importExcel(request, response, AppSitePeiceRules.class);
+        return super.importExcel(request, response, AppSitePriceRules.class);
     }
 
 }

+ 29 - 0
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/dto/AppCoursesDTO.java

@@ -0,0 +1,29 @@
+package org.jeecg.modules.system.app.dto;
+
+import io.swagger.v3.oas.annotations.media.ArraySchema;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+import lombok.experimental.Accessors;
+import org.jeecg.modules.system.app.entity.AppCourese;
+import org.jeecg.modules.system.app.entity.AppCoursesPriceRules;
+
+import java.util.List;
+
+/**
+ * @author DM
+ * @date 2025/7/4 17:01
+ * @description
+ */
+@Data
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@AllArgsConstructor
+@NoArgsConstructor
+public class AppCoursesDTO {
+    private AppCourese  course;
+    @ArraySchema(schema = @Schema(implementation = AppCoursesPriceRules.class), minItems = 1)
+    private List<AppCoursesPriceRules> priceRulesList;
+}

+ 30 - 0
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/dto/AppGameDTO.java

@@ -0,0 +1,30 @@
+package org.jeecg.modules.system.app.dto;
+
+import io.swagger.v3.oas.annotations.media.ArraySchema;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+import lombok.experimental.Accessors;
+import org.jeecg.modules.system.app.entity.AppGame;
+import org.jeecg.modules.system.app.entity.AppGamePriceRules;
+
+import java.util.List;
+
+/**
+ * @author DM
+ * @date 2025/7/4 16:56
+ * @description
+ */
+@Data
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@AllArgsConstructor
+@NoArgsConstructor
+@Schema(description = "场地入参DTO")
+public class AppGameDTO {
+    private AppGame game;
+    @ArraySchema(schema = @Schema(implementation = AppGamePriceRules.class), minItems = 1)
+    private List<AppGamePriceRules> gamePriceRules;
+}

+ 30 - 0
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/dto/AppSiteDTO.java

@@ -0,0 +1,30 @@
+package org.jeecg.modules.system.app.dto;
+
+import io.swagger.v3.oas.annotations.media.ArraySchema;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+import lombok.experimental.Accessors;
+import org.jeecg.modules.system.app.entity.AppSite;
+import org.jeecg.modules.system.app.entity.AppSitePriceRules;
+
+import java.util.List;
+
+/**
+ * @author DM
+ * @date 2025/7/4 10:20
+ * @description
+ */
+@Data
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@AllArgsConstructor
+@NoArgsConstructor
+@Schema(description="场地入参DTO")
+public class AppSiteDTO {
+    private AppSite site;
+    @ArraySchema(schema = @Schema(implementation = AppSitePriceRules.class),  minItems = 1)
+    private List<AppSitePriceRules> priceRulesList;
+}

+ 1 - 1
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/entity/AppGamePeiceRules.java → national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/entity/AppGamePriceRules.java

@@ -30,7 +30,7 @@ import lombok.experimental.Accessors;
 @Accessors(chain = true)
 @EqualsAndHashCode(callSuper = false)
 @Schema(description="赛事价格规则表")
-public class AppGamePeiceRules implements Serializable {
+public class AppGamePriceRules implements Serializable {
     private static final long serialVersionUID = 1L;
 
 	/**id*/

+ 18 - 6
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/entity/AppSite.java

@@ -50,16 +50,16 @@ public class AppSite implements Serializable {
     @Schema(description = "名称")
     private String name;
 	/**地址;仅赛事*/
-	@Excel(name = "地址;仅赛事", width = 15)
-    @Schema(description = "地址;仅赛事")
+	@Excel(name = "地址", width = 15)
+    @Schema(description = "地址")
     private String address;
 	/**类型;0学校 1包场 2不固定场*/
 	@Excel(name = "类型;0学校 1包场 2不固定场", width = 15)
     @Schema(description = "类型;0学校 1包场 2不固定场")
     private Integer type;
-	/**类目;0足球 1篮球 2羽毛球 3跑步...仅包场*/
-	@Excel(name = "类目;0足球 1篮球 2羽毛球 3跑步...仅包场", width = 15)
-    @Schema(description = "类目;0足球 1篮球 2羽毛球 3跑步...仅包场")
+	/**运动类目id;多个用逗号分割*/
+	@Excel(name = "运动类目id;多个用逗号分割", width = 15)
+    @Schema(description = "运动类目id;多个用逗号分割")
     private String categoryId;
 	/**保险id;可能有多个险种*/
 	@Excel(name = "保险id;可能有多个险种", width = 15)
@@ -89,7 +89,19 @@ public class AppSite implements Serializable {
 	@Excel(name = "适用人数", width = 15)
     @Schema(description = "适用人数")
     private Integer usableCount;
-	/**提示/须知*/
+ 	/**设施/信息*/
+	@Excel(name = "设施/信息", width = 15)
+    @Schema(description = "设施/信息")
+    private String facility;
+ 	/**教学日开放时段*/
+	@Excel(name = "教学日开放时段", width = 15)
+    @Schema(description = "教学日开放时段")
+    private String teachingDay;
+ 	/**非教学日开放时段*/
+	@Excel(name = "非教学日开放时段", width = 15)
+    @Schema(description = "非教学日开放时段")
+    private String noTeachingDay;
+ 	/**提示/须知*/
 	@Excel(name = "提示/须知", width = 15)
     @Schema(description = "提示/须知")
     private String reminder;

+ 5 - 5
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/entity/AppSitePeiceRules.java → national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/entity/AppSitePriceRules.java

@@ -1,20 +1,16 @@
 package org.jeecg.modules.system.app.entity;
 
 import java.io.Serializable;
-import java.io.UnsupportedEncodingException;
 import java.util.Date;
 import java.math.BigDecimal;
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.baomidou.mybatisplus.annotation.TableLogic;
-import org.jeecg.common.constant.ProvinceCityArea;
-import org.jeecg.common.util.SpringContextUtils;
 import lombok.Data;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import org.springframework.format.annotation.DateTimeFormat;
 import org.jeecgframework.poi.excel.annotation.Excel;
-import org.jeecg.common.aspect.annotation.Dict;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
@@ -30,7 +26,7 @@ import lombok.experimental.Accessors;
 @Accessors(chain = true)
 @EqualsAndHashCode(callSuper = false)
 @Schema(description="场地价格规则表")
-public class AppSitePeiceRules implements Serializable {
+public class AppSitePriceRules implements Serializable {
     private static final long serialVersionUID = 1L;
 
 	/**id*/
@@ -77,6 +73,10 @@ public class AppSitePeiceRules implements Serializable {
 	@Excel(name = "售价", width = 15)
     @Schema(description = "售价")
     private BigDecimal sellingPrice;
+    /**库存/票数*/
+    @Excel(name = "库存", width = 15)
+    @Schema(description = "库存")
+    private Integer inventory;
 	/**乐观锁*/
 	@Excel(name = "乐观锁", width = 15)
     @Schema(description = "乐观锁")

+ 31 - 0
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/enums/SiteTypeEnum.java

@@ -0,0 +1,31 @@
+package org.jeecg.modules.system.app.enums;
+
+import lombok.Getter;
+
+@Getter
+public enum SiteTypeEnum {
+//    0学校 1包场 2不固定场
+    SCHOOL(0, "学校"),
+    PACKAGE(1, "包场"),
+    UNFIXED(2, "不固定场");
+    int code;
+    String name;
+    SiteTypeEnum(int code, String name) {
+        this.code = code;
+        this.name = name;
+    }
+    public int getCode() {
+        return code;
+    }
+    public String getName() {
+        return name;
+    }
+    public static SiteTypeEnum getByCode(int code) {
+        for (SiteTypeEnum value : values()) {
+            if (value.code == code) {
+                return value;
+            }
+        }
+        return null;
+    }
+}

+ 2 - 2
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/mapper/AppGamePeiceRulesMapper.java → national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/mapper/AppGamePriceRulesMapper.java

@@ -3,7 +3,7 @@ package org.jeecg.modules.system.app.mapper;
 import java.util.List;
 
 import org.apache.ibatis.annotations.Param;
-import org.jeecg.modules.system.app.entity.AppGamePeiceRules;
+import org.jeecg.modules.system.app.entity.AppGamePriceRules;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 
 /**
@@ -12,6 +12,6 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  * @Date:   2025-07-03
  * @Version: V1.0
  */
-public interface AppGamePeiceRulesMapper extends BaseMapper<AppGamePeiceRules> {
+public interface AppGamePriceRulesMapper extends BaseMapper<AppGamePriceRules> {
 
 }

+ 2 - 5
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/mapper/AppSitePeiceRulesMapper.java → national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/mapper/AppSitePriceRulesMapper.java

@@ -1,9 +1,6 @@
 package org.jeecg.modules.system.app.mapper;
 
-import java.util.List;
-
-import org.apache.ibatis.annotations.Param;
-import org.jeecg.modules.system.app.entity.AppSitePeiceRules;
+import org.jeecg.modules.system.app.entity.AppSitePriceRules;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 
 /**
@@ -12,6 +9,6 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  * @Date:   2025-07-03
  * @Version: V1.0
  */
-public interface AppSitePeiceRulesMapper extends BaseMapper<AppSitePeiceRules> {
+public interface AppSitePriceRulesMapper extends BaseMapper<AppSitePriceRules> {
 
 }

+ 1 - 1
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/mapper/xml/AppGamePeiceRulesMapper.xml → national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/mapper/xml/AppGamePriceRulesMapper.xml

@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="org.jeecg.modules.system.app.mapper.AppGamePeiceRulesMapper">
+<mapper namespace="org.jeecg.modules.system.app.mapper.AppGamePriceRulesMapper">
 
 </mapper>

+ 1 - 1
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/mapper/xml/AppSitePeiceRulesMapper.xml → national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/mapper/xml/AppSitePriceRulesMapper.xml

@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="org.jeecg.modules.system.app.mapper.AppSitePeiceRulesMapper">
+<mapper namespace="org.jeecg.modules.system.app.mapper.AppSitePriceRulesMapper">
 
 </mapper>

+ 2 - 2
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/service/IAppGamePeiceRulesService.java → national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/service/IAppGamePriceRulesService.java

@@ -1,6 +1,6 @@
 package org.jeecg.modules.system.app.service;
 
-import org.jeecg.modules.system.app.entity.AppGamePeiceRules;
+import org.jeecg.modules.system.app.entity.AppGamePriceRules;
 import com.baomidou.mybatisplus.extension.service.IService;
 
 /**
@@ -9,6 +9,6 @@ import com.baomidou.mybatisplus.extension.service.IService;
  * @Date:   2025-07-03
  * @Version: V1.0
  */
-public interface IAppGamePeiceRulesService extends IService<AppGamePeiceRules> {
+public interface IAppGamePriceRulesService extends IService<AppGamePriceRules> {
 
 }

+ 26 - 0
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/service/IAppGameService.java

@@ -1,5 +1,7 @@
 package org.jeecg.modules.system.app.service;
 
+import org.jeecg.modules.system.app.dto.AppGameDTO;
+import org.jeecg.modules.system.app.dto.AppSiteDTO;
 import org.jeecg.modules.system.app.entity.AppGame;
 import com.baomidou.mybatisplus.extension.service.IService;
 
@@ -10,5 +12,29 @@ import com.baomidou.mybatisplus.extension.service.IService;
  * @Version: V1.0
  */
 public interface IAppGameService extends IService<AppGame> {
+    /**
+     * 保存场地表
+     * @param gameDTO
+     * @return
+     */
+    Boolean saveWitchPriceRules(AppGameDTO gameDTO);
+    /**
+     * 修改场地表
+     * @param gameDTO
+     * @return
+     */
+        Boolean editWitchPriceRules(AppGameDTO gameDTO);
+    /**
+     * 通过id查询场地表
+     * @param id
+     * @return
+     */
+    AppGameDTO queryWitchPriceRulesById(String id);
+    /**
+     * 删除场地表
+     * @param id
+     * @return
+     */
+    Boolean deleteWitchPriceRulesById(String id);
 
 }

+ 2 - 2
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/service/IAppSitePeiceRulesService.java → national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/service/IAppSitePriceRulesService.java

@@ -1,6 +1,6 @@
 package org.jeecg.modules.system.app.service;
 
-import org.jeecg.modules.system.app.entity.AppSitePeiceRules;
+import org.jeecg.modules.system.app.entity.AppSitePriceRules;
 import com.baomidou.mybatisplus.extension.service.IService;
 
 /**
@@ -9,6 +9,6 @@ import com.baomidou.mybatisplus.extension.service.IService;
  * @Date:   2025-07-03
  * @Version: V1.0
  */
-public interface IAppSitePeiceRulesService extends IService<AppSitePeiceRules> {
+public interface IAppSitePriceRulesService extends IService<AppSitePriceRules> {
 
 }

+ 27 - 1
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/service/IAppSiteService.java

@@ -1,14 +1,40 @@
 package org.jeecg.modules.system.app.service;
 
+import org.jeecg.modules.system.app.dto.AppSiteDTO;
 import org.jeecg.modules.system.app.entity.AppSite;
 import com.baomidou.mybatisplus.extension.service.IService;
 
 /**
  * @Description: 场地表
  * @Author: jeecg-boot
- * @Date:   2025-07-03
+ * @Date: 2025-07-03
  * @Version: V1.0
  */
 public interface IAppSiteService extends IService<AppSite> {
 
+    /**
+     * 保存场地表
+     * @param appSiteDTO
+     * @return
+     */
+    Boolean saveWitchPriceRules(AppSiteDTO appSiteDTO);
+    /**
+     * 修改场地表
+     * @param appSiteDTO
+     * @return
+     */
+    Boolean editWitchPriceRules(AppSiteDTO appSiteDTO);
+    /**
+     * 通过id查询场地表
+     * @param id
+     * @return
+     */
+    AppSiteDTO queryWitchPriceRulesById(String id);
+    /**
+     * 删除场地表
+     * @param id
+     * @return
+     */
+    Boolean deleteWitchPriceRulesById(String id);
+
 }

+ 4 - 4
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/service/impl/AppGamePeiceRulesServiceImpl.java → national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/service/impl/AppGamePriceRulesServiceImpl.java

@@ -1,8 +1,8 @@
 package org.jeecg.modules.system.app.service.impl;
 
-import org.jeecg.modules.system.app.entity.AppGamePeiceRules;
-import org.jeecg.modules.system.app.mapper.AppGamePeiceRulesMapper;
-import org.jeecg.modules.system.app.service.IAppGamePeiceRulesService;
+import org.jeecg.modules.system.app.entity.AppGamePriceRules;
+import org.jeecg.modules.system.app.mapper.AppGamePriceRulesMapper;
+import org.jeecg.modules.system.app.service.IAppGamePriceRulesService;
 import org.springframework.stereotype.Service;
 
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -14,6 +14,6 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  * @Version: V1.0
  */
 @Service
-public class AppGamePeiceRulesServiceImpl extends ServiceImpl<AppGamePeiceRulesMapper, AppGamePeiceRules> implements IAppGamePeiceRulesService {
+public class AppGamePriceRulesServiceImpl extends ServiceImpl<AppGamePriceRulesMapper, AppGamePriceRules> implements IAppGamePriceRulesService {
 
 }

+ 46 - 0
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/service/impl/AppGameServiceImpl.java

@@ -1,12 +1,19 @@
 package org.jeecg.modules.system.app.service.impl;
 
+import org.jeecg.common.exception.JeecgBootException;
+import org.jeecg.modules.system.app.dto.AppGameDTO;
 import org.jeecg.modules.system.app.entity.AppGame;
+import org.jeecg.modules.system.app.entity.AppGamePriceRules;
 import org.jeecg.modules.system.app.mapper.AppGameMapper;
+import org.jeecg.modules.system.app.mapper.AppGamePriceRulesMapper;
 import org.jeecg.modules.system.app.service.IAppGameService;
 import org.springframework.stereotype.Service;
 
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 
+import javax.annotation.Resource;
+import java.util.List;
+
 /**
  * @Description: 赛事表
  * @Author: jeecg-boot
@@ -15,5 +22,44 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  */
 @Service
 public class AppGameServiceImpl extends ServiceImpl<AppGameMapper, AppGame> implements IAppGameService {
+    @Resource
+    private AppGamePriceRulesMapper rulesMapper;
+
+    @Override
+    public Boolean saveWitchPriceRules(AppGameDTO gameDTO) {
+        AppGame game=gameDTO.getGame();
+        if (null==game.getType()) throw new JeecgBootException("请选择赛事类型");
+        if (null==game.getOrgCode()) throw new JeecgBootException("部门不能为空");
+        int saveGameResult = baseMapper.insert(game);
+        if (saveGameResult<1) {
+            throw new RuntimeException("赛事信息保存失败");
+        }
+        List<AppGamePriceRules> priceRulesList = gameDTO.getGamePriceRules();
+        for (AppGamePriceRules rule : priceRulesList) {
+            rule.setGameId(game.getId());
+            rule.setOrgCode(game.getOrgCode());
+            int savePriceResult = rulesMapper.insert(rule); // 保证每个操作都在事务中
+            if (savePriceResult<1) {
+                throw new RuntimeException("赛事价格规则保存失败");
+            }
+        }
+        return Boolean.TRUE;
+    }
+
+    @Override
+    public Boolean editWitchPriceRules(AppGameDTO gameDTO) {
+        AppGame game=gameDTO.getGame();
+        if (null==game.getType()) throw new JeecgBootException("请选择赛事类型");
+        return Boolean.TRUE;
+    }
+
+    @Override
+    public AppGameDTO queryWitchPriceRulesById(String id) {
+        return null;
+    }
 
+    @Override
+    public Boolean deleteWitchPriceRulesById(String id) {
+        return Boolean.TRUE;
+    }
 }

+ 4 - 4
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/service/impl/AppSitePeiceRulesServiceImpl.java → national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/service/impl/AppSitePriceRulesServiceImpl.java

@@ -1,8 +1,8 @@
 package org.jeecg.modules.system.app.service.impl;
 
-import org.jeecg.modules.system.app.entity.AppSitePeiceRules;
-import org.jeecg.modules.system.app.mapper.AppSitePeiceRulesMapper;
-import org.jeecg.modules.system.app.service.IAppSitePeiceRulesService;
+import org.jeecg.modules.system.app.entity.AppSitePriceRules;
+import org.jeecg.modules.system.app.mapper.AppSitePriceRulesMapper;
+import org.jeecg.modules.system.app.service.IAppSitePriceRulesService;
 import org.springframework.stereotype.Service;
 
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -14,6 +14,6 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  * @Version: V1.0
  */
 @Service
-public class AppSitePeiceRulesServiceImpl extends ServiceImpl<AppSitePeiceRulesMapper, AppSitePeiceRules> implements IAppSitePeiceRulesService {
+public class AppSitePriceRulesServiceImpl extends ServiceImpl<AppSitePriceRulesMapper, AppSitePriceRules> implements IAppSitePriceRulesService {
 
 }

+ 107 - 1
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/service/impl/AppSiteServiceImpl.java

@@ -1,19 +1,125 @@
 package org.jeecg.modules.system.app.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import org.apache.shiro.SecurityUtils;
+import org.jeecg.common.exception.JeecgBootException;
+import org.jeecg.common.system.vo.LoginUser;
+import org.jeecg.modules.system.app.dto.AppSiteDTO;
 import org.jeecg.modules.system.app.entity.AppSite;
+import org.jeecg.modules.system.app.entity.AppSitePriceRules;
 import org.jeecg.modules.system.app.mapper.AppSiteMapper;
+import org.jeecg.modules.system.app.mapper.AppSitePriceRulesMapper;
 import org.jeecg.modules.system.app.service.IAppSiteService;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+import static org.jeecg.common.constant.CommonConstant.SC_INTERNAL_SERVER_ERROR_500;
 
 /**
  * @Description: 场地表
  * @Author: jeecg-boot
- * @Date:   2025-07-03
+ * @Date: 2025-07-03
  * @Version: V1.0
  */
 @Service
 public class AppSiteServiceImpl extends ServiceImpl<AppSiteMapper, AppSite> implements IAppSiteService {
+    @Resource
+    private AppSitePriceRulesMapper priceRulesMapper;
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Boolean saveWitchPriceRules(AppSiteDTO appSiteDTO) {
+        AppSite site = appSiteDTO.getSite();
+        // 校验场地类型是否为空,若为空则返回 false
+        if (null == site.getType()) throw new JeecgBootException("场地类型不能为空", SC_INTERNAL_SERVER_ERROR_500);
+        LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
+        site.setOrgCode(sysUser.getOrgCode());
+        // 通过注入的 baseMapper 插入场地信息
+        int saveSiteResult = baseMapper.insert(site);
+        // 如果插入失败,抛出自定义异常提示“场地信息保存失败”
+        if (saveSiteResult < 1) {
+            throw new JeecgBootException("场地信息保存失败", SC_INTERNAL_SERVER_ERROR_500);
+        }
+
+        // 获取价格规则列表
+        List<AppSitePriceRules> priceRulesList = appSiteDTO.getPriceRulesList();
+        // 遍历价格规则列表并逐一保存
+        for (AppSitePriceRules rule : priceRulesList) {
+            // 设置当前规则对应的场地 ID
+            rule.setSiteId(site.getId());
+            rule.setOrgCode(site.getOrgCode());
+            // 调用 priceRulesMapper 插入价格规则
+            int savePriceResult = priceRulesMapper.insert(rule);
+            // 如果插入失败,抛出自定义异常提示“场地价格规则保存失败”
+            if (savePriceResult < 1) {
+                throw new JeecgBootException("场地价格规则保存失败", SC_INTERNAL_SERVER_ERROR_500);
+            }
+        }
+
+        // 所有操作成功完成后返回 true
+        return Boolean.TRUE;
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Boolean editWitchPriceRules(AppSiteDTO appSiteDTO) {
+        AppSite site = appSiteDTO.getSite();
+        if (null == site.getType()) throw new JeecgBootException("场地类型不能为空", SC_INTERNAL_SERVER_ERROR_500);
+        if (null == site.getOrgCode()) throw new JeecgBootException("部门编码不能为空", SC_INTERNAL_SERVER_ERROR_500);
+        AppSite dbSite = baseMapper.selectById(site.getId());
+        if (null==dbSite) throw new JeecgBootException("未找到对应数据", SC_INTERNAL_SERVER_ERROR_500);
+        LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
+        if (!sysUser.getOrgCode().equals(dbSite.getOrgCode())) throw new JeecgBootException("无权限修改", SC_INTERNAL_SERVER_ERROR_500);
+        // 通过注入的服务调用,保证事务生效
+        int saveSiteResult = baseMapper.updateById(site);
+        if (saveSiteResult < 1) {
+            throw new JeecgBootException("场地信息保存失败", SC_INTERNAL_SERVER_ERROR_500);
+        }
+
+        List<AppSitePriceRules> priceRulesList = appSiteDTO.getPriceRulesList();
+        for (AppSitePriceRules rule : priceRulesList) {
+            rule.setSiteId(dbSite.getId());
+            rule.setOrgCode(site.getOrgCode());
+            int savePriceResult = priceRulesMapper.updateById(rule); // 保证每个操作都在事务中
+            if (savePriceResult < 1) {
+                throw new JeecgBootException("场地价格规则保存失败", SC_INTERNAL_SERVER_ERROR_500);
+            }
+        }
+
+        return Boolean.TRUE;
+    }
+
+    @Override
+    public AppSiteDTO queryWitchPriceRulesById(String id) {
+        AppSite dbSite = baseMapper.selectById(id);
+        if (null==dbSite) throw new JeecgBootException("未找到对应数据", SC_INTERNAL_SERVER_ERROR_500);
+        LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
+        if (!sysUser.getOrgCode().equals(dbSite.getOrgCode())) throw new JeecgBootException("无权限查看", SC_INTERNAL_SERVER_ERROR_500);
+        List<AppSitePriceRules> priceRulesList = priceRulesMapper.selectList(new LambdaQueryWrapper<AppSitePriceRules>().eq(AppSitePriceRules::getSiteId, id));
+        return new AppSiteDTO().setSite(dbSite).setPriceRulesList(priceRulesList);
+    }
 
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Boolean deleteWitchPriceRulesById(String id) {
+        AppSite dbSite = baseMapper.selectById(id);
+        if (null==dbSite) throw new JeecgBootException("未找到对应数据", SC_INTERNAL_SERVER_ERROR_500);
+        LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
+        if (!sysUser.getOrgCode().equals(dbSite.getOrgCode())) throw new JeecgBootException("无权限操作", SC_INTERNAL_SERVER_ERROR_500);
+        int deleteSiteResult = baseMapper.deleteById(id);
+        if (deleteSiteResult>0){
+            int deletePriceResult = priceRulesMapper.delete(Wrappers.<AppSitePriceRules>lambdaQuery().eq(AppSitePriceRules::getSiteId, id));
+            if (deletePriceResult<1) throw new JeecgBootException("场地价格规则删除失败", SC_INTERNAL_SERVER_ERROR_500);
+        }else{
+            throw new JeecgBootException("场地信息删除失败", SC_INTERNAL_SERVER_ERROR_500);
+        }
+        return Boolean.TRUE;
+    }
 }

+ 66 - 0
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/utils/CusUtil.java

@@ -0,0 +1,66 @@
+package org.jeecg.modules.system.app.utils;
+
+import com.google.gson.Gson;
+import org.jeecg.modules.system.app.entity.AppSitePriceRules;
+
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+import java.util.Date;
+
+/**
+ * @author DM
+ * @date 2025/7/3 20:39
+ * @description
+ */
+public class CusUtil {
+    /**
+     *
+     * @param rate
+     * @return
+     */
+    /**
+     * 计算好评率并返回 BigDecimal 类型
+     *
+     * @param totalReviews  总评价数
+     * @param goodReviews   好评数
+     * @return BigDecimal 好评率,保留一位小数,范围 [0.0, 100.0]
+     */
+    public static BigDecimal calculateGoodRate(int totalReviews, int goodReviews) {
+        if (totalReviews <= 0) {
+            return BigDecimal.ZERO.setScale(1, RoundingMode.HALF_UP);
+        }
+
+        BigDecimal total = new BigDecimal(totalReviews);
+        BigDecimal good = new BigDecimal(goodReviews);
+
+        // 计算百分比,并保留一位小数
+        BigDecimal rate = good.divide(total, 3, RoundingMode.HALF_UP)
+                .multiply(new BigDecimal("100"))
+                .setScale(1, RoundingMode.HALF_UP);
+
+        // 控制范围
+        if (rate.compareTo(BigDecimal.ZERO) < 0) {
+            return BigDecimal.ZERO;
+        }
+        if (rate.compareTo(new BigDecimal("100.0")) > 0) {
+            return new BigDecimal("100.0");
+        }
+
+        return rate;
+    }
+    public static void LixTest(){
+        Gson gson=new Gson();
+        AppSitePriceRules object=new AppSitePriceRules();
+        object.setInventory(5)
+              .setDayOfWeek("1")
+              .setOriginalPrice(BigDecimal.valueOf(20))
+              .setSellingPrice(BigDecimal.valueOf(15))
+              .setStartTime(java.sql.Timestamp.valueOf("2023-07-03 00:00:00"))
+              .setEndTime(java.sql.Timestamp.valueOf("2023-07-03 23:59:59"));
+        String json = gson.toJson(object);
+        System.out.println(json);
+    }
+    public static void main(String[] args) {
+       LixTest();
+    }
+}

+ 0 - 23
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/utils/GoodRateUtil.java

@@ -1,23 +0,0 @@
-package org.jeecg.modules.system.app.utils;
-
-/**
- * @author DM
- * @date 2025/7/3 20:39
- * @description
- */
-public class GoodRateUtil {
-    /**
-     *
-     * @param rate
-     * @return
-     */
-//    public static String getRate(double oleRate, double) {
-//        if (rate < 0) {
-//            return "0.0";
-//        }
-//        if (rate > 100) {
-//            return "100.0";
-//        }
-//        return String.format("%.1f", rate);
-//    }
-}