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