工具类包(1)-通用模块-Saas多租户平台开发

工具类包(1)-通用模块-Saas多租户平台开发


目录




内容

1、创建通用common模块

不管是什么样的项目、体系或者架构,都需要一些工具类。那么我们把这些常用的自定义工具类统一放置在包中:com.ihrm.common.utils。创建子模块过程不在详述,结构目录如图:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-v1Gfnke5-1605189660263)(./images/2020-11-12_common-utils-1.png)]

常用工具类如下:

  • 返回相关
    • 通用返回类
    • 通用响应(枚举)
  • 查询相关
    • 通用分页工具类
  • 日志相关
    • IPUtils
      • 获取用户IP
  • spring相关
    • spring上下文工具类
  • 杂项
    • 通用日期工具类
      • 日期转字符串
      • 字符串转日期
    • 数字工具类
      • 生成指定位数的随机数
    • 常量类

1、返回相关

1.1、通用响应(枚举)

通常响应中需要包含code与message,那么我们把一些常用code和mesage组合封装到Enum中,其他如有需要可以自定义,详细如下:

  • RespEnum.java

      package com.ihrm.common.utils;
    
      import lombok.AllArgsConstructor;
      import lombok.Getter;
    
      @Getter
      @AllArgsConstructor
      public enum RespEnum {
      	SUCCESS(0, "SUCCESS")
      	;
      	private int code;
      	private String message;
      }
    
  • 解析:

    • 这么我们只添加了成功响应枚举,code为0,方便前端处理
    • 其他响应枚举,根据需要添加
  • 常用响应码与描述可参考 HTTP协议响应码与描述

1.2、通用响应类

常用响应类包含3部分:响应码、响应消息、响应数据。详细如下:

  • R.java

     package com.ihrm.common.utils;
    
     import java.util.HashMap;
     import java.util.Map;
    
     /**
      * 返回数据
      */
     public class R extends HashMap<String, Object> {
     	private static final long serialVersionUID = 1L;
    
     	public R() {
     		put("code", 0);
     		put("msg", "success");
     	}
    
     	public static R error() {
     		return error(500, "未知异常,请联系管理员");
     	}
    
     	public static R error(String msg) {
     		return error(500, msg);
     	}
    
     	public static R error(int code, String msg) {
     		R r = new R();
     		r.put("code", code);
     		r.put("msg", msg);
     		return r;
     	}
    
     	public static R ok(String msg) {
     		R r = new R();
     		r.put("msg", msg);
     		return r;
     	}
    
     	public static R ok(Map<String, Object> map) {
     		R r = new R();
     		r.putAll(map);
     		return r;
     	}
    
     	public static R ok() {
     		return new R();
     	}
    
     	public static R body(RespEnum respEnum) {
     		R r = new R();
     		r.put("code", respEnum.getCode());
     		r.put("msg", respEnum.getMessage());
     		return r;
     	}
     	@Override
     	public R put(String key, Object value) {
     		super.put(key, value);
     		return this;
     	}
    
     }
    

2、查询相关

2.1、常量类

  • Constant.java

      package com.ihrm.common.utils;
    
      public class Constant {
    
      	/**
      	 * 当前页码
      	 */
      	public static final String PAGE = "page";
      	/**
      	 * 每页显示记录数
      	 */
      	public static final String LIMIT = "limit";
      	/**
      	 * 排序字段
      	 */
      	public static final String ORDER_FIELD = "orderField";
      	/**
      	 * 排序方式
      	 */
      	public static final String ORDER = "order";
      	/**
      	 * 升序
      	 */
      	public static final String ASC = "asc";
    
      }
    

2.2、分页工具类

	package com.ihrm.common.utils;

	import com.baomidou.mybatisplus.core.metadata.IPage;

	import java.io.Serializable;
	import java.util.List;

	/**
	 * 分页工具类
	 */
	public class PageUtils implements Serializable {
		private static final long serialVersionUID = 1L;
		/**
		 * 总记录数
		 */
		private int totalCount;
		/**
		 * 每页记录数
		 */
		private int pageSize;
		/**
		 * 总页数
		 */
		private int totalPage;
		/**
		 * 当前页数
		 */
		private int currPage;
		/**
		 * 列表数据
		 */
		private List<?> list;

		/**
		 * 分页
		 * @param list        列表数据
		 * @param totalCount  总记录数
		 * @param pageSize    每页记录数
		 * @param currPage    当前页数
		 */
		public PageUtils(List<?> list, int totalCount, int pageSize, int currPage) {
			this.list = list;
			this.totalCount = totalCount;
			this.pageSize = pageSize;
			this.currPage = currPage;
			this.totalPage = (int)Math.ceil((double)totalCount/pageSize);
		}

		/**
		 * 分页
		 */
		public PageUtils(IPage<?> page) {
			this.list = page.getRecords();
			this.totalCount = (int)page.getTotal();
			this.pageSize = (int)page.getSize();
			this.currPage = (int)page.getCurrent();
			this.totalPage = (int)page.getPages();
		}

		public int getTotalCount() {
			return totalCount;
		}

		public void setTotalCount(int totalCount) {
			this.totalCount = totalCount;
		}

		public int getPageSize() {
			return pageSize;
		}

		public void setPageSize(int pageSize) {
			this.pageSize = pageSize;
		}

		public int getTotalPage() {
			return totalPage;
		}

		public void setTotalPage(int totalPage) {
			this.totalPage = totalPage;
		}

		public int getCurrPage() {
			return currPage;
		}

		public void setCurrPage(int currPage) {
			this.currPage = currPage;
		}

		public List<?> getList() {
			return list;
		}

		public void setList(List<?> list) {
			this.list = list;
		}

	}

后记

本项目为参考某马视频开发,相关视频及配套资料可自行度娘或者联系本人。上面为自己编写的开发文档,持续更新。欢迎交流,本人QQ:806797785

前端项目源代码地址:https://gitee.com/gaogzhen/ihrm-parent    // 后端项目
后端JAVA源代码地址:https://gitee.com/gaogzhen/ihrm-vue    // 前端后台管理系统

猜你喜欢

转载自blog.csdn.net/gaogzhen/article/details/109659869