首页 > 其他分享 >4.通过父级代号获取所有省/市/区和通过编号获取省/市/区名

4.通过父级代号获取所有省/市/区和通过编号获取省/市/区名

时间:2022-10-08 17:24:20浏览次数:55  
标签:区名 return 父级 获取 result ku import com store

1.总结:昨天主要是实现了通过父级代号来获取代号下面的省/市/区,以及通过代号获取对应的省/市/区

1.mapper

package com.ku.store.mapper;

import com.ku.store.entity.District;

import java.util.List;

public interface DistrictMapper {
    /**
     *  获取全国所有省/某所有市/某市所有区
     * @param parent 父级代号,当获取某市所有区时,使用市的代号;当获取省所有市时,使用省的代号;
     *               当获取全国所有省时,使用"86"作为父级代号
     * @return
     */
    List<District>findByParent(String parent);

    /**
     *  根据编码查询省份/市/区
     * @param code
     * @return
     */
    String findNameByCode(String code);
}

2.service

package com.ku.store.service;

import com.ku.store.entity.District;

import java.util.List;

public interface IDistrictService {
    /**
     *  获取全国所有省/某省所有市/某市所有区
     * @param parent 父级代号 当获取某市所有区时,使用市的代号;当获取某省所有市时,使用省的代号;
     *               当获取全国所有省时,使用"86"作为父级代号
     * @return 全国所有省/全省所有市/全市所有区
     */
    List<District>getByParent(String parent);

    /**
     *  根据省/市/区的行政代号获取省/市/区的名称
     * @param code 省/市/区的行政代号
     * @return 匹配的省/市/区的名称,如果没有匹配的数据则返回null
     */
    String getNameByCode(String code);
}

3.serviceImpl

package com.ku.store.service.impl;

import com.ku.store.entity.District;
import com.ku.store.mapper.DistrictMapper;
import com.ku.store.service.IDistrictService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class DistrictServiceImpl implements IDistrictService {
    @Autowired
    private DistrictMapper districtMapper;

    @Override
    public List<District> getByParent(String parent) {
        List<District> list = districtMapper.findByParent(parent);
        System.out.println("count:"+list.size());
        for (District district:list) {
            district.setId(null);
            district.setParent(null);
        }
        return list;
    }

    @Override
    public String getNameByCode(String code) {
        return districtMapper.findNameByCode(code);
    }
}

4.BaseController

package com.ku.store.controller;

import com.ku.store.service.exception.*;
import com.ku.store.utils.JsonResult;
import org.springframework.web.bind.annotation.ExceptionHandler;

import javax.servlet.http.HttpSession;

/**
 * 该类用于响应成功的状态码以及统一处理异常 ,简化原来的controller
 */
//控制类基类
public class BaseController {
    public static final int OK = 200;

    //统一处理方法抛出的异常,此注解表示专门处理这个类的异常
    //注意:不要使用相同的注解参数,例如:Throwable e
    @ExceptionHandler({ServiceException.class, FileUploadException.class})
    public JsonResult<Void>handleException(Throwable e){
        JsonResult<Void> result = new JsonResult<>();
        if (e instanceof UsernameDuplicateException){
            result.setState(400);
            result.setMessage("用户名已存在!");
        }else if(e instanceof UserNotFoundException){
            result.setState(401);
            result.setMessage("用户名未找到!");
        }else if(e instanceof PasswordNotMatchException){
            result.setState(402);
            result.setMessage("密码不匹配!");
        }else if(e instanceof AddressCountLimitException){
            result.setState(403);
            result.setMessage("地址数量超过上限!");
        }else if(e instanceof InsertException){
            result.setState(500);
            result.setMessage("插入用户数据出现未知错误!");
        }else if(e instanceof UpdateException){
            result.setState(501);
            result.setMessage("更改用户数据出现未知错误!");
        }else if(e instanceof FileEmptyException){
            result.setState(600);
            result.setMessage("文件不能为空!");
        }else if(e instanceof FileSizeException){
            result.setState(601);
            result.setMessage("文件超过限制!");
        }else if(e instanceof FileTypeException){
            result.setState(602);
            result.setMessage("文件类型不允许!");
        }else if(e instanceof FileStateException){
            result.setState(603);
            result.setMessage("文件状态不正常!");
        }else if(e instanceof FileUploadIOException){
            result.setState(604);
            result.setMessage("文件上传流错误!");
        }
        return result;
    }

    /**
     * 从HttpSession对象中获取uid
     * @param session HttpSession对象
     * @return 当前登录用户id
     */
    protected final Integer getUidFromSession(HttpSession session){
        return Integer.valueOf(session.getAttribute("uid").toString());
    }

    /**
     * 从HttpSession对象中获取username
     * @param session HttpSession对象
     * @return 当前登录用户的username
     */
    protected final String getUsernameFromSession(HttpSession session){
        return session.getAttribute("username").toString();
    }
}

5.DistrtictController

package com.ku.store.controller;

import com.ku.store.entity.District;
import com.ku.store.service.IDistrictService;
import com.ku.store.service.impl.DistrictServiceImpl;
import com.ku.store.utils.JsonResult;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

@RestController
@RequestMapping("/districts")
public class DistrictController extends BaseController{
    @Autowired
    //后面尽量使用接口,而不是实现类,因为你的mapper就是接口,所以你的Service接口也能输出,之前不能输出是自己哪里出问题了
    private IDistrictService districtService;


    @GetMapping({"","/"})
    public JsonResult<List<District>> getByParent(String parent){
        List<District> data = districtService.getByParent(parent);
        return new JsonResult<>(OK, data);
    }
}

 

2.反思:在这个部分代码的编写中,我们可以在配置文件中动态地传入一个值,在配置文件中使用user.address.max-count=XX,在测试类中通过Value("${}")注解形式赋值;

    其实编写的代码也就是简单的地址的增删改查,与前面的用户注册,登录,修改密码,以及修改资料和修改图片简单很多,但重要的是接触了获取省/市/区的形式

    在注册,登录,修改密码,修改图片主要学会了,判断用户是否存在和逻辑删除来决定是否进行后续的注册,登录,修改操作,在登录和修改密码中需要判断

    现在密码加盐值是否与之前相等才能进行后续操作,这个主要从service的实现类中进行

 

3.复盘:对前面用户模块进行回顾,顺便 要在闲暇时候看看面试题,先背下来再在后面的项目中逐渐理解

 

标签:区名,return,父级,获取,result,ku,import,com,store
From: https://www.cnblogs.com/kzf-99/p/16769577.html

相关文章

  • 即将开营|报名获取跨平台与热更新技术操作秘籍!
    训练营介绍欢迎参加「移动开发实战训练营」,本训练营重点介绍3大场景的动态化:「安卓动态化(主要服务:SDK热更新、插件化等)」、「Flutter动态化」、「小程序动态化」。课程......
  • 【Python小工具】爬虫之获取图片验证码
    Python小工具系列是一个使用Python实现各种各样有意思的小玩意儿的系列,包括制作个性化的二维化、词云、简单爬虫等,持续更新中,如果你感兴趣就关注一波吧!一、基本介绍接上一篇......
  • (待完善)python3判断excel文件是否被打开,如果已经打开计算出来打开了几个,并且获取到打开
    该部分代码还需要完善1#!/usr/bin/envpython2#-*-coding:utf-8-*-34importpsutil5fromwin32com.clientimportDispatch678deffileisopen......
  • 基于Scrapy框架的二手房数据获取及分析
    ​诸如房价这些问题近些年来一直是国内的热点话题。其中房价变化大,房价高等一系列问题也引起大量的关注。因此,本系统致力于利用现有的技术对某二手房交易网站进行数据的爬......
  • kafka获取元数据api-admin
    1.Kafka客户端API类型AdminAPI:允许管理和检测topic、broker以及其他Kafka对象。ProducerAPI:发布消息到一个或者多个topic。ConsumerAPI:订阅一个或者多个topic,并处......
  • Android 小项目之--解析如何获取SDCard 内存
    1、讲述Environment类。2、讲述StatFs类。3、完整例子读取SDCard内存1、讲述Environment类Environment是一个提供访问环境变量的类。Environment 包含常量:​​MED......
  • Java手写一个批量获取数据工具类
    1.背景偶尔会在公司的项目里看到这样的代码List<Info>infoList=newArrayList<Info>();if(infoidList.size()>100){intsize=infoidList.size();i......
  • uniapp的plus获取数据
    plus.runtime.versionplus.runtime.getProperty拿到的版本plus.runtime.version拿到的是manifest.json中设置的apk/ipa版本号,整包更新的版本plus.runtime.getPropert......
  • electron 获取response 拦截所有的返回数据
    electron获取response拦截所有的返回数据注意对性能有所影响main.js中主线程中加入下面的代买import{app,BrowserWindow,shell,ipcMain,Menu,session,Tray,......
  • 关于URL的获取
    刚刚某人叫我放贾樟柯的《世界》给她看,满世界找不到,因为这是他的第一部电影。后来只在手机浏览器上找到了,本来想到电脑上打开网页源码,没想到 HTTPERROR-2146697211误......