Sfoglia il codice sorgente

refactor(app): 重构课程和场地相关代码

- 优化了课程和场地的 DTO 结构- 重新设计了价格规则的处理逻辑
- 改进了分页查询的实现方式
-统一了异常处理
-调整了部分字段的命名
lix 2 settimane fa
parent
commit
4c77e464ae
17 ha cambiato i file con 387 aggiunte e 96 eliminazioni
  1. 4 14
      national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/controller/AppSiteController.java
  2. 3 3
      national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/dto/AppCoursesDTO.java
  3. 24 0
      national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/dto/AppCoursesPageDTO.java
  4. 89 0
      national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/dto/AppSiteCuDTO.java
  5. 3 3
      national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/dto/AppSiteDTO.java
  6. 25 0
      national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/dto/AppSitePageDTO.java
  7. 0 9
      national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/dto/AppSitePriceRulesDTO.java
  8. 70 0
      national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/dto/AppSiteRuleDTO.java
  9. 20 0
      national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/entity/AppCourses.java
  10. 5 1
      national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/entity/AppSite.java
  11. 4 0
      national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/entity/AppSitePriceRules.java
  12. 6 0
      national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/service/IAppCoureseService.java
  13. 2 1
      national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/service/IAppSiteService.java
  14. 71 28
      national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/service/impl/AppCoureseServiceImpl.java
  15. 1 1
      national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/service/impl/AppGameServiceImpl.java
  16. 57 36
      national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/service/impl/AppSiteServiceImpl.java
  17. 3 0
      national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/vo/AppCategoryVO.java

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

@@ -10,6 +10,7 @@ import org.jeecg.common.api.vo.Result;
 import org.jeecg.common.system.query.QueryGenerator;
 import org.jeecg.common.system.vo.LoginUser;
 import org.jeecg.modules.system.app.dto.AppSiteDTO;
+import org.jeecg.modules.system.app.dto.AppSitePageDTO;
 import org.jeecg.modules.system.app.entity.AppSite;
 import org.jeecg.modules.system.app.entity.AppSitePriceRules;
 import org.jeecg.modules.system.app.service.IAppSitePriceRulesService;
@@ -50,25 +51,14 @@ public class AppSiteController extends JeecgController<AppSite, IAppSiteService>
 	/**
 	 * 分页列表查询
 	 *
-	 * @param appSite
-	 * @param pageNo
-	 * @param pageSize
-	 * @param req
+	 * @param dto
 	 * @return
 	 */
 	//@AutoLog(value = "场地表-分页列表查询")
 	@Operation(summary="场地表-分页列表查询")
 	@GetMapping(value = "/list")
-	public Result<IPage<AppSite>> queryPageList(AppSite appSite,
-								   @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
-								   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
-								   HttpServletRequest req) {
-        QueryWrapper<AppSite> queryWrapper = QueryGenerator.initQueryWrapper(appSite, req.getParameterMap());
-		LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
-		queryWrapper.eq("org_code",loginUser.getOrgCode());
-		Page<AppSite> page = new Page<AppSite>(pageNo, pageSize);
-		IPage<AppSite> pageList = appSiteService.page(page, queryWrapper);
-		return Result.OK(pageList);
+	public Result<IPage<AppSiteDTO>> queryPageList(AppSitePageDTO dto) {
+		return Result.OK(appSiteService.querySiteList(dto));
 	}
 
 	/**

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

@@ -22,9 +22,9 @@ import java.util.List;
 @EqualsAndHashCode(callSuper = false)
 @AllArgsConstructor
 @NoArgsConstructor
-@Schema(description="课程入参DTO")
+@Schema(description="课程课时入参DTO")
 public class AppCoursesDTO {
-    private AppCourses course;
+    private AppCoursesCuDTO courses;
     @ArraySchema(schema = @Schema(implementation = AppCoursesPriceRules.class), minItems = 1)
-    private List<AppCoursesPriceRules> priceRulesList;
+    private List<AppCoursesRuleDTO> priceRulesList;
 }

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

@@ -0,0 +1,24 @@
+package org.jeecg.modules.system.app.dto;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+import lombok.experimental.Accessors;
+
+/**
+ * @author DM
+ * @date 2025/7/8 11:44
+ * @description
+ */
+@Data
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@AllArgsConstructor
+@NoArgsConstructor
+@Schema(description="课程课时入参DTO")
+public class AppCoursesPageDTO extends BasePageDTO {
+    @Schema(description = "名称", example = "名称")
+    private String name;
+}

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

@@ -0,0 +1,89 @@
+package org.jeecg.modules.system.app.dto;
+
+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.jeecgframework.poi.excel.annotation.Excel;
+
+/**
+ * @author DM
+ * @date 2025/7/7 17:39
+ * @description
+ */
+@Data
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@AllArgsConstructor
+@NoArgsConstructor
+@Schema(description="场地入参自定义DTO")
+public class AppSiteCuDTO {
+    @Schema(description = "id")
+    private String id;
+    /**部门id*/
+    @Schema(description = "部门id")
+    private String orgCode;
+    /**商户id;场馆/主办单位/学校等场地*/
+    @Schema(description = "商户id;场馆/主办单位/学校等场地")
+    private String tenantId;
+    /**名称*/
+    @Schema(description = "名称")
+    private String name;
+    /**地址;仅赛事*/
+    @Schema(description = "地址")
+    private String address;
+    /**类型;0学校 1包场 2不固定场*/
+    @Schema(description = "类型;0学校 1包场 2不固定场")
+    private Integer type;
+    /**运动类目id;多个用逗号分割*/
+    @Schema(description = "运动类目id;多个用逗号分割")
+    private String categoryId;
+    /**保险id;可能有多个险种*/
+    @Schema(description = "保险id;可能有多个险种")
+    private String insureIds;
+    /**封面*/
+    @Schema(description = "封面")
+    private String cover;
+    /**背景图;可能数组*/
+    @Schema(description = "背景图;可能数组")
+    private String backgroundImage;
+    /**退款类型;0可退/到期自动退 1限时退 2不可退*/
+    @Schema(description = "退款类型;0可退/到期自动退 1限时退 2不可退")
+    private Integer refundType;
+    /**有效期;单位:天 仅无固定场*/
+    @Schema(description = "有效期;单位:天 仅无固定场")
+    private Integer indate;
+    /**提前预约时间;单位:时 0面预约*/
+    @Schema(description = "提前预约时间;单位:时 0面预约")
+    private Integer advanceTime;
+    /**适用人数*/
+    @Schema(description = "适用人数")
+    private Integer usableCount;
+    /**不可用时间 星期*/
+    @Schema(description = "不可用时间 星期")
+    private String downTime;
+    /**购买限制*/
+    @Schema(description = "购买限制")
+    private Integer buyLimit;
+    /**设施/信息*/
+    @Schema(description = "设施/信息")
+    private String facility;
+    /**教学日开放时段*/
+    @Schema(description = "教学日开放时段")
+    private String teachingDay;
+    /**非教学日开放时段*/
+    @Schema(description = "非教学日开放时段")
+    private String noTeachingDay;
+    /**提示/须知*/
+    @Schema(description = "提示/须知")
+    private String reminder;
+    /**视频*/
+    @Schema(description = "视频")
+    private String video;
+    /**排序*/
+    @Schema(description = "排序")
+    private Integer sort;
+
+}

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

@@ -24,7 +24,7 @@ import java.util.List;
 @NoArgsConstructor
 @Schema(description="场地入参DTO")
 public class AppSiteDTO {
-    private AppSite site;
-    @ArraySchema(schema = @Schema(implementation = AppSitePriceRules.class),  minItems = 1)
-    private List<AppSitePriceRules> priceRulesList;
+    private AppSiteCuDTO site;
+    @ArraySchema(schema = @Schema(implementation = AppSiteRuleDTO.class),  minItems = 1)
+    private List<AppSiteRuleDTO> priceRulesList;
 }

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

@@ -0,0 +1,25 @@
+package org.jeecg.modules.system.app.dto;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+import lombok.experimental.Accessors;
+
+/**
+ * @author DM
+ * @date 2025/7/8 11:25
+ * @description
+ */
+@Data
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@AllArgsConstructor
+@NoArgsConstructor
+@Schema(description="场地分页入参DTO")
+public class AppSitePageDTO extends BasePageDTO{
+    @Schema(description = "名称", example = "名称")
+    private String name;
+
+}

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

@@ -1,9 +0,0 @@
-package org.jeecg.modules.system.app.dto;
-
-/**
- * @author DM
- * @date 2025/7/7 17:39
- * @description
- */
-public class AppSitePriceRulesDTO {
-}

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

@@ -0,0 +1,70 @@
+package org.jeecg.modules.system.app.dto;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+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.jeecgframework.poi.excel.annotation.Excel;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * @author DM
+ * @date 2025/7/8 11:03
+ * @description
+ */
+@Data
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@AllArgsConstructor
+@NoArgsConstructor
+@Schema(description="场地价格规则入参DTO")
+public class AppSiteRuleDTO {
+    @Schema(description = "id")
+    private String id;
+    /**场地*/
+    @Excel(name = "场地", width = 15)
+    @Schema(description = "场地")
+    private String siteId;
+    /**运动类型*/
+    @Excel(name = "运动类型", width = 15)
+    @Schema(description = "运动类型")
+    private String categoryId;
+    /**开始时间*/
+    @Excel(name = "开始时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @Schema(description = "开始时间")
+    private Date startTime;
+    /**结束时间*/
+    @Excel(name = "结束时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @Schema(description = "结束时间")
+    private Date endTime;
+    /**星期几*/
+    @Excel(name = "星期几", width = 15)
+    @Schema(description = "星期几")
+    private String dayOfWeek;
+    /**原价*/
+    @Excel(name = "原价", width = 15)
+    @Schema(description = "原价")
+    private BigDecimal originalPrice;
+    /**售价*/
+    @Excel(name = "售价", width = 15)
+    @Schema(description = "售价")
+    private BigDecimal sellingPrice;
+    /**库存/票数*/
+    @Excel(name = "库存", width = 15)
+    @Schema(description = "库存")
+    private Integer inventory;
+    /**是否教学日0是1不是*/
+    @Excel(name = "是否教学日0是1不是", width = 15)
+    @Schema(description = "是否教学日0是1不是")
+    private Integer isTeaching;
+}

+ 20 - 0
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/entity/AppCourses.java

@@ -101,6 +101,26 @@ public class AppCourses implements Serializable {
 	@Excel(name = "排序", width = 15)
     @Schema(description = "排序")
     private Integer sort;
+	/**限购次数*/
+	@Excel(name = "排序", width = 15)
+    @Schema(description = "排序")
+    private Integer limitNum;
+	/**服务详情*/
+	@Excel(name = "排序", width = 15)
+    @Schema(description = "排序")
+    private Integer details;
+	/**适用人群*/
+	@Excel(name = "排序", width = 15)
+    @Schema(description = "排序")
+    private Integer fitPeople;
+	/**开始时间*/
+	@Excel(name = "排序", width = 15)
+    @Schema(description = "排序")
+    private Integer startTime;
+	/**结束时间*/
+	@Excel(name = "排序", width = 15)
+    @Schema(description = "排序")
+    private Integer endTime;
 	/**系统状态;状态(0-正常,1-冻结)*/
 	@Excel(name = "系统状态;状态(0-正常,1-冻结)", width = 15)
     @Schema(description = "系统状态;状态(0-正常,1-冻结)")

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

@@ -49,10 +49,14 @@ public class AppSite implements Serializable {
 	@Excel(name = "名称", width = 15)
     @Schema(description = "名称")
     private String name;
-	/**地址;仅赛事*/
+	/**地址*/
 	@Excel(name = "地址", width = 15)
     @Schema(description = "地址")
     private String address;
+	/**经纬度*/
+	@Excel(name = "经纬度", width = 15)
+    @Schema(description = "经纬度")
+    private String latitude;
 	/**类型;0学校 1包场 2不固定场*/
 	@Excel(name = "类型;0学校 1包场 2不固定场", width = 15)
     @Schema(description = "类型;0学校 1包场 2不固定场")

+ 4 - 0
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/entity/AppSitePriceRules.java

@@ -77,6 +77,10 @@ public class AppSitePriceRules implements Serializable {
     @Excel(name = "库存", width = 15)
     @Schema(description = "库存")
     private Integer inventory;
+    /**是否教学日0是1不是*/
+    @Excel(name = "是否教学日0是1不是", width = 15)
+    @Schema(description = "是否教学日0是1不是")
+    private Integer isTeaching;
 	/**乐观锁*/
 	@Excel(name = "乐观锁", width = 15)
     @Schema(description = "乐观锁")

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

@@ -1,6 +1,10 @@
 package org.jeecg.modules.system.app.service;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import org.jeecg.modules.system.app.dto.AppCoursesDTO;
+import org.jeecg.modules.system.app.dto.AppCoursesPageDTO;
+import org.jeecg.modules.system.app.dto.AppSiteDTO;
+import org.jeecg.modules.system.app.dto.AppSitePageDTO;
 import org.jeecg.modules.system.app.entity.AppCourses;
 import com.baomidou.mybatisplus.extension.service.IService;
 
@@ -36,4 +40,6 @@ public interface IAppCoureseService extends IService<AppCourses> {
      */
     Boolean deleteWitchPriceRulesById(String id);
 
+    IPage<AppCoursesDTO> querySiteList(AppCoursesPageDTO dto);
+
 }

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

@@ -3,6 +3,7 @@ package org.jeecg.modules.system.app.service;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import org.jeecg.modules.system.app.dto.AppCategoryDTO;
 import org.jeecg.modules.system.app.dto.AppSiteDTO;
+import org.jeecg.modules.system.app.dto.AppSitePageDTO;
 import org.jeecg.modules.system.app.entity.AppSite;
 import com.baomidou.mybatisplus.extension.service.IService;
 import org.jeecg.modules.system.app.vo.AppCategoryVO;
@@ -40,6 +41,6 @@ public interface IAppSiteService extends IService<AppSite> {
      */
     Boolean deleteWitchPriceRulesById(String id);
 
-    IPage<AppSite> querySiteList(AppSiteDTO dto);
+    IPage<AppSiteDTO> querySiteList(AppSitePageDTO dto);
 
 }

+ 71 - 28
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/service/impl/AppCoureseServiceImpl.java

@@ -1,20 +1,29 @@
 package org.jeecg.modules.system.app.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.apache.commons.lang3.StringUtils;
 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.AppCoursesCuDTO;
 import org.jeecg.modules.system.app.dto.AppCoursesDTO;
+import org.jeecg.modules.system.app.dto.AppCoursesPageDTO;
+import org.jeecg.modules.system.app.dto.AppCoursesRuleDTO;
 import org.jeecg.modules.system.app.entity.AppCourses;
 import org.jeecg.modules.system.app.entity.AppCoursesPriceRules;
 import org.jeecg.modules.system.app.mapper.AppCoursesMapper;
 import org.jeecg.modules.system.app.mapper.AppCoursesPriceRulesMapper;
 import org.jeecg.modules.system.app.service.IAppCoureseService;
+import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
 
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 
 import javax.annotation.Resource;
+import java.util.ArrayList;
 import java.util.List;
 
 import static org.jeecg.common.constant.CommonConstant.SC_INTERNAL_SERVER_ERROR_500;
@@ -28,25 +37,29 @@ import static org.jeecg.common.constant.CommonConstant.SC_INTERNAL_SERVER_ERROR_
 @Service
 public class AppCoureseServiceImpl extends ServiceImpl<AppCoursesMapper, AppCourses> implements IAppCoureseService {
     @Resource
-    AppCoursesPriceRulesMapper coursesPriceRulesMapper;
+    AppCoursesPriceRulesMapper priceRulesMapper;
 
     @Override
     public Boolean saveWitchPriceRules(AppCoursesDTO appCoursesDTO) {
-        AppCourses course = appCoursesDTO.getCourse();
-        if (null == course.getCategoryId()) throw new JeecgBootException("请选择课程类别");
+        AppCoursesCuDTO coursesCuDTO = appCoursesDTO.getCourses();
+        if (null == coursesCuDTO.getCategoryId()) throw new JeecgBootException("请选择课程类别");
+        AppCourses appCourses = new AppCourses();
         LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
-        course.setOrgCode(loginUser.getOrgCode());
-        course.setTenantId(loginUser.getOrgId());
-        int saveCourseResult = baseMapper.insert(course);
+        BeanUtils.copyProperties(coursesCuDTO, appCourses);
+        appCourses.setOrgCode(loginUser.getOrgCode());
+        appCourses.setTenantId(loginUser.getOrgId());
+        int saveCourseResult = baseMapper.insert(appCourses);
         if (saveCourseResult < 1) {
             throw new JeecgBootException("课程信息保存失败");
         }
-        List<AppCoursesPriceRules> priceRulesList = appCoursesDTO.getPriceRulesList();
-        for (AppCoursesPriceRules rule : priceRulesList) {
-            rule.setCoursesId(course.getId());
-            rule.setOrgCode(course.getOrgCode());
-            rule.setTenantId(course.getTenantId());
-            int savePriceResult = coursesPriceRulesMapper.insert(rule); // 保证每个操作都在事务中
+        List<AppCoursesRuleDTO>coursesRuleDTOS= appCoursesDTO.getPriceRulesList();
+        for (AppCoursesRuleDTO rule : coursesRuleDTOS) {
+            AppCoursesPriceRules appCoursesPriceRules = new AppCoursesPriceRules();
+            BeanUtils.copyProperties(rule, appCoursesPriceRules);
+            appCoursesPriceRules.setCoursesId(appCourses.getId());
+            appCoursesPriceRules.setOrgCode(appCourses.getOrgCode());
+            appCoursesPriceRules.setTenantId(appCourses.getTenantId());
+            int savePriceResult = priceRulesMapper.insert(appCoursesPriceRules); // 保证每个操作都在事务中
             if (savePriceResult < 1) {
                 throw new JeecgBootException("课程价格规则保存失败");
             }
@@ -56,23 +69,27 @@ public class AppCoureseServiceImpl extends ServiceImpl<AppCoursesMapper, AppCour
 
     @Override
     public Boolean editWitchPriceRules(AppCoursesDTO appCoursesDTO) {
-        AppCourses course = appCoursesDTO.getCourse();
-        if (null == course.getCategoryId()) throw new JeecgBootException("请选择课程类别");
+        AppCoursesCuDTO coursesCuDTO = appCoursesDTO.getCourses();
+        if (null == coursesCuDTO.getCategoryId()) throw new JeecgBootException("请选择课程类别");
         LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
-        AppCourses dbCourse = baseMapper.selectById(course.getId());
-        checkPermission(loginUser, dbCourse);
+        AppCourses dbCourse = baseMapper.selectById(coursesCuDTO.getId());
+//        checkPermission(loginUser, dbCourse);
+        AppCourses course = new AppCourses();
+        BeanUtils.copyProperties(coursesCuDTO, course);
         course.setOrgCode(loginUser.getOrgCode());
         course.setTenantId(loginUser.getOrgId());
         int updateCourseResult = baseMapper.updateById(course);
         if (updateCourseResult < 1) {
             throw new JeecgBootException("课程信息保存失败");
         }
-        List<AppCoursesPriceRules> priceRulesList = appCoursesDTO.getPriceRulesList();
-        for (AppCoursesPriceRules rule : priceRulesList) {
-            rule.setCoursesId(course.getId());
-            rule.setOrgCode(course.getOrgCode());
-            rule.setTenantId(course.getTenantId());
-            int savePriceResult = coursesPriceRulesMapper.updateById(rule);
+        List<AppCoursesRuleDTO> appCoursesRuleDTOS = appCoursesDTO.getPriceRulesList();
+        for (AppCoursesRuleDTO rule : appCoursesRuleDTOS) {
+            AppCoursesPriceRules appCoursesPriceRules = new AppCoursesPriceRules();
+            BeanUtils.copyProperties(rule, appCoursesPriceRules);
+            appCoursesPriceRules.setCoursesId(course.getId());
+            appCoursesPriceRules.setOrgCode(course.getOrgCode());
+            appCoursesPriceRules.setTenantId(course.getTenantId());
+            int savePriceResult = priceRulesMapper.updateById(appCoursesPriceRules);
             if (savePriceResult < 1) {
                 throw new JeecgBootException("课程价格规则保存失败");
             }
@@ -85,9 +102,19 @@ public class AppCoureseServiceImpl extends ServiceImpl<AppCoursesMapper, AppCour
         AppCourses dbCourse = baseMapper.selectById(id);
         if (null==dbCourse) throw new JeecgBootException("未找到对应数据", SC_INTERNAL_SERVER_ERROR_500);
         LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
-        checkPermission(sysUser,dbCourse);
-        List<AppCoursesPriceRules> priceRulesList = coursesPriceRulesMapper.selectList(Wrappers.<AppCoursesPriceRules>lambdaQuery().eq(AppCoursesPriceRules::getCoursesId, id));
-        return new AppCoursesDTO(dbCourse, priceRulesList);
+//        checkPermission(sysUser,dbCourse);
+        List<AppCoursesPriceRules> priceRulesList =
+                priceRulesMapper.selectList(Wrappers.<AppCoursesPriceRules>lambdaQuery().eq(AppCoursesPriceRules::getCoursesId, id));
+        AppCoursesCuDTO coursesCuDTO = new AppCoursesCuDTO();
+        BeanUtils.copyProperties(dbCourse, coursesCuDTO);
+        List<AppCoursesRuleDTO> priceRules =new ArrayList<>();
+        priceRulesList.forEach(rule-> {
+            AppCoursesRuleDTO appCoursesRuleDTO = new AppCoursesRuleDTO();
+            BeanUtils.copyProperties(rule, appCoursesRuleDTO);
+            priceRules.add(appCoursesRuleDTO);
+        });
+
+        return new AppCoursesDTO(coursesCuDTO, priceRules);
     }
 
     @Override
@@ -95,22 +122,38 @@ public class AppCoureseServiceImpl extends ServiceImpl<AppCoursesMapper, AppCour
         AppCourses dbCourse = baseMapper.selectById(id);
         if (null==dbCourse) throw new JeecgBootException("未找到对应数据", SC_INTERNAL_SERVER_ERROR_500);
         LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
-        checkPermission(sysUser,dbCourse);
+//        checkPermission(sysUser,dbCourse);
         int deleteCourseResult = baseMapper.deleteById(id);
         if (deleteCourseResult < 1) {
             throw new JeecgBootException("课程信息删除失败", SC_INTERNAL_SERVER_ERROR_500);
         }
-        int deletePriceResult = coursesPriceRulesMapper.delete(Wrappers.<AppCoursesPriceRules>lambdaQuery().eq(AppCoursesPriceRules::getCoursesId, id));
+        int deletePriceResult = priceRulesMapper.delete(Wrappers.<AppCoursesPriceRules>lambdaQuery().eq(AppCoursesPriceRules::getCoursesId, id));
         if (deletePriceResult<1) throw new JeecgBootException("课程价格规则删除失败", SC_INTERNAL_SERVER_ERROR_500);
         return Boolean.TRUE;
     }
 
+    @Override
+    public IPage<AppCoursesDTO> querySiteList(AppCoursesPageDTO dto) {
+//        Page<AppCourses> page = new Page<>(dto.getPageNum(), dto.getPageSize());
+//        LambdaQueryWrapper<AppCourses> wrapper = Wrappers.<AppCourses>lambdaQuery()
+//                .like(StringUtils.isNotBlank(dto.getName()), AppCourses::getName, dto.getName());
+////                .eq(AppCourses::getOrgCode, loginUser.getOrgCode());
+//        IPage<AppCourses> resultPage = baseMapper.selectPage(page, wrapper);
+//        return resultPage.convert(record -> {
+//            AppCoursesCuDTO cuDTO = new AppCoursesCuDTO();
+//            BeanUtils.copyProperties(cuDTO, record);
+//            List<AppCoursesPriceRules> priceRulesList = priceRulesMapper.selectList(Wrappers.lambdaQuery().eq(::getCoursesId, record.getId()));
+//
+//        })
+        return null;
+    }
+
     /**
      *  校验权限
      * @param loginUser
      * @param course
      */
     private void checkPermission(LoginUser loginUser, AppCourses course) {
-        if (!loginUser.getOrgCode().equals(course.getOrgCode())) throw new JeecgBootException("无权限修改", SC_INTERNAL_SERVER_ERROR_500);
+        if (!loginUser.getOrgCode().equals(course.getOrgCode())) throw new JeecgBootException("无权限操作", SC_INTERNAL_SERVER_ERROR_500);
     }
 }

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

@@ -115,6 +115,6 @@ public class AppGameServiceImpl extends ServiceImpl<AppGameMapper, AppGame> impl
      * @param game
      */
     private void checkPermission(LoginUser sysUser, AppGame game) {
-        if (!sysUser.getOrgCode().equals(game.getOrgCode())) throw new JeecgBootException("无权限修改", SC_INTERNAL_SERVER_ERROR_500);
+        if (!sysUser.getOrgCode().equals(game.getOrgCode())) throw new JeecgBootException("无权限操作", SC_INTERNAL_SERVER_ERROR_500);
     }
 }

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

@@ -2,29 +2,26 @@ package org.jeecg.modules.system.app.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.apache.commons.lang3.StringUtils;
 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.AppCategoryDTO;
-import org.jeecg.modules.system.app.dto.AppSiteDTO;
-import org.jeecg.modules.system.app.entity.AppCategory;
+import org.jeecg.modules.system.app.dto.*;
 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.jeecg.modules.system.app.vo.AppCategoryVO;
 import org.springframework.beans.BeanUtils;
-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.ArrayList;
 import java.util.List;
 
 import static org.jeecg.common.constant.CommonConstant.SC_INTERNAL_SERVER_ERROR_500;
@@ -43,9 +40,11 @@ public class AppSiteServiceImpl extends ServiceImpl<AppSiteMapper, AppSite> impl
     @Override
     @Transactional(rollbackFor = Exception.class)
     public Boolean saveWitchPriceRules(AppSiteDTO appSiteDTO) {
-        AppSite site = appSiteDTO.getSite();
-        if (null == site.getType()) throw new JeecgBootException("场地类型不能为空", SC_INTERNAL_SERVER_ERROR_500);
+        AppSiteCuDTO siteCuDTO = appSiteDTO.getSite();
+        if (null == siteCuDTO.getType()) throw new JeecgBootException("场地类型不能为空", SC_INTERNAL_SERVER_ERROR_500);
         LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
+        AppSite site = new AppSite();
+        BeanUtils.copyProperties(siteCuDTO, site);
         site.setOrgCode(sysUser.getOrgCode());//部门默认登录用户部门
         site.setTenantId(sysUser.getOrgId());
         int saveSiteResult = baseMapper.insert(site);
@@ -55,14 +54,15 @@ public class AppSiteServiceImpl extends ServiceImpl<AppSiteMapper, AppSite> impl
         }
 
         // 获取价格规则列表
-        List<AppSitePriceRules> priceRulesList = appSiteDTO.getPriceRulesList();
-        for (AppSitePriceRules rule : priceRulesList) {
+        List<AppSiteRuleDTO> priceRulesList = appSiteDTO.getPriceRulesList();
+        for (AppSiteRuleDTO rule : priceRulesList) {
             // 设置当前规则对应的场地 ID
-            rule.setSiteId(site.getId());
-            rule.setOrgCode(site.getOrgCode());
-            rule.setTenantId(site.getTenantId());
+            AppSitePriceRules appSitePriceRules = new AppSitePriceRules();
+            appSitePriceRules.setSiteId(site.getId());
+            appSitePriceRules.setOrgCode(site.getOrgCode());
+            appSitePriceRules.setTenantId(site.getTenantId());
             // 调用 priceRulesMapper 插入价格规则
-            int savePriceResult = priceRulesMapper.insert(rule);
+            int savePriceResult = priceRulesMapper.insert(appSitePriceRules);
             // 如果插入失败,抛出自定义异常提示“场地价格规则保存失败”
             if (savePriceResult < 1) {
                 throw new JeecgBootException("场地价格规则保存失败", SC_INTERNAL_SERVER_ERROR_500);
@@ -76,12 +76,14 @@ public class AppSiteServiceImpl extends ServiceImpl<AppSiteMapper, AppSite> impl
     @Override
     @Transactional(rollbackFor = Exception.class)
     public Boolean editWitchPriceRules(AppSiteDTO appSiteDTO) {
-        AppSite site = appSiteDTO.getSite();
+        AppSiteCuDTO siteCuDTO = appSiteDTO.getSite();
+        AppSite site = new AppSite();
+        BeanUtils.copyProperties(siteCuDTO, site);
         if (null == site.getType()) 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();
-        checkPermission(dbSite,sysUser);
+//        checkPermission(dbSite,sysUser);
         site.setOrgCode(sysUser.getOrgCode());//部门默认登录用户部门
         site.setTenantId(sysUser.getOrgId());
         int updateSiteResult = baseMapper.updateById(site);
@@ -89,12 +91,14 @@ public class AppSiteServiceImpl extends ServiceImpl<AppSiteMapper, AppSite> impl
             throw new JeecgBootException("场地信息保存失败", SC_INTERNAL_SERVER_ERROR_500);
         }
 
-        List<AppSitePriceRules> priceRulesList = appSiteDTO.getPriceRulesList();
-        for (AppSitePriceRules rule : priceRulesList) {
-            rule.setSiteId(site.getId());
-            rule.setOrgCode(site.getOrgCode());
-            rule.setTenantId(site.getTenantId());
-            int savePriceResult = priceRulesMapper.updateById(rule); // 保证每个操作都在事务中
+        List<AppSiteRuleDTO> priceRulesList = appSiteDTO.getPriceRulesList();
+        for (AppSiteRuleDTO rule : priceRulesList) {
+            AppSitePriceRules appSitePriceRules = new AppSitePriceRules();
+            BeanUtils.copyProperties(rule, appSitePriceRules);
+            appSitePriceRules.setSiteId(site.getId());
+            appSitePriceRules.setOrgCode(site.getOrgCode());
+            appSitePriceRules.setTenantId(site.getTenantId());
+            int savePriceResult = priceRulesMapper.updateById(appSitePriceRules); // 保证每个操作都在事务中
             if (savePriceResult < 1) {
                 throw new JeecgBootException("场地价格规则保存失败", SC_INTERNAL_SERVER_ERROR_500);
             }
@@ -107,10 +111,18 @@ public class AppSiteServiceImpl extends ServiceImpl<AppSiteMapper, AppSite> impl
     public AppSiteDTO queryWitchPriceRulesById(String id) {
         AppSite dbSite = baseMapper.selectById(id);
         if (null==dbSite) throw new JeecgBootException("未找到对应数据", SC_INTERNAL_SERVER_ERROR_500);
+        AppSiteCuDTO appSiteCuDTO = new AppSiteCuDTO();
+        BeanUtils.copyProperties(dbSite, appSiteCuDTO);
         LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
-        checkPermission(dbSite,sysUser);
+//        checkPermission(dbSite,sysUser);
         List<AppSitePriceRules> priceRulesList = priceRulesMapper.selectList(Wrappers.<AppSitePriceRules>lambdaQuery().eq(AppSitePriceRules::getSiteId, id));
-        return new AppSiteDTO(dbSite,priceRulesList);
+        List<AppSiteRuleDTO> priceRulesDTOList = new ArrayList<>();
+        priceRulesList.forEach(rule-> {
+            AppSiteRuleDTO appSiteRuleDTO = new AppSiteRuleDTO();
+            BeanUtils.copyProperties(rule, appSiteRuleDTO);
+            priceRulesDTOList.add(appSiteRuleDTO);
+        });
+        return new AppSiteDTO(appSiteCuDTO,priceRulesDTOList);
     }
 
     @Override
@@ -119,7 +131,7 @@ public class AppSiteServiceImpl extends ServiceImpl<AppSiteMapper, AppSite> impl
         AppSite dbSite = baseMapper.selectById(id);
         if (null==dbSite) throw new JeecgBootException("未找到对应数据", SC_INTERNAL_SERVER_ERROR_500);
         LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
-        checkPermission(dbSite,sysUser);
+//        checkPermission(dbSite,sysUser);
         int deleteSiteResult = baseMapper.deleteById(id);
         if (deleteSiteResult>0){
             int deletePriceResult = priceRulesMapper.delete(Wrappers.<AppSitePriceRules>lambdaQuery().eq(AppSitePriceRules::getSiteId, id));
@@ -131,17 +143,26 @@ public class AppSiteServiceImpl extends ServiceImpl<AppSiteMapper, AppSite> impl
     }
 
     @Override
-    public IPage<AppSite> querySiteList(AppSiteDTO dto) {
-//        Page<AppSite> page = new Page<>(dto.getPageNum(), dto.getPageSize());
-//        LambdaQueryWrapper<AppSite> wrapper = Wrappers.<AppSite>lambdaQuery()
-//                .like(StringUtils.isNotBlank(dto.getName()), AppSite::getName, dto.getName());
-//        IPage<AppSite> resultPage = baseMapper.selectPage(page, wrapper);
-//        return resultPage.convert(record -> {
-//            AppSiteVO vo = new AppCategoryVO();
-//            BeanUtils.copyProperties(record, vo);
-//            return vo;
-//        });
-        return null;
+    public IPage<AppSiteDTO> querySiteList(AppSitePageDTO dto) {
+        Page<AppSite> page = new Page<>(dto.getPageNum(), dto.getPageSize());
+        LambdaQueryWrapper<AppSite> wrapper = Wrappers.<AppSite>lambdaQuery()
+                .like(StringUtils.isNotBlank(dto.getName()), AppSite::getName, dto.getName());
+        IPage<AppSite> resultPage = baseMapper.selectPage(page, wrapper);
+
+        return resultPage.convert(record -> {
+            AppSiteCuDTO cuDTO = new AppSiteCuDTO();
+            BeanUtils.copyProperties(record, cuDTO);
+            List<AppSitePriceRules> priceRulesList = priceRulesMapper.selectList(
+                    Wrappers.<AppSitePriceRules>lambdaQuery().eq(AppSitePriceRules::getSiteId, record.getId()));
+            List<AppSiteRuleDTO> priceRulesDTOList = new ArrayList<>();
+            priceRulesList.forEach(rule-> {
+                AppSiteRuleDTO appSiteRuleDTO = new AppSiteRuleDTO();
+                BeanUtils.copyProperties(rule, appSiteRuleDTO);
+                priceRulesDTOList.add(appSiteRuleDTO);
+            });
+
+            return new AppSiteDTO(cuDTO, priceRulesDTOList);
+        });
     }
 
     /**

+ 3 - 0
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/vo/AppCategoryVO.java

@@ -21,6 +21,9 @@ import java.util.Date;
 @NoArgsConstructor
 @Schema(description="订单入参DTO")
 public class AppCategoryVO {
+    /**id*/
+    @Schema(description = "id")
+    private String id;
     /**名称*/
     @Schema(description = "名称")
     private String name;