diff --git a/ZJ-java/ZJ-common/src/main/java/com/wyh/common/entity/user/UserAddress.java b/ZJ-java/ZJ-common/src/main/java/com/wyh/common/entity/user/UserAddress.java index b6fc208..b62c0c5 100644 --- a/ZJ-java/ZJ-common/src/main/java/com/wyh/common/entity/user/UserAddress.java +++ b/ZJ-java/ZJ-common/src/main/java/com/wyh/common/entity/user/UserAddress.java @@ -51,4 +51,21 @@ public class UserAddress implements Serializable { @ApiModelProperty(value = "用户id") private Integer userId; + @ApiModelProperty(value = "country") + private String country; + + @ApiModelProperty(value = "市") + private String city; + + @ApiModelProperty(value = "省") + private String province; + + @ApiModelProperty(value = "省编码") + private String provinceCode; + + @ApiModelProperty(value = "市编码") + private String cityCode; + + @ApiModelProperty(value = "countryCode") + private String countryCode; } \ No newline at end of file diff --git a/ZJ-java/ZJ-common/src/main/java/com/wyh/common/validator/GaodeDO.java b/ZJ-java/ZJ-common/src/main/java/com/wyh/common/validator/GaodeDO.java new file mode 100644 index 0000000..45d714e --- /dev/null +++ b/ZJ-java/ZJ-common/src/main/java/com/wyh/common/validator/GaodeDO.java @@ -0,0 +1,9 @@ +package com.wyh.common.validator; + +import lombok.Data; + +@Data +public class GaodeDO { + private String longitude; + private String latitude; +} diff --git a/ZJ-java/ZJ-common/src/main/java/com/wyh/common/validator/SalesmanCreateValidate.java b/ZJ-java/ZJ-common/src/main/java/com/wyh/common/validator/SalesmanCreateValidate.java index f98ed3a..f881f93 100644 --- a/ZJ-java/ZJ-common/src/main/java/com/wyh/common/validator/SalesmanCreateValidate.java +++ b/ZJ-java/ZJ-common/src/main/java/com/wyh/common/validator/SalesmanCreateValidate.java @@ -25,7 +25,6 @@ public class SalesmanCreateValidate implements Serializable { @ApiModelProperty(value = "负责地区") private String address; - @NotNull(message = "coordinate参数缺失") @ApiModelProperty(value = "坐标") private String coordinate; diff --git a/ZJ-java/ZJ-common/src/main/java/com/wyh/common/validator/SalesmanUpdateValidate.java b/ZJ-java/ZJ-common/src/main/java/com/wyh/common/validator/SalesmanUpdateValidate.java index 5c3aac2..2af4f3a 100644 --- a/ZJ-java/ZJ-common/src/main/java/com/wyh/common/validator/SalesmanUpdateValidate.java +++ b/ZJ-java/ZJ-common/src/main/java/com/wyh/common/validator/SalesmanUpdateValidate.java @@ -34,7 +34,6 @@ public class SalesmanUpdateValidate implements Serializable { @ApiModelProperty(value = "负责地区") private String address; - @NotNull(message = "coordinate参数缺失") @ApiModelProperty(value = "坐标") private String coordinate; diff --git a/ZJ-java/ZJ-common/src/main/java/com/wyh/common/validator/user/UserAddressCreateValidate.java b/ZJ-java/ZJ-common/src/main/java/com/wyh/common/validator/user/UserAddressCreateValidate.java index 340d93a..0103e5f 100644 --- a/ZJ-java/ZJ-common/src/main/java/com/wyh/common/validator/user/UserAddressCreateValidate.java +++ b/ZJ-java/ZJ-common/src/main/java/com/wyh/common/validator/user/UserAddressCreateValidate.java @@ -38,4 +38,22 @@ public class UserAddressCreateValidate implements Serializable { private Integer isDefault; @ApiModelProperty(value = "用户id") private Integer userId; + + @ApiModelProperty(value = "country") + private String country; + + @ApiModelProperty(value = "市") + private String city; + + @ApiModelProperty(value = "省") + private String province; + + @ApiModelProperty(value = "省编码") + private String provinceCode; + + @ApiModelProperty(value = "市编码") + private String cityCode; + + @ApiModelProperty(value = "countryCode") + private String countryCode; } diff --git a/ZJ-java/ZJ-common/src/main/java/com/wyh/common/validator/user/UserAddressUpdateValidate.java b/ZJ-java/ZJ-common/src/main/java/com/wyh/common/validator/user/UserAddressUpdateValidate.java index f16e10a..82e56aa 100644 --- a/ZJ-java/ZJ-common/src/main/java/com/wyh/common/validator/user/UserAddressUpdateValidate.java +++ b/ZJ-java/ZJ-common/src/main/java/com/wyh/common/validator/user/UserAddressUpdateValidate.java @@ -48,4 +48,23 @@ public class UserAddressUpdateValidate implements Serializable { @ApiModelProperty(value = "用户id") private Integer userId; + + + @ApiModelProperty(value = "country") + private String country; + + @ApiModelProperty(value = "市") + private String city; + + @ApiModelProperty(value = "省") + private String province; + + @ApiModelProperty(value = "省编码") + private String provinceCode; + + @ApiModelProperty(value = "市编码") + private String cityCode; + + @ApiModelProperty(value = "countryCode") + private String countryCode; } diff --git a/ZJ-java/ZJ-common/src/main/java/com/wyh/common/vo/GaoDeDTO.java b/ZJ-java/ZJ-common/src/main/java/com/wyh/common/vo/GaoDeDTO.java new file mode 100644 index 0000000..71803ff --- /dev/null +++ b/ZJ-java/ZJ-common/src/main/java/com/wyh/common/vo/GaoDeDTO.java @@ -0,0 +1,51 @@ +package com.wyh.common.vo; + +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; +import lombok.NoArgsConstructor; + +@NoArgsConstructor +@Data +public class GaoDeDTO { + @JsonProperty("info") + private String info; + @JsonProperty("infocode") + private String infocode; + @JsonProperty("regeocode") + private RegeocodeDTO regeocode; + @JsonProperty("status") + private String status; + + @NoArgsConstructor + @Data + public static class RegeocodeDTO { + @JsonProperty("addressComponent") + private AddressComponentDTO addressComponent; + @JsonProperty("formatted_address") + private String formattedAddress; + + @NoArgsConstructor + @Data + public static class AddressComponentDTO { + @JsonProperty("adcode") + private String adcode; + @JsonProperty("city") + private Object city; + @JsonProperty("citycode") + private String citycode; + @JsonProperty("country") + private String country; + @JsonProperty("district") + private Object district; + + @JsonProperty("province") + private String province; + @JsonProperty("towncode") + private String towncode; + @JsonProperty("township") + private String township; + + + } + } +} \ No newline at end of file diff --git a/ZJ-java/ZJ-front/src/main/java/com/wyh/front/controller/CpspController.java b/ZJ-java/ZJ-front/src/main/java/com/wyh/front/controller/CpspController.java index a2ec5ca..ffc282b 100644 --- a/ZJ-java/ZJ-front/src/main/java/com/wyh/front/controller/CpspController.java +++ b/ZJ-java/ZJ-front/src/main/java/com/wyh/front/controller/CpspController.java @@ -6,18 +6,16 @@ import com.wyh.common.aop.NotLogin; import com.wyh.common.core.AjaxResult; import com.wyh.common.util.ChangeChinesePinyinUtil; import com.wyh.common.util.HttpUtils; -import com.wyh.common.vo.AreaTreeVO; -import com.wyh.common.vo.ResponseDataVo; -import com.wyh.common.vo.WxCityForClientVO; -import com.wyh.common.vo.WxMainCitysForClientVO; +import com.wyh.common.vo.*; import com.wyh.front.service.IIndexService; import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; import org.springframework.beans.BeanUtils; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; +import javax.validation.Valid; +import javax.validation.constraints.NotNull; import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -25,7 +23,7 @@ import java.util.Map; import java.util.stream.Collectors; @RestController -@Api(tags = "城市分类(首字母)") +@Api(tags = "地址相关") @RequestMapping("front/cpsp") public class CpspController { @@ -36,6 +34,7 @@ public class CpspController { @NotLogin @GetMapping("/getCity") + @ApiOperation(value = "城市分类(首字母)") public Map> getCity(){ String url="https://restapi.amap.com/v3/config/district"; @@ -77,8 +76,51 @@ public class CpspController { @NotLogin @GetMapping("/getAddressTree") + @ApiOperation(value = "地址树") public AjaxResult> getAddressTree(){ List list = iIndexservice.getAddressTree(); return AjaxResult.success(list); } + + + @NotLogin + @GetMapping("/getabcInfo") + @ApiOperation(value = "根据经纬度获取地址") + public AjaxResult> getabcInfo( + @NotNull @Valid @RequestParam("longitude") String longitude, + @NotNull @Valid @RequestParam("latitude") String latitude + ){ + + Map map = new HashMap<>(); + try { + String apiKey = "6921542276811edc857184b87bf4fb0e"; + GaoDeDTO gaoDeDTO = new Gson().fromJson(HttpUtils.sendGet("https://restapi.amap.com/v3/geocode/regeo?key=" + apiKey + "&location=" +longitude + "," +latitude), GaoDeDTO.class); + GaoDeDTO.RegeocodeDTO.AddressComponentDTO addressComponent = gaoDeDTO.getRegeocode().getAddressComponent(); + String province = addressComponent.getProvince(); + String cityStr = getStringFromObject(addressComponent.getCity()); + String districtStr = getStringFromObject(addressComponent.getDistrict()); + map.put("province",province); + map.put("city",cityStr); + map.put("district",districtStr); + return AjaxResult.success(map); + } catch (Exception e) { + map.put("message","地址解析失败"); + return AjaxResult.failed(map); + } + + } + + + // 从对象中获取字符串 + private static String getStringFromObject(Object obj) { + if (obj instanceof String) { + return " " + (String) obj; + } else if (obj instanceof List) { + List list = (List) obj; + if (!list.isEmpty()) { + return " " + list.get(0); + } + } + return ""; + } } diff --git a/admin/src/views/salesman/edit.vue b/admin/src/views/salesman/edit.vue index 2958dfc..ac1c1ca 100644 --- a/admin/src/views/salesman/edit.vue +++ b/admin/src/views/salesman/edit.vue @@ -4,12 +4,12 @@ ref="popupRef" :title="popupTitle" :async="true" - width="550px" + width="1000px" :clickModalClose="true" @confirm="handleSubmit" @close="handleClose" > - + @@ -22,6 +22,16 @@ + + + + + +
+ +
@@ -32,12 +42,15 @@ import { salesmanEdit, salesmanAdd, salesmanDetail } from '@/api/salesman' import Popup from '@/components/popup/index.vue' import feedback from '@/utils/feedback' import type { PropType } from 'vue' +import MapContainer from "@/components/map/MapContainer.vue"; defineProps({ dictData: { type: Object as PropType>, default: () => ({}) } }) +const mapValue = ref(null) +const refMap = ref(null) const emit = defineEmits(['success', 'close']) const formRef = shallowRef() const popupRef = shallowRef>() @@ -52,6 +65,8 @@ const formData = reactive({ name: '', address: '', coordinate: '', + search: '', + results: [] }) const formRules = { @@ -83,13 +98,6 @@ const formRules = { trigger: ['blur'] } ], - coordinate: [ - { - required: true, - message: '请输入坐标', - trigger: ['blur'] - } - ], } const handleSubmit = async () => { @@ -122,6 +130,34 @@ const getDetail = async (row: Record) => { setFormData(data) } +function remoteMethod(str) { + refMap.value.search(str, (tips) => { + console.log('%c ======tips======', 'font-size:14px; color:#22ff22;', tips) + formData.results = tips + console.log('%c ======formData======', 'font-size:14px; color:#22ff22;', formData) + }) +} + + +function selectOne(res ){ + console.log('%c ======res======', 'font-size:14px; color:#22ff22;', res) + refMap.value.selectOne(res) + mapValue.value = handlePut(res) + console.log('%c ======mapValue======', 'font-size:14px; color:#22ff22;', mapValue) + formData.address = res +} + +const handlePut = (result) => { + formData.results.forEach((item: any) => { + if (result === item.name) { + let location = item.location ? item.location : ""; + console.log('%c ======item======', 'font-size:14px; color:#22ff22;', item) + console.log('%c ======location======', 'font-size:14px; color:#22ff22;', location.lat + ',' + location.lng) + formData.coordinate = (location.lat ? location.lat : '') + ',' + (location.lng ? location.lng : '') + } + }) +} + const handleClose = () => { emit('close') } diff --git a/admin/src/views/schme/edit.vue b/admin/src/views/schme/edit.vue index bb987a5..33def20 100644 --- a/admin/src/views/schme/edit.vue +++ b/admin/src/views/schme/edit.vue @@ -10,6 +10,16 @@ @close="handleClose" > + + + + + @@ -40,16 +50,6 @@ - - - - - @@ -60,8 +60,6 @@ import { schmeEdit, schmeAdd, schmeDetail } from '@/api/schme' import Popup from '@/components/popup/index.vue' import feedback from '@/utils/feedback' import type { PropType } from 'vue' -import {useDictOptions} from "@/hooks/useDictOptions"; -import {infoLists} from "@/api/info"; defineProps({ dictData: { type: Object as PropType>, @@ -171,7 +169,7 @@ const open = (type = 'add') => { mode.value = type popupRef.value?.open() } -const getNewsCateList = async () => { +const getoptionDataList = async () => { const res: any = await listAll() optionDataList.value = res || [] } @@ -201,5 +199,5 @@ defineExpose({ getDetail }) -getNewsCateList() +getoptionDataList() diff --git a/admin/src/views/schme/options.ts b/admin/src/views/schme/options.ts new file mode 100644 index 0000000..86e4fd2 --- /dev/null +++ b/admin/src/views/schme/options.ts @@ -0,0 +1,15 @@ +export default () => ({ + title: '个人中心广告图', + name: 'user-banner', + content: { + enabled: 1, + data: [ + { + image: '', + name: '', + link: {} + } + ] + }, + styles: {} +}) \ No newline at end of file