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