|
@ -0,0 +1,139 @@
|
|
|
package com.yihu.iot.controller.gateway;
|
|
|
|
|
|
|
|
|
import com.yihu.iot.dao.gateway.GcHttpLogDao;
|
|
|
import com.yihu.iot.model.BaseResultModel;
|
|
|
import com.yihu.iot.model.GcClientDetailsModel;
|
|
|
import com.yihu.iot.model.GcTokenModel;
|
|
|
import com.yihu.iot.model.ResultOneModel;
|
|
|
import com.yihu.iot.service.gateway.GcClientDetailsService;
|
|
|
import com.yihu.iot.service.gateway.GcTokenService;
|
|
|
import com.yihu.jw.entity.iot.gateway.GcClientDetails;
|
|
|
import com.yihu.jw.entity.iot.gateway.GcHttpLog;
|
|
|
import com.yihu.jw.entity.iot.gateway.GcToken;
|
|
|
import com.yihu.jw.rm.iot.IotRequestMapping;
|
|
|
import com.yihu.jw.util.common.IpUtil;
|
|
|
import io.swagger.annotations.Api;
|
|
|
import io.swagger.annotations.ApiOperation;
|
|
|
import io.swagger.annotations.ApiParam;
|
|
|
import org.json.JSONObject;
|
|
|
import org.springframework.beans.BeanUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.http.MediaType;
|
|
|
import org.springframework.stereotype.Controller;
|
|
|
import org.springframework.web.bind.annotation.RequestMapping;
|
|
|
import org.springframework.web.bind.annotation.RequestMethod;
|
|
|
import org.springframework.web.bind.annotation.RequestParam;
|
|
|
import org.springframework.web.bind.annotation.ResponseBody;
|
|
|
|
|
|
import javax.servlet.http.HttpServletRequest;
|
|
|
import java.io.IOException;
|
|
|
import java.util.Date;
|
|
|
import java.util.List;
|
|
|
|
|
|
/**
|
|
|
* Created by chenweida on 2017/8/17.
|
|
|
* 对外的网关
|
|
|
*/
|
|
|
@Controller
|
|
|
@RequestMapping(value = IotRequestMapping.Common.openThird, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
|
|
|
@ResponseBody
|
|
|
@Api(description = "token相关服务")
|
|
|
public class GcTokenController {
|
|
|
@Autowired
|
|
|
private GcTokenService gcTokenService;
|
|
|
@Autowired
|
|
|
private GcClientDetailsService clientDetailsService;
|
|
|
@Autowired
|
|
|
private GcHttpLogDao httpLogDao;
|
|
|
|
|
|
@ApiOperation("获取accesstoken")
|
|
|
@RequestMapping(value = "accesstoken", method = RequestMethod.POST, produces = "application/json;charset=UTF-8")
|
|
|
public ResultOneModel<GcTokenModel> getToken(
|
|
|
@ApiParam(name = "appid", value = "appid", required = true) @RequestParam(required = true, value = "appid") String appid,
|
|
|
@ApiParam(name = "appSecret", value = "appSecret", required = true) @RequestParam(required = true, value = "appSecret") String appSecret,
|
|
|
@ApiParam(name = "过期时间 yyyy-MM-dd", value = "overTime", required = false) @RequestParam(required = false, value = "overTime") String overTime,
|
|
|
HttpServletRequest request) {
|
|
|
String ip = "";
|
|
|
try {
|
|
|
ip = IpUtil.getIpAddress(request);
|
|
|
//查询appId 的token是否过期
|
|
|
GcToken gcToken = new GcToken();
|
|
|
List<GcToken> gcTokenList = gcTokenService.findByAppId(appid);
|
|
|
if(gcTokenList == null || gcTokenList.size() == 0){
|
|
|
//得到用户
|
|
|
GcClientDetails clientDetails = clientDetailsService.findByAppId(appid);
|
|
|
if (clientDetails == null) {
|
|
|
ResultOneModel resultOneModel = new ResultOneModel(null);
|
|
|
resultOneModel.setStatus(BaseResultModel.statusEm.error_Appid.getCode());
|
|
|
resultOneModel.setMessage(BaseResultModel.statusEm.error_Appid.getMessage());
|
|
|
saveHttpLog(ip, new JSONObject(request.getParameterMap()).toString(), "", "", request.getRequestURI(), 0, BaseResultModel.statusEm.error_Appid.getMessage());
|
|
|
return resultOneModel;
|
|
|
}
|
|
|
//判断appSecret
|
|
|
if (!appSecret.equals(clientDetails.getAppSecret())) {
|
|
|
ResultOneModel resultOneModel = new ResultOneModel(null);
|
|
|
resultOneModel.setStatus(BaseResultModel.statusEm.error_AppSecret.getCode());
|
|
|
resultOneModel.setMessage(BaseResultModel.statusEm.error_AppSecret.getMessage());
|
|
|
saveHttpLog(ip, new JSONObject(request.getParameterMap()).toString(), "", "", request.getRequestURI(), 0, BaseResultModel.statusEm.error_Appid.getMessage());
|
|
|
return resultOneModel;
|
|
|
}
|
|
|
//生成token
|
|
|
try {
|
|
|
gcToken = gcTokenService.createToken(appid, appSecret, IpUtil.getIpAddress(request),overTime);
|
|
|
saveHttpLog(ip, new JSONObject(request.getParameterMap()).toString(), new JSONObject(gcToken).toString(), gcToken.getAccesstoken(), request.getRequestURI(), 1, "成功");
|
|
|
} catch (IOException e) {
|
|
|
e.printStackTrace();
|
|
|
}
|
|
|
}else {
|
|
|
gcToken = gcTokenList.get(0);
|
|
|
}
|
|
|
GcTokenModel gcTokenModel = new GcTokenModel();
|
|
|
BeanUtils.copyProperties(gcToken, gcTokenModel);
|
|
|
gcTokenModel.setOutTime(gcToken.getOutTime().getTime());
|
|
|
return new ResultOneModel(gcTokenModel);
|
|
|
} catch (Exception e) {
|
|
|
saveHttpLog(ip, new JSONObject(request.getParameterMap()).toString(), "", "", request.getRequestURI(), 0, BaseResultModel.statusEm.login_system_error.getMessage());
|
|
|
return new ResultOneModel(BaseResultModel.statusEm.login_system_error.getCode(), BaseResultModel.statusEm.login_system_error.getMessage());
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@ApiOperation("生成appId,appSecret")
|
|
|
@RequestMapping(value = "createGcClientDetails", method = RequestMethod.POST)
|
|
|
public ResultOneModel<GcClientDetailsModel> createClientDetails(
|
|
|
@ApiParam(name = "appUri", value = "appUri", required = false) @RequestParam(required = false, value = "appUri") String appUri,
|
|
|
@ApiParam(name = "createUserName", value = "createUserName", required = false) @RequestParam(required = false, value = "createUserName") String createUserName,
|
|
|
@ApiParam(name = "creatieUser", value = "creatieUser", required = false) @RequestParam(required = false, value = "creatieUser") String creatieUser,
|
|
|
@ApiParam(name = "remark", value = "remark", required = false) @RequestParam(required = false, value = "remark") String remark
|
|
|
){
|
|
|
try {
|
|
|
|
|
|
GcClientDetails gcClientDetails = clientDetailsService.createClientDetails(appUri,createUserName,creatieUser,remark);
|
|
|
if(gcClientDetails==null){
|
|
|
return new ResultOneModel(BaseResultModel.statusEm.login_system_error.getCode(), BaseResultModel.statusEm.login_system_error.getMessage());
|
|
|
}
|
|
|
GcClientDetailsModel gcClientDetailsModel = new GcClientDetailsModel();
|
|
|
BeanUtils.copyProperties(gcClientDetails, gcClientDetailsModel);
|
|
|
return new ResultOneModel(gcClientDetailsModel);
|
|
|
}catch (Exception e) {
|
|
|
return new ResultOneModel(BaseResultModel.statusEm.login_system_error.getCode(), BaseResultModel.statusEm.login_system_error.getMessage());
|
|
|
}
|
|
|
}
|
|
|
|
|
|
|
|
|
private void saveHttpLog(String ip, String input, String output, String token, String method, Integer flag, String message) {
|
|
|
GcHttpLog gcHttpLog = new GcHttpLog();
|
|
|
gcHttpLog.setCreateTime(new Date());
|
|
|
gcHttpLog.setIp(ip);
|
|
|
gcHttpLog.setInput(input);
|
|
|
if(output.length() > 3000) {
|
|
|
output = output.substring(0, 3000);
|
|
|
}
|
|
|
gcHttpLog.setOutput(output);
|
|
|
gcHttpLog.setToken(token);
|
|
|
gcHttpLog.setMethod(method);
|
|
|
gcHttpLog.setFlag(flag);
|
|
|
gcHttpLog.setMessage(message);
|
|
|
httpLogDao.save(gcHttpLog);
|
|
|
}
|
|
|
}
|