From 83e8981accbc513b287184ca4094a50b5e5299ca Mon Sep 17 00:00:00 2001
From: liujie <1793218484@qq.com>
Date: 星期四, 02 七月 2026 19:33:46 +0800
Subject: [PATCH] Merge branch '2.0' of http://120.76.84.145:10101/gitblit/r/java/PlayPai into 2.0

---
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TSiteController.java |  242 +++++++++++++++++++++++++++++++----------------
 1 files changed, 159 insertions(+), 83 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 5622203..3495e14 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,49 @@
 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.apache.commons.lang3.StringUtils;
 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.Arrays;
+import java.util.Collections;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
 
 /**
  * 车辆管理控制器
@@ -95,6 +105,8 @@
     private IRegionService regionService;
     @Autowired
     private SiteLockClient siteLockClient;
+    @Autowired
+    private ITSitePriceService sitePriceService;
 
 
     /**
@@ -312,6 +324,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<>();
@@ -329,18 +345,21 @@
         model.addAttribute("typeNames",strings3);
 
         String halfNames = site.getHalfName();
-        ArrayList<String> strings2 = new ArrayList<>();
-        String[] split = halfNames.split(",");
-        String halfName=null;
-        for (int i = 0; i < split.length; i++) {
-            if(i==0){
-               halfName = split[0];
-            }else {
-                strings2.add(split[i]);
-            }
+        if (StringUtils.isNotBlank(halfNames) && site.getIshalf().equals(1)) {
+            List<String> strings2 = Arrays.asList(halfNames.split(","));
+            model.addAttribute("halfNames",strings2);
+            model.addAttribute("halfName",strings2.get(0));
+        }else {
+            model.addAttribute("halfNames", Collections.emptyList());
+            model.addAttribute("halfName", "");
         }
-        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 +369,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()));
@@ -423,18 +442,14 @@
 
 
         String halfNames = site.getHalfName();
-        ArrayList<String> strings2 = new ArrayList<>();
-        String[] split = halfNames.split(",");
-        String halfName=null;
-        for (int i = 0; i < split.length; i++) {
-            if(i==0){
-                halfName = split[0];
-            }else {
-                strings2.add(split[i]);
-            }
+        if (StringUtils.isNotBlank(halfNames) && site.getIshalf().equals(1)) {
+            List<String> strings2 = Arrays.asList(halfNames.split(","));
+            model.addAttribute("halfNames",strings2);
+            model.addAttribute("halfName",strings2.get(0));
+        }else {
+            model.addAttribute("halfNames", Collections.emptyList());
+            model.addAttribute("halfName", "");
         }
-        model.addAttribute("halfNames",strings2);
-        model.addAttribute("halfName",halfName);
 
         List<CityManager> accounts = cityManagerClient.getAccount(site.getCity());
         model.addAttribute("list",site);
@@ -448,6 +463,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 +477,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("获取时间段失败");
+        }
     }
 
     /**
@@ -488,6 +534,8 @@
         site.setCityManagerId(cityManagerId);
         site.setInsertTime(new Date());
         site.setState(1);
+        site.setOperatorId(store.getOperatorId());
+
 //        site.setOperatorId(UserExt.getUser().getObjectId());
 
         // 添加场地
@@ -497,15 +545,61 @@
         map.put("space_id",store.getId().toString());
         String s = HttpRequestUtil.postRequest
                 ("https://port.daowepark.com/v7/user_api/general/addSpaceArea", map);
+//                ("https://try.daowepark.com/v7/user_api/general/addSpaceArea", map);
         JSONObject jsonObject = JSONObject.parseObject(s);
         JSONObject data = jsonObject.getJSONObject("data");
         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());
+            List<Site.PriceDTO> priceDTOS = site.getPriceDTOS();
+            site.setAppointmentStartTime(priceDTOS.get(0).getStartTime());
+            site.setAppointmentEndTime(priceDTOS.get(priceDTOS.size()-1).getEndTime());
+            siteClient.addSite(site);
+
+        }
+
         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 ? detail.getCoinPrice() : 0);
+            sitePrice.setInsertTime(now);
+            sitePrice.setUpdateTime(now);
+            
+            sitePrices.add(sitePrice);
+        }
+        
+        // 批量插入
+        if (!sitePrices.isEmpty()) {
+            sitePriceService.saveBatch(sitePrices);
+        }
     }
     /**
      *  编辑场地管理
@@ -513,57 +607,39 @@
     @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);
         }
-
-        TSite byId = siteService.getById(site.getId());
-
         Store store = storeClient.getStoreById(site.getStoreId());
-
         String province = store.getProvince();
         String provinceCode = store.getProvinceCode();
         String city = store.getCity();
         String cityCode = store.getCityCode();
-        Integer cityManagerId = store.getCityManagerId();
-
+        site.setOperatorId(store.getOperatorId());
         site.setProvince(province);
         site.setProvinceCode(provinceCode);
         site.setCity(city);
         site.setCityCode(cityCode);
-        site.setCityManagerId(cityManagerId);
-
+        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());
+            List<Site.PriceDTO> priceDTOS = site.getPriceDTOS();
+            site.setAppointmentStartTime(priceDTOS.get(0).getStartTime());
+            site.setAppointmentEndTime(priceDTOS.get(priceDTOS.size()-1).getEndTime());
+            siteClient.addSite(site);
 
-        /**
-         * 取消闸机输入 新增模块闸机管理
-         */
-//        String ids = byId.getIds();
-//        HashMap<String, String> map = new HashMap<>();
-//        map.put("sign","0DB011836143EEE2C2E072967C9F4E4B");
-//        if(StringUtils.hasLength(ids)) {
-//            for (String s : ids.split(",")) {
-//                String s1 = HttpRequestUtil.postRequest("https://port.daowepark.com/v7/user_api/general/deleteDevice/ids/" + s, map);
-//                System.out.println(s1);
-//            }
-//        }
-//        if(StringUtils.hasLength( site.getIds())) {
-//            for (String s : site.getIds().split(",")) {
-//                HashMap<String, String> map1 = new HashMap<>();
-//                map1.put("sign", "0DB011836143EEE2C2E072967C9F4E4B");
-//                map1.put("space_id", store.getId() + "");
-//                map1.put("device_id", s);
-//                map1.put("region_id", site.getId() + "");
-//                // 添加门禁
-//                String s1 = HttpRequestUtil.postRequest("https://port.daowepark.com/v7/user_api/general/addDevice", map1);
-//                System.out.println(s1);
-//            }
-//        }
-
-
-
+        }
         return ResultUtil.success();
     }
     /**

--
Gitblit v1.7.1