1.修改流量统计折线图的时区设置;

2.修改服务接口的参数,将版本信息改为在接口的方法参数中,而不是接口URL参数中;
3.修改配置启停任务调度逻辑。
This commit is contained in:
zhangwei
2019-01-02 17:17:15 +06:00
parent aabaf6b5dd
commit e6426052cd
9 changed files with 553 additions and 211 deletions

View File

@@ -0,0 +1,122 @@
/**
*@Title: ToMaatBean.java
*@Package com.nis.domain.configuration
*@Description TODO
*@author dell
*@date 2018年2月28日 下午2:03:08
*@version 版本号
*/
package com.nis.domain.maat;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;
/**
* 修改maat类配置状态
* @ClassName: ToUpdateStatusMaatBean.java
* @Description: TODO
* @author (dell)
* @date 2019年1月2日 下午3:08:08
* @version V1.0
*/
public class ToUpdateMaatBeanStatus implements Serializable{
/**
*
*/
private static final long serialVersionUID = -3468862666445104490L;
/**
* @Fields serialVersionUID:TODO转换为maat格式的java bean
*
* @since 1.0.0
*/
@Expose
private String version;
@Expose
@SerializedName("operator")
private String creatorName;
@Expose
@SerializedName("opTime")
private Date auditTime;
@Expose
private Integer opAction;
@Expose
private List<UpdateMaatCfgStatus> configCompileStartStopList;
public static class UpdateMaatCfgStatus{
@Expose
private Integer compileId;
@Expose
private Integer isValid;
@Expose
@SerializedName("opTime")
private Date auditTime;
public Integer getCompileId() {
return compileId;
}
public void setCompileId(Integer compileId) {
this.compileId = compileId;
}
public Integer getIsValid() {
return isValid;
}
public void setIsValid(Integer isValid) {
this.isValid = isValid;
}
public Date getAuditTime() {
return auditTime;
}
public void setAuditTime(Date auditTime) {
this.auditTime = auditTime;
}
}
public String getVersion() {
return version;
}
public void setVersion(String version) {
this.version = version;
}
public String getCreatorName() {
return creatorName;
}
public void setCreatorName(String creatorName) {
this.creatorName = creatorName;
}
public Date getAuditTime() {
return auditTime;
}
public void setAuditTime(Date auditTime) {
this.auditTime = auditTime;
}
public List<UpdateMaatCfgStatus> getConfigCompileStartStopList() {
return configCompileStartStopList;
}
public void setConfigCompileStartStopList(List<UpdateMaatCfgStatus> configCompileStartStopList) {
this.configCompileStartStopList = configCompileStartStopList;
}
public Integer getOpAction() {
return opAction;
}
public void setOpAction(Integer opAction) {
this.opAction = opAction;
}
public static void main(String[] args) {
}
}

View File

@@ -814,6 +814,42 @@ public class ConfigServiceUtil {
return bean;
}
/**
* maat配置停启用
* @param params
* @return
*/
public static String configStatusUpdate(String params) throws MaatConvertException{
String result = null;
ToMaatResult bean = null;
Response response=null;
try {
String url = Constants.SERVICE_URL+Constants.CONFIG_START_STOP_UPDATE;
//创建连接
WebTarget wt = ClientUtil.getWebTarger(url);
logger.info("put url:"+url);
//获取响应结果
Builder header = wt.request(MediaType.APPLICATION_JSON).header("Content-Type", MediaType.APPLICATION_JSON);
try {
response= header.put(Entity.entity(params, MediaType.APPLICATION_JSON));
if(response != null) {
result=response.readEntity(String.class);
}
} catch (Exception e) {
throw new MaatConvertException("<spring:message code=\"request_service_failed\"/>");
}
if(response !=null && response.getStatus() == 200){
JSONObject resObject = JSONObject.fromObject(result);
bean = (ToMaatResult) JSONObject.toBean(resObject,ToMaatResult.class);
}else{
throw new MaatConvertException("<spring:message code=\"request_service_failed\"/>:"+result);
}
} catch (Exception e) {
throw e;
}
return result;
}
public static void main(String[] args) {
try {
// getId(1,1);

View File

@@ -799,4 +799,7 @@ public final class Constants {
public static final String NTC_EVENT_MONITOR_OR_BLOCK_Report =Configurations.getStringProperty("ntcEventsMonitorOrBlock","");
public static final String NTC_EVENT_KEYPROTECTION_Report =Configurations.getStringProperty("ntcEventKeyProtection","");
//配置启停服务接口方法
public static final String CONFIG_START_STOP_UPDATE=Configurations.getStringProperty("configStartStop", "configStartStop");
}

View File

@@ -1,20 +1,36 @@
package com.nis.util;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.google.common.collect.Lists;
import com.nis.domain.configuration.AppPolicyCfg;
import com.nis.domain.configuration.AvFileSampleCfg;
import com.nis.domain.configuration.AvSignSampleCfg;
import com.nis.domain.configuration.BaseCfg;
import com.nis.domain.configuration.CfgIndexInfo;
import com.nis.domain.configuration.DnsIpCfg;
import com.nis.domain.configuration.DnsResStrategy;
import com.nis.domain.configuration.FileDigestCfg;
import com.nis.domain.configuration.IpPortCfg;
import com.nis.domain.configuration.PxyObjKeyring;
import com.nis.domain.configuration.PxyObjTrustedCaCert;
import com.nis.domain.configuration.PxyObjTrustedCaCrl;
import com.nis.domain.maat.MaatCfg;
import com.nis.domain.maat.ToMaatBean;
import com.nis.domain.maat.ToMaatResult;
import com.nis.domain.maat.ToUpdateMaatBeanStatus;
import com.nis.domain.maat.MaatCfg.DigestCfg;
import com.nis.domain.maat.MaatCfg.GroupCfg;
import com.nis.domain.maat.MaatCfg.IpCfg;
import com.nis.domain.maat.MaatCfg.NumBoundaryCfg;
import com.nis.domain.maat.MaatCfg.StringCfg;
import com.nis.domain.maat.ToUpdateMaatBeanStatus.UpdateMaatCfgStatus;
import com.nis.web.dao.configuration.ConfigSynchronizationDao;
import com.nis.web.service.BaseService;
import com.nis.web.service.SpringContextHolder;
@@ -29,6 +45,7 @@ public class SchedulerTaskUtil {
//调度任务的配置信息复用配置同步DAO
private static ConfigSynchronizationDao configSynchronizationDao = SpringContextHolder.getBean(ConfigSynchronizationDao.class);
private Logger logger = LoggerFactory.getLogger(getClass());
/**
* 根据业务与编译ID查询配置修改失效或生效状态并下发至综合服务
@@ -49,141 +66,280 @@ public class SchedulerTaskUtil {
String className = service.get("className").toString();
BaseCfg entity = new BaseCfg();
entity.setServiceId(serviceId);
entity.setCompileId(compileId);
entity.setTableName(tableName);
List list = Lists.newArrayList();
List callBackCfgList = Lists.newArrayList();
boolean isUpdateContent = false;
/**
* 根据编译ID查询配置,如果配置当前审核状态为未审核is_audit=0)并且newIsValid=1需要查询详细的域配置信息下发配置详细内容
* 如果已审核(is_audit=1),则只查询配置主表,更新配置状态即可,
* 如果审核取消(is_audit=3)则删除定时任务,表示配置已最终删除,此状态处理原则上在配置修改拦截器中处理
*/
if("1".equals(serviceType)){//maat类配置
//查询配置
if("cfg_index_info".equals(tableName)){
list = configSynchronizationDao.getCfgIndexList(entity);
}else if("file_digest_cfg".equals(tableName)){
list = configSynchronizationDao.getFileDigestListByService(entity);
}else if("app_policy_cfg".equals(tableName)){
list = configSynchronizationDao.getAppPolicyList(entity);
}else if("app_feature_index".equals(tableName)){
list = configSynchronizationDao.getAppFeatureIndexList(entity);
}
if(newIsValid.equals(1)){//生效
//调用综合服务配置生效启用接口
}else if(newIsValid.equals(0)){//失效
//调用综合服务配置失效停用接口
}
}else if("2".equals(serviceType)){//回调类配置
List newList = Lists.newArrayList();
List ids = Lists.newArrayList();
//查询配置
if(entity.getServiceId().equals(3)){//ip drop回调类配置用了主表和子表关系
list = configSynchronizationDao.getCfgIndexList(entity);
if(!StringUtil.isEmpty(list)){
List<Integer> compileIds = Lists.newArrayList();
Date updateTime = new Date();
//下发并修改配置状态的参数类
ToUpdateMaatBeanStatus maatStatusBean = new ToUpdateMaatBeanStatus();
UpdateMaatCfgStatus updateCfg = new UpdateMaatCfgStatus();
List<UpdateMaatCfgStatus> configCompileStartStopList = new ArrayList();
maatStatusBean.setVersion(Constants.MAAT_VERSION);
maatStatusBean.setOpAction(Constants.INSERT_ACTION);
maatStatusBean.setAuditTime(updateTime);
maatStatusBean.setCreatorName("TaskScheduler");//任务调度定时修改状态
//下发带有配置内容的参数对象
ToMaatBean maatBean = new ToMaatBean();
MaatCfg maatCfg = new MaatCfg();
List<MaatCfg> configCompileList = new ArrayList();
List<GroupCfg> groupRelationList = new ArrayList();
List<IpCfg> ipRegionList = new ArrayList();
List<StringCfg> strRegionList = new ArrayList();
List<NumBoundaryCfg> numRegionList = new ArrayList();
List<DigestCfg> digestRegionList = new ArrayList();
List<IpCfg> areaIpRegionList = new ArrayList();
// for(Integer compileId:compileIds){
entity.setCompileId(compileId);
//查询配置
if("cfg_index_info".equals(tableName)){
list = configSynchronizationDao.getCfgIndexList(entity);
List<Map<String,Object>> cfgList = (List<Map<String, Object>>) service.get("cfgList");
for(int i=0;i<list.size();i++){
CfgIndexInfo cfg = (CfgIndexInfo) list.get(i);
compileIds.add(cfg.getCompileId());
if(cfg.getIsAudit()==0){
isUpdateContent = true;
if(newIsValid==1){
//需要查询详细的域配置信息下发配置内容并修改数据库is_valid=1,is_audit=1
}else{
logger.debug("配置修改状态与当前配置状态不符合业务逻辑!");
}
}else{//修改各个配置域的配置状态
BaseCfg config = new BaseCfg();
config.setIsValid(newIsValid);
config.setEditTime(updateTime);
config.setCompileId(cfg.getCompileId());
configSynchronizationDao.updateCfgStatus(cfg);//修改界面数据库配置状态
if(cfgList!=null){
for(Map<String,Object> m:cfgList){
String regionTableName = m.get("tableName").toString();
config.setTableName(regionTableName);
configSynchronizationDao.updateCfgStatus(cfg);//修改界面数据库配置状态
}
}
}
}
List subList = configSynchronizationDao.getIpDropList("ip_port_cfg", compileIds);
for(int i=0;i<subList.size();i++){
IpPortCfg cfg = (IpPortCfg) subList.get(i);
cfg.setIsValid(newIsValid);
newList.add(BaseService.convertCallBackIp(cfg,cfg.getGroupId()));
}
}
}else{
if(className.equals("AvFileSampleCfg")){
list = configSynchronizationDao.getAvFileCfgList(entity);
}else if("file_digest_cfg".equals(tableName)){
list = configSynchronizationDao.getFileDigestListByService(entity);
List<Map<String,Object>> cfgList = (List<Map<String, Object>>) service.get("cfgList");
for(int i=0;i<list.size();i++){
AvFileSampleCfg cfg = (AvFileSampleCfg) list.get(i);
cfg.setIsValid(newIsValid);
newList.add(cfg);
FileDigestCfg cfg = (FileDigestCfg) list.get(i);
if(cfg.getIsAudit()==0){
isUpdateContent = true;
if(newIsValid==1){
//需要查询详细的域配置信息下发配置内容并修改数据库is_valid=1,is_audit=1
}else{
logger.debug("配置修改状态与当前配置状态不符合业务逻辑!");
}
}else{//修改各个配置域的配置状态
BaseCfg config = new BaseCfg();
config.setIsValid(newIsValid);
config.setEditTime(updateTime);
config.setCompileId(cfg.getCompileId());
configSynchronizationDao.updateCfgStatus(cfg);//修改界面数据库配置状态
if(cfgList!=null){
for(Map<String,Object> m:cfgList){
String regionTableName = m.get("tableName").toString();
config.setTableName(regionTableName);
configSynchronizationDao.updateCfgStatus(cfg);//修改界面数据库配置状态
}
}
}
}
}else if(className.equals("AvSignSampleCfg")){//音视频场景配置
list = configSynchronizationDao.getAvSignCfgList(entity);
}else if("app_policy_cfg".equals(tableName)){
list = configSynchronizationDao.getAppPolicyList(entity);
List<Map<String,Object>> cfgList = (List<Map<String, Object>>) service.get("cfgList");
for(int i=0;i<list.size();i++){
AvSignSampleCfg cfg = (AvSignSampleCfg) list.get(i);
cfg.setIsValid(newIsValid);
newList.add(cfg);
}
}else if(className.equals("PxyObjKeyring")){
list = configSynchronizationDao.getPxyObjKeyringCfgList(entity);
for(int i=0;i<list.size();i++){
PxyObjKeyring cfg = (PxyObjKeyring) list.get(i);
cfg.setIsValid(newIsValid);
newList.add(BaseService.convertCallBackProxyObjKeyring(cfg));
}
}else if(className.equals("PxyObjTrustedCaCert")){
//下发cert配置时需绑定下发crl配置
list = configSynchronizationDao.getPxyObjTrustedCertCfgList(entity);
for(int i=0;i<list.size();i++){
PxyObjTrustedCaCert cfg = (PxyObjTrustedCaCert) list.get(i);
cfg.setIsValid(newIsValid);
newList.addAll(BaseService.convertCallBackProxyObjTrustedCa(cfg,null));
ids.add(cfg.getCompileId());
}
if(!StringUtil.isEmpty(ids)){
list=new ArrayList<>();
list=configSynchronizationDao.getPxyObjTrustedCrlCfgListByCertId(ids);
for(int i=0;i<list.size();i++){
PxyObjTrustedCaCrl cfg = (PxyObjTrustedCaCrl) list.get(i);
cfg.setIsValid(newIsValid);
newList.addAll(BaseService.convertCallBackProxyObjTrustedCa(null,cfg));
AppPolicyCfg cfg = (AppPolicyCfg) list.get(i);
if(cfg.getIsAudit()==0){
isUpdateContent = true;
if(newIsValid==1){
//需要查询详细的域配置信息下发配置内容并修改数据库is_valid=1,is_audit=1
}else{
logger.debug("配置修改状态与当前配置状态不符合业务逻辑!");
}
}else{//修改各个配置域的配置状态
BaseCfg config = new BaseCfg();
config.setIsValid(newIsValid);
config.setEditTime(updateTime);
config.setCompileId(cfg.getCompileId());
configSynchronizationDao.updateCfgStatus(cfg);//修改界面数据库配置状态
if(cfgList!=null){
for(Map<String,Object> m:cfgList){
String regionTableName = m.get("tableName").toString();
config.setTableName(regionTableName);
configSynchronizationDao.updateCfgStatus(cfg);//修改界面数据库配置状态
}
}
}
}
}else if(className.equals("PxyObjTrustedCaCrl")){
ids=new ArrayList<>();
//只允许单独下发certId为空或0的crl配置
list = configSynchronizationDao.getPxyObjTrustedCrlCfgList(entity);
for(int i=0;i<list.size();i++){
PxyObjTrustedCaCrl cfg = (PxyObjTrustedCaCrl) list.get(i);
cfg.setIsValid(newIsValid);
newList.addAll(BaseService.convertCallBackProxyObjTrustedCa(null,cfg));
}
}else if(className.equals("DnsResStrategy")){
list = configSynchronizationDao.getDnsStrategyList(entity);
for(int i=0;i<list.size();i++){
DnsResStrategy cfg = (DnsResStrategy) list.get(i);
cfg.setIsValid(newIsValid);
newList.add(BaseService.convertCallBackDnsResStrategy(cfg));
}
}else if(className.equals("DnsIpCfg")){
list = configSynchronizationDao.getDnsIpCfgList(entity);
for(int i=0;i<list.size();i++){
DnsIpCfg cfg = (DnsIpCfg) list.get(i);
cfg.setIsValid(newIsValid);
newList.add(BaseService.convertCallBackIp(cfg,cfg.getDnsStrategyId()));
}
}else if(className.equals("IpPortCfg")){
list = configSynchronizationDao.getIpPortListByService(entity);
for(int i=0;i<list.size();i++){
IpPortCfg cfg = (IpPortCfg) list.get(i);
cfg.setIsValid(newIsValid);
newList.add(BaseService.convertCallBackIp(cfg,cfg.getGroupId()));
}
}else if(className.equals("PxyObjSpoofingIpPool")){
list = configSynchronizationDao.getSpoofingIpPoolList(entity);
newList.addAll(list);
}
}
//调用服务接口下发配置数据
String json=BaseService.gsonToJson(newList);
if(newIsValid.equals(1)){//生效
//调用综合服务配置生效启用接口
}else if(newIsValid.equals(0)){//失效
//调用综合服务配置失效停用接口
if(!isUpdateContent){
updateCfg.setIsValid(newIsValid);
updateCfg.setCompileId(compileId);
updateCfg.setAuditTime(updateTime);
configCompileStartStopList.add(updateCfg);
}
// }
if(isUpdateContent){//修改配置内容以及状态
//下发配置内容
}else{//只修改配置状态
maatStatusBean.setConfigCompileStartStopList(configCompileStartStopList);
String json=BaseService.gsonToJson(maatBean);
//调用服务启停接口
String result = ConfigServiceUtil.configStatusUpdate(json);
logger.debug("MAAT类配置启停状态修改结果"+result);
}
}else if("2".equals(serviceType)){//回调类配置
List ids = Lists.newArrayList();
// for(Integer compileId:compileIds){
entity.setCompileId(compileId);
//查询配置
if(entity.getServiceId().equals(3)){//ip drop回调类配置用了主表和子表关系
list = configSynchronizationDao.getCfgIndexList(entity);
if(!StringUtil.isEmpty(list)){
List<Integer> compileIdArray = Lists.newArrayList();
for(int i=0;i<list.size();i++){
CfgIndexInfo cfg = (CfgIndexInfo) list.get(i);
if(cfg.getIsAudit()==0){
isUpdateContent = true;
Date updateTime = new Date();
cfg.setIsAudit(1);
cfg.setAuditTime(updateTime);
cfg.setTableName(tableName);
configSynchronizationDao.updateCfgStatus(cfg);//修改界面数据库配置状态
}
compileIdArray.add(cfg.getCompileId());
}
List subList = configSynchronizationDao.getIpDropList("ip_port_cfg", compileIdArray);
for(int i=0;i<subList.size();i++){
IpPortCfg cfg = (IpPortCfg) subList.get(i);
if(cfg.getIsAudit()==0){
isUpdateContent = true;
cfg.setIsValid(newIsValid);
if(newIsValid==1){
Date updateTime = new Date();
cfg.setIsAudit(1);
cfg.setAuditTime(updateTime);
cfg.setTableName("ip_port_cfg");
configSynchronizationDao.updateCfgStatus(cfg);//修改界面数据库配置状态
callBackCfgList.add(BaseService.convertCallBackIp(cfg,cfg.getGroupId()));
}else{
logger.debug("配置修改与配置当前状态不符合业务逻辑");
}
}
}
}
}else{
if(className.equals("AvFileSampleCfg")){
list = configSynchronizationDao.getAvFileCfgList(entity);
for(int i=0;i<list.size();i++){
AvFileSampleCfg cfg = (AvFileSampleCfg) list.get(i);
if(cfg.getIsAudit()==0){
isUpdateContent = true;
cfg.setIsValid(newIsValid);
if(newIsValid==1){
Date updateTime = new Date();
cfg.setIsAudit(1);
cfg.setAuditTime(updateTime);
cfg.setTableName(tableName);
configSynchronizationDao.updateCfgStatus(cfg);//修改界面数据库配置状态
callBackCfgList.add(cfg);
}else{
logger.debug("配置修改与配置当前状态不符合业务逻辑");
}
}
}
}else if(className.equals("AvSignSampleCfg")){//音视频场景配置
list = configSynchronizationDao.getAvSignCfgList(entity);
for(int i=0;i<list.size();i++){
AvSignSampleCfg cfg = (AvSignSampleCfg) list.get(i);
if(cfg.getIsAudit()==0){
isUpdateContent = true;
cfg.setIsValid(newIsValid);
if(newIsValid==1){
Date updateTime = new Date();
cfg.setIsAudit(1);
cfg.setAuditTime(updateTime);
cfg.setTableName(tableName);
configSynchronizationDao.updateCfgStatus(cfg);//修改界面数据库配置状态
callBackCfgList.add(cfg);
}else{
logger.debug("配置修改与配置当前状态不符合业务逻辑");
}
}
}
}else if(className.equals("IpPortCfg")){
list = configSynchronizationDao.getIpPortListByService(entity);
for(int i=0;i<list.size();i++){
IpPortCfg cfg = (IpPortCfg) list.get(i);
if(cfg.getIsAudit()==0){
isUpdateContent = true;
cfg.setIsValid(newIsValid);
if(newIsValid==1){
Date updateTime = new Date();
cfg.setIsAudit(1);
cfg.setAuditTime(updateTime);
cfg.setTableName(tableName);
configSynchronizationDao.updateCfgStatus(cfg);//修改界面数据库配置状态
callBackCfgList.add(BaseService.convertCallBackIp(cfg,cfg.getGroupId()));
}else{
logger.debug("配置修改与配置当前状态不符合业务逻辑");
}
}
}
}
}
if(!isUpdateContent){//如果没有内容修改,则只更新状态
Date updateTime = new Date();
BaseCfg updateCfg = new BaseCfg();
updateCfg.setIsValid(newIsValid);
updateCfg.setCompileId(compileId);
updateCfg.setServiceId(serviceId);
updateCfg.setAuditTime(updateTime);
updateCfg.setEditTime(updateTime);
updateCfg.setCreatorName("TaskScheduler");
configSynchronizationDao.updateCfgStatus(updateCfg);//修改界面数据库配置状态
callBackCfgList.add(updateCfg);
}
// }
if(!StringUtil.isEmpty(callBackCfgList)){
//调用服务接口下发配置数据
String json=BaseService.gsonToJson(callBackCfgList);
//调用服务接口修改回调类配置状态
ToMaatResult result = ConfigServiceUtil.put(json,2);
logger.debug("回调类配置启停状态修改结果:"+result);
}
}
}
return true;
}
public static void main(String[] args) {
}
}

View File

@@ -70,7 +70,7 @@ public class TrafficStatisticsReportController extends BaseController {
if ("3".endsWith(searchBusinessType)) {
model.addAttribute("searchBusinessType", 3);// IP查询
}
String url = Configurations.getStringProperty("dashboardUrlV2","dashboardUrlV2") + Constants.NTC_RADIUS_REPORT;
String url = Constants.DASHBOARD_URL + Constants.NTC_RADIUS_REPORT;
String statTime = bean.getSearchFoundStartTime();
String endTime = bean.getSearchFoundEndTime();
String account = bean.getAccount();
@@ -222,7 +222,7 @@ public class TrafficStatisticsReportController extends BaseController {
if ("3".endsWith(searchBusinessType)) {
model.addAttribute("searchBusinessType", 3);// IP查询
}
String url = Configurations.getStringProperty("dashboardUrlV2","dashboardUrlV2")+ Constants.NTC_RADIUS_REPORT;
String url = Constants.DASHBOARD_URL+ Constants.NTC_RADIUS_REPORT;
String statTime = bean.getSearchFoundStartTime();
String endTime = bean.getSearchFoundEndTime();
String account = bean.getAccount();

View File

@@ -97,4 +97,6 @@ public interface ConfigSynchronizationDao {
public List<ComplexkeywordCfg> getComplexStrListByService(BaseCfg entity);
public List<IpPortCfg> getAppIpPortList(@Param("tableName")String tableName,@Param("compileIds")List compileIds);
public List<AppIpCfg> getAppIpFeatureList(BaseCfg entity);
public void updateCfgStatus(BaseCfg entity);
}

View File

@@ -1582,6 +1582,26 @@
AND a.CFG_ID!=#{cfgId,jdbcType=BIGINT}
</if>
</select>
<!-- 配置状态启停,定时任务使用 -->
<update id="updateCfgStatus" parameterType="com.nis.domain.configuration.BaseCfg">
update ${tableName} set is_valid = #{isValid,jdbcType=INTEGER},
edit_time = #{editTime,jdbcType=TIMESTAMP}
<if test="isAudit != null" >
,is_audit = #{isAudit,jdbcType=INTEGER}
,audit_time=#{auditTime,jdbcType=TIMESTAMP}
</if>
<trim prefix="WHERE" prefixOverrides="AND |OR ">
<if test="cfgId !=null ">
AND cfg_id = #{cfgId,jdbcType=BIGINT}
</if>
<if test="compileId !=null ">
AND compile_id = #{compileId,jdbcType=INTEGER}
</if>
and function_id=#{functionId,jdbcType=INTEGER}
</trim>
</update>
<!-- <select id="findAppPolicyList" resultMap="AppPolicyCfgMap" parameterType="com.nis.domain.configuration.AppPolicyCfg" >
select
<include refid="AppPolicyCfg_Column"/>