From 29dc1f1b83a562ac877cc4466a17a2112529c184 Mon Sep 17 00:00:00 2001
From: mitao <2763622819@qq.com>
Date: 星期一, 27 十月 2025 17:16:47 +0800
Subject: [PATCH] 场地管理接口
---
cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TSiteController.java | 100 +++++++++++++++++++++++++--------
cloud-server-management/src/main/webapp/static/modular/system/tSite/tSite.js | 30 +++++-----
cloud-server-management/src/main/java/com/dsh/course/feignClient/other/model/Site.java | 33 +++++++++++
cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/TSite.java | 6 ++
cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/TSitePrice.java | 8 +-
5 files changed, 134 insertions(+), 43 deletions(-)
diff --git a/cloud-server-management/src/main/java/com/dsh/course/feignClient/other/model/Site.java b/cloud-server-management/src/main/java/com/dsh/course/feignClient/other/model/Site.java
index 011e972..9f9d5bf 100644
--- a/cloud-server-management/src/main/java/com/dsh/course/feignClient/other/model/Site.java
+++ b/cloud-server-management/src/main/java/com/dsh/course/feignClient/other/model/Site.java
@@ -8,6 +8,7 @@
import lombok.Data;
import java.util.Date;
+import java.util.List;
/**
* @author zhibing.pu
@@ -137,4 +138,36 @@
// 是否可预约 0否1是
@TableField("reservation")
private Integer reservation;
+
+ /**
+ * 面向人群:1=订场,2=散客,多个用逗号分隔(如:1,2)
+ */
+ @TableField("targetAudience")
+ private String targetAudience;
+
+ /**
+ * 容纳散客数(仅当包含散客时有效)
+ */
+ @TableField("walkinCapacity")
+ private Integer walkinCapacity;
+
+ /**
+ * 价格详情列表(不存储在数据库,用于接收前端传递的价格数据)
+ */
+ @TableField(exist = false)
+ private List<PriceDTO> priceDTOS;
+
+ /**
+ * 价格详情内部类
+ */
+ @Data
+ public static class PriceDTO {
+ private String startTime;
+ private String endTime;
+ private Integer dayOfWeek;
+ private Integer targetAudience;
+ private Integer fieldType;
+ private Double cashPrice;
+ private Double coinPrice;
+ }
}
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TSiteController.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TSiteController.java
index 7a9e65a..75abdb6 100644
--- a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TSiteController.java
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TSiteController.java
@@ -1,18 +1,12 @@
package com.dsh.guns.modular.system.controller.code;
-import java.math.BigDecimal;
import cn.hutool.core.collection.CollectionUtil;
-import cn.hutool.crypto.SecureUtil;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.dsh.course.feignClient.account.CityClient;
import com.dsh.course.feignClient.account.CityManagerClient;
-import com.dsh.course.feignClient.account.StoreStaffClient;
-import com.dsh.course.feignClient.account.model.CityListQuery;
import com.dsh.course.feignClient.account.model.CityManager;
-import com.dsh.course.feignClient.account.model.TCityManager;
import com.dsh.course.feignClient.competition.CompetitionClient;
import com.dsh.course.feignClient.other.SiteClient;
import com.dsh.course.feignClient.other.SiteLockClient;
@@ -24,33 +18,46 @@
import com.dsh.course.mapper.UserMapper;
import com.dsh.guns.config.UserExt;
import com.dsh.guns.core.base.controller.BaseController;
-import com.dsh.guns.core.base.tips.SuccessTip;
-import com.dsh.guns.core.common.constant.factory.PageFactory;
-import com.dsh.guns.core.util.ToolUtil;
-import com.dsh.guns.modular.system.model.*;
-import com.dsh.guns.modular.system.service.*;
+import com.dsh.guns.modular.system.model.ExpireSiteSearchVO;
+import com.dsh.guns.modular.system.model.Region;
+import com.dsh.guns.modular.system.model.SiteSearchVO;
+import com.dsh.guns.modular.system.model.Store;
+import com.dsh.guns.modular.system.model.TCity;
+import com.dsh.guns.modular.system.model.TOperator;
+import com.dsh.guns.modular.system.model.TOperatorCity;
+import com.dsh.guns.modular.system.model.TSite;
+import com.dsh.guns.modular.system.model.TSitePrice;
+import com.dsh.guns.modular.system.model.TSiteType;
+import com.dsh.guns.modular.system.model.TStore;
+import com.dsh.guns.modular.system.service.ICityService;
+import com.dsh.guns.modular.system.service.IRegionService;
+import com.dsh.guns.modular.system.service.IStoreService;
+import com.dsh.guns.modular.system.service.ITSitePriceService;
+import com.dsh.guns.modular.system.service.ITSiteService;
+import com.dsh.guns.modular.system.service.ITSiteTypeService;
+import com.dsh.guns.modular.system.service.StoreConfigService;
+import com.dsh.guns.modular.system.service.TOperatorCityService;
+import com.dsh.guns.modular.system.service.TOperatorService;
import com.dsh.guns.modular.system.util.HttpRequestUtil;
import com.dsh.guns.modular.system.util.ResultUtil;
-
-import groovyjarjarpicocli.CommandLine;
-import net.bytebuddy.asm.Advice;
-import org.apache.http.HttpResponse;
-import org.apache.poi.ss.formula.functions.T;
-import org.aspectj.weaver.ast.Var;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.http.HttpRequest;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
-import org.springframework.util.StringUtils;
-import org.springframework.web.bind.annotation.*;
-import org.springframework.web.servlet.resource.HttpResource;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
import javax.annotation.Resource;
-import java.lang.reflect.Type;
+import java.math.BigDecimal;
import java.text.DateFormat;
-import java.text.ParseException;
import java.text.SimpleDateFormat;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
/**
* 车辆管理控制器
@@ -95,6 +102,8 @@
private IRegionService regionService;
@Autowired
private SiteLockClient siteLockClient;
+ @Autowired
+ private ITSitePriceService sitePriceService;
/**
@@ -506,7 +515,44 @@
Integer integer1 = siteClient.addSite1(site);
// Integer integer = Integer.valueOf(spaceId);
+ // 保存价格数据
+ if (site.getPriceDTOS() != null && !site.getPriceDTOS().isEmpty()) {
+ saveSitePriceDetails(site.getId(), site.getPriceDTOS());
+ }
+
return ResultUtil.success("添加成功");
+ }
+
+ /**
+ * 保存场地价格详情到 t_site_price 表
+ * @param siteId 场地ID
+ * @param priceDTOS 价格详情列表
+ */
+ private void saveSitePriceDetails(Integer siteId, List<Site.PriceDTO> priceDTOS) {
+ Date now = new Date();
+
+ // 批量保存价格数据
+ List<TSitePrice> sitePrices = new ArrayList<>();
+ for (Site.PriceDTO detail : priceDTOS) {
+ TSitePrice sitePrice = new TSitePrice();
+ sitePrice.setSiteId(siteId);
+ sitePrice.setStartTime(detail.getStartTime());
+ sitePrice.setEndTime(detail.getEndTime());
+ sitePrice.setDayOfWeek(detail.getDayOfWeek());
+ sitePrice.setTargetAudience(detail.getTargetAudience());
+ sitePrice.setFieldType(detail.getFieldType());
+ sitePrice.setCashPrice(detail.getCashPrice() != null ? BigDecimal.valueOf(detail.getCashPrice()) : BigDecimal.ZERO);
+ sitePrice.setCoinPrice(detail.getCoinPrice() != null ? BigDecimal.valueOf(detail.getCoinPrice()) : BigDecimal.ZERO);
+ sitePrice.setInsertTime(now);
+ sitePrice.setUpdateTime(now);
+
+ sitePrices.add(sitePrice);
+ }
+
+ // 批量插入
+ if (!sitePrices.isEmpty()) {
+ sitePriceService.saveBatch(sitePrices);
+ }
}
/**
* 编辑场地管理
@@ -531,6 +577,12 @@
site.setInsertTime(new Date());
site.setState(1);
siteClient.addSite(site);
+ // 保存价格数据
+ if (site.getPriceDTOS() != null && !site.getPriceDTOS().isEmpty()) {
+ // 先删除原有价格数据
+ sitePriceService.remove(new QueryWrapper<TSitePrice>().eq("siteId", site.getId()));
+ saveSitePriceDetails(site.getId(), site.getPriceDTOS());
+ }
return ResultUtil.success();
}
/**
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/TSite.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/TSite.java
index 61b39bc..6ee6d8f 100644
--- a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/TSite.java
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/TSite.java
@@ -133,4 +133,10 @@
private Integer sign;
@TableField("reservation")
private Integer reservation;
+
+ @TableField("targetAudience")
+ private String targetAudience;
+
+ @TableField("walkinCapacity")
+ private Integer walkinCapacity;
}
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/TSitePrice.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/TSitePrice.java
index 1cfa932..fd9af57 100644
--- a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/TSitePrice.java
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/TSitePrice.java
@@ -34,12 +34,12 @@
private Integer dayOfWeek;
@TableField("targetAudience")
- @ApiModelProperty(value = "面向人群:booking=订场,walkin=散客")
- private String targetAudience;
+ @ApiModelProperty(value = "面向人群:1=订场,2=散客")
+ private Integer targetAudience;
@TableField("fieldType")
- @ApiModelProperty(value = "场地类型:full=全场,half=半场")
- private String fieldType;
+ @ApiModelProperty(value = "场地类型:1=全场,2=半场")
+ private Integer fieldType;
@TableField("cashPrice")
@ApiModelProperty(value = "现金价格(元)")
diff --git a/cloud-server-management/src/main/webapp/static/modular/system/tSite/tSite.js b/cloud-server-management/src/main/webapp/static/modular/system/tSite/tSite.js
index 565eed6..e3bedca 100644
--- a/cloud-server-management/src/main/webapp/static/modular/system/tSite/tSite.js
+++ b/cloud-server-management/src/main/webapp/static/modular/system/tSite/tSite.js
@@ -1264,9 +1264,9 @@
}
// 收集价格数据
- var priceDetails = TSite.collectPriceData();
+ var priceDTOS = TSite.collectPriceData();
- if (priceDetails.length === 0) {
+ if (priceDTOS.length === 0) {
Feng.error("请至少添加一个时段并填写价格!");
return;
}
@@ -1306,8 +1306,8 @@
basicData.walkinCapacity = walkinChecked ? parseInt($("#walkin_capacity").val()) : 0;
basicData.nextName = nextNames.join(',');
basicData.halfName = halfNames.join(',');
- basicData.isHalf = parseInt(isHalf);
- basicData.priceDetails = priceDetails;
+ basicData.ishalf = parseInt(isHalf);
+ basicData.priceDTOS = priceDTOS;
// 确认提交
layer.confirm('确定要保存场地信息吗?', {
@@ -1479,10 +1479,10 @@
}
/**
- * 收集价格数据
+ * 收集价格数据(返回符合后端 PriceDTO 格式的数据)
*/
TSite.collectPriceData = function() {
- var priceDetails = [];
+ var priceDTOS = [];
var isHalf = TSite.priceConfig ? TSite.priceConfig.isHalf : 2;
var bookingChecked = $("#audience_booking").is(':checked');
var walkinChecked = $("#audience_walkin").is(':checked');
@@ -1512,11 +1512,11 @@
// 全场价格
if (fullCash > 0 || fullCoin > 0) {
- priceDetails.push({
+ priceDTOS.push({
startTime: startTime,
endTime: endTime,
dayOfWeek: day,
- targetAudience: 1,
+ targetAudience: "1", // String 类型,1=订场
fieldType: 'full',
cashPrice: fullCash,
coinPrice: fullCoin
@@ -1529,11 +1529,11 @@
var halfCoin = parseFloat($("#booking_" + index + "_" + day + "_half_coin").val() || 0);
if (halfCash > 0 || halfCoin > 0) {
- priceDetails.push({
+ priceDTOS.push({
startTime: startTime,
endTime: endTime,
dayOfWeek: day,
- targetAudience: 1,
+ targetAudience: "1", // String 类型,1=订场
fieldType: 'half',
cashPrice: halfCash,
coinPrice: halfCoin
@@ -1569,11 +1569,11 @@
// 全场价格
if (fullCash > 0 || fullCoin > 0) {
- priceDetails.push({
+ priceDTOS.push({
startTime: startTime,
endTime: endTime,
dayOfWeek: day,
- targetAudience: 2,
+ targetAudience: "2", // String 类型,2=散客
fieldType: 'full',
cashPrice: fullCash,
coinPrice: fullCoin
@@ -1586,11 +1586,11 @@
var halfCoin = parseFloat($("#walkin_" + index + "_" + day + "_half_coin").val() || 0);
if (halfCash > 0 || halfCoin > 0) {
- priceDetails.push({
+ priceDTOS.push({
startTime: startTime,
endTime: endTime,
dayOfWeek: day,
- targetAudience: 2,
+ targetAudience: "2", // String 类型,2=散客
fieldType: 'half',
cashPrice: halfCash,
coinPrice: halfCoin
@@ -1601,5 +1601,5 @@
});
}
- return priceDetails;
+ return priceDTOS;
};
--
Gitblit v1.7.1