package com.dsh.other.controller; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.dsh.other.entity.Store; import com.dsh.other.feignclient.model.*; import com.dsh.other.model.*; import com.dsh.other.service.StoreService; import com.dsh.other.util.GDMapGeocodingUtil; import com.dsh.other.util.ResultUtil; import com.dsh.other.util.ToolUtil; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.util.*; @RestController @RequestMapping("") public class StoreController { @Autowired private StoreService storeService; @Autowired private GDMapGeocodingUtil gdMapGeocodingUtil; @PostMapping("/base/protocol/storeDetail/courseOfSto") public StoreDetailOfCourse getCourseOfStore(@RequestBody Integer storeId){ StoreDetailOfCourse ofCourse = new StoreDetailOfCourse(); Store store = storeService.getById(storeId); if (null != store){ ofCourse.setStoreName(store.getName()); ofCourse.setStoreAddr(store.getAddress()); } return ofCourse; } @PostMapping("/base/protocol/storeDetail/nearbyStore") public List getAllNearbyStoreList(@RequestBody GetAllNearbyStoreList list ){ String current = list.getLongitude()+","+list.getLatitude(); List storeInfos = new ArrayList<>(); String cityCode = ""; try { Map geocode = gdMapGeocodingUtil.geocode(list.getLongitude(), list.getLatitude()); cityCode = geocode.get("cityCode"); }catch (Exception e){ e.printStackTrace(); } List storeList = storeService.list(new QueryWrapper() .eq("state", 1) .eq("cityCode",cityCode)); if (storeList.size() > 0){ for (Store store : storeList) { String storeLon = store.getLon(); String storeLat = store.getLat(); String result = storeLon+","+storeLat; String distanceTOKilometer = gdMapGeocodingUtil.getDistanceTOKilometer(current, result); StoreInfo info = new StoreInfo(); info.setStoreId(store.getId()); info.setStoreName(store.getName()); info.setStoreImg(store.getRealPicture()); info.setDistance(Long.parseLong(distanceTOKilometer)); info.setStoreAddr(store.getAddress()); info.setLatitude(storeLat); info.setLongitude(storeLon); storeInfos.add(info); } Comparator distanceComparator = new Comparator() { @Override public int compare(StoreInfo store1, StoreInfo store2) { return Long.compare(store1.getDistance(), store2.getDistance()); } }; Collections.sort(storeInfos, distanceComparator); } return storeInfos; } /** * 根据门店坐标与传入坐标,计算距离 * @param distanceVo * @return */ @PostMapping("/base/protocol/storeDetail/distanceCal") public long calculateDistance(@RequestBody GetDistanceVo distanceVo){ String current = distanceVo.getLongitude()+","+distanceVo.getLatitude(); Store store = storeService.getById(distanceVo.getStoreId()); String result = store.getLon()+","+store.getLat(); String distanceTOKilometer = gdMapGeocodingUtil.getDistanceTOKilometer(current, result); return Long.parseLong(distanceTOKilometer); } @PostMapping("/base/protocol/storeDetail/citycodeLoLa") public List getQueryStoreList(@RequestBody StoreOfCitycodeResp citycodeResp){ List detailLists = new ArrayList<>(); List list = storeService.list(new QueryWrapper() .eq("state",1 ) .eq("cityCode",citycodeResp.getCityCode())); if (list.size() > 0 ){ for (Store store : list) { String current = citycodeResp.getLongitude() +","+citycodeResp.getLatitude(); String result = store.getLon()+","+store.getLat(); String distanceTOKilometer = gdMapGeocodingUtil.getDistanceTOKilometer(current, result); long l = Long.parseLong(distanceTOKilometer); if (ToolUtil.isNotEmpty(citycodeResp.getSpace()) && l > citycodeResp.getSpace()){ continue; } StoreDetailList detailList = new StoreDetailList(); detailList.setStoreId(store.getId()); detailList.setStoreImg(store.getCoverDrawing()); detailList.setStoreName(store.getName()); detailList.setStoreAddress(store.getAddress()); detailList.setStorePhone(store.getPhone()); detailList.setStoreDistance(l); detailList.setStoreTime(store.getStartTime() + "-" + store.getEndTime()); detailList.setStoreInfo(store.getIntroduce()); detailLists.add(detailList); } } return detailLists; } /** * 获取门店列表 * @return */ @ResponseBody @PostMapping("/store/queryStoreList") public List queryStoreList(QueryStoreList queryStoreList){ try { return storeService.queryStorsList(queryStoreList.getProvinceCode(), queryStoreList.getCityCode()); }catch (Exception e){ e.printStackTrace(); return new ArrayList<>(); } } @ResponseBody @PostMapping("/base/store/queryStoreLists") @ApiOperation(value = "获取门店列表", tags = {"APP-加入玩湃", "APP-课程列表", "用户—预约场地"}) @ApiImplicitParams({ @ApiImplicitParam(value = "经纬", name = "lon", dataType = "string", required = false), @ApiImplicitParam(value = "纬度", name = "lat", dataType = "string", required = false), }) public ResultUtil> queryStoreLists(String lon, String lat){ try { List baseVos = storeService.queryStoreLists(lon, lat); return ResultUtil.success(baseVos); }catch (Exception e){ e.printStackTrace(); return ResultUtil.runErr(); } } /** * 根据门店模糊搜索店铺 * @param name * @return */ @ResponseBody @PostMapping("/store/queryStoreListByName") public List queryStoreListByName(@RequestParam("name") String name){ try { List stores = storeService.list(new QueryWrapper().eq("state", 1).like("name", name)); return stores; }catch (Exception e){ e.printStackTrace(); return new ArrayList<>(); } } /** * 根据门店 * @param id * @return */ @ResponseBody @PostMapping("/store/queryStoreById") public Store queryStoreById(@RequestBody Integer id){ try { return storeService.getById(id); }catch (Exception e){ e.printStackTrace(); return null; } } @ResponseBody @PostMapping("/base/store/queryStoreFreeBenefit") @ApiOperation(value = "获取门店免费福利", tags = {"APP-免费福利"}) @ApiImplicitParams({ @ApiImplicitParam(value = "门店id", name = "id", dataType = "int", required = true), }) public ResultUtil queryStoreFreeBenefit(Integer id){ try { Store store = storeService.getById(id); StoreFreeBenefitVo storeFreeBenefitVo = new StoreFreeBenefitVo(); storeFreeBenefitVo.setPhone(store.getPhone()); storeFreeBenefitVo.setImg(store.getWelfarePicture()); return ResultUtil.success(storeFreeBenefitVo); }catch (Exception e){ e.printStackTrace(); return ResultUtil.runErr(); } } @ResponseBody @PostMapping("/base/store/queryProvinceAndCity") @ApiOperation(value = "获取省市数据", tags = {"APP-加入玩湃"}) @ApiImplicitParams({ @ApiImplicitParam(value = "省编号", name = "pcode", dataType = "string", required = false), }) public ResultUtil> queryProvinceAndCity(String pcode){ try { List provinceAndCityVos = storeService.queryProvinceAndCity(pcode); return ResultUtil.success(provinceAndCityVos); }catch (Exception e){ e.printStackTrace(); return ResultUtil.runErr(); } } @ResponseBody @PostMapping("/base/store/queryAllCity") @ApiOperation(value = "获取所有开通城市", tags = {"APP-赛事活动列表", "用户—预约场地"}) @ApiImplicitParams({ }) public ResultUtil> queryAllCity(){ try { List provinceAndCityVos = storeService.queryAllCity(); return ResultUtil.success(provinceAndCityVos); }catch (Exception e){ e.printStackTrace(); return ResultUtil.runErr(); } } @ResponseBody @PostMapping("/base/store/queryStoreByCityCode") @ApiOperation(value = "获取城市code获取门店", tags = {"APP-加入玩湃"}) @ApiImplicitParams({ @ApiImplicitParam(value = "城市code", name = "cityCode", dataType = "string", required = true), }) public ResultUtil> queryStoreByCityCode(String cityCode){ try { List list = storeService.queryStoreByCityCode(cityCode); return ResultUtil.success(list); }catch (Exception e){ e.printStackTrace(); return ResultUtil.runErr(); } } }