From 0915f9c21ee26c3b52a763eed9000d3b165e19ce Mon Sep 17 00:00:00 2001
From: kaiyu <404897439@qq.com>
Date: Fri, 27 Nov 2020 11:22:15 +0800
Subject: [PATCH] BS登陆接口增加返回数据regionCode 开通mapPath接口,通过token获取用户地图

---
 src/main/java/com/moral/service/impl/AccountServiceImpl.java      |   85 +++++++++++++
 src/main/java/com/moral/service/MapPathService.java               |    9 +
 src/main/java/com/moral/controller/WebController.java             |   34 +++-
 src/main/java/com/moral/service/OrganizationService.java          |   12 +
 src/main/java/com/moral/service/impl/MapPathServiceImpl.java      |   80 +++++++++++++
 src/main/java/com/moral/mapper/MapPathMapper.java                 |   10 +
 src/main/java/com/moral/entity/WebProvince.java                   |   16 ++
 src/main/resources/mapper/MapPathMapper.xml                       |   41 ++++++
 src/main/java/com/moral/service/impl/OrganizationServiceImpl.java |   13 ++
 src/main/java/com/moral/entity/WebCity.java                       |   18 +++
 src/main/java/com/moral/service/AccountService.java               |    2 
 11 files changed, 299 insertions(+), 21 deletions(-)

diff --git a/src/main/java/com/moral/controller/WebController.java b/src/main/java/com/moral/controller/WebController.java
index f88d02e..6cdf281 100644
--- a/src/main/java/com/moral/controller/WebController.java
+++ b/src/main/java/com/moral/controller/WebController.java
@@ -6,20 +6,16 @@
 import com.moral.common.util.*;
 import com.moral.common.webAnno.UserLoginToken;
 import com.moral.entity.*;
+import com.moral.mapper.MapPathMapper;
 import com.moral.service.*;
 import com.moral.util.DateUtil;
 import com.moral.util.LatLngTransformation;
-import io.swagger.annotations.ApiImplicitParam;
-import io.swagger.annotations.ApiImplicitParams;
-import io.swagger.annotations.ApiOperation;
-import jdk.nashorn.internal.runtime.logging.Logger;
 import org.springframework.util.ObjectUtils;
 import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.PostConstruct;
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.util.*;
@@ -65,12 +61,17 @@
     SensorService sensorService;
     @Resource
     OrganizationSensorsService organizationSensorsService;
+    @Resource
+    MapPathService mapPathService;
 
 
-    @UserLoginToken
     @GetMapping("test")
-    public String add() {
-        return "test success!";
+    public ResultBean<List<WebProvince>> add(HttpServletRequest request) {
+        String token =  request.getHeader("token");
+        List<WebProvince> mapPath = mapPathService.getMapPath(token);
+        if(ObjectUtils.isEmpty(mapPath))
+            return new ResultBean<>("������������������������",ResultBean.FAIL);
+        return new ResultBean<>(mapPath);
     }
 
     /**
@@ -87,7 +88,7 @@
             resultMap.put("msg", "������������������������������������");
             resultMap.put("accountId", -1);
         } else {
-            resultMap = accountService.webLogin(parameters);
+            resultMap = accountService.bsWebLogin(parameters);
             String accountId = String.valueOf(resultMap.get("accountId"));
             if (!accountId.equals("-1")) {
                 redisHashUtil.deleteMapVal("webToken", accountId);
@@ -445,6 +446,17 @@
         return new ResultBean<Map<String, Object>>(sortDatas);
     }
 
+    @GetMapping("mapPath")
+    public ResultBean<List<WebProvince>> mapPath(HttpServletRequest request) {
+        String token =  request.getHeader("token");
+        List<WebProvince> mapPath = mapPathService.getMapPath(token);
+        if(ObjectUtils.isEmpty(mapPath))
+            return new ResultBean<>("������������������������",ResultBean.FAIL);
+        return new ResultBean<>(mapPath);
+    }
+
+
+
 
     /**
      * @Description: ���������������������������������������state
@@ -453,7 +465,7 @@
      * @Author: ������������
      * @Date: 2020/10/19
      */
-    public List<Map<String, Object>> insertDeviceInfo(List<Map<String, Object>> datas, List<Device> devices) {
+    private List<Map<String, Object>> insertDeviceInfo(List<Map<String, Object>> datas, List<Device> devices) {
         Map<String, Device> map = new HashMap<>();
         devices.forEach(p -> {
             map.put(p.getMac(), p);
@@ -512,7 +524,7 @@
      * @Author: ������������
      * @Date: 2020/10/20
      */
-    public String getFiveMinuteAgoTime(String time) {
+    private String getFiveMinuteAgoTime(String time) {
         try {
             SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
             Date date = sdf.parse(time);
diff --git a/src/main/java/com/moral/entity/WebCity.java b/src/main/java/com/moral/entity/WebCity.java
new file mode 100644
index 0000000..84c4793
--- /dev/null
+++ b/src/main/java/com/moral/entity/WebCity.java
@@ -0,0 +1,18 @@
+package com.moral.entity;
+
+import lombok.Data;
+
+import javax.persistence.Id;
+import java.util.List;
+
+@Data
+public class WebCity {
+    @Id
+    private Integer cityCode;
+
+    private String cityName;
+
+    private Integer provinceCode;
+
+    private List<Area> areas;
+}
diff --git a/src/main/java/com/moral/entity/WebProvince.java b/src/main/java/com/moral/entity/WebProvince.java
new file mode 100644
index 0000000..e7070e0
--- /dev/null
+++ b/src/main/java/com/moral/entity/WebProvince.java
@@ -0,0 +1,16 @@
+package com.moral.entity;
+
+import lombok.Data;
+
+import javax.persistence.Id;
+import java.util.List;
+
+@Data
+public class WebProvince {
+    @Id
+    private Integer provinceCode;
+
+    private String provinceName;
+
+    private List<WebCity> cities;
+}
diff --git a/src/main/java/com/moral/mapper/MapPathMapper.java b/src/main/java/com/moral/mapper/MapPathMapper.java
new file mode 100644
index 0000000..f853083
--- /dev/null
+++ b/src/main/java/com/moral/mapper/MapPathMapper.java
@@ -0,0 +1,10 @@
+package com.moral.mapper;
+
+import com.moral.entity.WebProvince;
+
+import java.util.List;
+import java.util.Map;
+
+public interface MapPathMapper {
+    List<WebProvince> getMapPathByRegionCode(Map<String,Object> regionCode);
+}
diff --git a/src/main/java/com/moral/service/AccountService.java b/src/main/java/com/moral/service/AccountService.java
index ad57c69..3801771 100644
--- a/src/main/java/com/moral/service/AccountService.java
+++ b/src/main/java/com/moral/service/AccountService.java
@@ -41,4 +41,6 @@
 	Map<String, Object> webLogin(Map<String, Object> parameters);
 
 	Map<String, Object> getAccountInfoById(String accountId);
+
+	Map<String, Object> bsWebLogin(Map<String, Object> parameters);
 }
diff --git a/src/main/java/com/moral/service/MapPathService.java b/src/main/java/com/moral/service/MapPathService.java
new file mode 100644
index 0000000..215f070
--- /dev/null
+++ b/src/main/java/com/moral/service/MapPathService.java
@@ -0,0 +1,9 @@
+package com.moral.service;
+
+import com.moral.entity.WebProvince;
+
+import java.util.List;
+
+public interface MapPathService {
+    List<WebProvince> getMapPath(String token);
+}
diff --git a/src/main/java/com/moral/service/OrganizationService.java b/src/main/java/com/moral/service/OrganizationService.java
index 11b1d39..aa62ce7 100644
--- a/src/main/java/com/moral/service/OrganizationService.java
+++ b/src/main/java/com/moral/service/OrganizationService.java
@@ -12,17 +12,19 @@
 
     List<Organization> getOrganizationsByAreaName(Map<String, Object> parameters);
 
-    public PageBean queryByPageBean(PageBean pageBean);
+    PageBean queryByPageBean(PageBean pageBean);
 
-    public void addOrModify(Organization organization);
+    void addOrModify(Organization organization);
 
-    public void deleteByIds(Integer... ids);
+    void deleteByIds(Integer... ids);
 
     List<Organization> getOrganizationsByName(String name);
 
-    public Organization getOrganizationById(int id);
+    Organization getOrganizationById(int id);
 
-    public Organization getFatherOrg(int childId);
+    Organization getFatherOrg(int childId);
 
     List<Organization> getOrganizationList(String organizationName);
+
+    Organization getOrganizationByAccountId(Integer accountId);
 }
diff --git a/src/main/java/com/moral/service/impl/AccountServiceImpl.java b/src/main/java/com/moral/service/impl/AccountServiceImpl.java
index 69752c4..39f4669 100644
--- a/src/main/java/com/moral/service/impl/AccountServiceImpl.java
+++ b/src/main/java/com/moral/service/impl/AccountServiceImpl.java
@@ -12,6 +12,8 @@
 
 import javax.annotation.Resource;
 
+import com.moral.entity.*;
+import com.moral.mapper.DictionaryDataMapper;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
 import org.springframework.stereotype.Service;
@@ -25,10 +27,6 @@
 import com.moral.common.exception.BusinessException;
 import com.moral.common.util.ResourceUtil;
 import com.moral.common.util.ValidateUtil;
-import com.moral.entity.Account;
-import com.moral.entity.Menu;
-import com.moral.entity.Organization;
-import com.moral.entity.Role;
 import com.moral.mapper.AccountMapper;
 import com.moral.mapper.OrganizationMapper;
 import com.moral.service.AccountService;
@@ -58,7 +56,6 @@
     private OrganizationMapper organizationMapper;
 
 
-
     @Override
     public Map<String, Object> getAccountInfoById(String accountId) {
         Map<String, Object> result = new HashMap<String, Object>();
@@ -81,6 +78,7 @@
         }
         return result;
     }
+
 
     @Override
     public Map<String, Object> webLogin(Map<String, Object> parameters) {
@@ -382,5 +380,82 @@
         return result;
     }
 
+    @Resource
+    DictionaryDataMapper dictionaryDataMapper;
 
+    @Override
+    public Map<String, Object> bsWebLogin(Map<String, Object> parameters) {
+        Map<String, Object> result = new HashMap<String, Object>();
+        Account account = new Account();
+        account.setAccountName((String) parameters.get("account"));
+        String rawPassword = (String) parameters.get("password");
+        account = accountMapper.selectOne(account);
+        boolean isValid = account == null ? false : encoder.matches(rawPassword, account.getPassword());
+        if (!isValid) {
+            result.put("msg", "���������������������������������");
+            result.put("accountId", -1);
+        } else {
+            result = judgeAccountInfo(account);
+            if (!result.get("accountId").equals(-1)){
+                String regionCode = getRegionCodeByAccount(account);
+                if(!ObjectUtils.isEmpty(regionCode))
+                    result.put("regionCode",regionCode);
+            }
+
+        }
+        return result;
+    }
+
+    /**
+     * @Description: ������id������������������������������
+     * @Param: [params]
+     * @return: java.util.Map<java.lang.String               ,               java.lang.Object>
+     * @Author: ������������
+     * @Date: 2020/11/25
+     */
+    private String getRegionCodeByAccount(Account account) {
+        Organization organization = new Organization();
+        organization.setId(account.getOrganizationId());
+        organization = organizationMapper.selectOne(organization);
+        Map<String, Object> regionCodeAndType = getRegionCodeAndTypeByOrg(organization);
+        if(ObjectUtils.isEmpty(regionCodeAndType))
+            return null;
+        return (String) regionCodeAndType.get("regionCode");
+    }
+
+    public static Map<String,Object> getRegionCodeAndTypeByOrg(Organization organization){
+        Map<String,Object> result = new HashMap<>();
+        String regionCode = "";
+        String regionType = "";
+        Long villageCode = organization.getVillageCode();
+        Long townCode = organization.getTownCode();
+        Integer areaCode = organization.getAreaCode();
+        Integer cityCode = organization.getCityCode();
+        Integer provinceCode = organization.getProvinceCode();
+
+        if(!ObjectUtils.isEmpty(villageCode)){
+            regionCode = String.valueOf(villageCode);
+            regionType = "village";
+        }else if(!ObjectUtils.isEmpty(townCode)){
+            regionCode = String.valueOf(townCode);
+            regionType = "town";
+        }else if(!ObjectUtils.isEmpty(areaCode)){
+            regionCode = String.valueOf(areaCode);
+            regionType = "area";
+        }else if(!ObjectUtils.isEmpty(cityCode)){
+            regionCode = String.valueOf(cityCode);
+            regionType = "city";
+        }else if(!ObjectUtils.isEmpty(provinceCode)){
+            regionCode = String.valueOf(provinceCode);
+            regionType = "province";
+        }else{
+            return null;
+        }
+        result.put("regionCode",regionCode);
+        result.put("regionType",regionType);
+        return result;
+    }
 }
+
+
+
diff --git a/src/main/java/com/moral/service/impl/MapPathServiceImpl.java b/src/main/java/com/moral/service/impl/MapPathServiceImpl.java
new file mode 100644
index 0000000..2e70098
--- /dev/null
+++ b/src/main/java/com/moral/service/impl/MapPathServiceImpl.java
@@ -0,0 +1,80 @@
+package com.moral.service.impl;
+
+import com.moral.common.util.WebTokenUtils;
+import com.moral.controller.ScreenController;
+import com.moral.entity.Organization;
+import com.moral.entity.WebProvince;
+import com.moral.mapper.MapPathMapper;
+import com.moral.service.MapPathService;
+import com.moral.service.OrganizationService;
+import org.apache.log4j.Logger;
+import org.springframework.stereotype.Service;
+import org.springframework.util.ObjectUtils;
+
+import javax.annotation.Resource;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+@Service
+public class MapPathServiceImpl implements MapPathService {
+    public static Logger log = Logger.getLogger(MapPathServiceImpl.class);
+    @Resource
+    MapPathMapper mapPathMapper;
+    @Resource
+    OrganizationService organizationService;
+
+    /**
+     * @Description: ������������token������������������������
+     * @Param: [token]
+     * @return: java.util.List<com.moral.entity.WebProvince>
+     * @Author: ������������
+     * @Date: 2020/11/26
+     */
+    @Override
+    public List<WebProvince> getMapPath(String token) {
+        List<WebProvince> results;
+        try {
+            Map<String, Object> params = new HashMap<>();
+            Integer id = Integer.parseInt(WebTokenUtils.getIdBytoken(token));
+            Organization organization = organizationService.getOrganizationByAccountId(id);
+
+            Map<String, Object> regionCodeAndType = getRegionCodeAndTypeByOrg(organization);
+            String regionType = (String) regionCodeAndType.get("regionType");
+            String regionCode = (String) regionCodeAndType.get("regionCode");
+            params.put(regionType, regionCode);
+            results = mapPathMapper.getMapPathByRegionCode(params);
+            return results;
+        } catch (Exception e) {
+            log.error(e.getMessage());
+        }
+        return null;
+    }
+
+    public static Map<String, Object> getRegionCodeAndTypeByOrg(Organization organization) {
+        Map<String, Object> result = new HashMap<>();
+        String regionCode = "";
+        String regionType = "";
+        Long villageCode = organization.getVillageCode();
+        Long townCode = organization.getTownCode();
+        Integer areaCode = organization.getAreaCode();
+        Integer cityCode = organization.getCityCode();
+        Integer provinceCode = organization.getProvinceCode();
+
+        if (!ObjectUtils.isEmpty(areaCode)) {
+            regionCode = String.valueOf(areaCode);
+            regionType = "areaCode";
+        } else if (!ObjectUtils.isEmpty(cityCode)) {
+            regionCode = String.valueOf(cityCode);
+            regionType = "cityCode";
+        } else if (!ObjectUtils.isEmpty(provinceCode)) {
+            regionCode = String.valueOf(provinceCode);
+            regionType = "provinceCode";
+        } else {
+            return null;
+        }
+        result.put("regionCode", regionCode);
+        result.put("regionType", regionType);
+        return result;
+    }
+}
diff --git a/src/main/java/com/moral/service/impl/OrganizationServiceImpl.java b/src/main/java/com/moral/service/impl/OrganizationServiceImpl.java
index 072ebea..fa197fe 100644
--- a/src/main/java/com/moral/service/impl/OrganizationServiceImpl.java
+++ b/src/main/java/com/moral/service/impl/OrganizationServiceImpl.java
@@ -9,6 +9,8 @@
 
 import javax.annotation.Resource;
 
+import com.moral.mapper.AccountMapper;
+import com.moral.service.AccountService;
 import org.apache.commons.collections.CollectionUtils;
 import org.springframework.data.annotation.Transient;
 import org.springframework.stereotype.Service;
@@ -34,6 +36,9 @@
 
 @Service
 public class OrganizationServiceImpl implements OrganizationService {
+
+    @Resource
+    private AccountMapper accountMapper;
 
     @Resource
     private OrganizationMapper organizationMapper;
@@ -214,4 +219,12 @@
         List<Organization> organizationList = organizationMapper.getOrganizationList(organizationName);
         return organizationList;
     }
+
+    @Override
+    public Organization getOrganizationByAccountId(Integer accountId) {
+        Map<String, Object> organizationId = accountMapper.getOrganizationIdByAccountId(accountId);
+        int orgId = (int) organizationId.get("organization_id");
+        Organization org = getOrganizationById(orgId);
+        return org;
+    }
 }
diff --git a/src/main/resources/mapper/MapPathMapper.xml b/src/main/resources/mapper/MapPathMapper.xml
new file mode 100644
index 0000000..95cbec5
--- /dev/null
+++ b/src/main/resources/mapper/MapPathMapper.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.moral.mapper.MapPathMapper">
+    <resultMap id="resultMap" type="WebProvince">
+        <id property="provinceCode" column="province_code"></id>
+        <result property="provinceName" column="province_name"></result>
+        <collection column="province_code" property="cities" ofType="com.moral.entity.WebCity">
+            <id property="cityCode" column="city_code"></id>
+            <result property="cityName" column="city_name"></result>
+            <result property="provinceCode" column="province_code"></result>
+            <collection property="areas" column="city_code" ofType="com.moral.entity.Area">
+                <id property="areaCode" column="area_code"></id>
+                <result property="areaName" column="area_name"></result>
+                <result property="cityCode" column="city_code"></result>
+            </collection>
+        </collection>
+    </resultMap>
+
+    <sql id="Base_Column_List">
+        p.province_code,p.province_name,c.city_code,c.city_name,c.province_code,a.area_code,a.area_name,a.city_code
+    </sql>
+
+    <select id="getMapPathByRegionCode" resultMap="resultMap">
+        SELECT
+        <include refid="Base_Column_List"/>
+        FROM province p
+        JOIN city c ON c.`province_code` = p.`province_code`
+        JOIN area a ON a.`city_code` = c.`city_code`
+        <choose>
+            <when test="areaCode!=null">
+                AND a.`area_code` = #{areaCode}
+            </when>
+            <when test="cityCode!=null">
+                AND c.`city_code` = #{cityCode}
+            </when>
+            <when test="provinceCode!=null">
+                AND p.`province_code` = #{provinceCode}
+            </when>
+        </choose>
+    </select>
+</mapper>
\ No newline at end of file

--
Gitblit v1.8.0