BS登陆接口增加返回数据regionCode
开通mapPath接口,通过token获取用户地图
6 files added
5 files modified
320 ■■■■■ changed files
src/main/java/com/moral/controller/WebController.java 34 ●●●●● patch | view | raw | blame | history
src/main/java/com/moral/entity/WebCity.java 18 ●●●●● patch | view | raw | blame | history
src/main/java/com/moral/entity/WebProvince.java 16 ●●●●● patch | view | raw | blame | history
src/main/java/com/moral/mapper/MapPathMapper.java 10 ●●●●● patch | view | raw | blame | history
src/main/java/com/moral/service/AccountService.java 2 ●●●●● patch | view | raw | blame | history
src/main/java/com/moral/service/MapPathService.java 9 ●●●●● patch | view | raw | blame | history
src/main/java/com/moral/service/OrganizationService.java 12 ●●●●● patch | view | raw | blame | history
src/main/java/com/moral/service/impl/AccountServiceImpl.java 85 ●●●●● patch | view | raw | blame | history
src/main/java/com/moral/service/impl/MapPathServiceImpl.java 80 ●●●●● patch | view | raw | blame | history
src/main/java/com/moral/service/impl/OrganizationServiceImpl.java 13 ●●●●● patch | view | raw | blame | history
src/main/resources/mapper/MapPathMapper.xml 41 ●●●●● patch | view | raw | blame | history
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>