package com.heeexy.example.util;
import com.alibaba.fastjson.JSONObject;
import com.heeexy.example.config.exception.CommonJsonException;
import com.heeexy.example.util.constants.Constants;
import com.heeexy.example.util.constants.ErrorEnum;
import javax.servlet.http.HttpServletRequest;
import java.util.Enumeration;
import java.util.List;
/**
* @author: hxy
* @description: 本后台接口系统常用的json工具类
* @date: 2017/10/24 10:12
*/
public class CommonUtil {
/**
* 返回一个info为空对象的成功消息的json
*/
public static JSONObject successJson() {
return successJson(new JSONObject());
}
/**
* 返回一个返回码为100的json
*/
public static JSONObject successJson(Object info) {
JSONObject resultJson = new JSONObject();
resultJson.put("code", Constants.SUCCESS_CODE);
resultJson.put("msg", Constants.SUCCESS_MSG);
resultJson.put("info", info);
return resultJson;
}
/**
* 返回错误信息JSON
*/
public static JSONObject errorJson(ErrorEnum errorEnum) {
JSONObject resultJson = new JSONObject();
resultJson.put("code", errorEnum.getErrorCode());
resultJson.put("msg", errorEnum.getErrorMsg());
resultJson.put("info", new JSONObject());
return resultJson;
}
/**
* 查询分页结果后的封装工具方法
*
* @param requestJson 请求参数json,此json在之前调用fillPageParam 方法时,已经将pageRow放入
* @param list 查询分页对象list
* @param totalCount 查询出记录的总条数
*/
public static JSONObject successPage(final JSONObject requestJson, List<JSONObject> list, int totalCount) {
int pageRow = requestJson.getIntValue("pageRow");
int totalPage = getPageCounts(pageRow, totalCount);
JSONObject result = successJson();
JSONObject info = new JSONObject();
info.put("list", list);
info.put("totalCount", totalCount);
info.put("totalPage", totalPage);
result.put("info", info);
return result;
}
/**
* 查询分页结果后的封装工具方法
*
* @param list 查询分页对象list
*/
public static JSONObject successPage(List<JSONObject> list) {
JSONObject result = successJson();
JSONObject info = new JSONObject();
info.put("list", list);
result.put("info", info);
return result;
}
/**
* 获取总页数
*
* @param pageRow 每页行数
* @param itemCount 结果的总条数
*/
private static int getPageCounts(int pageRow, int itemCount) {
if (itemCount == 0) {
return 1;
}
return itemCount % pageRow > 0 ?
itemCount / pageRow + 1 :
itemCount / pageRow;
}
/**
* 将request参数值转为json
*/
public static JSONObject request2Json(HttpServletRequest request) {
JSONObject requestJson = new JSONObject();
Enumeration paramNames = request.getParameterNames();
while (paramNames.hasMoreElements()) {
String paramName = (String) paramNames.nextElement();
String[] pv = request.getParameterValues(paramName);
StringBuilder sb = new StringBuilder();
for (int i = 0; i < pv.length; i++) {
if (pv[i].length() > 0) {
if (i > 0) {
sb.append(",");
}
sb.append(pv[i]);
}
}
requestJson.put(paramName, sb.toString());
}
return requestJson;
}
/**
* 将request转JSON
* 并且验证非空字段
*/
public static JSONObject convert2JsonAndCheckRequiredColumns(HttpServletRequest request, String requiredColumns) {
JSONObject jsonObject = request2Json(request);
hasAllRequired(jsonObject, requiredColumns);
return jsonObject;
}
/**
* 验证是否含有全部必填字段
*
* @param requiredColumns 必填的参数字段名称 逗号隔开 比如"userId,name,telephone"
*/
public static void hasAllRequired(final JSONObject jsonObject, String requiredColumns) {
if (!StringTools.isNullOrEmpty(requiredColumns)) {
//验证字段非空
String[] columns = requiredColumns.split(",");
String missCol = "";
for (String column : columns) {
Object val = jsonObject.get(column.trim());
if (StringTools.isNullOrEmpty(val)) {
missCol += column + " ";
}
}
if (!StringTools.isNullOrEmpty(missCol)) {
jsonObject.clear();
jsonObject.put("code", ErrorEnum.E_90003.getErrorCode());
jsonObject.put("msg", "缺少必填参数:" + missCol.trim());
jsonObject.put("info", new JSONObject());
throw new CommonJsonException(jsonObject);
}
}
}
/**
* 在分页查询之前,为查询条件里加上分页参数
*
* @param paramObject 查询条件json
* @param defaultPageRow 默认的每页条数,即前端不传pageRow参数时的每页条数
*/
private static void fillPageParam(final JSONObject paramObject, int defaultPageRow) {
int pageNum = paramObject.getIntValue("pageNum");
pageNum = pageNum == 0 ? 1 : pageNum;
int pageRow = paramObject.getIntValue("pageRow");
pageRow = pageRow == 0 ? defaultPageRow : pageRow;
paramObject.put("offSet", (pageNum - 1) * pageRow);
paramObject.put("pageRow", pageRow);
paramObject.put("pageNum", pageNum);
//删除此参数,防止前端传了这个参数,pageHelper分页插件检测到之后,拦截导致SQL错误
paramObject.remove("pageSize");
}
/**
* 分页查询之前的处理参数
* 没有传pageRow参数时,默认每页10条.
*/
public static void fillPageParam(final JSONObject paramObject) {
fillPageParam(paramObject, 10);
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
本系统实现一个电费管理系统,分为管理员、收费员和用户三种用户。具体功能描述如下: 管理员模块包括: 1. 电能计量:管理员可以对电能计量信息进行管理。 2. 数据查询:管理员可以对电费信息进行查询,对用户信息进行查询。 3. 系统管理:管理员可以对用户信息进行添加、查看、修改或删除,对权限信息进行添加、查看或修改。 收费员模块包括: 1. 电能计量:收费员可以对电能计量信息进行添加、查看、导入、修改或删除。 2. 数据查询:收费员可以对电费信息进行查询,可以打印票据,可以查询用户信息。 用户模块包括: 1. 数据查询:用户可以查询电费信息,查询用户信息。 所需开发环境: 开发语言:Java 框架:ssm JDK版本:JDK1.8 服务器:tomcat7+ 数据库:mysql 5.7+ 数据库工具:Navicat11+ 开发软件: idea Maven包:Maven3.3.9+
资源推荐
资源详情
资源评论
收起资源包目录
java毕业设计之电能计量与客户服务管理系统(ssm完整源码+LW+说明文档).zip (366个子文件)
.babelrc 108B
UserServiceImpl.class 5KB
UserServiceImpl.class 5KB
CommonUtil.class 5KB
CommonUtil.class 5KB
ShiroConfiguration.class 4KB
ShiroConfiguration.class 4KB
GlobalExceptionHandler.class 4KB
GlobalExceptionHandler.class 4KB
UserRealm.class 3KB
UserRealm.class 3KB
UserController.class 3KB
UserController.class 3KB
LoginServiceImpl.class 3KB
LoginServiceImpl.class 3KB
VerifyCodeUtils.class 3KB
VerifyCodeUtils.class 3KB
AjaxPermissionsAuthorizationFilter.class 3KB
AjaxPermissionsAuthorizationFilter.class 3KB
ArticleController.class 2KB
ArticleController.class 2KB
ErrorEnum.class 2KB
ErrorEnum.class 2KB
ArticleServiceImpl.class 2KB
ArticleServiceImpl.class 2KB
MyApplication.class 2KB
MyApplication.class 2KB
PermissionServiceImpl.class 2KB
PermissionServiceImpl.class 2KB
LoginController.class 2KB
LoginController.class 2KB
UserDao.class 1KB
UserDao.class 1KB
DefaultView.class 1KB
DefaultView.class 1KB
MainsiteErrorController.class 1KB
MainsiteErrorController.class 1KB
CommonJsonException.class 992B
CommonJsonException.class 992B
One2Many.class 727B
One2Many.class 727B
StringTools.class 723B
StringTools.class 723B
Constants.class 557B
Constants.class 557B
ArticleDao.class 524B
UserService.class 524B
ArticleDao.class 524B
UserService.class 524B
LoginService.class 468B
LoginService.class 468B
PermissionDao.class 391B
PermissionDao.class 391B
LoginDao.class 382B
LoginDao.class 382B
ImgResult.class 377B
ImgResult.class 377B
ArticleService.class 371B
ArticleService.class 371B
PermissionService.class 267B
PermissionService.class 267B
app.e07cc569b1dec0dbbdaf45143df520dc.css 188KB
.editorconfig 243B
.gitignore 356B
index.html 504B
index.html 206B
favicon.ico 4KB
favicon.ico 4KB
example.iml 10KB
example-1.1.0-SNAPSHOT.jar 22.45MB
tomcat-embed-core-9.0.12.jar 3.05MB
mysql-connector-java-8.0.13.jar 2.03MB
mybatis-3.4.6.jar 1.55MB
spring-web-5.1.2.RELEASE.jar 1.31MB
jackson-databind-2.9.7.jar 1.29MB
spring-core-5.1.2.RELEASE.jar 1.23MB
spring-boot-autoconfigure-2.1.0.RELEASE.jar 1.2MB
hibernate-validator-6.0.13.Final.jar 1.1MB
spring-context-5.1.2.RELEASE.jar 1.05MB
spring-boot-2.1.0.RELEASE.jar 933KB
spring-webmvc-5.1.2.RELEASE.jar 780KB
spring-beans-5.1.2.RELEASE.jar 656KB
fastjson-1.2.54.jar 576KB
commons-collections-3.2.2.jar 575KB
logback-core-1.2.3.jar 461KB
shiro-core-1.4.0.jar 401KB
spring-jdbc-5.1.2.RELEASE.jar 392KB
spring-aop-5.1.2.RELEASE.jar 360KB
jackson-core-2.9.7.jar 316KB
snakeyaml-1.23.jar 294KB
logback-classic-1.2.3.jar 284KB
spring-expression-5.1.2.RELEASE.jar 273KB
log4j-api-2.11.1.jar 258KB
tomcat-embed-websocket-9.0.12.jar 256KB
spring-tx-5.1.2.RELEASE.jar 250KB
tomcat-embed-el-9.0.12.jar 244KB
commons-beanutils-1.9.3.jar 240KB
spring-boot-devtools-2.1.0.RELEASE.jar 207KB
shiro-web-1.4.0.jar 147KB
HikariCP-3.2.0.jar 140KB
共 366 条
- 1
- 2
- 3
- 4
资源评论
风月歌
- 粉丝: 1651
- 资源: 5159
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功