package com.dsh.other.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.dsh.other.entity.Store;
import com.dsh.other.mapper.StoreMapper;
import com.dsh.other.model.BaseVo;
import com.dsh.other.model.ProvinceAndCityVo;
import com.dsh.other.service.StoreService;
import com.dsh.other.util.GDMapGeocodingUtil;
import com.dsh.other.util.ToolUtil;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
*
* 门店信息 服务实现类
*
*
* @author jqs
* @since 2023-06-14
*/
@Service
public class StoreServiceImpl extends ServiceImpl implements StoreService {
@Autowired
private StoreMapper storeMapper;
@Autowired
private GDMapGeocodingUtil gdMapGeocodingUtil;
/**
* 根据城市管理员id获取门店集合
* @param id
* @return
*/
@Override
public List getStoreByCityManagerId(Integer id) {
return storeMapper.getStoreByCityManagerId(id);
}
/**
* 根据门店员工id获取门店集合
* @param id
* @return
*/
@Override
public List getStoreByStoreStaffId(Integer id) {
return storeMapper.getStoreByStoreStaffId(id);
}
/**
* 获取列表数据
* @param provinceCode
* @param cityCode
* @return
* @throws Exception
*/
@Override
public List queryStorsList(String provinceCode, String cityCode) throws Exception {
QueryWrapper objectQueryWrapper = new QueryWrapper().eq("state", 1);
if(ToolUtil.isNotEmpty(provinceCode)){
objectQueryWrapper.eq("provinceCode", provinceCode);
}
if(ToolUtil.isNotEmpty(cityCode)){
objectQueryWrapper.eq("cityCode", cityCode);
}
List list = this.list(objectQueryWrapper);
return list;
}
/**
* 获取列表数据
* @param lon
* @param lat
* @return
* @throws Exception
*/
@Override
public List queryStoreLists(String lon, String lat) throws Exception {
List list = new ArrayList<>();
if(ToolUtil.isEmpty(lon) || ToolUtil.isEmpty(lat)){
return list;
}
Map geocode = gdMapGeocodingUtil.geocode(lon, lat);
if(null != geocode){
String provinceCode = geocode.get("provinceCode");
String cityCode = geocode.get("cityCode");
List stores = this.queryStorsList(provinceCode, cityCode);
for (Store store : stores) {
BaseVo baseVo = new BaseVo();
BeanUtils.copyProperties(store, baseVo);
list.add(baseVo);
}
}
return list;
}
/**
* 获取开通省市
* @param pcode
* @return
* @throws Exception
*/
@Override
public List queryProvinceAndCity(String pcode) throws Exception {
if(ToolUtil.isEmpty(pcode)){
return this.baseMapper.queryProvince();
}
if(ToolUtil.isNotEmpty(pcode)){
return this.baseMapper.queryCity(pcode);
}
return null;
}
/**
* 获取所有开通城市
* @return
* @throws Exception
*/
@Override
public List queryAllCity() throws Exception {
return this.baseMapper.queryCity(null);
}
/**
* 根据城市code获取城市列表
* @param cityCode
* @return
* @throws Exception
*/
@Override
public List queryStoreByCityCode(String cityCode) throws Exception {
return this.baseMapper.queryStoreByCityCode(cityCode);
}
}