Forráskód Böngészése

feat(app): 增加场地门票数量校验逻辑

- 引入 Gson 库用于解析教学日与非教学日 JSON 数据
- 查询场地信息并解析其教学日和非教学日配置
- 提取教学日与非教学日的门票数量用于后续判断
- 在价格规则校验中增加门票数量不为零的条件判断
SheepHy 3 hete
szülő
commit
ab097e3374

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

@@ -3,6 +3,9 @@ package org.jeecg.modules.app.service.impl;
 import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.google.gson.JsonArray;
+import com.google.gson.JsonObject;
+import com.google.gson.JsonParser;
 import org.apache.commons.lang3.ObjectUtils;
 import org.jeecg.modules.app.dto.GetPlaceListDTO;
 import org.jeecg.modules.app.dto.SearchDTO;
@@ -273,7 +276,18 @@ public class AppHomeServiceImpl implements IAppHomeService {
             for (AppSitePlace sitePlace : sitePlaces) { // 使用增强for循环替代索引循环
                 List<AppSitePriceRules> priceRules = priceRulesMap.getOrDefault(
                         sitePlace.getId(), Collections.emptyList());
-                if (!priceRules.isEmpty()) {
+                AppSite appSite = appSiteMapper.selectById(sitePlace.getSiteId());
+                // 解析教学日数据
+                String teachingDayJson = appSite.getTeachingDay();
+                JsonObject teachingDayObj = JsonParser.parseString(teachingDayJson).getAsJsonObject();
+                JsonArray teachingDayData = teachingDayObj.getAsJsonArray("data");
+                int teachingDayTicketNum = teachingDayData.get(0).getAsJsonObject().get("ticketNum").getAsInt();
+                // 解析非教学日数据
+                String noTeachingDayJson = appSite.getNoTeachingDay();
+                JsonObject noTeachingDayObj = JsonParser.parseString(noTeachingDayJson).getAsJsonObject();
+                JsonArray noTeachingDayData = noTeachingDayObj.getAsJsonArray("data");
+                int noTeachingDayTicketNum = noTeachingDayData.get(0).getAsJsonObject().get("ticketNum").getAsInt();
+                if (!priceRules.isEmpty() && teachingDayTicketNum != 0 && noTeachingDayTicketNum != 0) {
                     ticketWhether = true;
                     break;
                 }