From a0fc229c0df1d0bd87b7638805b810e8031c8942 Mon Sep 17 00:00:00 2001
From: tangxiaobao <303826152@qq.com>
Date: 星期三, 21 七月 2021 16:42:33 +0800
Subject: [PATCH] 社区后台基础数据库bug修改

---
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActWorkGuideServiceImpl.java |   96 +++++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 82 insertions(+), 14 deletions(-)

diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActWorkGuideServiceImpl.java b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActWorkGuideServiceImpl.java
index bde8b41..1577a53 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActWorkGuideServiceImpl.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActWorkGuideServiceImpl.java
@@ -1,23 +1,35 @@
 package com.panzhihua.service_community.service.impl;
 
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.panzhihua.common.model.dtos.community.ComActWorkGuideDTO;
 import com.panzhihua.common.model.dtos.community.PageActWorkGuideDTO;
 import com.panzhihua.common.model.vos.R;
 import com.panzhihua.common.model.vos.community.ComActWorkGuideMaterialVO;
 import com.panzhihua.common.model.vos.community.ComActWorkGuideVO;
-import com.panzhihua.common.utlis.DifferentLongListUtil;
+import com.panzhihua.service_community.dao.ComActDAO;
 import com.panzhihua.service_community.dao.ComActWorkGuideDAO;
 import com.panzhihua.service_community.dao.ComActWorkGuideMaterialDAO;
+import com.panzhihua.service_community.model.dos.ComActDO;
 import com.panzhihua.service_community.model.dos.ComActWorkGuideDO;
 import com.panzhihua.service_community.model.dos.ComActWorkGuideMaterialDO;
 import com.panzhihua.service_community.service.ComActWorkGuideService;
+import net.sf.json.xml.XMLSerializer;
 import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.net.URLConnection;
+import java.text.DecimalFormat;
+import java.util.ArrayList;
 import java.util.List;
 import java.util.stream.Collectors;
 
@@ -27,17 +39,20 @@
  */
 @Service
 public class ComActWorkGuideServiceImpl extends ServiceImpl<ComActWorkGuideDAO, ComActWorkGuideDO> implements ComActWorkGuideService {
+    static String AK = "W3x8DhCWKc2UFIwYgclpRBdL6BeGLLQt"; // 百度地图密钥
     @Resource
     ComActWorkGuideMaterialDAO workGuideMaterialDAO;
+    @Resource
+    ComActDAO comActDAO;
 
     @Override
-    public R addWorkGuide(ComActWorkGuideVO workGuideVO, Long userId) {
+    public R addWorkGuide(ComActWorkGuideDTO workGuideDTO, Long userId) {
         ComActWorkGuideDO comActWorkGuideDO = new ComActWorkGuideDO();
-        BeanUtils.copyProperties(workGuideVO, comActWorkGuideDO);
+        BeanUtils.copyProperties(workGuideDTO, comActWorkGuideDO);
         comActWorkGuideDO.setCreateBy(userId);
         this.baseMapper.insert(comActWorkGuideDO);
         //保存办事指南材料
-        workGuideVO.getMaterials().forEach(material -> {
+        workGuideDTO.getMaterials().forEach(material -> {
             ComActWorkGuideMaterialDO workGuideMaterialDO = new ComActWorkGuideMaterialDO();
             workGuideMaterialDO.setMaterialName(material.getMaterialName());
             workGuideMaterialDO.setWorkGuideId(comActWorkGuideDO.getId());
@@ -47,25 +62,25 @@
     }
 
     @Override
-    public R editWorkGuide(ComActWorkGuideVO workGuideVO, Long userId) {
-        if (workGuideVO.getId() == 0L) {
+    public R editWorkGuide(ComActWorkGuideDTO workGuideDTO, Long userId) {
+        if (workGuideDTO.getId() == 0L) {
             return R.fail("Id有误!");
         }
-        ComActWorkGuideDO workGuideDO = this.baseMapper.selectById(workGuideVO.getId());
+        ComActWorkGuideDO workGuideDO = this.baseMapper.selectById(workGuideDTO.getId());
         if (workGuideDO == null) {
             return R.fail("Id有误!");
         }
-        BeanUtils.copyProperties(workGuideVO, workGuideDO);
+        BeanUtils.copyProperties(workGuideDTO, workGuideDO);
         workGuideDO.setUpdateBy(userId);
         this.baseMapper.updateById(workGuideDO);
-        if (workGuideVO.getMaterials().size() == 0) {//若编辑材料为null,执行删除操作
+        if (workGuideDTO.getMaterials().size() == 0) {//若编辑材料为null,执行删除操作
             workGuideMaterialDAO.delete(new LambdaQueryWrapper<ComActWorkGuideMaterialDO>()
-                    .eq(ComActWorkGuideMaterialDO::getWorkGuideId, workGuideVO.getId()));
+                    .eq(ComActWorkGuideMaterialDO::getWorkGuideId, workGuideDTO.getId()));
         } else {//若材料不为空,但是少了数据条数,也要执行删除
             List<ComActWorkGuideMaterialDO> workGuideMaterialDOS = workGuideMaterialDAO.selectList(new LambdaQueryWrapper<ComActWorkGuideMaterialDO>()
-                    .eq(ComActWorkGuideMaterialDO::getWorkGuideId, workGuideVO.getId()));
+                    .eq(ComActWorkGuideMaterialDO::getWorkGuideId, workGuideDTO.getId()));
             //1、筛选vo里面和db里,需要删除的材料数据
-            List<Long> voMaterialIds = workGuideVO.getMaterials().stream()
+            List<Long> voMaterialIds = workGuideDTO.getMaterials().stream()
                     .filter(materialVo -> materialVo.getId() != null)
                     .map(ComActWorkGuideMaterialVO::getId)
                     .collect(Collectors.toList());
@@ -76,7 +91,7 @@
             if (deleteMaterialIds.size() != 0) {
                 workGuideMaterialDAO.deleteBatchIds(deleteMaterialIds);
             }
-            workGuideVO.getMaterials().forEach(materialsVO -> {
+            workGuideDTO.getMaterials().forEach(materialsVO -> {
                 if (materialsVO.getId() != null && materialsVO.getId() != 0L) {
                     ComActWorkGuideMaterialDO workGuideMaterialDO1 = workGuideMaterialDOS.stream().filter(workGuideMaterialDO -> workGuideMaterialDO.getId()
                             .equals(materialsVO.getId())).findFirst().orElse(null);
@@ -96,13 +111,23 @@
     }
 
     @Override
-    public R detailWorkGuide(Long workGuideId) {
+    public R detailWorkGuide(Long workGuideId, Long conmunityId) {
         ComActWorkGuideDO workGuideDO = this.baseMapper.selectById(workGuideId);
         if (workGuideDO == null) {
             return R.fail("Id有误!");
         }
         ComActWorkGuideVO vo = new ComActWorkGuideVO();
         BeanUtils.copyProperties(workGuideDO, vo);
+        ComActDO comActDO = comActDAO.selectById(conmunityId);
+        if (comActDO != null){
+            vo.setAddress(comActDO.getAddress());
+            vo.setPhone(comActDO.getContactsPhone());
+        }
+        List<String> list = getCoordinate(vo.getAddress());
+        if (list !=null && list.size() > 0){
+            vo.setLon(list.get(0));
+            vo.setLat(list.get(1));
+        }
         List<ComActWorkGuideMaterialDO> workGuideMaterialDOS = workGuideMaterialDAO.selectList(new LambdaQueryWrapper<ComActWorkGuideMaterialDO>()
                 .eq(ComActWorkGuideMaterialDO::getWorkGuideId, workGuideId));
         workGuideMaterialDOS.forEach(workGuideMaterialDO -> {
@@ -138,4 +163,47 @@
                 .eq(ComActWorkGuideMaterialDO::getWorkGuideId, workGuideId));
         return R.ok();
     }
+
+    // 调用百度地图API根据地址,获取坐标
+    public static List<String> getCoordinate(String address) {
+        List<String> list = new ArrayList<>();
+        if (address != null && !"".equals(address)) {
+            address = address.replaceAll("\\s*", "").replace("#", "栋");
+            String url = "http://api.map.baidu.com/geocoder/v3/?address=" + address + "&output=json&ak=" + AK;
+            String json = loadJSON(url);
+//            json = "{" + json;
+//            json = json + "}";
+            if (json != null && !"".equals(json)) {
+                XMLSerializer xmlSerializer = new XMLSerializer();
+                //将xml转为json(注:如果是元素的属性,会在json里的key前加一个@标识)
+                String result = xmlSerializer.read(json).toString();
+                JSONObject obj = JSONObject.parseObject(json);
+                if ("0".equals(obj.getString("status"))) {
+                    double lng = obj.getJSONObject("result").getJSONObject("location").getDouble("lng"); // 经度
+                    double lat = obj.getJSONObject("result").getJSONObject("location").getDouble("lat"); // 纬度
+                    DecimalFormat df = new DecimalFormat("#.######");
+                    list.add(df.format(lng));
+                    list.add(df.format(lat));
+                    return list;
+                }
+            }
+        }
+        return null;
+    }
+
+    public static String loadJSON(String url) {
+        StringBuilder json = new StringBuilder();
+        try {
+            URL oracle = new URL(url);
+            URLConnection yc = oracle.openConnection();
+            BufferedReader in = new BufferedReader(new InputStreamReader(yc.getInputStream(), "UTF-8"));
+            String inputLine = null;
+            while ((inputLine = in.readLine()) != null) {
+                json.append(inputLine);
+            }
+            in.close();
+        } catch (MalformedURLException e) {} catch (IOException e) {}
+        return json.toString();
+    }
+
 }

--
Gitblit v1.7.1