From 2386300f1ed591e6c46b7f32539cac7f2fd7d434 Mon Sep 17 00:00:00 2001 From: puzhibing <393733352@qq.com> Date: 星期二, 18 七月 2023 08:58:31 +0800 Subject: [PATCH] 更新预约场地部分接口 --- cloud-server-other/src/main/java/com/dsh/other/service/impl/SiteServiceImpl.java | 126 ++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 126 insertions(+), 0 deletions(-) diff --git a/cloud-server-other/src/main/java/com/dsh/other/service/impl/SiteServiceImpl.java b/cloud-server-other/src/main/java/com/dsh/other/service/impl/SiteServiceImpl.java index 26cdfc0..9b6a244 100644 --- a/cloud-server-other/src/main/java/com/dsh/other/service/impl/SiteServiceImpl.java +++ b/cloud-server-other/src/main/java/com/dsh/other/service/impl/SiteServiceImpl.java @@ -1,10 +1,28 @@ package com.dsh.other.service.impl; +import com.alibaba.fastjson.JSONArray; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.dsh.other.entity.Site; +import com.dsh.other.entity.SiteBooking; +import com.dsh.other.entity.SiteType; +import com.dsh.other.entity.Store; import com.dsh.other.mapper.SiteMapper; +import com.dsh.other.model.QuerySiteInfoVo; +import com.dsh.other.model.QuerySiteList; +import com.dsh.other.model.QuerySiteListVo; +import com.dsh.other.model.QuerySiteTimes; +import com.dsh.other.service.ISiteBookingService; import com.dsh.other.service.ISiteService; +import com.dsh.other.service.ISiteTypeService; +import com.dsh.other.service.StoreService; +import com.dsh.other.util.GeodesyUtil; +import com.dsh.other.util.ToolUtil; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; + +import java.text.SimpleDateFormat; +import java.util.*; /** * @author zhibing.pu @@ -12,4 +30,112 @@ */ @Service public class SiteServiceImpl extends ServiceImpl<SiteMapper, Site> implements ISiteService { + + @Autowired + private ISiteTypeService siteTypeService; + + @Autowired + private StoreService storeService; + + @Autowired + private ISiteBookingService siteBookingService; + + + + + + /** + * 获取场地列表 + * @param querySiteList + * @return + * @throws Exception + */ + @Override + public List<QuerySiteListVo> querySiteList(QuerySiteList querySiteList) throws Exception { + querySiteList.setPageNum((querySiteList.getPageNum() - 1) *querySiteList.getPageSize()); + List<QuerySiteListVo> querySiteListVos = this.baseMapper.querySiteList(querySiteList); + for (QuerySiteListVo querySiteListVo : querySiteListVos) { + if(ToolUtil.isEmpty(querySiteList.getLon())){ + querySiteListVo.setDistance(0D); + continue; + } + Map<String, Double> distance = GeodesyUtil.getDistance(querySiteList.getLon() + "," + querySiteList.getLat(), querySiteListVo.getStoreLon() + "," + querySiteListVo.getStoreLat()); + querySiteListVo.setDistance(distance.get("WGS84")); + } + return querySiteListVos; + } + + + /** + * 获取场地详情 + * @param id + * @return + * @throws Exception + */ + @Override + public QuerySiteInfoVo querySiteInfo(Integer id) throws Exception { + Site site = this.getById(id); + SiteType siteType = siteTypeService.getById(site.getSiteTypeId()); + Store store = storeService.getById(site.getStoreId()); + QuerySiteInfoVo querySiteInfoVo = new QuerySiteInfoVo(); + querySiteInfoVo.setId(site.getId()); + querySiteInfoVo.setName(site.getName()); + querySiteInfoVo.setSiteTypeName(siteType.getName()); + querySiteInfoVo.setStoreName(store.getName()); + querySiteInfoVo.setStoreAddress(store.getAddress()); + querySiteInfoVo.setStoreLon(store.getLon()); + querySiteInfoVo.setStoreLat(store.getLat()); + querySiteInfoVo.setStorePhone(store.getPhone()); + querySiteInfoVo.setCashPrice(site.getCashPrice()); + querySiteInfoVo.setPlayPaiCoin(site.getPlayPaiCoin()); + return querySiteInfoVo; + } + + + /** + * 获取场地预约日期数据 + * @param id + * @param day + * @return + * @throws Exception + */ + @Override + public List<QuerySiteTimes> querySiteTimes(Integer id, String day) throws Exception { + Site site = this.getById(id); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm"); + Calendar s = Calendar.getInstance(); + s.setTime(sdf.parse(day + " " + site.getAppointmentStartTime())); + Calendar e = Calendar.getInstance(); + e.setTime(sdf.parse(day + " " + site.getAppointmentEndTime())); + + int hour = e.get(Calendar.HOUR_OF_DAY); + int minute = e.get(Calendar.MINUTE); + List<QuerySiteTimes> list = new ArrayList<>(); + while (true){ + int s_hour = s.get(Calendar.HOUR_OF_DAY); + int s_minute = s.get(Calendar.MINUTE); + String start = s_hour + ":" + s_minute; + + s.set(Calendar.MINUTE, s.get(Calendar.MINUTE) + 30); + int e_hour = s.get(Calendar.HOUR_OF_DAY); + int e_minute = s.get(Calendar.MINUTE); + String end = e_hour + ":" + e_minute; + + QuerySiteTimes querySiteTimes = new QuerySiteTimes(); + querySiteTimes.setTime(start + "-" + end); + querySiteTimes.setSelectable(1); + + SiteBooking siteBooking = siteBookingService.getOne(new QueryWrapper<SiteBooking>().eq("siteId", id).eq("state", 1) + .in("status", Arrays.asList(3, 4, 5)).last(" and DATE_FORMAT(startTime, '%Y-%m-%d %H:%i') <= '" + day + " " + start + "' and DATE_FORMAT(endTime, '%Y-%m-%d %H:%i') >= '" + day + " " + end + "'")); + if(null != siteBooking){ + querySiteTimes.setSelectable(0); + } + list.add(querySiteTimes); + + if(e_hour == hour && minute == e_minute){ + break; + } + } + return list; + } } -- Gitblit v1.7.1