package com.java110.rule.rest;
|
|
import com.alibaba.fastjson.JSONObject;
|
import com.java110.utils.constant.RuleDomain;
|
import com.java110.utils.log.LoggerEngine;
|
import com.java110.utils.util.CodeMapUtil;
|
import com.java110.utils.util.RuleUtil;
|
import com.java110.core.base.controller.BaseController;
|
import com.java110.rule.smo.IRuleServiceSMO;
|
import org.slf4j.Logger;
|
import org.slf4j.LoggerFactory;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.util.StringUtils;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestParam;
|
import org.springframework.web.bind.annotation.ResponseBody;
|
import org.springframework.web.bind.annotation.RestController;
|
|
/**
|
* 规则服务
|
* Created by wuxw on 2017/7/22.
|
*/
|
@RestController
|
public class RuleServiceRest extends BaseController {
|
private final static Logger logger = LoggerFactory.getLogger(RuleServiceRest.class);
|
|
|
@Autowired
|
IRuleServiceSMO ruleServiceSMOImpl;
|
|
/**
|
* 规则校验方法
|
* 请求报文协议:
|
*
|
* {
|
"ContractRoot": {
|
"TcpCont": { -- 请求头部
|
"RuleType":"RULE0001", -- 用来区分走那个规则组
|
"ServiceCode": "SVC0001", -- 用来判断走那些规则
|
"TransactionID": "1001000101201603081234567890", -- 交易流水
|
"ReqTime": "20130817200202123",--请求时间
|
},
|
"SvcCont": { -- 请求体 这里面的结构可以随便定
|
"AccNbr": "",
|
"ProductNbr":"",
|
"RegionCode":"863000"
|
}
|
}
|
}
|
*
|
* @param validateInfo
|
* @return
|
*/
|
@RequestMapping("/ruleService/validate")
|
@ResponseBody
|
public String validate(@RequestParam("validateInfo") String validateInfo){
|
String resultInfo = "";
|
logger.debug("----------[RuleServiceRest.validate]-----------请求报文:" + validateInfo);
|
try{
|
resultInfo = ruleServiceSMOImpl.validate(validateInfo);
|
}catch (Exception e){
|
LoggerEngine.error("----------[RuleServiceRest.validate]-----------出现异常,请求报文为["+validateInfo+"]" ,e);
|
try {
|
//XStream转换出错,默认返回成功,后台记录错误日志
|
JSONObject jsonObject = JSONObject.parseObject(validateInfo);
|
String transactionID = jsonObject.containsKey("TcpCont") ?
|
(jsonObject.getJSONObject("TcpCont").containsKey("TransactionID")?jsonObject.getJSONObject("TcpCont").getString("TransactionID"):"-1")
|
:"-1";
|
String error = e.toString();
|
//记录错误日志
|
//recordRuleLog(transactionID,error,"LTE4G全量校验报文转换环节异常");
|
//动态常量DEP_PRVNC_RULE_ERROR_RET,不配置或配置不是1,则程序异常默认返回成功,其他返回具体异常信息
|
String depPrvncSaopRuleErrorRet = CodeMapUtil.getDynamicConstantValue("DEP_PRVNC_RULE_ERROR_RET");
|
if(StringUtils.isEmpty(depPrvncSaopRuleErrorRet) || !depPrvncSaopRuleErrorRet.equals("1")){
|
resultInfo = RuleUtil.ruleReturnJson(transactionID,RuleDomain.RULE_COND_RETURN_0000,"成功","");
|
}else{
|
resultInfo = RuleUtil.ruleReturnJson(transactionID,RuleDomain.RULE_COND_RETURN_1999,e.getMessage(),"");
|
}
|
} catch (Exception e1) {
|
LoggerEngine.error("----------[RuleServiceRest.validate]-----------出现异常,请求报文为["+validateInfo+"]" ,e);
|
resultInfo = RuleUtil.ruleReturnJson("-1",RuleDomain.RULE_COND_RETURN_1999,e.getMessage(),"");
|
}
|
}finally {
|
//这里需要记录日志报文
|
logger.debug("----------[RuleServiceRest.validate]-----------返回报文:" + resultInfo);
|
return resultInfo;
|
}
|
}
|
|
|
public IRuleServiceSMO getRuleServiceSMOImpl() {
|
return ruleServiceSMOImpl;
|
}
|
|
public void setRuleServiceSMOImpl(IRuleServiceSMO ruleServiceSMOImpl) {
|
this.ruleServiceSMOImpl = ruleServiceSMOImpl;
|
}
|
}
|