| | |
| | | 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; |
| | |
| | | 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; |
| | | |
| | | /** |
| | | * 车辆管理控制器 |
| | |
| | | private IRegionService regionService; |
| | | @Autowired |
| | | private SiteLockClient siteLockClient; |
| | | @Autowired |
| | | private ITSitePriceService sitePriceService; |
| | | |
| | | |
| | | /** |
| | |
| | | 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<>(); |
| | |
| | | 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"; |
| | | } |
| | |
| | | |
| | | |
| | | 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); |
| | |
| | | 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"; |
| | | } |
| | | /** |
| | |
| | | @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("获取时间段失败"); |
| | | } |
| | | } |
| | | |
| | | /** |
| | |
| | | site.setInsertTime(new Date()); |
| | | site.setState(1); |
| | | site.setOperatorId(store.getOperatorId()); |
| | | |
| | | // site.setOperatorId(UserExt.getUser().getObjectId()); |
| | | |
| | | // 添加场地 |
| | |
| | | map.put("name",site.getName()); |
| | | map.put("space_id",store.getId().toString()); |
| | | String s = HttpRequestUtil.postRequest |
| | | ("https://port.daowepark.com/v7/user_api/general/addSpaceArea", map); |
| | | // ("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()); |
| | | } |
| | | |
| | | 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); |
| | | } |
| | | } |
| | | /** |
| | | * 编辑场地管理 |
| | |
| | | @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()); |
| | |
| | | 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(); |
| | | } |
| | | /** |