|  | @ -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);
 | 
												
													
														
															|  | 
 |  |     }
 | 
												
													
														
															|  | 
 |  | }
 |