package com.mlongbo.jfinal.api;
import com.jfinal.core.Controller;
import com.mlongbo.jfinal.common.bean.DataResponse;
import com.mlongbo.jfinal.common.Require;
import com.mlongbo.jfinal.common.utils.StringUtils;
import com.mlongbo.jfinal.model.User;
import com.mlongbo.jfinal.common.bean.BaseResponse;
import com.mlongbo.jfinal.common.bean.Code;
import com.mlongbo.jfinal.common.token.TokenManager;
import java.lang.reflect.Array;
import java.util.List;
/**
* 基本的api
* 基于jfinal controller做一些封装
* @author malongbo
*/
public class BaseAPIController extends Controller {
/**
* 获取当前用户对象
* @return
*/
protected User getUser() {
User user = getAttr("user");
if (user == null) {
String token = getPara("token");
return StringUtils.isEmpty(token) ? null : TokenManager.getMe().validate(token);
}
return getAttr("user");
}
/**
* 响应接口不存在*
*/
public void render404() {
renderJson(new BaseResponse(Code.NOT_FOUND));
}
/**
* 响应请求参数有误*
* @param message 错误信息
*/
public void renderArgumentError(String message) {
renderJson(new BaseResponse(Code.ARGUMENT_ERROR, message));
}
/**
* 响应数组类型*
* @param list 结果集合
*/
public void renderDataResponse(List<?> list) {
DataResponse resp = new DataResponse();
resp.setData(list);
if (list == null || list.size() == 0) {
resp.setMessage("未查询到数据");
} else {
resp.setMessage("success");
}
renderJson(resp);
}
/**
* 响应操作成功*
* @param message 响应信息
*/
public void renderSuccess(String message) {
renderJson(new BaseResponse().setMessage(message));
}
/**
* 响应操作失败*
* @param message 响应信息
*/
public void renderFailed(String message) {
renderJson(new BaseResponse(Code.FAIL, message));
}
/**
* 判断请求类型是否相同*
* @param name
* @return
*/
protected boolean methodType(String name) {
return getRequest().getMethod().equalsIgnoreCase(name);
}
/**
* 判断参数值是否为空
* @param rules
* @return
*/
public boolean notNull(Require rules) {
if (rules == null || rules.getLength() < 1) {
return true;
}
for (int i = 0, total = rules.getLength(); i < total; i++) {
Object key = rules.get(i);
String message = rules.getMessage(i);
BaseResponse response = new BaseResponse(Code.ARGUMENT_ERROR);
if (key == null) {
renderJson(response.setMessage(message));
return false;
}
if (key instanceof String && StringUtils.isEmpty((String) key)) {
renderJson(response.setMessage(message));
return false;
}
if (key instanceof Array) {
Object[] arr = (Object[]) key;
if (arr.length < 1) {
renderJson(response.setMessage(message));
return false;
}
}
}
return true;
}
}