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