package com.yc.sdk.shopping.action.api;
|
|
import java.util.List;
|
|
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletResponse;
|
import javax.servlet.http.HttpSession;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.dao.DataAccessException;
|
import org.springframework.stereotype.Controller;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
|
import com.google.gson.JsonArray;
|
import com.google.gson.JsonObject;
|
import com.yc.action.BaseAction;
|
import com.yc.entity.AttachmentConfig;
|
import com.yc.entity.DataSourceEntity;
|
import com.yc.multiData.MultiDataSource;
|
import com.yc.multiData.SpObserver;
|
import com.yc.sdk.gaodemap.action.GdMapServiceInit;
|
import com.yc.sdk.gaodemap.api.GdMapService;
|
import com.yc.sdk.gaodemap.entity.GdErrorException;
|
import com.yc.sdk.gaodemap.entity.RegeoCodeEntity;
|
import com.yc.sdk.miniapp.entity.MaCompanyEntity;
|
import com.yc.sdk.shopping.entity.DepartmentEntity;
|
import com.yc.sdk.shopping.entity.RegionEntity;
|
import com.yc.sdk.shopping.entity.SettingEntity;
|
import com.yc.sdk.shopping.service.CountryIfc;
|
import com.yc.sdk.shopping.service.SettingIfc;
|
import com.yc.sdk.shopping.service.department.DepartmentIfc;
|
import com.yc.sdk.shopping.service.imagedata.ShoppingImageDataIfc;
|
import com.yc.sdk.shopping.util.SettingKey;
|
import com.yc.sdk.weixincp.service.ERPUserIfc;
|
import com.yc.utils.SessionKey;
|
|
@Controller
|
public class DistributorAddress extends BaseAction{
|
@Autowired
|
ShoppingImageDataIfc imgData ;
|
@Autowired
|
SettingIfc settingIfc;
|
@Autowired
|
DepartmentIfc departmentIfc;
|
@Autowired
|
CountryIfc countryIfc ;
|
@Autowired
|
ERPUserIfc erpUserIfc ;
|
|
protected static String gaoDeWebServiceKey = AttachmentConfig.get("GaoDeWebServiceKey") ;
|
|
@RequestMapping("/shopping/getDistributorAddressList.do")
|
public void getDistributorAddressList(HttpServletRequest request, HttpServletResponse response) {
|
HttpSession session = request.getSession();
|
String wxQueryString = SettingKey.getQueryStringByWx(request);
|
|
JsonObject json = new JsonObject();
|
JsonObject errJson = new JsonObject();
|
|
SettingEntity settingEntity = null ;
|
List<DepartmentEntity> deptList = null ;
|
String openId = (session.getAttribute(SessionKey.WEIXIN_OPENID) == null ?"":(String) session.getAttribute(SessionKey.WEIXIN_OPENID));
|
String search = (request.getParameter("search") == null ?"":request.getParameter("search")) ;
|
|
|
try {
|
|
DataSourceEntity dataSourceEntity = MultiDataSource.getDataSourceMap( request) ;
|
SpObserver.setDBtoInstance("_" + dataSourceEntity.getDbId());// 切换数据源
|
settingEntity = settingIfc.getSettingEntity(request) ;
|
deptList = departmentIfc.getDepartmentNearby(openId,search);
|
|
int sequence = 0 ;
|
JsonArray jsonArray = new JsonArray();
|
for(int i = 0 ;deptList != null && i < deptList.size();i++) {
|
DepartmentEntity departmentEntity = deptList.get(i) ;
|
sequence ++ ;
|
JsonObject jsonObject= new JsonObject();
|
String photo = "" ;
|
if (departmentEntity.getPhoto() != null && !"".equals(departmentEntity.getPhoto())) {
|
photo = imgData.getImageUrl(departmentEntity.getPhoto(),settingEntity.getImagePopupWidth(),settingEntity.getImagePopupHeight(),settingEntity.isShowPopupOrgImage(),settingEntity.isFromCached(),request) + (wxQueryString == null||"".equals(wxQueryString)?"":"?" + wxQueryString);
|
}else {
|
photo = imgData.getImageUrl(settingEntity.getImage(),settingEntity.getImagePopupWidth(),settingEntity.getImagePopupHeight(),settingEntity.isShowPopupOrgImage(),settingEntity.isFromCached(),request) + (wxQueryString == null||"".equals(wxQueryString)?"":"?" + wxQueryString);
|
}
|
|
jsonObject.addProperty("Sequence", sequence); //顺序号
|
jsonObject.addProperty("CcCode", departmentEntity.getCcCode()); //门店编号
|
jsonObject.addProperty("CcName", departmentEntity.getCcName()); //门店名称
|
jsonObject.addProperty("ShopCcCode", departmentEntity.getShopCcCode()); //门店编号
|
jsonObject.addProperty("ShopCcName", departmentEntity.getShopCcName()); //门店名称
|
jsonObject.addProperty("Photo", photo); //门店图片
|
jsonObject.addProperty("Tel", departmentEntity.getTel()); //电话
|
jsonObject.addProperty("Tel2", departmentEntity.getTel2()); //电话2
|
jsonObject.addProperty("Address", departmentEntity.getAddress()); //地址
|
jsonObject.addProperty("Latitude", departmentEntity.getLatitude()); //纬度
|
jsonObject.addProperty("Longitude", departmentEntity.getLongitude()); //经度
|
jsonArray.add(jsonObject);
|
}
|
|
json.add("list", jsonArray);
|
this.printJson(response, json.toString());
|
return;
|
|
} catch (DataAccessException e) {
|
e.printStackTrace();
|
errJson.addProperty("warning", (e.getCause()!=null?e.getCause().getMessage():e.getMessage()));
|
json.add("error", errJson);
|
this.printJson(response, json.toString());
|
return;
|
}catch (Exception e ){
|
e.printStackTrace();
|
errJson.addProperty("warning",(e.getCause()!=null?e.getCause().getMessage():e.getMessage()));
|
json.add("error", errJson);
|
this.printJson(response, json.toString());
|
return;
|
} finally {
|
SpObserver.setDBtoInstance();
|
}
|
}
|
|
|
@RequestMapping("/shopping/getDistributorAddressListByCity.do")
|
public void getDistributorAddressListByCity(HttpServletRequest request, HttpServletResponse response) {
|
//HttpSession session = request.getSession();
|
String wxQueryString = SettingKey.getQueryStringByWx(request);
|
|
JsonObject json = new JsonObject();
|
JsonObject errJson = new JsonObject();
|
|
SettingEntity settingEntity = null ;
|
List<DepartmentEntity> deptList = null ;
|
//String openId = (session.getAttribute(SessionKey.WEIXIN_OPENID) == null ?"":(String) session.getAttribute(SessionKey.WEIXIN_OPENID));
|
String city = (request.getParameter("city") == null ?"":request.getParameter("city")) ; //城市名字
|
String province = (request.getParameter("province") == null ?"":request.getParameter("province")) ; //省名字 ;
|
String district = (request.getParameter("district") == null ?"":request.getParameter("district")) ; //区名字 ;
|
|
String longitude = request.getParameter("longitude") ; //地理经度(x)
|
String latitude = request.getParameter("latitude") ; //地理纬度(y)
|
DataSourceEntity dataSourceEntity = null ;
|
MaCompanyEntity maCompanyEntity = null ;
|
try {
|
dataSourceEntity = MultiDataSource.getDataSourceMap( request) ;
|
}catch (Exception e ){
|
e.printStackTrace();
|
errJson.addProperty("warning",(e.getCause()!=null?e.getCause().getMessage():e.getMessage()));
|
json.add("error", errJson);
|
this.printJson(response, json.toString());
|
return;
|
}
|
|
try {
|
SpObserver.setDBtoInstance("_" + dataSourceEntity.getDbId());// 切换数据源
|
settingEntity = settingIfc.getSettingEntity(request) ;
|
maCompanyEntity = erpUserIfc.getMaCompanyEntity(null);
|
}catch (DataAccessException e) {
|
e.printStackTrace();
|
errJson.addProperty("warning", (e.getCause()!=null?e.getCause().getMessage():e.getMessage()));
|
json.add("error", errJson);
|
this.printJson(response, json.toString());
|
return;
|
}catch (Exception e ){
|
e.printStackTrace();
|
errJson.addProperty("warning",(e.getCause()!=null?e.getCause().getMessage():e.getMessage()));
|
json.add("error", errJson);
|
this.printJson(response, json.toString());
|
return;
|
} finally {
|
SpObserver.setDBtoInstance();
|
}
|
|
RegeoCodeEntity regeoCodeEntity = null ;
|
|
try {
|
if (city ==null || "".equals(city)) {
|
if (gaoDeWebServiceKey==null || "".equals(gaoDeWebServiceKey)) {
|
errJson.addProperty("warning","没有设置高德地图Web服务所需的key,请在 attachment.config.properties 文件中设置主键为 GaoDeWebServiceKey 的键值");
|
json.add("error", errJson);
|
this.printJson(response, json.toString());
|
return;
|
}
|
|
//从高德地图取数
|
GdMapService gdMapService = GdMapServiceInit.getGdMapService(gaoDeWebServiceKey) ;
|
if (longitude != null && ! "".equals(longitude) && latitude != null && !"".equals(latitude)) {
|
regeoCodeEntity = gdMapService.getRegeo(longitude, latitude) ;
|
city = regeoCodeEntity.getCity();
|
province = regeoCodeEntity.getProvince();
|
district = regeoCodeEntity.getDistrict();
|
}else if (settingEntity.getLongitude()!=null&&!"".equals(settingEntity.getLongitude()) &&
|
settingEntity.getLatitude() != null && !"".equals(settingEntity.getLatitude())) {
|
regeoCodeEntity = gdMapService.getRegeo(settingEntity.getLongitude(), settingEntity.getLatitude()) ;
|
city = regeoCodeEntity.getCity();
|
province = regeoCodeEntity.getProvince();
|
district = regeoCodeEntity.getDistrict();
|
}else if (maCompanyEntity.getLongitude()!=null&&!"".equals(maCompanyEntity.getLongitude()) &&
|
maCompanyEntity.getLatitude() != null && !"".equals(maCompanyEntity.getLatitude())){
|
regeoCodeEntity = gdMapService.getRegeo(maCompanyEntity.getLongitude(), maCompanyEntity.getLatitude()) ;
|
city = regeoCodeEntity.getCity();
|
province = regeoCodeEntity.getProvince();
|
district = regeoCodeEntity.getDistrict();
|
}else {
|
errJson.addProperty("warning","由于用户未授权小程序使用位置信息,请在 714001 或 110101 功能号中设置 【地理经度】和【地理纬度】");
|
json.add("error", errJson);
|
this.printJson(response, json.toString());
|
return;
|
}
|
}
|
}catch (GdErrorException e) {
|
e.printStackTrace();
|
errJson.addProperty("warning","取高德地图城市名时出错,错误代码;" + e.getError().getInfocode() + ",错误描述:" + e.getError().getInfo() + ",完整错误信息:" + e.getError().getJson());
|
json.add("error", errJson);
|
this.printJson(response, json.toString());
|
return;
|
}catch (Exception e ){
|
e.printStackTrace();
|
errJson.addProperty("warning",(e.getCause()!=null?e.getCause().getMessage():e.getMessage()));
|
json.add("error", errJson);
|
this.printJson(response, json.toString());
|
return;
|
}
|
|
|
try {
|
SpObserver.setDBtoInstance("_" + dataSourceEntity.getDbId());// 切换数据源
|
|
RegionEntity regionEntity= countryIfc.getRegionsByAreaName(city) ;
|
|
deptList = departmentIfc.getDepartmentNearbyAreaId(regionEntity!=null?regionEntity.getAreaId():null);
|
json.addProperty("province", province !=null && !"".equals(province) ? province : regionEntity.getParentName());
|
json.addProperty("city", city!=null&&!"".equals(city) ? city : regionEntity.getName());
|
json.addProperty("district", district);
|
|
JsonArray jsonArray = new JsonArray();
|
for(int i = 0 ;deptList != null && i < deptList.size();i++) {
|
DepartmentEntity departmentEntity = deptList.get(i) ;
|
|
JsonObject jsonObject= new JsonObject();
|
String photo = "" ;
|
if (departmentEntity.getPhoto() != null && !"".equals(departmentEntity.getPhoto())) {
|
photo = imgData.getImageUrl(departmentEntity.getPhoto(),settingEntity.getImagePopupWidth(),settingEntity.getImagePopupHeight(),settingEntity.isShowPopupOrgImage(),settingEntity.isFromCached(),request) + (wxQueryString == null||"".equals(wxQueryString)?"":"?" + wxQueryString);
|
}else {
|
photo = imgData.getImageUrl(settingEntity.getImage(),settingEntity.getImagePopupWidth(),settingEntity.getImagePopupHeight(),settingEntity.isShowPopupOrgImage(),settingEntity.isFromCached(),request) + (wxQueryString == null||"".equals(wxQueryString)?"":"?" + wxQueryString);
|
}
|
jsonObject.addProperty("id", i);
|
jsonObject.addProperty("latitude", departmentEntity.getLatitude()); //纬度
|
jsonObject.addProperty("longitude", departmentEntity.getLongitude()); //经度
|
jsonObject.addProperty("name", departmentEntity.getAddress() ); //地址
|
jsonObject.addProperty("tel", departmentEntity.getTel() ); //电话
|
jsonObject.addProperty("tel2", departmentEntity.getTel2()); //电话2
|
|
jsonObject.addProperty("iconPath", "/imgs/location.png"); // map 小图标
|
jsonObject.addProperty("photo", photo); //门店图片
|
|
JsonObject jsonLabelObject= new JsonObject();
|
jsonLabelObject.addProperty("content", departmentEntity.getCcName()); //门店名称
|
jsonLabelObject.addProperty("bgColor", "#48c23d") ;
|
jsonLabelObject.addProperty("color","#fff");
|
jsonLabelObject.addProperty("padding",5) ;
|
jsonLabelObject.addProperty("borderRadius",5) ;
|
jsonObject.add("label", jsonLabelObject);
|
|
// jsonObject.addProperty("Sequence", sequence); //顺序号
|
// jsonObject.addProperty("CcCode", departmentEntity.getCcCode()); //门店编号
|
// jsonObject.addProperty("CcName", departmentEntity.getCcName()); //门店名称
|
// jsonObject.addProperty("ShopCcCode", departmentEntity.getShopCcCode()); //门店编号
|
// jsonObject.addProperty("ShopCcName", departmentEntity.getShopCcName()); //门店名称
|
//
|
// jsonObject.addProperty("Tel", departmentEntity.getTel()); //电话
|
// jsonObject.addProperty("Tel2", departmentEntity.getTel2()); //电话2
|
|
|
jsonArray.add(jsonObject);
|
}
|
|
json.add("list", jsonArray);
|
this.printJson(response, json.toString());
|
return;
|
|
} catch (DataAccessException e) {
|
e.printStackTrace();
|
errJson.addProperty("warning", (e.getCause()!=null?e.getCause().getMessage():e.getMessage()));
|
json.add("error", errJson);
|
this.printJson(response, json.toString());
|
return;
|
}catch (Exception e ){
|
e.printStackTrace();
|
errJson.addProperty("warning",(e.getCause()!=null?e.getCause().getMessage():e.getMessage()));
|
json.add("error", errJson);
|
this.printJson(response, json.toString());
|
return;
|
} finally {
|
SpObserver.setDBtoInstance();
|
}
|
}
|
}
|