From faaf4ce0e117cd3f841fd06003e3dfdb2d0f7ebb Mon Sep 17 00:00:00 2001
From: mitao <2763622819@qq.com>
Date: 星期三, 05 十一月 2025 15:13:55 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/2.0' into 2.0
---
cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TSiteController.java | 155 +++++++++++++++++++++++++++++++++++++++++++--------
1 files changed, 129 insertions(+), 26 deletions(-)
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 aebfaa6..2ba8e6d 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;
/**
@@ -312,6 +321,10 @@
model.addAttribute("objectId",objectId);
model.addAttribute("stores",stores);
+
+ // 显式传递运营商ID和是否可预约字段,确保回显正确
+ model.addAttribute("operatorId", site.getOperatorId());
+ model.addAttribute("reservation", site.getReservation());
String nextName = site.getNextName();
ArrayList<String> strings1 = new ArrayList<>();
@@ -341,6 +354,13 @@
}
model.addAttribute("halfNames",strings2);
model.addAttribute("halfName",halfName);
+ // 显式传递运营商ID和是否可预约字段,确保回显正确
+ model.addAttribute("operatorId", site.getOperatorId());
+ model.addAttribute("reservation", site.getReservation());
+ // 添加价格配置相关字段
+ TSite fullSite = siteService.getById(id);
+ model.addAttribute("targetAudience", fullSite.getTargetAudience());
+ model.addAttribute("walkinCapacity", fullSite.getWalkinCapacity());
return PREFIX + "TSite_edit.html";
}
@@ -350,7 +370,7 @@
*/
@RequestMapping("/lockSite/{id}")
public String lockSite(Model model,@PathVariable("id") Integer id) {
- DateFormat dateformat = new SimpleDateFormat("yyyy-MM-dd hh:mm");
+ DateFormat dateformat = new SimpleDateFormat("yyyy-MM-dd HH:mm");
List<TSiteLockDTO> listById = siteLockClient.getListById(id);
for (TSiteLockDTO tSiteLockDTO : listById) {
tSiteLockDTO.setSsTime(dateformat.format(tSiteLockDTO.getStartTime()));
@@ -448,6 +468,11 @@
model.addAttribute("objectType",objectType);
model.addAttribute("objectId",objectId);
model.addAttribute("stores",stores);
+ // 显式传递运营商ID和是否可预约字段,确保回显正确
+ model.addAttribute("operatorId", site.getOperatorId());
+ model.addAttribute("reservation", site.getReservation());
+ model.addAttribute("targetAudience", site.getTargetAudience());
+ model.addAttribute("walkinCapacity", site.getWalkinCapacity());
return PREFIX + "TSite_edit.html";
}
/**
@@ -457,6 +482,32 @@
@GetMapping("/getTime/{oneId}")
public Store getTime(@PathVariable("oneId") String oneId) {
return storeClient.getTime(oneId);
+ }
+
+ /**
+ * 根据场地ID获取价格配置
+ */
+ @ResponseBody
+ @GetMapping("/getSitePrices/{siteId}")
+ public ResultUtil getSitePrices(@PathVariable("siteId") Integer siteId) {
+ List<TSitePrice> prices = sitePriceService.list(
+ new QueryWrapper<TSitePrice>().eq("siteId", siteId)
+ );
+ return ResultUtil.success(prices);
+ }
+
+ /**
+ * 管理后台 - 获取场地预约时间段数据(供预约新增页面使用)
+ */
+ @ResponseBody
+ @RequestMapping("/querySiteTimes")
+ public ResultUtil querySiteTimes(Integer id, String day, String halfName, String siteName, Integer targetAudience) {
+ try {
+ return ResultUtil.success(siteService.querySiteTimes(id, day, halfName, siteName, targetAudience));
+ } catch (Exception e) {
+ e.printStackTrace();
+ return ResultUtil.error("获取时间段失败");
+ }
}
/**
@@ -489,6 +540,7 @@
site.setInsertTime(new Date());
site.setState(1);
site.setOperatorId(store.getOperatorId());
+
// site.setOperatorId(UserExt.getUser().getObjectId());
// 添加场地
@@ -503,10 +555,50 @@
String area_id = data.getString("area_id");
Integer integer = Integer.valueOf(area_id);
site.setId(integer);
+ if (site.getIshalf()==2){
+ site.setHalfName("");
+ }
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);
+ }
}
/**
* 编辑场地管理
@@ -514,7 +606,9 @@
@ResponseBody
@RequestMapping(value = "/updateSite")
public ResultUtil updateSite(@RequestBody Site site) {
- if(site.getInsuranceImg().equals("")){
+ System.out.println(JSONObject.toJSONString(site));
+ // 防止空指针异常:如果 insuranceImg 为 null 或空字符串,设置为 null
+ if(site.getInsuranceImg() == null || site.getInsuranceImg().equals("")){
site.setInsuranceImg(null);
}
Store store = storeClient.getStoreById(site.getStoreId());
@@ -530,7 +624,16 @@
site.setCityManagerId(store.getOperatorId());
site.setInsertTime(new Date());
site.setState(1);
+ if (site.getIshalf()==2){
+ site.setHalfName("");
+ }
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();
}
/**
--
Gitblit v1.7.1