package com.yaochen.boss.job; import java.util.HashMap; import java.util.List; import java.util.Map; import org.quartz.JobExecutionException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.google.gson.JsonObject; import com.google.gson.JsonParser; import com.yaochen.boss.job.component.AuthComponent; import com.yaochen.myquartz.Job2; import com.yaochen.myquartz.Job2ExecutionContext; import com.ycsoft.beans.core.job.BusiCmdParam; import com.ycsoft.beans.core.job.JVodCommand; import com.ycsoft.beans.ott.TServerOttauthProd; import com.ycsoft.boss.remoting.ott.OttClient; import com.ycsoft.boss.remoting.ott.Result; import com.ycsoft.commons.constants.BusiCmdConstants; @Service public class OttAuthJob implements Job2 { private static final long serialVersionUID = 1L; private final Logger logger = LoggerFactory.getLogger(getClass()); @Autowired private AuthComponent authComponent; @Autowired private OttClient ottClient; @Override public void execute(Job2ExecutionContext arg0) throws JobExecutionException { //读取要发送的指令 List<JVodCommand> cmdList = null; Map<String,TServerOttauthProd> ottAuthMap=null ;//new HashMap<>(); try{ cmdList = authComponent.queryOttCmd(); } catch(Exception e){ logger.error("读取指令失败"+e.getMessage()); return; } for (JVodCommand cmd:cmdList){ Result result = null; try{ if(ottAuthMap==null){ ottAuthMap=authComponent.queryOttAuthProdMap(); } JsonObject params =new JsonParser().parse(cmd.getDetail_param()).getAsJsonObject(); if ((cmd.getCmd_type().equals(BusiCmdConstants.CHANGE_USER))){ /**String loginName *,String password,String userName *,String address,String email,String telephone *,String stbId,String deviceMac,String status **/ result = ottClient.editUser(getJsonValue(params,BusiCmdParam.login_name.name()), getJsonValue(params,BusiCmdParam.login_password.name()),getJsonValue(params,BusiCmdParam.login_name.name()), null,null,null, getJsonValue(params,BusiCmdParam.stb_id.name()), getJsonValue(params,BusiCmdParam.stb_mac.name()), getJsonValue(params,BusiCmdParam.user_status.name())); } else if ((cmd.getCmd_type().equals(BusiCmdConstants.DEL_USER))){ result = ottClient.deleteUser(getJsonValue(params,BusiCmdParam.login_name.name())); } else if ((cmd.getCmd_type().equals(BusiCmdConstants.PASSVATE_PROD))){ result = ottClient.stopUserProduct(getJsonValue(params,BusiCmdParam.login_name.name()), cmd.getRes_id(),ottAuthMap); } else if ((cmd.getCmd_type().equals(BusiCmdConstants.ACCTIVATE_PROD))){ result = ottClient.openUserProduct(getJsonValue(params,BusiCmdParam.login_name.name()), cmd.getRes_id(), getJsonValue(params,BusiCmdParam.prod_exp_date.name()),ottAuthMap); }else{ result=ottClient.getBossErrorResult("未定义的指令类型"); } }catch(Exception e){ result = new Result(); result.setErr("1"); result.setStatus(Result.UNDEFINED_ERROR_STATUS); result.setReason(e.getMessage()); logger.error("OTT指令发送失败",e); } if (!result.isSuccess()&&(result.isUndefinedError()||result.isConnectionError())){ try { Thread.sleep(1000*5); } catch (Exception e) { logger.error("OTT发送线程休眠失败",e); } } //保存发送结果 try{ authComponent.saveOttSendResult(cmd, result); } catch(Exception e){ logger.error("保存指令发送结果失败",e); return; } } } private String getJsonValue(JsonObject jo,String key){ return jo.get(key).isJsonNull()?null:jo.get(key).getAsString(); } }