package com.ruoyi.project.mobile.controller;
|
|
|
import com.ruoyi.common.utils.StringUtils;
|
import com.ruoyi.common.utils.file.FileUploadUtils;
|
import com.ruoyi.framework.config.RuoYiConfig;
|
import com.ruoyi.framework.config.ServerConfig;
|
import com.ruoyi.framework.web.domain.AjaxResult;
|
import com.ruoyi.project.mobile.domain.ApiRequestHeader;
|
import com.ruoyi.project.mobile.domain.ApiResult;
|
import com.ruoyi.project.mobile.service.ApiService;
|
import com.ruoyi.project.mobile.service.ApiSystemService;
|
import io.swagger.annotations.Api;
|
import io.swagger.annotations.ApiOperation;
|
import org.slf4j.Logger;
|
import org.slf4j.LoggerFactory;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Controller;
|
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.multipart.MultipartFile;
|
|
import javax.servlet.http.HttpServletRequest;
|
import java.lang.reflect.InvocationTargetException;
|
import java.lang.reflect.Method;
|
|
/**
|
* APP使用的统一接口
|
*/
|
@Api("安卓总控制器")
|
@Controller
|
@RequestMapping(value = "/mobile/api")
|
public class ApiController extends BaseMobileController {
|
|
private static Logger logger = LoggerFactory.getLogger(ApiController.class);
|
|
@Autowired
|
ApiService service;
|
|
@Autowired
|
private ServerConfig serverConfig;
|
|
@Autowired
|
ApiSystemService apiSystemService;
|
|
@ApiOperation("登录Index")
|
@RequestMapping(value = "/index", method = RequestMethod.POST)
|
@ResponseBody
|
public ApiResult index(@RequestBody String str, HttpServletRequest request) {
|
ApiResult apiResult = null;
|
ApiRequestHeader header = parseHeader(request);
|
try {
|
logger.debug("╔════════════════════════════════════════════════════════════════════════════════════════");
|
logger.debug("║ " + header.code);
|
logger.debug("╟────────────────────────────────────────────────────────────────────────────────────────");
|
logger.debug("║ token:" + header.token);
|
logger.debug("║ deviceType:" + header.deviceType);
|
logger.debug("║ deviceId:" + header.deviceId);
|
logger.debug("║ appType:" + header.appType);
|
logger.debug("║ loginName:" + header.loginName);
|
logger.debug("║ userId:" + header.userId);
|
logger.debug("╟────────────────────────────────────────────────────────────────────────────────────────");
|
logger.debug("║ " + str);
|
logger.debug("╚════════════════════════════════════════════════════════════════════════════════════════");
|
|
if (StringUtils.isEmpty(header.deviceType)) {
|
return ApiResult.error("设备类型不能为空");
|
}
|
if (StringUtils.isEmpty(header.deviceId)) {
|
return ApiResult.error("设备id不能为空");
|
}
|
if (StringUtils.isEmpty(header.appType)) {
|
return ApiResult.error("app类型不能为空");
|
}
|
if (StringUtils.isEmpty(header.loginName)) {
|
return ApiResult.error("用户登录帐号不能为空");
|
}else{
|
String loginName = java.net.URLDecoder.decode(header.loginName,"utf-8");
|
header.loginName = loginName;
|
}
|
if (StringUtils.isEmpty(header.code)) {
|
return ApiResult.error("请求类型不能为空");
|
}
|
apiResult = processByReflect(str, header);
|
} catch (Exception ex) {
|
logger.error(ex.getLocalizedMessage());
|
ApiResult.error("异常");
|
}
|
return apiResult;
|
|
}
|
|
|
private ApiResult processByReflect(String str, ApiRequestHeader header) {
|
Class clazz = service.getClass();
|
Method mehtod;
|
try {
|
mehtod = clazz.getDeclaredMethod(header.code, String.class, ApiRequestHeader.class);
|
} catch (Exception ex) {
|
logger.error(ex.getLocalizedMessage());
|
return ApiResult.error("业务[" + header.code + "]不存在!");
|
}
|
ApiResult apiResult;
|
//分发
|
try {
|
apiResult = (ApiResult) mehtod.invoke(service, str, header);
|
} catch (IllegalAccessException ex) {
|
logger.error(ex.getLocalizedMessage());
|
//TODO:正式部署,把后面的异常信息移除
|
apiResult = ApiResult.error("业务[" + header.code + "]process1执行异常!" + ex.getLocalizedMessage());
|
} catch (InvocationTargetException ex) {
|
logger.error(ex.getLocalizedMessage());
|
String msg = ex.getTargetException().getLocalizedMessage();
|
logger.error("targetexception: " + msg);
|
//TODO:正式部署,把后面的异常信息移除
|
apiResult = ApiResult.error("业务[" + header.code + "]process2执行异常!" + msg);
|
}
|
return apiResult;
|
}
|
|
|
/**
|
* 手机用上传方法
|
* @param file
|
* @return
|
* @throws Exception
|
*/
|
@PostMapping("/upload")
|
@ResponseBody
|
public AjaxResult uploadImg(MultipartFile file) throws Exception {
|
try {
|
// 上传文件路径
|
String filePath = RuoYiConfig.getUploadPath();
|
// 上传并返回新文件名称
|
String fileName = FileUploadUtils.upload(filePath, file);
|
String url = serverConfig.getUrl() + fileName;
|
AjaxResult ajax = AjaxResult.success();
|
ajax.put("imageName", fileName);
|
ajax.put("imageUrl", url);
|
|
return ajax;
|
} catch (Exception e) {
|
return AjaxResult.error(e.getMessage());
|
}
|
}
|
|
}
|