super_help_superdocument.jsp UserHelpAction.java —————————————————— IP校验的代码 function addIp(ipbegin,ipend) { var ipbegintemp = f.ipbegin.value.split(“.”); var ipendtemp = f.ipend.value.split(“.”); for(var i = 0; i ; —————————————————————————- 频道同步:iam3131合的代码: JobConsts.java ChannelInfoDao.java OttChannelJobSender.java 还在ChannelInfoAction.java里面添加MessageEventInit.publish(JobConsts.OTT_CHANNEL_EVENT, 0); CMI合的代码 JobConsts.java OttChannelJobReceiver.java OttChannelDao.java OttChannel.java 注意url要配置 另外注意pojo类的变量名: 比如cmi传递给iam的jsonstr:[{“value”:12,”text”:”JD”}],对应的pojo类应该是有value和text的。 ————————————————————————— UTVCP的同步 CMI中: JobConsts.java UTVCPSender.java IAM中: UTVCPReceiver.java UTVCP.java UTVCPDao.java 对应的建表语句: SELECT ‘create table t_utv_cp’ AS prompt; DROP TABLE IF EXISTS t_utv_cp ; CREATE TABLE t_utv_cp ( operid INT(11) NOT NULL AUTO_INCREMENT, NAME VARCHAR(32) NOT NULL, PRIMARY KEY (operid,NAME) ) ENGINE=INNODB DEFAULT CHARSET=utf8 后来改operid为cpid,对应的建表语句: SELECT ‘create table t_utv_cp’ AS prompt; DROP TABLE IF EXISTS t_utv_cp ; CREATE TABLE t_utv_cp ( cpid VARCHAR(128) NOT NULL, NAME VARCHAR(200) NOT NULL, PRIMARY KEY (cpid,NAME) ) ENGINE=INNODB DEFAULT CHARSET=utf8 ————————————————————————— utvonlineuser.jsp 1、根据用户组选择展示内容
2、频道列表 可以参照请求数链接数页面 注意getnode返回的数据格式: {“data”:[{“value”:”11111”,”text”:”OTT-WK”},{“value”:”node123”,”text”:”cache节点1”},{“value”:”ott1”,”text”:”ott1”},{“value”:”servicenodenj111”,”text”:”南京服务节点1”},{“value”:”test00001”,”text”:”CMI测试节点”}]} 而我一开始是{“data”:[{“channelname”:”sohuname”}]} 将格式修改之后就正常了。 3、查询语句 对比着看 请求数链接数页面的查询参数: queryparam:”{“starttime”:”20161208000000”,”endtime”:”20161208191503”,”timezoneoffset”:28800000,”website”:[],”node”:”“,”servicetype”:”“}” queryparam:”{“starttime”:”20161208000000”,”endtime”:”20161208191530”,”timezoneoffset”:28800000,”website”:[“97”,”98”,”99”],”node”:”“,”servicetype”:”“}” 对于多选的website,是以数组的方式传送的。 传送的时候全选的channel的值都是null,而不是“”,原因是multiple=”multiple” requestconnectService.java里发送大数据的参数: {“granularity”:”0”,”starttime”:”20161207160000”,”endtime”:”20161208115302”,”siteid”:”96,97”,”nodeid”:”node123”} 而我的 UTVOnlineUserService.java {“granularity”:”0”,”starttime”:”20161207160000”,”endtime”:”20161208123254”,”siteid”:”97,98”,”nodeid”:”test00001”,”channelid”:”sohu1”} =================================================================================================== nodeservice_ipv6new.jsp 不能连续导出模板、导出 把exportForm1改成exportForm就可以了 =================================================================================================== 自动上报发送的数据:{“desc”:”已缓存”,”domain”:”http://www.a3.com.cn”,”sendState”:”3”} 按钮状态上报发送的数据:{“data”:[{“desc”:”不缓存”,”domain”:”http://www.sina.com.cn”,”sendState”:”2”}],”action”:”reportWhiteState”} 修改后发送的数据正确:{“data”:[{“desc”:”已缓存”,”domain”:”http://www.a1.com”,”sendState”:”3”}],”action”:”reportWhiteState”} 需要修改自动上报发送数据的代码: public int reportChange(String id,String domain,String status){ JSONObject reportData = new JSONObject(); String desc = null; if(status.equals(“0”)){//0待处理、3可缓存、4缓存失败 desc = getText(“iam.cachejob.processing”); }else if(status.equals(“3”)){ desc = getText(“iam.cachejob.cachesuccess”); }else{ desc = getText(“iam.cachejob.cachefailure”); } reportData.put(“desc”, desc); reportData.put(“domain”, domain); reportData.put(“sendState”, status); JSONObject resultObj = new JSONObject(); try { String reportDataString = reportData.toString(); String report_url = webExchangeConfigService.getItemValueByName(“SD_WHITE_URL”, “WEB”); String result = SendHttpMessage.postMsg(report_url,reportDataString); resultObj = JSONObject.fromObject(result); } catch (Exception e) { e.printStackTrace(); } if(resultObj!=null &&!resultObj.isNullObject()&& resultObj.has(“code”)&&”0”.equals(resultObj.getString(“code”))){ return 0;//上报成功 }else{ return 1; } } 按钮状态上报的代码: public JSONObject reportAll(List domainList){ JSONObject reportData = new JSONObject(); JSONArray list = new JSONArray(); JSONObject bean = new JSONObject(); String tempStr[] = null; for (int i = 0; i 不知道有没有必要action=” 成功 ———————————————————————————————————- bootstrap fileinput在上传成功之后一定要有一个json对象的返回,否则页面会报错。 添加 JSONObject obj = new JSONObject(); obj.put(“result”, “0”); CommonUtils.writeJson(obj.toString()); 成功 =========================================================================================================== 和程文超联调 139没有channelid 联调前发送的param: {“granularity”:”0”,”starttime”:”20161211160000”,”endtime”:”20161212023436”,”siteid”:”“,”nodeid”:”“,”channelid”:null} 程文超给我的建议格式为: curl -XPOST ‘http://10.46.173.147:8080/1124/rest/statistic/useronline/report’ -d ‘{“starttime”:”20161206000000”,”endtime”:”20161207235959”,”channel”:”605”,”node”:”02”}’ 总共改了三处用于联调 if(jobj.containsKey(“node”)){ param.put(StatsticConsts.NODE_ID, jobj.getString(“node”)); // param.put(StatsticConsts.NODE_ID, “605”);//联调 } if(jobj.containsKey(“channel”)){ param.put(StatsticConsts.CHANNEL_ID, jobj.getString(“channel”)); // param.put(StatsticConsts.CHANNEL_ID, “02”);//联调 } url=”http://10.46.173.147:8080/1124/rest/statistic/useronline/report”;//联调 修改后 {“granularity”:”0”,”starttime”:”20161205160000”,”endtime”:”20161207153400”,”siteid”:”“,”nodeid”:”605”,”channelid”:”02”} 联调成功(不知道站点要不要加) ============================================================================================================ 川总让我改查不到数据就不显示图表 原来查不到数据时候返回的resp:{“utvonlineuserline”:{“xaxis”:[],”data”:[[]]}} 在Service类里面都增加一个卫语句: if(xaxis.size()==0){ return null; } 这样没数据就不会显示图表。 =============================================================================================================
============================================================================================================= //返回更新时间 DateFormat df =new SimpleDateFormat(“yyyy-MM-dd hh:mm:ss”); Long lastModified = helpFile.lastModified(); Date date = new Date(lastModified); fileUpdateTime = df.format(date);
============================================================================================================= (“#file_zh”).fileinput({ uploadUrl: ‘<%=path%>/cmi/user_uploadHelpFile.action?fileType=1’, allowedFileExtensions : [‘pdf’], maxFileSize: 0,//单位是KB,0表示不限制文件大小 autoReplace: true, maxFileCount: 1, uploadAsync: false, })on(“filebatchselected”, function(event, files) {
(this).fileinput(“upload”); }).on(“filebatchuploadsuccess”, function(event, data) {//上传成功后回调函数 alert(‘处理成功’); $(“#superZhFile”).text(‘’); }); uploadAsync: false的时候回调函数如果要生效,只能用filebatchuploadsuccess
或者用下面一种方法: ============================================================================================================= $(“#file_en”).fileinput({ uploadUrl: ‘ 建议用这一种方法 ============================================================================================================= 周三新任务 CAcert_init.action cretificate.jsp CA证书上传时发送的数据: formData:id=
("#form6_id").val();new FormData(
(“#form5”)[0]); ============================================================================================================= WebsiteAction.java public String init(){ String operid = (String)this.getSession().get(“OPERID”); int roletype = (Integer)this.getSession().get(“ROLETYPE”); if((roletype == 1) || (!websiteService.isValidOperId(operid))){//isValidOperId(),判断operId是否在t_cp表中 return “super”; }else{ return “success”; } } ============================================================================================================= 姚敏说我原来的方案不好看 删除了按钮组
============================================================================================================= 超链接 a { text-decoration:none; } a:link { color:#000000; text-decoration:none; } a:visited { color:#000000 } a:hover { text-decoration:none; color:#DDDDDD;
} ============================================================================================================= 修改IAM向CMI频道同步的问题, CMI侧接收文档: UTVChannelJobReceive.java JobConsts.java UTVChannel.java UTVChannelDao.java 下面的建表语句有问题: SELECT ‘create table t_utvchannelinfo’ AS prompt; DROP TABLE IF EXISTS t_utvchannelinfo ; CREATE TABLE t_utvchannelinfo ( id INT(11) AUTO_INCREMENT NOT NULL, channelcode VARCHAR(32) NOT NULL, channelnum VARCHAR(32) NOT NULL, chinesename VARCHAR(128) NOT NULL, englishname VARCHAR(128) NOT NULL, fieldname VARCHAR(64) NOT NULL, channelname VARCHAR(64) NOT NULL ) ; CREATE UNIQUE INDEX idx_utvchannelinfo_01 ON t_utvchannelinfo(id, channelcode) ; 改成如下: SELECT ‘create table t_utvchannelinfo’ AS prompt; DROP TABLE IF EXISTS t_utvchannelinfo ; CREATE TABLE t_utvchannelinfo ( id INT(11) NOT NULL AUTO_INCREMENT, channelcode VARCHAR(32) NOT NULL, channelnum VARCHAR(32) NOT NULL, chinesename VARCHAR(128) NOT NULL, englishname VARCHAR(128) NOT NULL, fieldname VARCHAR(64) NOT NULL, channelname VARCHAR(64) NOT NULL, PRIMARY KEY (id,channelcode) ) ENGINE=INNODB DEFAULT CHARSET=utf8 =============================================================================== 修改上传文档的更新时间,注意date的12小时和24小时的用法。 /* * 获取文件更新时间 * */ public String getUpdateTime(String fileName){ File file = new File(root, fileName); DateFormat df =new SimpleDateFormat(“yyyy-MM-dd HH:mm:ss”);//大写为24小时时间,小写为12小时时间 Long lastModified = file.lastModified(); Date date = new Date(lastModified); return df.format(date); } ================================================================================ 频道同步的时候, UTVChannelAction.java用到了基类BaseAction.java里面的BactchDelete方法,如果要把频道同步的方法放在基类不合适。 可以在UTVChannelAction.java里面加一个这种代码: public String batchDelete() throws Exception{ //发送UTV频道同步信息给CMI MessageEventInit.publish(JobConsts.UTV_CHANNEL_EVENT, 0); return super.batchDelete(); } 完美解决。 ================================================================================ WEB CMI_URL http://127.0.0.1:8080/uniportal 字符串 CMI WEB URL,与CMI合设时不需要修改 ================================================================================ CMI上任何操作都要记录到操作日志。 比如 UTVOnlineUserAction.java中 String opername = (String)this.getSession().get(“OPERNAME”); String message = getOperLogText(“cmi.analysis.requestlink.query”,new String[]{opername, start, end}); OsServiceAccess.getInstance().getLogService().writeLog(getSession(), OperConst.REQUEST_LINK, ret, message); 我依葫芦画瓢加了如下代码: String opername = (String)this.getSession().get(“OPERNAME”); OperResult ret = OperResult.SUCCESS;//OperResult ret = OperResult.FAILURE; String message = getOperLogText(“cmi.helpfile.uploadedfile”,new String[]{opername,fileFileName}); OsServiceAccess.getInstance().getLogService().writeLog(getSession(), OperConst.UPLOAD_DOCUMENT, ret, message); 另外国际化代码cmi.helpfile.uploadedfile: 用户[{0}]上传了一个帮助文档,文档名为[{1}]。 User [{0}] uploaded a help manual named [{1}]. 注意: 还要在Code\IAM\V3.01\ZXCDN-IAM-DB-CMIV3.01.04.xx\cmidb_packet\db\mysql\install\cn下的 zxinsys_data.sql中的 CALL proc_res_op_paratype(22590,1,4207,’请求链接数’);后添加 CALL proc_res_op_paratype(22590,1,4208,’帮助手册’); ================================================================================ UTV发给大数据的数据格式: {“granularity”:”0”,”starttime”:”20161215160000”,”endtime”:”20161216012738”,”siteid”:”“,”nodeid”:”“,”channelid”:”“} 请求数链接数发给大数据的格式: {“granularity”:”0”,”starttime”:”20161215160000”,”endtime”:”20161216020336”,”siteid”:”“,”nodeid”:”“} ================================================================================ 解决 接收空流会报错的问题,用ajax试试。
”> 用ajax好像行不通,现在改为在下载前先判断路径下是否存在这个文件。 代码:
” οnclick=”downloadFile(1)”> function downloadFile(fileType){ .ajax({ “type”: “post”, “url”: “ {pageContext.request.contextPath}/cmi/user_isExist.action?t=” + (new Date()).valueOf(), “dataType”: “json”, “data”: {“fileType”:fileType}, “success”: function(resp){ if(resp.result == 0){//文件存在即下载 window.location.href=”{path}/cmi/fileDownload.action?number=”+fileType; }else{
.umapMessager.alert(“”,””); } } }); } 对应的action类方法如下: /* * 判断文件是否存在 * */ public String isExist(){ switch (fileType) { case 1: fileFileName = SUPER_ZH_FILE; break; case 2: fileFileName = SUPER_EN_FILE; break; case 3: fileFileName = CP_ZH_FILE; break; default: fileFileName = CP_EN_FILE; break; } String url = root + File.separator + fileFileName; JSONObject resp = new JSONObject(); if(new File(url).exists()){ resp.put(“result”, 0); }else{ resp.put(“result”, 1); } CommonUtils.writeJson(resp.toString()); return NONE; }
圆满解决。 ================================================================================
================================================================================ 加组信息的是operatorstore.action,但是在struts-cmi.xml文件中却找不到。 从数据库看 组信息主要在oper_grpscript2中看,因为UTV是要安装cmi版本后看的,所以只能根据描述来判断UTV组,而不是opergrpid。
操作员信息则是在oper_rights2中看,操纵员id:operid和虚拟组id:opergrpid
虚拟组id和实际组id之间有一个映射,是在oper_virtual_grpdef中看。 查询的sql语句 SELECT COUNT(1) FROM oper_rights2 a WHERE a.operid=’13’ AND a.opergrpid= (SELECT b.v_opergrpid FROM oper_virtual_grpdef b WHERE b.opergrpid= (SELECT c.opergrpid FROM oper_grpscript2 c WHERE c.grpscript IN (‘UTV’,’utv’))
) ================================================================================ UTVOnlineUser.jsp里面 if((“select[name=’operid’]”).length > 0){
(“select[name=’operid’]”).change(function(){ var operid = ( t h i s ) .