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); src/main/java/com/moral/entity/WebCity.java
New file @@ -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; } src/main/java/com/moral/entity/WebProvince.java
New file @@ -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; } src/main/java/com/moral/mapper/MapPathMapper.java
New file @@ -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); } 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); } src/main/java/com/moral/service/MapPathService.java
New file @@ -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); } 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); } 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; } } src/main/java/com/moral/service/impl/MapPathServiceImpl.java
New file @@ -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; } } 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; } } src/main/resources/mapper/MapPathMapper.xml
New file @@ -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>