diff --git a/api/CrapApi.V7-2.sql b/api/CrapApi.V7-2.sql deleted file mode 100644 index ed64fc8e7..000000000 --- a/api/CrapApi.V7-2.sql +++ /dev/null @@ -1,33 +0,0 @@ -CREATE TABLE `apitest`.`project_user` ( - `id` VARCHAR(50) NOT NULL, - `status` TINYINT(4) NOT NULL DEFAULT 1, - `sequence` INT NOT NULL DEFAULT 0, - `createTime` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, - `projectId` VARCHAR(50) NOT NULL, - `userId` VARCHAR(50) NOT NULL, - `addModule` BIT NOT NULL DEFAULT 1 COMMENT '是否可以添加模块', - `delModule` BIT NOT NULL DEFAULT 0 COMMENT '是否可以删除模块', - `modModule` BIT NOT NULL DEFAULT 1 COMMENT '是否可是修改模块', - `addInter` BIT NOT NULL DEFAULT 1 COMMENT '是否可以添加接口', - `delInter` BIT NOT NULL DEFAULT 0 COMMENT '是否可以删除接口', - `modInter` BIT NOT NULL DEFAULT 1 COMMENT '是否可以修改接口', - `addArticle` BIT NOT NULL DEFAULT 1 COMMENT '是否可以添加文章', - `delArticle` BIT NOT NULL DEFAULT 0 COMMENT '是否可以删除文章', - `modArticle` BIT NOT NULL DEFAULT 1 COMMENT '是否可以修改文章', - `addSource` BIT NOT NULL DEFAULT 1 COMMENT '是否可以添加资源', - `delSource` BIT NOT NULL DEFAULT 0 COMMENT '是否可以删除资源', - `modSource` BIT NOT NULL DEFAULT 1 COMMENT '是否可以修改资源', - `addDict` BIT NOT NULL DEFAULT 1 COMMENT '是否可以添加数据字典', - `delDict` BIT NOT NULL DEFAULT 0 COMMENT '是否可以删除数据字典', - `modDict` BIT NOT NULL DEFAULT 1 COMMENT '是否可以修改数据字典', - `addError` BIT NOT NULL DEFAULT 1 COMMENT '是否可以添加错误码', - `delError` BIT NOT NULL DEFAULT 0 COMMENT '是否可以删除错误码', - `modError` BIT NOT NULL DEFAULT 1 COMMENT '是否可以修改错误码', - PRIMARY KEY (`id`)); - - ALTER TABLE `apitest`.`project_user` -ADD UNIQUE INDEX `project_user` (`userId` ASC, `projectId` ASC); - -ALTER TABLE `apitest`.`project_user` -ADD COLUMN `userEmail` VARCHAR(45) NULL AFTER `modDict`, -ADD COLUMN `userName` VARCHAR(50) NULL AFTER `userEmail`; \ No newline at end of file diff --git a/api/CrapApi.V7.sql b/api/CrapApi.V7.sql index 68fbde43f..a1c517342 100644 --- a/api/CrapApi.V7.sql +++ b/api/CrapApi.V7.sql @@ -1,52 +1,453 @@ -use apitest; +use api; +DROP TABLE IF EXISTS `article`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `article` ( + `id` varchar(50) NOT NULL, + `name` varchar(100) NOT NULL, + `brief` varchar(200) DEFAULT NULL, + `content` longtext NOT NULL, + `click` int(11) NOT NULL DEFAULT '0', + `type` varchar(20) NOT NULL DEFAULT 'PAGE', + `status` tinyint(4) NOT NULL DEFAULT '1', + `createTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `moduleId` varchar(50) NOT NULL DEFAULT 'top', + `mkey` varchar(20) DEFAULT NULL COMMENT 'key,唯一键,页面唯一标识', + `canDelete` tinyint(4) NOT NULL DEFAULT '1' COMMENT '是否可删除,可修key,默认可以', + `category` varchar(50) DEFAULT NULL, + `canComment` tinyint(4) NOT NULL DEFAULT '1', + `commentCount` int(11) NOT NULL DEFAULT '0', + `sequence` int(11) NOT NULL DEFAULT '0' COMMENT '排序,越大越靠前', + `markdown` text NOT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `mkey_UNIQUE` (`mkey`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `article` +-- + +LOCK TABLES `article` WRITE; +/*!40000 ALTER TABLE `article` DISABLE KEYS */; +INSERT INTO `article` VALUES ('02c16933-2823-458d-83a0-6d5b8b752a25','建议&留言','建议&留言:有好的建议或有新的需求,可以在此处留言','
有好的建议或有新的需求,可以在此处留言
使用缓存的目的就是在于减少计算,IO,网络等时间,可以快速的返回,特别是流量比较大的时候,可以节约很多服务器带宽和压力。
一个请求从缓存的方面来说,有三个过程。
Expires,http 1.0版本定义的response头部,定义过期时间,如果本地时间发现超过过期时间,就会向服务器请求,进行文件新鲜度检测。但是会有一个问题,就是本地的操作系统时间可能偏差比较大,导致缓存时间过长或者永远都缓存不了。
Cache-control: max-age,http 1.1 版本定义的response头部,就是为了解决操作系统时间与服务器时间相差太大问题。文件缓存存活时间,请求完毕的时候,会记录本地的时间。再次请求的时候,此时时间减去最初记录时间,如果时间大于max-age,就会进行文件新鲜度检测。
本地缓存过期,缓存和服务器文件可能一样,也有可能不一样。如果一样的话,就没有必要返回内容。如果不一样,就返回内容,就相当于一次新的请求。
怎么判断文件是否一致呢?现在的做法通过文件生成时间或者对文件进行MD5值计算。
Last-Modified,文件生成时间或者最后修改时间。下一次请求的头部,添加If-Modified-Since,值是上次respone头部的Last-Modified值,和服务器进行对比,如果一样的话,直接返回304,数据内容为空。【这里也会存在一个问题,如果文件定期更新,但是文件内容不更新,岂不是白白耗费流量。】
Etag , 服务器端对文件计算出来的一个值。下一次请求的头部,添加If-None-Match,和服务器进行对比,如果一样的话,直接返回304,数据内容为空。
相当于一次新的请求,状态是200.
通过输出4个头部,来控制缓存,减少压力,不仅可以节省服务器和宽带资源,对用户的体验提升也是非常有帮组的。
整体上,可以看到可能出现的情况。200(from cache,无请求),304(仅仅是头部交换,没有response body返回),200(一次完整的请求,包含response body)。
1.下载编译后的文件直接部署(CrapApi.V2 或 从github上获取源码自己编译)
2.手动部署至tomcat
3.下载源码自己编译(见:项目二次开发指南)
test
\n
\n \n
\n [CrapApi是什么] \n
\n加入一个公司或接手一个项目,面对散落在处的word文档,也许好不容易找到了,才发现那已是陈年往事!!!Holy Crap!我勒个去!\n\n面对快速变动的需求文档,不断更迭的API接口,此时你应该考虑找一个好的接口管理系统...\n\nCrapApi:一个由anjularjs+bootstrap+springMVC搭建的免费开源的API接口管理系统(应用接口管理系统)\n\n
\n [CrapApi能做什么]\n
\n接口管理?数据字典管理?no no no!CrapApi功能还多着了\n1.项目管理、模块管理、接口管理、接口版本、接口拷贝、接口文档pdf下载、模块加密访问....\n2.数据字典管理、数据字典加密访问...\n3.多管理员、多权限、多角色管理,精准控制每个接口的删改权限\n4.自定义菜单、自定义网站样式,满足你的各种需求\n5.文档管理:说明文档、需求文档、技术实现文档,想怎么分类CrapApi都支持\n6.文档留言、错误码管理、接口排序... \n\n更多功能还在路上,想要什么,在此留言,统统都能满足!\n留言地址:http://api.crap.cn/web.do#/webWebPage/detail/ARTICLE/02c16933-2823-458d-83a0-6d5b8b752a25\n
\n [演示&帮助文档]\n
\n演示地址:http://api.crap.cn 压缩包下载地址:http://ehsantang.github.io/CrapApi/ 帮助文档地址:http://api.crap.cn/web.do#/webWebPage/list/ARTICLE/%E5%B8%AE%E5%8A%A9%E6%96%87%E6%A1%A3 账号:super 123456 \n游客私有模块访问密码:123\nQQ技术交流群:254450938\n\n
\n [主要技术]\n
\n主要语言:java、js\n\n主要技术:anjularjs、bootstrap、springMVC、hibernate、maven、iconfont\n\n
\n [系统功能]\n
\n系统支持管理员管理、权限控制、角色管理\n\n支持多项目、多模块划分,同时支持私密项目、模块密码访问\n\n支持数据字典管理、支持数据字典密码访问\n\n支持项目错误码管理、支持接口拷贝等功能\n\n支持前端菜单自定义,支持管理员菜单自定义\n\n支持接口PDF文件导出\n\n接口支持多版本号\n\n支持自定义网站风格\n\n
\n [相关技术介绍]\n
\nAngularJS:Google推出的前端JS框架\n\nAngularJS诞生于2009年,由Misko Hevery等人创建,后为Google所收购。是一款优秀的前端JS框架,已经被用于Google的多款产品当中。AngularJS有着诸多特性,最为核心的是:MVVM、模块化、自动化双向数据绑定、语义化标签、依赖注入等等。\n\n
Bootstrap:Twitter开源工具包\n\nBootstrap是Twitter推出的一个用于前端开发的开源工具包。它由Twitter的设计师Mark Otto和Jacob Thornton合作开发,是一个CSS/HTML框架。\n\n
Iconfont:阿里巴巴矢量图标库\n\nIconfont-国内功能很强大且图标内容很丰富的矢量图标库,提供矢量图标下载、在线存储、格式转换等功能。阿里巴巴体验团队倾力打造,设计和前端开发的便捷工具。\n
\n [常见问题]\n
\n1. 文章密码访问
2. 接口新增put、delete、trace、head、options类型
3. 新增在线调试功能
4. 修改密码:点击右上角用户名
5. 文章编辑新增kindeditor编辑器,支持图片上传、附件上传
6. 修复退出账号bug
7. 文章添加标题搜索
8. 接口修改、删除记录日志,恢复至指定节点
9. 接口、模块移动至其他模块
10. 自定义网站字体
11. Lucene全文搜索
V2升级成V3,请执行相应sql脚本:https://github.com/EhsanTang/CrapApi/tree/master/api
',49,'ARTICLE',0,'2016-05-20 11:18:27','web',NULL,1,'帮助文档',0,0,0,''),('377d6580-657f-420b-88fd-d7d239f05cb5','帮助中心','接口PDF下载只支持在windows服务器上部署的站点\n如需测试下载请前往:http://api2.crap.cn 测试','[CrapApi是什么]
加入一个公司或接手一个项目,面对散落在处的word文档,也许好不容易找到了,才发现那已是陈年往事!!!Holy Crap!我勒个去!
面对快速变动的需求文档,不断更迭的API接口,此时你应该考虑找一个好的接口管理系统...
CrapApi:一个由anjularjs+bootstrap+springMVC搭建的免费开源的API接口管理系统(应用接口管理系统)
[CrapApi能做什么]
接口管理?数据字典管理?no no no!CrapApi功能还多着了
1.项目管理、模块管理、接口管理、接口版本、接口拷贝、接口文档pdf下载、模块加密访问....
2.数据字典管理、数据字典加密访问...
3.多管理员、多权限、多角色管理,精准控制每个接口的删改权限
4.自定义菜单、自定义网站样式,满足你的各种需求
5.文档管理:说明文档、需求文档、技术实现文档,想怎么分类CrapApi都支持
6.文档留言、错误码管理、接口排序...
更多功能还在路上,想要什么,在此留言,统统都能满足!
留言地址:http://api.crap.cn/web.do#/webWebPage/detail/ARTICLE/02c16933-2823-458d-83a0-6d5b8b752a25
[演示&帮助文档]
演示地址:http://api.crap.cn
压缩包下载地址:http://ehsantang.github.io/CrapApi/
帮助文档地址:http://api.crap.cn/web.do#/webWebPage/list/ARTICLE/%E5%B8%AE%E5%8A%A9%E6%96%87%E6%A1%A3
账号:super 123456
游客私有模块访问密码:123
QQ技术交流群:254450938
[主要技术]
主要语言:java、js
主要技术:anjularjs、bootstrap、springMVC、hibernate、maven、iconfont
[系统功能]
系统支持管理员管理、权限控制、角色管理
支持多项目、多模块划分,同时支持私密项目、模块密码访问
支持数据字典管理、支持数据字典密码访问
支持项目错误码管理、支持接口拷贝等功能
支持前端菜单自定义,支持管理员菜单自定义
支持接口PDF文件导出
接口支持多版本号
支持自定义网站风格
[相关技术介绍]
AngularJS:Google推出的前端JS框架
AngularJS诞生于2009年,由Misko Hevery等人创建,后为Google所收购。是一款优秀的前端JS框架,已经被用于Google的多款产品当中。AngularJS有着诸多特性,最为核心的是:MVVM、模块化、自动化双向数据绑定、语义化标签、依赖注入等等。
Bootstrap:Twitter开源工具包
Bootstrap是Twitter推出的一个用于前端开发的开源工具包。它由Twitter的设计师Mark Otto和Jacob Thornton合作开发,是一个CSS/HTML框架。
Iconfont:阿里巴巴矢量图标库
Iconfont-国内功能很强大且图标内容很丰富的矢量图标库,提供矢量图标下载、在线存储、格式转换等功能。阿里巴巴体验团队倾力打造,设计和前端开发的便捷工具。
[常见问题]
',4085,'PAGE',0,'2016-04-08 00:13:09','web','WELCOME',0,'',1,0,0,''),('395b13aa-920c-4697-b95e-8d8c00342001','天气预报接口','气象数据开放接口是中国气象局面向网络媒体、手机厂商、第三方气象服务机构等用户,\n通过web方式提供气象数据服务的官方载体。随着气象数据开放平台的逐渐完善,\n会面向广大用户提供更为丰富全面的气象数据,从而满足不同用户的不同需求。','
- 管理员账号:super 123456
- 私有接口访问密码:123
- 显示样式有问题:所有测试均使用Chrome浏览器,请优先使用Chrome、Firefox、Safari、IE9及以上浏览器访问
- 页面加载异常:项目正在不断完善,可能是文件缓存导致,请刷新浏览器重试。
- 接口PDF下载只支持在windows服务器上部署的站点,如需测试下载请前往:http://api2.crap.cn 测试
- GitHub地址:https://github.com/EhsanTang/CrapApi
- QQ技术交流群:254450938
气象数据开放平台:http://openweather.weather.com.cn/Home/Package/index.html
1.常规气象数据接口
2.基础气象数据接口
直接通过气象局调用以上两个接口现阶段免费,未来可能需要收费,需要注册账号并完善资料后才能调用
目前气象局对外公开的直接可调用的接口如下:
国外天气预报接口:https://www.wunderground.com/weather/api
城市代码可直接通过气象局官网查询,地址:http://openweather.weather.com.cn/Home/Help/area.html
',288,'ARTICLE',0,'2016-04-08 23:01:18','web',NULL,1,'常用接口',1,0,0,''),('426abac0-8b5a-494b-940e-9727025ac1e7','WebP 探寻之路','','不管是 PC 还是移动端,图片一直是流量大头,以苹果公司 Retina 产品为代表的高 PPI 屏对图片的质量提出了更高的要求,如何保证在图片的精细度不降低的前提下缩小图片体积,成为了一个有价值且值得探索的事情。
但如今对于 JPEG、PNG 和 GIF 这些图片格式的优化几乎已经达到了极致, 若想改变现状开辟新局面,便要有釜底抽薪的胆量和气魄,而 Google 给了我们一个新选择:WebP。
对 WebP 的研究缘起于手机 QQ 原创表情商城,由于表情包体积较大,在 2G/3G
的网络环境下加载较慢。同事小贝恰好因为 2013 Google I/O Event 了解到了
WebP,于是我们便一起开始了没羞没躁的技术预研,期待在原创表情图片的质量与体积之间寻找最美的平衡。
今年 WebP 图片格式得到越来越多的关注,很多团队也开始布道,前阵子的前端圈“走进腾讯互娱前端技术专场”也有相关专题。借此热潮,在这里把上一年的探索过程以及今年 WebP 新的发展一同分享出来,同时也期待更多的人将其应用于实际业务中。
WebP(发音 weppy,项目主页),
是一种支持有损压缩和无损压缩的图片文件格式,派生自图像编码格式 VP8。根据 Google 的测试,无损压缩后的 WebP 比 PNG 文件少了
45% 的文件大小,即使这些 PNG 文件经过其他压缩工具压缩之后,WebP 还是可以减少 28% 的文件大小。
2010 年发布的 WebP 已经不算是新鲜事物了,在 Google 的明星产品如
Youtube、Gmail、Google Play 中都可以看到 WebP 的身影,而 Chrome 网上商店甚至已完全使用了
WebP。国外公司如 Facebook、ebay 和国内公司如腾讯、淘宝、美团等也早已尝鲜。目前 WebP
也在我厂很多的项目中得到应用,如腾讯新闻客户端、腾讯网、QQ空间等,同时也有一些针对 WebP 的图片格式转换工具,如 智图,iSparta 等。
(Google 已和正在部署的 WebP 的产品)
可喜的是,直到今年,Google 对 WebP 依旧投入了持续的热情,2014 年的 Google I/O Event 中也出现了两个介绍 WebP 应用的视频。WebP 已大量应用于全球流量消耗最多的 Google 产品中,你还有理由拒绝它吗?
上面只是简单介绍了这种图片格式的背景和应用,不过 “talk is cheap”,这种格式优势在哪里?除了压缩效果极好,图片质量能否得到保障?这需要更理性客观的数据:
这里列举一个简单的测试:对比 PNG 原图、PNG 无损压缩、PNG 转 WebP(无损)、PNG 转 WebP(有损)的压缩效果。更多测试查看这里(请用 Chrome 浏览器打开)
WebP 的优势体现在它具有更优的图像数据压缩算法,能带来更小的图片体积,而且拥有肉眼识别无差异的图像质量;同时具备了无损和有损的压缩模式、Alpha 透明以及动画的特性,在 JPEG 和 PNG 上的转化效果都非常优秀、稳定和统一。
科技博客 GigaOM 曾报道:YouTube 的视频略缩图采用 WebP 格式后,网页加载速度提升了 10%;谷歌的 Chrome
网上应用商店采用 WebP 格式图片后,每天可以节省几 TB 的带宽,页面平均加载时间大约减少 1/3;Google+ 移动应用采用 WebP
图片格式后,每天节省了 50TB 数据存储空间。
现在问题来了:WebP 的支持度和兼容性如何?
根据对目前国内浏览器占比与 WebP 的兼容性分
析,大约有 50% 以上的国内用户可以直接体验到 WebP,如果你的网站以图片为主,或者你的产品基于 Chromium
内核,建议体验尝试。假如你打算在 App 中使用 WebP,除了 Android4.0 以上提供的原生支持外,其他版本以及 iOS
都可以直接使用官方提供的解析库(Android 、iOS )。
为了验证 WebP 图片格式的业务可行性,我们从流畅度、解码耗时、CPU 使用、内存占用几个维度进行的分析,在开发同学们的帮助下得到了非常宝贵的测试数据:
测试数据(部分):
测试数据(部分):
可见除了 WebP 在解码时间与 PNG 有较明显差异(毫秒级别)之外,总体使用体验和 PNG 基本无差异。同时也需要明确,移动设备的发展迅猛,硬件升级快,上一年的表现也许在今年又有了明显的提升。所以,在 App 中使用 WebP 基本没有技术阻碍。
在验证了业务可行性之后,WebP 又激发了我们对另外一些方向的思考:既然它表现如此优秀,能否进一步摸清其“秉性”,得到一些能在未来使用中遵循的指导方案?
于是,为了更深入了解 WebP 特性,我们针对原创表情项目 “不同的表情图片,如何获得 WebP 的最佳压缩效率” 问题继续展开探究,主要从图片规格、色彩数(颜色数量)、参数配置几个维度进行:
通过阅读文献了解到 WebP 使用的是 Fancy 采样算法,既然是采样算法必然有采样区块,而 JPEG 的采样区块是 8*8,对于原始图片的长宽不是 8 的倍数,都需要先补成 8 的倍数,使其能一块块的处理,所以对于 8 的整数倍的图片,压缩会更高效。
那么 WebP 的采样区块会是多少?我们在其他因素保持不变的前提下改变图片规格,选取了 200*200
附近多个规格值,得到了一些数据。将数据可视化之后可以看到凡是以 16*16
倍数(160*160、176*176、192*192、256*256)为规格的图片,有损压缩的比例都明显大于以 4*4 或 8*8
的倍数为规格的图片。
结论:原创表情可以考虑使用 “16n*16n” 的规格。目前原创表情选择的是 200*200 的规格大小,实际上选择 256*256 或者 192*192 能获得更高的 WebP 压缩效率,量级在千分之几。
在 JPEG 和 PNG 格式的选择经验上可以知道,对于色彩复杂的图片,一般使用 JPEG
格式,而对于色彩单一的图片,使用 PNG 格式。可见色彩数会影响图片的压缩效果。于是我们通过 Photoshop
中的色阶分离功能调整表情图片的色彩数,在其他因素保持不变的前提下对比不同色彩数对于 WebP 有损无损压缩的影响。
可见,在色彩数相对较少的前提下,无损压缩的效果要优于有损压缩;而色彩数很多时,有损压缩效果要优于无损压缩,这个分界点在 256±100 之间。
随后又从色温、渐变与杂色、直线曲线、是否需要描边上进行了分析,最后的结论即:
为了得到无损压缩和有损压缩的最佳压缩配置,我们通过对 900 张表情图片进行不同压缩配置的测试(大部分表情图片的色彩数都在 256 色以上),得到下面的数据:
可以发现,无损压缩表现很稳定,压缩质量越高,压缩效果也越好。而有损压缩在压缩质量设置为 75 以上之后,压缩效果反而减弱,甚至压缩后的图片体积会大于压缩前的体积。所以得出以下结论:
最终,得出了一个正反面案例,从技术角度分析不同的表情图标的优劣(强调一下是“技术角度”,这里列举的表情都很赞 ^_^)。
了解完静态 WebP,下面再了解一下动态 WebP(Animated WebP):2013
年 11 月 21 日,Animated WebP 终于取得进展,并在 Chrome32 Beta 中得到了支持。目前 Animated
WebP 支持将 GIF 直接转换成 Animated WebP,或者将多张 WebP 图片组合成 Animated WebP。与传统的 GIF
图比较,Animated WebP 的优势在于:
假如你在使用 Chrome32 以上的浏览器,可以点这里体验。
根据自己实际的测试,发现 Animated WebP 的压缩效果较不稳定,在默认压缩配置下达不到 Google 官方提供的示例效果。但 Animated WebP 依然有很多值得期待的空间,值得继续关注。
对于不同场景下 WebP 的使用,我们总结了一些解决方案,如下:
iSparta 是我们组针对 WebP 和 APNG 两种新型图片格式的转化而开发的一款桌面应用,直接图片批量转换为 WebP,同时提供多种参数配置,欢迎体验。
表设计log:
id | 主键 |
modelClass | 数据对应的class类 |
modelName | 前端展示的名称:如接口、菜单.... |
type | 操作类型:删除、修改 |
content | 操作之前的json数据 |
user | 操作人 |
remark | 备注 |
createTime | 时间 |
设计思路:
1、删除、修改之前将原有数据记录log表
2、恢复数据:最高管理员拥有恢复数据的权限
',15,'ARTICLE',0,'2016-06-05 13:39:21','web',NULL,1,'帮助文档',0,0,0,''),('5cc2867b-d4b6-417b-a99c-c069641c491e','用户行为分析研究之数据采集','用户行为分析,是指在获得网站访问量基本数据的情况下,对有关数据进行统计、分析,从中发现用户访问网站的规律,并将这些规律与网络营销策略等相结合,从而发现目前网络营销活动中可能存在的问题,并为进一步修正或重新制定网络营销策略提供依据。','\n 用户行为分析对于商业网站非常重要,而对于大型网站而言,网站响应速度是网站是否优秀一个重要衡量标准。怎样在保证网站响应速度的同时采集到用户的相关数据对于一个系统来说是具有挑战性的。\n
\n\n
\n
\n 日志记录的作用:\n
\n\n 1. 转化率计算:通过分析到访人数、注册人数、下单人数统计转化率\n
\n\n 2. 系统性能优化:通过访问记录,着重优化高并发的页面\n
\n\n 3. 黑客攻击防范:通过接口访问记录和日志访问记录,分析记录,建立黑名单机制,防止恶意攻击行为\n
\n\n 4. 用户行为分析、商业活动统计:大v转发后的阅读量、二次转发率,消息推送阅读数.....\n
\n\n
\n
\n 采集系统之服务端搭建:\n
\n\n 本地开发我就搭建一个apache服务器。服务器的开发非常简单,只要修改下apache下的conf文件(注意:我的开发平台是window7),代码如下:\n
\n<IfModule log_config_module> LogFormat \"%h %l %u %t [%{%Y-%m-%d %T}t] \\\"%r\\\" [%q] [%U] %>s %b \\\"%{Referer}i\\\" \\\"%{User-Agent}i\\\"\" combined\n LogFormat \"%h %l %u %t [%{%Y-%m-%d %T}t] \\\"%r\\\" [%q] [%U] %>s %b\" common <IfModule logio_module> # You need to enable mod_logio.c to use %I and %O\n LogFormat \"%h %l %u %t [%{%Y-%m-%d %T}t] \\\"%r\\\" [%q] [%U] %>s %b \\\"%{Referer}i\\\" \\\"%{User-Agent}i\\\" %I %O\" combinedio </IfModule>\n
\n 在htdocs文件夹里添加如下文件:\n
\n\n 1) a.gif(1*1像素的透明文件)\n
\n\n
\n
\n 启动apache服务器,我们在浏览器录入如下地址: http://127.0.0.1/a.gif?name=sharpxiajun&msg=test\n
\n\n 在logs文件夹里找到2012_06_26.access.log文件,打开文件,我们会看到如下日志:\n
\n127.0.0.1 - - [26/Jun/2012:11:37:07 +0800] [2012-06-26 11:37:07] \"GET /a.gif?name=sharpxiajun&msg=test HTTP/1.1\" [?name=sharpxiajun&msg=test] [/a.gif] 200 43\n
\n
\n
\n 采集系统之客户端:\n
\n\n 采集系统的核心还是客户端的采集脚本,通过js脚本获取相关信息,用户访问页面时,通过js发起一个请求,访问http://xxxx/a.gif\n
\n\n
\n
\n 参考资料:用户行为分析研究之数据采集.pdf \n
',34,'ARTICLE',0,'2016-06-04 01:19:51','web',NULL,1,'技术文档',0,0,66,''),('63864a72-ab64-4350-a3d7-d25d5bfc88bf','手机号码归属地查询接口大全(七种)','淘宝、拍拍、财付通、百付宝等手机号码查询接口','淘宝网
API地址: http://tcc.taobao.com/cc/json/mobile_tel_segment.htm?tel=15850781443
参数:
tel:手机号码
返回:JSON
拍拍
API地址: http://virtual.paipai.com/extinfo/GetMobileProductInfo?mobile=15850781443&amount=10000&callname=getPhoneNumInfoExtCallback
参数:
mobile:手机号码
callname:回调函数
amount:未知(必须)
返回:JSON
财付通
API地址: http://life.tenpay.com/cgi-bin/mobile/MobileQueryAttribution.cgi?chgmobile=15850781443
参数:
chgmobile:手机号码
返回:xml
百付宝
API地址: https://www.baifubao.com/callback?cmd=1059&callback=phone&phone=15850781443
参数:
phone:手机号码
callback:回调函数
cmd:未知(必须)
返回:JSON
115
API地址: http://cz.115.com/?ct=index&ac=get_mobile_local&callback=jsonp1333962541001&mobile=15850781443
参数:
mobile:手机号码
callback:回调函数
返回:JSON
有道api接口
接口地址:http://www.youdao.com/smartresult-xml/search.s?type=mobile&q=13892101112
参数说明:
type : 参数手机归属地固定为mobile
q : 手机号码
返回XML格式:
或者
http://www.youdao.com/smartresult-xml/search.s?jsFlag=true&type=mobile&q=手机号码
返回JSON格式:
fYodaoCallBack(1, {‘product’:\'mobile’,\'phonenum’:’13892101112′,’location’:\'陕西 延安’} , ”);
096.me api接口
查询手机号码归属地:
http://www.096.me/api.php?phone=手机号&mode={txt,xml}
举例:http://www.096.me/api.php?phone=13892101111&mode=txt
返回:
13892101111||陕西延安移动全球通卡 ||吉凶参半,惟赖勇气,贯彻力行,始可成功 吉带凶||
举例:http://www.096.me/api.php?phone=13892101111&mode=xml
返回:
13892101111 陕西延安移动全球通卡 吉凶参半,惟赖勇气,贯彻力行,始可成功 吉带凶
1. 使用最高权限账号登录,点击系统设置
2.点击修改按钮,选着颜色后点击提交,刷新页面设置即可生效
3.字体选择
使用最高管理员登陆系统,选中“网站字体”并点击编辑,进入如下图所示页面,在该页面中系统内置了4中字体,你可以点击【选着字体】按钮直接选择字体,也可在输入框输入字体样式。
1. 如何上传本地图片?
2. 接口访问密码,文章访问密码,数据字典访问密码设置
接口、数据字典密码设置在所属模块上,文章访问密码定义在文章详情中
',32,'ARTICLE',0,'2016-05-15 23:33:26','web',NULL,1,'帮助文档',0,0,0,''),('74987b7c-54bc-4043-aa6b-de949303b2a0','联系我','联系我','联系我
QQ群:254450938
',277,'PAGE',0,'2016-04-08 01:46:49','web','CONTACT',1,'',1,0,0,''),('75422949-daa1-409c-a215-bd34f225e802','HTTPDNS成为移动互联网的标配–原因与原理解析','DNS,作用就是将域名解析成IP。一个DNS查询,先从本地缓存查找,\n如果没有或者已经过期,就从DNS服务器查询,\n如果客户端没有主动设置DNS服务器,一般是从服务商DNS服务器上查找。这就出现了不可控。','DNS劫持
一些小服务商以及小地方的服务商非常喜欢干这个事情。根据腾讯给出的数据,DNS劫持率7%,恶意劫持率2%。网速给的劫持率是10-15%。
智能DNS,就是为了调度用户访问策略,但是这些因素会导致智能DNS策略失效。
HTTP DNS 负载均衡
返回IP列表,客户端可以依靠策略,进行负载均衡。
但是这样会造成下面一个问题。
浏览器都是通过域名访问,当然一些用户不可感知的服务,可以使用IP访问。
',20,'ARTICLE',0,'2016-04-24 13:55:46','web',NULL,1,'技术文档',0,0,0,''),('9385500e-5dc2-4433-8a4b-47158620ef36','CrapApi接口管理系统菜单设置','CrapApi系统菜单目前分为后台菜单、前端菜单、底部菜单、顶部菜单、友情链接五大类,\n其中后台菜单、前端菜单、顶部菜单支持二级菜单','1.菜单分类
CrapApi系统菜单目前分为后台菜单、前端菜单、底部菜单、顶部菜单、友情链接五大类,其中后台菜单、前端菜单、顶部菜单支持二级菜单
后台菜单:后台菜单是管理员菜单,不同权限、角色可以个性化定制不同菜单,后台管理菜单只支持二级菜单,即使一级菜单设置了超链接,也不可点击,拥有【超级管理员】权限的账号等候后即使没有配置任何菜单,任然可以看到如图一的默认菜单,非【超级管理员】的普通管理员需要设置后台菜单
前端菜单:前端菜单是游客访问网站看到的主菜单(左侧菜单),该菜单也只支持二级分类,即使一级菜单设置了超链接,也不可点击
底部菜单:底部菜单在游客访问网站时的底部显示(倒数第二排),底部菜单只持此一级菜单,二级菜单不显示
顶部菜单:顶部菜单在游客访问网站是的顶部,支持一级和二级(没有二级一级可点击,如果有二级菜单,一级菜超链接无效)
友情链接:友情链接在游客访问网站的底部,至支持一次菜单,二级菜单不显示
2. 菜单修改
进入后台,点击菜单管理,超级管理员和拥有权限的普通管理员可以看到菜单对应的【修改】【删除】【查看子菜单】,点击修改即可修改对应的菜单,默认进入显示的是【前端菜单】,可以在菜单列表的右上根据类型或菜单名搜索菜单,如下图:在【类型】栏点击输入框即可选着类型,链接可以自己输入,也可点击【选着地址】按钮进行选择。
在链接下拉选着中,显示了站内通用的地址,主要包括【后台链接】(后台管理员相关的链接)和【前端链接】(游客相关的链接)两种类型,其中包括:前后台模块列表页面,前后台接口列表页面,前端文章分类页面,后台菜单分类列表页面,文章分类列表页面,网站页面等,一级菜单必须选择类型,二级菜单不需要选择类型
3.菜单图标设置
后台一级菜单,前端一级菜单支持显示图标,类容为:<i class="iconfont">&#xxxxx;<i>,红色部分请根据需要显示的图标填写,目前支持的图标及对应的代码如下:
CSDN文章地址:http://blog.csdn.net/torrytang/article/details/51147823
123213
如果你打算自己写一段代码来进行密码hash,那么赶紧停下吧。这样太容易犯错了。这个提醒适用于每一个人,不要自己写密码的hash算法 !关于保存密码的问题已经有了成熟的方案,那就是使用phpass或者本文提供的源码。
在一个使用hash的账号系统中,用户注册和认证的大致流程如下:
1. 用户创建自己的账号
2. 用户密码经过hash操作之后存储在数据库中。没有任何明文的密码存储在服务器的硬盘上。
3. 用户登陆的时候,将用户输入的密码进行hash操作后与数据库里保存的密码hash值进行对比。
4. 如果hash值完全一样,则认为用户输入的密码是正确的。否则就认为用户输入了无效的密码。
5. 每次用户尝试登陆的时候就重复步骤3和步骤4。
在步骤4的时候不要告诉用户是账号还是密码错了。只需要显示一个通用的提示,比如账号或密码不正确就可以了。这样可以防止攻击者枚举有效的用户名。
还需要注意的是用来保护密码的hash函数跟数据结构课上见过的hash函数不完全一样。比如实现hash表的hash函数设计的目的是快速,但是不够安全。只有加密hash函数(cryptographic hash functions)可以用来进行密码的hash。这样的函数有SHA256, SHA512, RipeMD, WHIRLPOOL等。
一个常见的观念就是密码经过hash之后存储就安全了。这显然是不正确的。有很多方式可以快速的从hash恢复明文的密码。还记得那些md5破解网站吧,只需要提交一个hash,不到一秒钟就能知道结果。显然,单纯的对密码进行hash还是远远达不到我们的安全需求。下一部分先讨论一下破解密码hash,获取明文常见的手段。
最常见的破解hash手段就是猜测密码。然后对每一个可能的密码进行hash,对比需要破解的hash和猜测的密码hash值,如果两个值一样,那么之前猜测的密码就是正确的密码明文。猜测密码攻击常用的方式就是字典攻击和暴力攻击。
Dictionary Attack
Trying apple : failed
Trying blueberry : failed
Trying justinbeiber : failed
...
Trying letmein : failed
Trying s3cr3t : success!
字典攻击是将常用的密码,单词,短语和其他可能用来做密码的字符串放到一个文件中,然后对文件中的每一个词进行hash,将这些hash与需要破解的密码hash比较。这种方式的成功率取决于密码字典的大小以及字典的是否合适。
Brute Force Attack
Trying aaaa : failed
Trying aaab : failed
Trying aaac : failed
...
Trying acdb : failed
Trying acdc : success!
暴力攻击就是对于给定的密码长度,尝试每一种可能的字符组合。这种方式需要花费大量的计算机时间。但是理论上只要时间足够,最后密码一定能够破解出来。只是如果密码太长,破解花费的时间就会大到无法承受。
目前没有方式可以阻止字典攻击和暴力攻击。只能想办法让它们变的低效。如果你的密码hash系统设计的是安全的,那么破解hash唯一的方式就是进行字典或者暴力攻击了。
彩虹表是一种使用空间换取时间的技术。跟查表破解很相似。只是它牺牲了一些破解时间来达到更小的存储空间的目的。因为彩虹表使用的存储空间更小,所以单位空间就可以存储更多的hash。彩虹表已经能够破解8位长度的任意md5hash。彩虹表具体的原理可以参考http://www.project-rainbowcrack.com/
下一章节我们会讨论一种叫做“盐”(salting)的技术。通过这种技术可以让查表和彩虹表的方式无法破解hash。
hash
(
"hello"
)
=
2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824
hash
(
"hello"
+
"QxLUF1bgIAdeQX"
)
=
9e209040c863f84a31e719795b2577523954739fe5ed3b58a75cff2127075ed1
hash
(
"hello"
+
"bv5PehSMfV11Cd"
)
=
d1d3ec2e6f20fd420d50e2642992841d8338a314b8ea157c9e18477aaef226ab
hash
(
"hello"
+
"YYLmfY6IehjZMQ"
)
=
a49670c3c18b9e079b9cfaf51634f563dc8ae3070db2c4a8544305df1b60f007
具体的操作就是给密码加一个随即的前缀或者后缀,然后再进行hash。这个随即的后缀或者前缀成为“盐”。正如上面给出的例子一样,通过加盐,相同的密码每次hash都是完全不一样的字符串了。检查用户输入的密码是否正确的时候,我们也还需要这个盐,所以盐一般都是跟hash一起保存在数据库里,或者作为hash字符串的一部分。
盐不需要保密,只要盐是随机的话,查表,彩虹表都会失效。因为攻击者无法事先知道盐是什么,也就没有办法预先计算出查询表和彩虹表。如果每个用户都是使用了不同的盐,那么反向查表攻击也没法成功。
下一节,我们会介绍一些盐的常见的错误实现。
最常见的错误实现就是一个盐在多个hash中使用或者使用的盐很短。
不管是将盐硬编码在程序里还是随机一次生成的,在每一个密码hash里使用相同的盐会使这种防御方法失效。因为相同的密码hash两次得到的结果还是相同的。攻击者就可以使用反向查表的方式进行字典和暴力攻击。只要在对字典中每一个密码进行hash之前加上这个固定的盐就可以了。如果是流行的程序的使用了硬编码的盐,那么也可能出现针对这种程序的这个盐的查询表和彩虹表,从而实现快速破解hash。
用户每次创建或者修改密码一定要使用一个新的随机的盐
如果盐的位数太短的话,攻击者也可以预先制作针对所有可能的盐的查询表。比如,3位ASCII字符的盐,一共有95x95x95 = 857,375种可能性。看起来好像很多。假如每一个盐制作一个1MB的包含常见密码的查询表,857,375个盐才是837GB。现在买个1TB的硬盘都只要几百块而已。
基于同样的理由,千万不要用用户名做为盐。虽然对于每一个用户来说用户名可能是不同的,但是用户名是可预测的,并不是完全随机的。攻击者完全可以用常见的用户名作为盐来制作查询表和彩虹表破解hash。
根据一些经验得出来的规则就是盐的大小要跟hash函数的输出一致。比如,SHA256的输出是256bits(32bytes),盐的长度也应该是32个字节的随机数据。
因为hash函数是将任意数量的数据映射成一个固定长度的字符串,所以一定存在不同的输入经过hash之后变成相同的字符串的情况。加密hash函数(Cryptographic hash function)在设计的时候希望使这种碰撞攻击实现起来成本难以置信的高。但时不时的就有密码学家发现快速实现hash碰撞的方法。最近的一个例子就是MD5,它的碰撞攻击已经实现了。
碰撞攻击是找到另外一个跟原密码不一样,但是具有相同hash的字符串。但是,即使在相对弱的hash算法,比如MD5,要实现碰撞攻击也需要大量的算力(computing power),所以在实际使用中偶然出现hash碰撞的情况几乎不太可能。一个使用加盐MD5的密码hash在实际使用中跟使用其他算法比如SHA256一样安全。不过如果可以的话,使用更安全的hash函数,比如SHA256, SHA512, RipeMD, WHIRLPOOL等是更好的选择。
这部分会详细讨论如何恰当的进行密码hash。第一个章节是最基础的,这章节的内容是必须的。后面一个章节是阐述如何继续增强安全性,让hash破解变得异常困难。
我们已经知道恶意黑客可以通过查表和彩虹表的方式快速的获得hash对应的明文密码,我们也知道了通过使用随机的盐可以解决这个问题。但是我们怎么生成盐,怎么在hash的过程中使用盐呢?
盐要使用密码学上可靠安全的伪随机数生成器(Cryptographically Secure Pseudo-Random Number Generator (CSPRNG))来产生。CSPRNG跟普通的伪随机数生成器比如C语言中的rand(),有很大不同。正如它的名字说明的那样,CSPRNG提供一个高标准的随机数,是完全无法预测的。我们不希望我们的盐能够被预测到,所以一定要使用CSPRNG。下表提供了一些常用语言中的CSPRNG。
Platform | CSPRNG |
---|---|
PHP | mcrypt_create_iv, openssl_random_pseudo_bytes |
Java | java.security.SecureRandom |
Dot NET (C#, VB) | System.Security.Cryptography.RNGCryptoServiceProvider |
Ruby | SecureRandom |
Python | os.urandom |
Perl | Math::Random::Secure |
C/C++ (Windows API) | CryptGenRandom |
Any language on GNU/Linux or Unix | Read from /dev/random or /dev/urandom |
每一个用户,每一个密码都要使用不同的盐。用户每次创建账户或者修改密码都要使用一个新的随机盐。永远不要重复使用盐。盐的长度要足够,一个经验规则就是盐的至少要跟hash函数输出的长度一致。盐应该跟hash一起存储在用户信息表里。
存储一个密码:
1. 使用CSPRNG生成一个长的随机盐。
2. 将密码和盐拼接在一起,使用标准的加密hash函数比如SHA256进行hash
3. 将盐和hash记录在用户数据库中
验证一个密码:
1. 从数据库中取出用户的盐和hash
2. 将用户输入的密码和盐按相同方式拼接在一起,使用相同的hash函数进行hash
3. 比较计算出的hash跟存储的hash是否相同。如果相同则密码正确。反之则密码错误。
我应该使用什么hash算法
可以使用
不要使用
尽管MD5和SHA1并没有密码学方面的攻击导致它们生成的hash很容易被破解,但是它们年代很古老了,通常都认为(可能有一些不恰当)它们不合适用来进行密码的存储。所以我不推荐使用它们。对于这个规则有个例外就是PBKDF2,它使用SHA1作为它的基础算法。
当用户忘记密码的时候我应该怎样让他们重置
在我个人看来现在外面广泛使用的密码重置机制都是不安全的,如果你有很高的安全需求,比如重要的加密服务,那么不要让用户重置他们的密码。
大多数网站使用绑定的email来进行密码找回。通过生成一个随机的只使用一次的token,这个token必须跟账户绑定,然后把密码重置的链接发送到用户邮箱中。当用户点击密码重置链接的时候,提示他们输入新的密码。需要注意token一定要绑定到用户以免攻击者使用发送给自己的token来修改别人的密码。
token一定要设置成15分钟后或者使用一次后作废。当用户登陆或者请求了一个新的token的时候,之前发送的token都作废也是不错的主意。如果token不失效的话,那么就可以用来永久控制这个账户了。Email(SMTP)是明文传输的协议,而互联网上可能有很多恶意的路由器记录email流量。并且用户的email账号也可能被盗。使token尽可能快的失效可以降低上面提到的这些风险。
用户可能尝试去修改token,所以不要在token里存储任何账户信息。token应该是一个不能被预测的随机的二进制块(binary blob),仅仅用来进行识别的一条记录。
永远不要通过email发送用户的新密码。记得用户重置密码的时候要重新生成盐,不要使用之前旧密码使用的盐。
如果攻击者获取了数据库权限,他不能直接替换hash登陆任意账户么
当然,不过如果他已经或得了数据库权限,很可能已经可以获得服务器上的所有信息了。所以没有什么必要去修改hash登陆别人账户。进行密码hash的目的不是保护网站不被入侵,而是如果入侵发生了,可以更好的保护用户的密码。
在SQL注入攻击中,保护hash不被替换的方式使用两个用户不同权限的用户连接数据库。一个具有写权限,另外一个只具有只读的权限。
为什么需要一些特别的算法比如HMAC,而不是直接把密码和加密key拼接在一起
(这部分讲一些密码学的原理,翻译的不好请见谅)
hash函数,比如MD5,SHA1,SHA2使用了Merkle–Damgård construction,这导致算法可能长度扩展攻击(length extension attacks)。意思就是说给定一个hash H(X),攻击者可以在不知道X的情况下,可以找到一个H(pad(X)+Y)的值,Y是个其他的字符串。pad(X)是hash函数使用的填充函数(padding function)。
这就意味者,对于hash H(key + message),攻击者可以计算 H(pad(key + message) + extension),并不需要知道加密key。如果这个hash是用在消息认证过程中,使用key为了避免消息被修改。这样的话这个系统就可能失效了,因为攻击者掌握了一个有效的基于 message+extension的hash。
这种攻击对于如何快速破解hash还不是很清楚。但是,基于一些风险的考虑,不建议使用单纯的hash函数进行加密key的hash。也许一个聪明的密码学家一天就可以找到使用这种攻击快速破解hash的方法。所以记得使用HMAC。
盐应该拼在密码的前面还是后面
这个不重要。选择一个并且保持风格一致就行了。实际中,把盐放在前面更常见一点。
原文地址:http://drops.wooyun.org/papers/1066
1 什么是redis
2 性能怎么样
Redis是一个高性能的key-value内存数据库。官方性能测试结果:
set操作每秒110000次,get操作每秒81000次。
3 可不可以存对象
和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)和zset(有序集合)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作。
4 Redis优势
异常快速:Redis的速度非常快,每秒能执行约11万集合,每秒约81000+条记录。
支持丰富的数据类型:Redis支持最大多数开发人员已经知道像列表,集合,有序集合,散列数据类型。这使得它非常容易解决各种各样的问题,因为我们知道哪些问题是可以处理通过它的数据类型更好。
操作都是原子性:所有Redis操作是原子的,这保证了如果两个客户端同时访问的Redis服务器将获得更新后的值。
多功能实用工具:Redis是一个多实用的工具,可以在多个用例如缓存,消息,队列使用(Redis原生支持发布/订阅),任何短暂的数据,应用程序,如Web应用程序会话,网页命中计数等。
5 java并发分布式锁
构建准备:
开始导入项目:
5.修改log4j日志文件输入地址:根据开发系统或部署的系统,修改日志文件输出地址(下图为mac日志输出地址)
问题:
1.点击next即可导入项目,导入项目后如果项目报错,请查看文章:http://blog.csdn.net/torrytang/article/details/51072468
2.导入数据库报错:
(1)数据库版本过低:升级mysql数据库 (5.6及以上)
(2)导入的客户端不支持某些语法:删除脚本中无用注解
(3)打开脚本,分步执行脚本,修改报错的脚本语法
3.java.lang.ClassNotFoundException:cn.crap.utils.MyListener
(1)修改jdk版本(1.7及以上,setting文件),修改web version 版本至2.5 ——其他用户提供的解决方案
CrapApi搜索采用面向接口的设计模式,任何搜索方式只要实现 ISearchService 接口即可。
ISearchService接口中的抽象方法:
/** * 根据关键词、分页信息查询 * @param keyword * @param page * @return */ List search(String keyword, Page page); /** * 删除索引文件 * @param searchDto * @return */ boolean delete(SearchDto searchDto); /** * 更新索引文件 * @param searchDto * @return */ boolean update(SearchDto searchDto); /** * 添加索引文件 * @param searchDto * @return */ boolean add(SearchDto searchDto);
SearchDto 为搜索的业务类,任何需要纳入搜索范围的数据只要将对象转换为SearchDto即可调用搜索接口实现添加、删除、修改索引:
public class SearchDto { private String id;// 主键,不参与分词搜索 private String title; private String type;// 接口,文章等,不参与分词 private String url;// 相对路径:web.do#/webInterfaceDetail,不参与分词搜索 private String content;// 参与搜索的类容:简介、备注、参数等的组合 或 搜索到的结果(高亮显示) private String version;// 不参与分词搜索 private String modelName; private String createTime;// 时间,不参与分词搜索 ... }
CrapApi 系统默认已经实现了LuceneSearchService:
@Service("dataBaseSearch")
public class LuceneSearchService implements ISearchService{
@Autowired
private IInterfaceService interfaceService;
...
}
如需使用其他搜索方法(如Lucene)替换默认数据库搜索,只需要创建一个搜索类实现ISearchService接口,然后修改IndexController注解中的name即可。
@Resource(name="luceneSearch")
private ISearchService searchServer;
需要实现的搜索的类,只需要在添加、修改、删除接口中将对象转换为SearchDto,然后调用ISearchService中对应的添加、修改、删除接口即可。
随着系统负载原来越大,单台reids已无法满足系统负载、安全等要求。本设计目标在于加大Redis服务吞吐量,支持动态扩展reids集群,支持自定义每台reids服务器负载、支持宕机请求自动转移。
1. 集群配置
集群通过xml文件配置,在系统初始化时,根据配置的集群数量动态生成对应大小的redis连接池数组pools[n]。根据配置顺序,第一个服务器对应的连接池为pools[0]。
注意:pools[0]为默认连接池,如自增计数器等可指定存储至0号机器。
<redisPoolConfig>
<!-- 第0台:存储购物车等不能清空的数据,不参加散列 -->
<redis>
<redisIp>xx.xx.xx.xxx</redisIp>
<redisPort>6379</redisPort>
</redis>
<!-- 第1台:mget等批量获取,不能分散存储的数据,不参加散列 -->
<redis>
<redisIp> xx.xx.xx.xxx</redisIp>
<redisPort>6379</redisPort>
</redis>
<!-- 散列存储数据机器 第2台至n台-->
<redis>
<redisIp> xx.xx.xx.xxx</redisIp>
<redisPort>6379</redisPort>
</redis>
<redis>
<redisIp> xx.xx.xx.xxx</redisIp>
<redisPort>6379</redisPort>
</redis>
</redisPoolConfig>
2.负载均衡配置
由于各机器性能等不一致,因此需要支持根据机器性能配置redis服务器负载,1<index<redis服务器数量(第0台存储购物车等不能清空的数据,第一台存储不能分散存储的数据,第0台、第1台不参与散列)。配置如下:
<redisPoolLoad>
<!-- index=n 表示映射至 redisPoolConfig中第n-1个服务器,1<n<redis数量(第0,1台不参与散列) -->
<redis index="2"></redis>
<redis index="3"></redis>
<redis index="2"></redis>
<redis index="3"></redis>
<redis index="2"></redis>
<redis index="3"></redis>
<redis index="2"></redis>
<redis index="3"></redis>
<redis index="2"></redis>
<redis index="3"></redis>
<redis index="2"></redis>
<redis index="3"></redis>
<redis index="2"></redis>
<redis index="3"></redis>
<redis index="2"></redis>
<redis index="3"></redis>
</redisPoolLoad>
注意:1<n<reids服务器数量
根据上面的配置文件动态生成一个大小为k的映射数组,mapped[k](k为redisLoad中的子节点数)。mapped[3]=1,表示当hashcode=3时(hashcode由待存储数据的主键计算而来,详情见【Redis选择】),对应数据存储至1号redis服务器。
3.Redis选择
private static Jedis getRedis(String key) {
int hashcode = Math.abs(key.hashCode()%K);//k为redis映射数组mapped的大小
int redisIndex = mapped[hashcode]; //mapped为redis映射数组
return pool[redisIndex].getResource();
}
注:其它特殊要求的可直接存储至0号默认机器(如:存储的key为二进制,未登录用户的购物车数据,自增计数器)
4.Redis节点宕机处理
当发现有reids宕机时,可将该hashcode+1,映射至其它节点,代码如下: hashcode = Math.abs( (key.hashCode()+1) %K);
由于根据hashcode得出的映射为虚拟节点,同一台redis有多个虚拟节点,因此宕机的reids数据可以分散至其它redis服务器,不会出现雪崩情况(mapped虚拟节点越多,redis负载越均衡)
5.特殊数据不参加散列处理
在系统设计中,可能有特殊数据不能随机散列,如:未登录用户购物车数据(该数据不能随意删除)、批量数据(使用mget批量获取的数据)等。
解决方案:不能散列的数据的key以特殊字符串开头,如:redis0_ ,redis1_ 。reids0_开头的数据直接存储在0号机器,不参与散列。
项目结构如下图所示:
1.存储数据库连接配置,spring配置,错误码,log4j等配置文件
2.存储网站js、cs、html、img等静态资源
3.存储第三方框架:bootstrap、angularjs等
4.后台相关html页面
5.前端相关html页面
6.后台相关jsp页面
7.后台、前台相关jsp子页面面:被主页面引用
8.前端相关jsp页面
系统主要采用html静态页面,但是由于后台主页、前台主页初始化时需要读取数据库相关配置:css、title、log、角色、权限,因此部分页面采用jsp
后台主页:下图6中的index.jsp
前台主页面:下图8中的index.jsp
前端数据加载流程:
1.第一访问网站:加载前端主页index.jsp ——》通过angularjs异步加载数据——》angularjs将json数据渲染至页面
2.点击超链接——》通过angularjs路由异步加载指定的html页面(局部刷新)——》通过angularjs异步加载数据——》angularjs将json数据渲染至页面
路由文件:下图2/js/router.js 主要负责解析超链接,并加载指定的html子页面,html页面加载后,将根据该页面配置的 ng-controller 调用controllers.js
数据加载:下图2/jscontrollers.js 通过js异步访问后台接口,获取相应的数据
',89,'ARTICLE',0,'2016-05-15 23:17:25','web',NULL,1,'帮助文档',0,0,998,''),('e22fb662-dd63-48d9-8821-92e438fe0634','添加测试表','添加测试表添加测试表添加测试表','[{\"name\":\"test\",\"type\":\"test\",\"notNull\":\"false\",\"def\":\"\",\"remark\":\"测试\"}]',7,'DICTIONARY',0,'2016-08-26 08:41:14','9a483c5b-98cc-45da-9cdf-0d3e4c382e49',NULL,1,'',0,0,10,''),('e254357c-12c2-4799-a64e-d3dc9c829e1c','CrapApi接口版本号','','前提条件:
1.多个接口同属于一个模块
2.多个接口名相同
相同接口不同版本号前端显示:
1. 在【项目&模块&接口管理】菜单中,默认显示的为项目列表,在当前页面可以无限制添加项目,以及对项目进行修改。
2. V2版本一个项目中可以有n个模块或n个接口,但模块和接口不能同时存在,即加入项目下已经有模块了,则【添加接口】的按钮将会隐藏,如果项目下已经有接口了,则【添加模块】的按钮将会隐藏。
3. 模块中添加子模块和接口的规则同项目下添加模块和接口一致。
V3版本删除了接口、模块不能同时存在的限制
RPC,即 Remote Procedure Call(远程过程调用),说得通俗一点就是:调用远程计算机上的服务,就像调用本地服务一样。
RPC 可基于 HTTP 或 TCP 协议,Web Service 就是基于 HTTP 协议的 RPC,它具有良好的跨平台性,但其性能却不如基于 TCP 协议的 RPC。会两方面会直接影响 RPC 的性能,一是传输方式,二是序列化。
众所周知,TCP 是传输层协议,HTTP 是应用层协议,而传输层较应用层更加底层,在数据传输方面,越底层越快,因此,在一般情况下,TCP 一定比 HTTP 快。就序列化而言,Java 提供了默认的序列化方式,但在高并发的情况下,这种方式将会带来一些性能上的瓶颈,于是市面上出现了一系列优秀的序列化框架,比如:Protobuf、Kryo、Hessian、Jackson 等,它们可以取代 Java 默认的序列化,从而提供更高效的性能。
为了支持高并发,传统的阻塞式 IO 显然不太合适,因此我们需要异步的 IO,即 NIO。Java 提供了 NIO 的解决方案,Java 7 也提供了更优秀的 NIO.2 支持,用 Java 实现 NIO 并不是遥不可及的事情,只是需要我们熟悉 NIO 的技术细节。
我们需要将服务部署在分布式环境下的不同节点上,通过服务注册的方式,让客户端来自动发现当前可用的服务,并调用这些服务。这需要一种服务注册表(Service Registry)的组件,让它来注册分布式环境下所有的服务地址(包括:主机名与端口号)。
应用、服务、服务注册表之间的关系见下图:
前段时间,为公司的项目找可以布署的API文档管理系统,但是一直没有找到好用的。后来随便用了一款比较渣的在线文档(个人开发的也就这样了)。再后来,ThinkPHP的公司也上线了在线文档管理平台(看云),还挺不错的,但是免费的私有项目只有一个额度。
最近,发现了一款叫 CrapApi 的 java 文档管理系统,看起来也挺不错的。于是,折腾了下,终于布署成功了(作为一名PHPer,对于布署tomcat、Java环境之类的,真心是难搞)。接着,又用docker来尝试搭建一个,也终于折腾成功了。
大家可以参观下:https://doc.ocms.cc
用了 mysql 和 tomcat:7 两个镜像,
应 CrapApi 作者的提议,我就弄了这个教程,让大家可以更方便地搭建 Api 管理平台。
安装流程
1、 新建几个文件夹来存放对应的数据信息:
1 2 | mkdir -p /data/tomcat/database #存放mysql 容器生成的 data 文件。为了数据的安全,不建议直接使用容器存放数据 mkdir -p /data/tomcat/webapps #存放项目代码的文件夹 |
2、 获取 Crapapi 安装包(已编译的文件包)
进入 webapps,执行 curl -O http://filecache.zzzzy.com/CrapApi.V2.zip 解压(unzip)文件夹后,生成带网站源码的文件夹:CrapApi
3、在 /data/tomcat/webapps 下
1) 新建文件 host.xml 存放项目的路径配置信息,内容如下:
1 | <Context path="" docBase="/usr/local/tomcat/webapps/CrapApi" debug="0" reloadable="false" crossContext="true"/> |
2) 新建 host.sh 向 server.xml 追加 host 及代替tomcat自带启动的命令行:
1 2 | sed -i \'/autoDeploy/r /usr/local/tomcat/webapps/host.xml\' /usr/local/tomcat/conf/server.xml /usr/local/tomcat/bin/catalina.sh run |
4、编辑 /data/tomcat/webapps/CrapApi/WEB-INF/classes/jdbc.properties 数据库信息,内容如下:
1 2 3 4 | jdbc.driverClassName=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://mysql:3306/api?useUnicode=true&characterEncoding=utf-8 jdbc.username=root jdbc.password=YOUR_SET_PASSWORD |
——
以上为准备工作,配置完成后按下面方式处理
首发于:https://www.zzzzy.com/201605204048.html
1、从 hub.docker.com pull两个镜像:mysql 和 tomcat7.0
1 2 | docker pull mysql docker pull tomcat:7.0 |
2、安装 MySQL 容器:
1 2 3 4 | docker run -d --name crap-mysql \\ -v /data/tomcat/database:/var/lib/mysql \\ -e MYSQL_ROOT_PASSWORD=YOUR_SET_PASSWORD \\ mysql |
3、 进入/data/tomcat/database [要先创建MySQL容器后,才可以把数据fetch下来]
1 2 3 4 5 | 1.下载 CrapApi 数据库(方式1):(下载官方提供的) curl -O http://filecache.zzzzy.com/1463672696_CrapApi.sql.tar.gz 解压得到一系列的.sql文件 2.下载 CrapApi 数据库(方式2):(下载我将上述数据整合好的) curl -o crapapi.v2.sql http://filecache.zzzzy.com/1463708106_crapapi.v2.sql |
4、 进入MySQL容器:
1 2 3 4 5 6 7 8 9 10 | docker exec -it crap-mysql /bin/bash 1) 进入 /var/lib/mysql 2) 连接数据库 mysql -uroot -pYOUR_SET_PASSWORD 3) 创建数据库,并导入数据 create database api; use api; 方式1:首先要先导CrapApi.V1.sql,再按日期从旧到新导入其它的数据库 方式2:直接导入方式2下载的整个包: source crapapi.v2.sql |
5、执行安装 tomcat 容器:
1 2 3 4 5 6 7 | docker run -d \\ --name crap-tomcat \\ -p 32001:8080 \\ -v /data/tomcat/webapps:/usr/local/tomcat/webapps \\ --link crap-mysql:mysql \\ tomcat:7.0 \\ /bin/bash /usr/local/tomcat/webapps/host.sh |
注意事项:
1.YOUR_SET_PASSWORD 为你自己将要设置的MySQL密码
2.第5步安装tomcat容器时,指定端口是为了重启时,端口不会变换
3.可以再配合nginx,反代容器的端口,并绑定域名。若如此,建议安装tomcat时指定内网才可以访问容器的端口-p 127.0.0.1:32001:8080
原文地址:https://www.zzzzy.com/201605204048.html
如果两个操作访问同一个变量,且这两个操作中有一个为写操作,此时这两个操作之间就存在数据依赖性。数据依赖分下列三种类型:
名称 | 代码示例 | 说明 |
写后读 | a = 1;b = a; | 写一个变量之后,再读这个位置。 |
写后写 | a = 1;a = 2; | 写一个变量之后,再写这个变量。 |
读后写 | a = b;b = 1; | 读一个变量之后,再写这个变量。 |
上面三种情况,只要重排序两个操作的执行顺序,程序的执行结果将会被改变。
前面提到过,编译器和处理器可能会对操作做重排序。编译器和处理器在重排序时,会遵守数据依赖性,编译器和处理器不会改变存在数据依赖关系的两个操作的执行顺序。
注意,这里所说的数据依赖性仅针对单个处理器中执行的指令序列和单个线程中执行的操作,不同处理器之间和不同线程之间的数据依赖性不被编译器和处理器考虑。
as-if-serial语义的意思指:不管怎么重排序(编译器和处理器为了提高并行度),(单线程)程序的执行结果不能被改变。编译器,runtime 和处理器都必须遵守as-if-serial语义。
为了遵守as-if-serial语义,编译器和处理器不会对存在数据依赖关系的操作做重排序,因为这种重排序会改变执行结果。但是,如果操作之间不存在数据依赖关系,这些操作可能被编译器和处理器重排序。为了具体说明,请看下面计算圆面积的代码示例:
double pi = 3.14; //A
double r = 1.0; //B
double area = pi * r * r; //C
上面三个操作的数据依赖关系如下图所示:
如上图所示,A和C之间存在数据依赖关系,同时B和C之间也存在数据依赖关系。因此在最终执行的指令序列中,C不能被重排序到A和B的前面(C排到A和B的前面,程序的结果将会被改变)。但A和B之间没有数据依赖关系,编译器和处理器可以重排序A和B之间的执行顺序。下图是该程序的两种执行顺序:
as-if-serial语义把单线程程序保护了起来,遵守as-if-serial语义的编译器,runtime 和处理器共同为编写单线程程序的程序员创建了一个幻觉:单线程程序是按程序的顺序来执行的。as-if-serial语义使单线程程序员无需担心重排序会干扰他们,也无需担心内存可见性问题。
根据happens- before的程序顺序规则,上面计算圆的面积的示例代码存在三个happens- before关系:
这里的第3个happens- before关系,是根据happens- before的传递性推导出来的。
这里A happens- before B,但实际执行时B却可以排在A之前执行(看上面的重排序后的执行顺序)。在第一章提到过,如果A happens- before B,JMM并不要求A一定要在B之前执行。JMM仅仅要求前一个操作(执行的结果)对后一个操作可见,且前一个操作按顺序排在第二个操作之前。这里操作A的执行结果不需要对操作B可见;而且重排序操作A和操作B后的执行结果,与操作A和操作B按happens- before顺序执行的结果一致。在这种情况下,JMM会认为这种重排序并不非法(not illegal),JMM允许这种重排序。
在计算机中,软件技术和硬件技术有一个共同的目标:在不改变程序执行结果的前提下,尽可能的开发并行度。编译器和处理器遵从这一目标,从happens- before的定义我们可以看出,JMM同样遵从这一目标。
现在让我们来看看,重排序是否会改变多线程程序的执行结果。请看下面的示例代码:
class ReorderExample {
int a = 0;
boolean flag = false;
public void writer() {
a = 1; //1
flag = true; //2
}
Public void reader() {
if (flag) { //3
int i = a * a; //4
……
}
}
}
flag变量是个标记,用来标识变量a是否已被写入。这里假设有两个线程A和B,A首先执行writer()方法,随后B线程接着执行reader()方法。线程B在执行操作4时,能否看到线程A在操作1对共享变量a的写入?
答案是:不一定能看到。
由于操作1和操作2没有数据依赖关系,编译器和处理器可以对这两个操作重排序;同样,操作3和操作4没有数据依赖关系,编译器和处理器也可以对这两个操作重排序。让我们先来看看,当操作1和操作2重排序时,可能会产生什么效果?请看下面的程序执行时序图:
如上图所示,操作1和操作2做了重排序。程序执行时,线程A首先写标记变量flag,随后线程B读这个变量。由于条件判断为真,线程B将读取变量a。此时,变量a还根本没有被线程A写入,在这里多线程程序的语义被重排序破坏了!
※注:本文统一用红色的虚箭线表示错误的读操作,用绿色的虚箭线表示正确的读操作。
下面再让我们看看,当操作3和操作4重排序时会产生什么效果(借助这个重排序,可以顺便说明控制依赖性)。下面是操作3和操作4重排序后,程序的执行时序图:
在程序中,操作3和操作4存在控制依赖关系。当代码中存在控制依赖性时,会影响指令序列执行的并行度。为此,编译器和处理器会采用猜测(Speculation)执行来克服控制相关性对并行度的影响。以处理器的猜测执行为例,执行线程B的处理器可以提前读取并计算a*a,然后把计算结果临时保存到一个名为重排序缓冲(reorder buffer ROB)的硬件缓存中。当接下来操作3的条件判断为真时,就把该计算结果写入变量i中。
从图中我们可以看出,猜测执行实质上对操作3和4做了重排序。重排序在这里破坏了多线程程序的语义!
在单线程程序中,对存在控制依赖的操作重排序,不会改变执行结果(这也是as-if-serial语义允许对存在控制依赖的操作做重排序的原因);但在多线程程序中,对存在控制依赖的操作重排序,可能会改变程序的执行结果。
测试接口
sdfdsf
sdfdsfsdfsd
','[]','userName:super | trueName:测试用户','2016-05-25 11:17:00','2016-05-25 11:17:35','1.0',0,'[]','http://1111123213',0,'',''),('476679d6-bbbf-4f6a-9157-cf9090fb710a','http://tcc.taobao.com/cc/json/mobile_tel_segment.htm','POST,GET,','form=[{\"name\":\"tel\",\"necessary\":\"true\",\"type\":\"String\",\"parameterType\":\"PARAMETER\",\"remark\":\"手机号码\"}]','请求地址:aa\r\n请求头:\r\n请求参数:\r\n tel=xxxx\r\n','[{\"name\":\"__GetZoneResult_\",\"type\":\"Json\",\"remark\":\"返回归属地信息\"}]','000001,000012,','{\n \"mts\":\"1585078\",\n \"province\":\"江苏\",\n \"catName\":\"中国移动\",\n \"telString\":\"15850781443\",\n \"areaVid\":\"30511\",\n \"ispVid\":\"3236139\",\n \"carrier\":\"江苏移动\"\n}\n','',1,'62bde6e0-988b-475f-bfdf-76203455ec57','淘宝查询手机归属地','','[{\"createTime\":\"2016-04-01 12:14:20.0\",\"errorCode\":\"000012\",\"errorMsg\":\"抱歉,您所选择的试用商品已被抢完,去看看其他活动吧~\",\"id\":\"1e01a3dd-1711-44ab-8481-3f15c57cdcde\",\"logRemark\":\"\",\"moduleId\":\"62bde6e0-988b-475f-bfdf-76203455ec57\",\"moduleName\":\"常用免费常用接口\",\"sequence\":0,\"status\":1},{\"createTime\":\"2016-04-01 12:14:20.0\",\"errorCode\":\"000001\",\"errorMsg\":\"系统未知错误\",\"id\":\"82e675b4-0c11-414d-8640-91ddead4f3b1\",\"logRemark\":\"\",\"moduleId\":\"62bde6e0-988b-475f-bfdf-76203455ec57\",\"moduleName\":\"常用免费常用接口\",\"sequence\":0,\"status\":1}]','userName:admin | trueName:超级管理员','2016-06-09 17:39:00','2016-04-12 14:56:02','1.0',0,'[]','http://tcc.taobao.com/cc/json/mobile_tel_segment.htm',0,'',''),('579ead79-4ff3-4b74-b70c-676db4618be4','https://tcc.taobao.com/cc/json/mobile_tel_segment.html','POST,GET,','form=[{\"name\":\"tel\",\"necessary\":\"true\",\"type\":\"String\",\"parameterType\":\"PARAMETER\",\"remark\":\"手机号码\"}]','请求地址:https://tcc.taobao.com/cc/json/mobile_tel_segment.htm\r\n请求头:\r\n请求参数:\r\n tel=xxxx\r\n','[{\"name\":\"__GetZoneResult_\",\"type\":\"Json\",\"remark\":\"返回归属地信息\"}]','','{\n \"mts\":\"1585078\",\n \"province\":\"江苏\",\n \"catName\":\"中国移动\",\n \"telString\":\"15850781443\",\n \"areaVid\":\"30511\",\n \"ispVid\":\"3236139\",\n \"carrier\":\"江苏移动\"\n}\n','',1,'62bde6e0-988b-475f-bfdf-76203455ec57','淘宝查询手机归属地','','[]','userName:admin | trueName:超级管理员','2016-06-09 17:39:00','2016-04-10 23:38:11','1.0',0,'[]','https://tcc.taobao.com/cc/json/mobile_tel_segment.html',0,'',''),('61c3ff83-f3d4-45bd-8b0a-7e67e21d6cf5','http://11232132','POST,','form=[]','请求地址:\r\n','[]','','{\"Msg\":\"获取成功\",\"Success\":true,\"Data\":{\"Id\":\"c6544f4637ed45ef8dd61eb1a1098bee\",\"FreeDiagnosis\":0,\"ImageTextConsult\":1,\"AttentionNotice\":1,\"AutoSetPatient\":1,\"IsOpenSound\":1,\"IsOpenVibration\":1,\"CardDiagnosisNum\":6}}','',0,'c8b0ec41-e6b9-4f36-b986-963fa44715a9','配置','','[]','userName:super | trueName:测试用户','2016-06-04 20:54:00','2016-05-25 11:19:50','1.0',0,'[]','http://11232132',0,'',''),('6cd58bc6-edb9-46b8-9d4f-0b3cdef10a2d','http://xxx/product/info/render2.do','post and get','form=[{\"name\":\"renderParams\",\"necessary\":\"true\",\"type\":\"String\",\"parameterType\":\"undefined\",\"remark\":\"渲染参数\"},{\"name\":\"userid\",\"necessary\":\"true\",\"type\":\"int\",\"parameterType\":\"PARAMETER\",\"remark\":\"用户id\"}]','请求地址:http://xxx/product/info/render2.do\r\n请求头:\r\n请求参数:\r\n renderParams=xxxx\r\n userid=xxxx\r\n','[{\"name\":\"CannotChangeMaterials\",\"type\":\"String\",\"remark\":\"被关联的面与材料(不可修改的面+材料)\"},{\"name\":\"sudata\",\"type\":\"String\",\"remark\":\"商品信息\"},{\"name\":\"sizeList\",\"type\":\"String\",\"remark\":\"尺码列表\"},{\"name\":\"NotShowComponents\",\"type\":\"String\",\"remark\":\"不可定制面的集合\"}]','200008,200009,200010,205001,205002,','{\n \"success\":1,\n \"data\":[\n {\n \"suId\":\"1253\",\n \"suCode\":\"157416\",\n \"skuCode\":null,\n \"modelId\":12587\n }\n ],\n \"error\":null\n}','{\n \"success\":1,\n \"data\":[\n {\n \"suId\":\"1253\",\n \"suCode\":\"157416\",\n \"skuCode\":null,\n \"modelId\":12587\n }\n ],\n \"error\":null\n}',1,'189d073c-b4ea-4e50-a1c1-f66ec1da1dd4','获取购物车列表数据集','不可定制面是不需要在用户的定制面列表里面出现','[{\"createTime\":\"2016-04-01 12:14:20.0\",\"errorCode\":\"205002\",\"errorMsg\":\"用户未登录\",\"id\":\"5d232003-0991-40f0-b955-62a8cee30313\",\"logRemark\":\"\",\"moduleId\":\"9e6596c1-9fda-4cd2-b20a-1cce7e572a65\",\"moduleName\":\"示例项目\",\"sequence\":0,\"status\":1},{\"createTime\":\"2016-04-01 12:14:20.0\",\"errorCode\":\"200008\",\"errorMsg\":\"网络异常,请稍后重试\",\"id\":\"7d2a5131-af7d-48a8-a78b-b4a194c5602f\",\"logRemark\":\"\",\"moduleId\":\"9e6596c1-9fda-4cd2-b20a-1cce7e572a65\",\"moduleName\":\"示例项目\",\"sequence\":0,\"status\":1},{\"createTime\":\"2016-04-01 12:14:20.0\",\"errorCode\":\"200009\",\"errorMsg\":\"not have right\",\"id\":\"a53c9cfe-b7cb-4ffe-be0e-29cbe94b84b1\",\"logRemark\":\"\",\"moduleId\":\"9e6596c1-9fda-4cd2-b20a-1cce7e572a65\",\"moduleName\":\"示例项目\",\"sequence\":0,\"status\":1},{\"createTime\":\"2016-04-01 12:14:20.0\",\"errorCode\":\"200010\",\"errorMsg\":\"生成token失败\",\"id\":\"d2d7e8b7-d649-4d82-b5c5-8e9562ad8f2c\",\"logRemark\":\"\",\"moduleId\":\"9e6596c1-9fda-4cd2-b20a-1cce7e572a65\",\"moduleName\":\"示例项目\",\"sequence\":0,\"status\":1},{\"createTime\":\"2016-04-01 12:14:20.0\",\"errorCode\":\"205001\",\"errorMsg\":\"当前用户不合法\",\"id\":\"ec2a3cd4-375d-412d-b456-bd00b72ab12a\",\"logRemark\":\"\",\"moduleId\":\"9e6596c1-9fda-4cd2-b20a-1cce7e572a65\",\"moduleName\":\"示例项目\",\"sequence\":0,\"status\":1}]','userName:admin | trueName:超级管理员','2016-06-09 17:39:00','2016-04-28 19:05:56','3.0',0,'[]','http://xxx/product/info/render2.do',0,'',''),('71597b65-bffb-462d-9f0d-6898ff03c8b3','http://xxx/activity/productSizedetail.do','post and get','form=[{\"name\":\"activity_id\",\"necessary\":\"true\",\"type\":\"long\",\"parameterType\":\"PARAMETER\",\"remark\":\"试用活动id\"}]','请求地址:http://xxx/activity/productSizedetail.do\r\n请求头:\r\n请求参数:\r\n activity_id=xxxx\r\n','[{\"name\":\"success\",\"type\":\"int\",\"remark\":\"是否成功:1成功,0失败\"},{\"name\":\"sizeDetail\",\"type\":\"对象\",\"remark\":\"规格、su、库存信息\"}]','000001,','{\n \"success\": 1, \n \"data\": {\n \"sizeDetail\": [\n {\n \"specs\": [\n {\n \"goods_size\": \"红色\", \n \"name\": \"颜色\"\n }, \n {\n \"goods_size\": \"35\", \n \"name\": \"尺码\"\n }\n ], \n \"storeNum\": 19, \n \"suId\": \"1300155001000001011\"\n }, \n {\n \"specs\": [\n {\n \"goods_size\": \"白色\", \n \"name\": \"颜色\"\n }, \n {\n \"goods_size\": \"36\", \n \"name\": \"尺码\"\n }\n ], \n \"storeNum\": 12, \n \"suId\": \"1300155001000002021\"\n }, \n {\n \"specs\": [\n {\n \"goods_size\": \"黑色\", \n \"name\": \"颜色\"\n }, \n {\n \"goods_size\": \"37\", \n \"name\": \"尺码\"\n }\n ], \n \"storeNum\": 0, \n \"suId\": \"1300155001000003031\"\n }\n ]\n }\n}','{\n \"data\": null, \n \"error\": {\n \"code\": \"000001\", \n \"data\": null, \n \"message\": \"活动不存在\"\n }, \n \"page\": null, \n \"success\": 0\n}',1,'cf9f682a-fd76-4ab5-9300-9210164ae2ea','试用活动详情页获取sizeDetail(规格、su、库存信息)','根据活动id查询活动对应的商品的规格信息及su、库存信息','[{\"createTime\":\"2016-04-01 12:14:20.0\",\"errorCode\":\"000001\",\"errorId\":\"82e675b4-0c11-414d-8640-91ddead4f3b1\",\"errorMsg\":\"系统未知错误\",\"moduleId\":\"62bde6e0-988b-475f-bfdf-76203455ec57\",\"moduleName\":\"试用ptapi\",\"status\":1}]','userName:super | trueName:测试用户','2016-04-02 14:04:46','2016-03-30 12:12:51','1.0',0,'[]','http://xxx/activity/productSizedetail.do',0,'',''),('72e3354d-38ac-4de6-a5e9-0595bc97642b','/{test}/v12.do','POST,GET,PUT,','form=[{\"name\":\"uid\",\"necessary\":\"true\",\"type\":\"int\",\"def\":\"89\",\"remark\":\"3324\",\"inUrl\":\"false\"},{\"name\":\"test\",\"necessary\":\"true\",\"type\":\"String\",\"def\":\"aaa\",\"remark\":\"4535\",\"inUrl\":\"true\"}]','请求地址:http://api.crap1.cn/aaa/v1.do\r\n请求头:\r\n uid=45\r\n token=3dfefgeagceltenm2\r\n请求参数:\r\n uid=89\r\n','[{\"name\":\"success\",\"type\":\"int\",\"remark\":\"1:成功\"}]','000004,205010,','{\n \"success\":1\n}\n','{\n \"success\":1\n}\n',1,'dfeda26d-8766-431f-9b90-f6e9f2947b25','CrapApi接口1-form表单参数、路径参数','接口说明,接口说明,接口说明,接口说明
','[{\"createTime\":\"2016-03-31 20:14:20.0\",\"errorCode\":\"205010\",\"errorMsg\":\"购物车信息已经发生变化,请确认订单是否已经提交,或重新刷新\",\"id\":\"7ee682f9-54da-4363-88e0-7ada8c445e4b\",\"logRemark\":\"\",\"moduleId\":\"de2055f4-656a-495b-85dd-6591922bdf5d\",\"moduleName\":\"CrapApi\",\"sequence\":0,\"status\":1},{\"createTime\":\"2016-03-31 20:14:20.0\",\"errorCode\":\"000004\",\"errorMsg\":\"您已砍过|您已经帮Ta砍过一次咯~\",\"id\":\"f1ce26cd-ea6b-4e77-9c65-1499fcb24e78\",\"logRemark\":\"\",\"moduleId\":\"de2055f4-656a-495b-85dd-6591922bdf5d\",\"moduleName\":\"CrapApi\",\"sequence\":0,\"status\":1}]','userName:admin | trueName:超级管理员','2016-08-26 09:41:00','2016-08-26 09:33:47','V1.0',99,'[{\"name\":\"uid\",\"necessary\":\"true\",\"type\":\"int\",\"def\":\"45\",\"remark\":\"用户ID\"},{\"name\":\"token\",\"necessary\":\"true\",\"type\":\"String\",\"def\":\"3dfefgeagceltenm2\",\"remark\":\"\"}]','http://api.crap1.cn/{test}/v12.do',0,'',''),('751021c3-1ef8-4440-b921-6b4f6f910c29','/{test}/v1.do','POST,GET,PUT,','form=[{\"name\":\"uid\",\"necessary\":\"true\",\"type\":\"int\",\"def\":\"89\",\"remark\":\"3324\",\"inUrl\":\"false\"},{\"name\":\"test\",\"necessary\":\"true\",\"type\":\"String\",\"def\":\"aaa\",\"remark\":\"4535\",\"inUrl\":\"true\"}]','请求地址:http://api.crap1.cn/aaa/v1.do\r\n请求头:\r\n uid=45\r\n token=3dfefgeagceltenm2\r\n请求参数:\r\n uid=89\r\n','[{\"name\":\"success\",\"type\":\"int\",\"remark\":\"1:成功\"}]','','{\n \"success\":1\n}\n','{\n \"success\":1\n}\n',1,'de2055f4-656a-495b-85dd-6591922bdf5d','CrapApi接口1-form表单参数、路径参数','接口说明,接口说明,接口说明,接口说明
','[]','userName:admin | trueName:超级管理员','2016-08-26 09:33:00','2016-08-26 09:33:47','V1.0',100,'[{\"name\":\"uid\",\"necessary\":\"true\",\"type\":\"int\",\"def\":\"45\",\"remark\":\"用户ID\"},{\"name\":\"token\",\"necessary\":\"true\",\"type\":\"String\",\"def\":\"3dfefgeagceltenm2\",\"remark\":\"\"}]','http://api.crap1.cn/{test}/v1.do',0,'',''),('8f94ad2f-0094-4daf-ad05-b19ea672e594','test/dd333.do','POST,GET,DELETE,','{\"test\":\"xxx\"}','请求地址:http://api.crap1.cntest/dd.do\r\n请求头:\r\n请求参数:\r\n{\"test\":\"xxx\"}','[{\"name\":\"success\",\"type\":\"int\",\"remark\":\"1:成功\"}]','000004,205010,','{\n \"success\":1\n}\n','{\n \"success\":1\n}',1,'5c52ebf8-58ac-447c-9b40-5744dad44fd4','CrapApi接口1-自定义参数参数','dddddd
','[{\"createTime\":\"2016-03-31 20:14:20.0\",\"errorCode\":\"205010\",\"errorMsg\":\"购物车信息已经发生变化,请确认订单是否已经提交,或重新刷新\",\"id\":\"7ee682f9-54da-4363-88e0-7ada8c445e4b\",\"logRemark\":\"\",\"moduleId\":\"de2055f4-656a-495b-85dd-6591922bdf5d\",\"moduleName\":\"CrapApi\",\"sequence\":0,\"status\":1},{\"createTime\":\"2016-03-31 20:14:20.0\",\"errorCode\":\"000004\",\"errorMsg\":\"您已砍过|您已经帮Ta砍过一次咯~\",\"id\":\"f1ce26cd-ea6b-4e77-9c65-1499fcb24e78\",\"logRemark\":\"\",\"moduleId\":\"de2055f4-656a-495b-85dd-6591922bdf5d\",\"moduleName\":\"CrapApi\",\"sequence\":0,\"status\":1}]','userName:admin | trueName:超级管理员','2016-08-26 09:40:00','2016-08-26 09:35:59','V1.0',100,'[]','test/dd333.do',0,'',''),('955db6b9-c42c-4e84-8a16-891d0944e4da','http://xxx/product/getSuId.do','post and get','form=[{\"name\":\"spec_ids\",\"necessary\":\"true\",\"type\":\"String\",\"parameterType\":\"HEADER\",\"remark\":\"规格id集合:{“1”,”2”}\"},{\"name\":\"product_id\",\"necessary\":\"true\",\"type\":\"long\",\"parameterType\":\"undefined\",\"remark\":\"商品id\"}]','请求地址:http://xxx/product/getSuId.do\r\n请求头:\r\n spec_ids=xxxx\r\n请求参数:\r\n product_id=xxxx\r\n','[{\"name\":\"succeed\",\"type\":\"int\",\"remark\":\"是否成功:1成功,0失败\"}]','000001,','{\n succeed:1,//是否成功\n data{\n suId,//售卖单元Id\n }\n}','{\n \"data\": null,\n \"error\": {\n \"code\": \"000001\",\n \"data\": null,\n \"message\": \"xxxx\"\n },\n \"page\": null,\n \"success\": 0\n}',0,'f86d375e-d1db-4eeb-84fa-9e9def04fc6d','根据规格、商品id查询SU','主键按照排序spec_order排序\n通过产品product_id和spec_md5从SU表查询唯一的SuId','[{\"createTime\":\"2016-04-01 12:14:20.0\",\"errorCode\":\"000001\",\"errorId\":\"82e675b4-0c11-414d-8640-91ddead4f3b1\",\"errorMsg\":\"系统未知错误\",\"moduleId\":\"62bde6e0-988b-475f-bfdf-76203455ec57\",\"moduleName\":\"试用ptapi\",\"status\":1}]','userName:super | trueName:测试用户','2016-04-02 14:04:46','2016-03-30 12:12:51','1.0',0,'[]','http://xxx/product/getSuId.do',0,'',''),('98f6f8cd-8562-46a7-9915-aa0572246277','http://192.168.1.201:30016/Home/GetSysConfig','POST,','form=[]','请求地址:\r\n','[]','','{\"Msg\":\"获取成功\",\"Success\":true,\"Data\":{\"Id\":\"c6544f4637ed45ef8dd61eb1a1098bee\",\"FreeDiagnosis\":0,\"ImageTextConsult\":1,\"AttentionNotice\":1,\"AutoSetPatient\":1,\"IsOpenSound\":1,\"IsOpenVibration\":1,\"CardDiagnosisNum\":6}}','',0,'c8b0ec41-e6b9-4f36-b986-963fa44715a9','配置','','[]','userName:super | trueName:测试用户','2016-05-25 09:19:00','2016-05-25 09:18:51','',0,'[]','http://192.168.1.201:30016/Home/GetSysConfig',0,'',''),('9c62ae94-ee1e-4fcf-ac8e-d5d9a97769ac','test/dd.do','POST,GET,DELETE,','{\"test\":\"xxx\"}','请求地址:http://api.crap1.cntest/dd.do\r\n请求头:\r\n请求参数:\r\n{\"test\":\"xxx\"}','[{\"name\":\"success\",\"type\":\"int\",\"remark\":\"1:成功\"}]','000004,205010,','{\n \"success\":1\n}\n','{\n \"success\":1\n}',1,'de2055f4-656a-495b-85dd-6591922bdf5d','CrapApi接口1-自定义参数参数','dddddd
','[{\"createTime\":\"2016-03-31 20:14:20.0\",\"errorCode\":\"205010\",\"errorMsg\":\"购物车信息已经发生变化,请确认订单是否已经提交,或重新刷新\",\"id\":\"7ee682f9-54da-4363-88e0-7ada8c445e4b\",\"logRemark\":\"\",\"moduleId\":\"de2055f4-656a-495b-85dd-6591922bdf5d\",\"moduleName\":\"CrapApi\",\"sequence\":0,\"status\":1},{\"createTime\":\"2016-03-31 20:14:20.0\",\"errorCode\":\"000004\",\"errorMsg\":\"您已砍过|您已经帮Ta砍过一次咯~\",\"id\":\"f1ce26cd-ea6b-4e77-9c65-1499fcb24e78\",\"logRemark\":\"\",\"moduleId\":\"de2055f4-656a-495b-85dd-6591922bdf5d\",\"moduleName\":\"CrapApi\",\"sequence\":0,\"status\":1}]','userName:test | trueName:123','2016-08-26 10:22:00','2016-08-26 09:35:59','V1.0',100,'[]','http://api.crap1.cntest/dd.do',0,'',''),('a21003af-b510-4051-8dbb-88e7cec95a00','test','GET,PUT,','form=[]','请求地址:test\r\n请求头:\r\n test=ttt\r\n请求参数:\r\n','[]','1111,','','',1,'b10aca13-1dfe-499f-9259-f8a36d0eb7c6','接口1','','[{\"createTime\":\"2016-08-27 18:13:14.0\",\"errorCode\":\"1111\",\"errorMsg\":\"1111\",\"id\":\"4e7b9210-c43b-40f3-aac7-f8e25688c38a\",\"logRemark\":\"\",\"moduleId\":\"b10aca13-1dfe-499f-9259-f8a36d0eb7c6\",\"moduleName\":\"我的项目1\",\"sequence\":0,\"status\":0}]','userName:test@crap.cn | trueName:null','2016-08-26 10:13:00','2016-08-26 10:13:02','233',0,'[{\"name\":\"test\",\"necessary\":\"true\",\"type\":\"ttt\",\"def\":\"ttt\",\"remark\":\"ttt\"}]','test',0,'',''),('a55a7e8d-7069-4c85-9c09-cdb45fe99099','/{test}/v122.do','POST,GET,PUT,','form=[{\"name\":\"uid\",\"necessary\":\"true\",\"type\":\"int\",\"def\":\"89\",\"remark\":\"3324\",\"inUrl\":\"false\"},{\"name\":\"test\",\"necessary\":\"true\",\"type\":\"String\",\"def\":\"aaa\",\"remark\":\"4535\",\"inUrl\":\"true\"}]','请求地址:http://api.crap1.cn/aaa/v1.do\r\n请求头:\r\n uid=45\r\n token=3dfefgeagceltenm2\r\n请求参数:\r\n uid=89\r\n','[{\"name\":\"success\",\"type\":\"int\",\"remark\":\"1:成功\"}]','205010,','{\n \"success\":1\n}\n','{\n \"success\":1\n}\n',1,'dfeda26d-8766-431f-9b90-f6e9f2947b25','CrapApi接口1-form表单参数、路径参数','接口说明,接口说明,接口说明,接口说明
','[{\"createTime\":\"2016-03-31 20:14:20.0\",\"errorCode\":\"205010\",\"errorMsg\":\"购物车信息已经发生变化,请确认订单是否已经提交,或重新刷新\",\"id\":\"7ee682f9-54da-4363-88e0-7ada8c445e4b\",\"logRemark\":\"\",\"moduleId\":\"de2055f4-656a-495b-85dd-6591922bdf5d\",\"moduleName\":\"CrapApi\",\"sequence\":0,\"status\":1}]','userName:admin | trueName:超级管理员','2016-08-26 09:42:00','2016-08-26 09:33:47','V2.0',100,'[{\"name\":\"uid\",\"necessary\":\"true\",\"type\":\"int\",\"def\":\"45\",\"remark\":\"用户ID\"},{\"name\":\"token\",\"necessary\":\"true\",\"type\":\"String\",\"def\":\"3dfefgeagceltenm2\",\"remark\":\"\"}]','http://api.crap1.cn/{test}/v122.do',0,'',''),('ae91e6f2-ec51-4080-bcc5-baa16b50de7e','http://ip.taobao.com/service/getIpInfo.php','POST,GET,','form=[{\"name\":\"ip\",\"necessary\":\"true\",\"type\":\"String\",\"def\":\"87.98.78.99\",\"parameterType\":\"PARAMETER\",\"remark\":\"ip地址\"}]','请求地址:http://ip.taobao.com/service/getIpInfo.php\n请求头:\n请求参数:\n ip=106.39.68.165','[{\"name\":\"code\",\"type\":\"int\",\"remark\":\"code的值的含义为,0:成功,1:失败\"}]','','{\n \"code\":0,\n \"data\":{\n \"ip\":\"210.75.225.254\",\n \"country\":\"中国\",\n \"area\":\"华北\",\n \"region\":\"北京市\",\n \"city\":\"北京市\",\n \"county\":\"\",\n \"isp\":\"电信\",\n \"country_id\":\"86\",\n \"area_id\":\"100000\",\n \"region_id\":\"110000\",\n \"city_id\":\"110000\",\n \"county_id\":\"-1\",\n \"isp_id\":\"100017\"\n }\n}\n','',1,'62bde6e0-988b-475f-bfdf-76203455ec57','淘宝IP归属地查询','','[]','userName:admin | trueName:超级管理员','2016-06-09 17:39:00','2016-04-10 23:43:21','1.0',0,'[]','http://ip.taobao.com/service/getIpInfo.php',0,'',''),('b2b35faf-36ad-4efb-b6f7-bccafc75fc5f','11112132132','POST,GET,','form=[{\"name\":\"userId\",\"necessary\":\"true\",\"type\":\"Long\",\"def\":\"无\",\"parameterType\":\"PARAMETER\",\"remark\":\"\"}]','请求地址:11112132132\r\n请求头:\r\n请求参数:\r\n =xxxx\r\n','[{\"name\":\"code\",\"type\":\"string\",\"remark\":\"\"},{\"name\":\"msg\",\"type\":\"string\",\"remark\":\"\"},{\"name\":\"data\",\"type\":\"string\",\"remark\":\"\"},{\"name\":\"data.a\",\"type\":\"String\",\"remark\":\"\"},{\"name\":\"data.b\",\"type\":\"\",\"remark\":\"\"}]','','','',1,'189d073c-b4ea-4e50-a1c1-f66ec1da1dd4','bac','','[]','userName:admin | trueName:超级管理员','2016-06-09 17:39:00','2016-05-23 10:34:49','1',0,'[]','11112132132',0,'',''),('b89bc4dc-92ab-47be-b29e-f32d87c7b9e0','http://api.map.baidu.com/telematics/v3/weather','POST,GET,','form=[{\"name\":\"location\",\"necessary\":\"true\",\"type\":\"String\",\"parameterType\":\"PARAMETER\",\"remark\":\"输入城市名或经纬度,城市名称如:北京或者131,经纬度格式为lng,lat坐标如: location=116.305145,39.982368\"},{\"name\":\"output\",\"necessary\":\"false\",\"type\":\"String\",\"parameterType\":\"PARAMETER\",\"remark\":\"输出的数据格式,默认为xml格式,当output设置为’json’时,输出的为json格式的数据;\"},{\"name\":\"coord_type\",\"necessary\":\"false\",\"type\":\"String\",\"parameterType\":\"PARAMETER\",\"remark\":\"请求参数坐标类型,默认为gcj02经纬度坐标。允许的值为bd09ll、bd09mc、gcj02、wgs84。bd09ll表示百度经纬度坐标,bd09mc表示百度墨卡托坐标,gcj02表示经过国测局加密的坐标。wgs84表示gps获取的坐标。\"},{\"name\":\"ak\",\"necessary\":\"true\",\"type\":\"String\",\"parameterType\":\"PARAMETER\",\"remark\":\"百度ak,需要申请\"}]','请求地址:http://api.map.baidu.com/telematics/v3/weather\r\n请求头:\r\n请求参数:\r\n location=xxxx\r\n output=xxxx\r\n coord_type=xxxx\r\n ak=xxxx\r\n','[{\"name\":\"currentCity\",\"type\":\"String\",\"remark\":\"当前城市\"},{\"name\":\"status\",\"type\":\"String\",\"remark\":\"返回结果状态信息\"},{\"name\":\"date\",\"type\":\"String\",\"remark\":\"当前时间\"},{\"name\":\"results\",\"type\":\"String\",\"remark\":\"天气预报信息\"}]','000001,000002,000003,000004,000005,000006,000007,000008,000009,000010,','{\n \"error\":0,\n \"status\":\"success\",\n \"date\":\"2014-05-03\",\n \"results\":[\n {\n \"currentCity\":\"北京\",\n \"weather_data\":[\n {\n \"date\":\"周六(今天, 实时:22℃)\",\n \"dayPictureUrl\":\"http://api.map.baidu.com/images/weather/day/leizhenyu.png\",\n \"nightPictureUrl\":\"http://api.map.baidu.com/images/weather/night/duoyun.png\",\n \"weather\":\"雷阵雨转多云\",\n \"wind\":\"北风5-6级\",\n \"temperature\":\"24 ~ 11℃\"\n },\n {\n \"date\":\"周日\",\n \"dayPictureUrl\":\"http://api.map.baidu.com/images/weather/day/duoyun.png\",\n \"nightPictureUrl\":\"http://api.map.baidu.com/images/weather/night/qing.png\",\n \"weather\":\"多云转晴\",\n \"wind\":\"北风4-5级\",\n \"temperature\":\"19 ~ 8℃\"\n },\n {\n \"date\":\"周一\",\n \"dayPictureUrl\":\"http://api.map.baidu.com/images/weather/day/qing.png\",\n \"nightPictureUrl\":\"http://api.map.baidu.com/images/weather/night/qing.png\",\n \"weather\":\"晴\",\n \"wind\":\"微风\",\n \"temperature\":\"21 ~ 9℃\"\n },\n {\n \"date\":\"周二\",\n \"dayPictureUrl\":\"http://api.map.baidu.com/images/weather/day/duoyun.png\",\n \"nightPictureUrl\":\"http://api.map.baidu.com/images/weather/night/qing.png\",\n \"weather\":\"多云转晴\",\n \"wind\":\"微风\",\n \"temperature\":\"21 ~ 10℃\"\n }\n ]\n }\n ]\n}\n','',1,'62bde6e0-988b-475f-bfdf-76203455ec57','百度天气预报接口','323
<\\/p>\",\"requestExam\":\"请求地址:http://api.map.baidu.com/telematics/v3/weather\\r\\n请求头:\\r\\n请求参数:\\r\\n\\tlocation=xxxx\\r\\n\\toutput=xxxx\\r\\n\\tcoord_type=xxxx\\r\\n\\tak=xxxx\\r\\n\",\"responseParam\":\"[{\\\"name\\\":\\\"currentCity\\\",\\\"type\\\":\\\"String\\\",\\\"remark\\\":\\\"当前城市\\\"},{\\\"name\\\":\\\"status\\\",\\\"type\\\":\\\"String\\\",\\\"remark\\\":\\\"返回结果状态信息\\\"},{\\\"name\\\":\\\"date\\\",\\\"type\\\":\\\"String\\\",\\\"remark\\\":\\\"当前时间\\\"},{\\\"name\\\":\\\"results\\\",\\\"type\\\":\\\"String\\\",\\\"remark\\\":\\\"天气预报信息\\\"}]\",\"sequence\":0,\"status\":1,\"trueExam\":\"{\\n \\\"error\\\":0,\\n \\\"status\\\":\\\"success\\\",\\n \\\"date\\\":\\\"2014-05-03\\\",\\n \\\"results\\\":[\\n {\\n \\\"currentCity\\\":\\\"北京\\\",\\n \\\"weather_data\\\":[\\n {\\n \\\"date\\\":\\\"周六(今天, 实时:22℃)\\\",\\n \\\"dayPictureUrl\\\":\\\"http://api.map.baidu.com/images/weather/day/leizhenyu.png\\\",\\n \\\"nightPictureUrl\\\":\\\"http://api.map.baidu.com/images/weather/night/duoyun.png\\\",\\n \\\"weather\\\":\\\"雷阵雨转多云\\\",\\n \\\"wind\\\":\\\"北风5-6级\\\",\\n \\\"temperature\\\":\\\"24 ~ 11℃\\\"\\n },\\n {\\n \\\"date\\\":\\\"周日\\\",\\n \\\"dayPictureUrl\\\":\\\"http://api.map.baidu.com/images/weather/day/duoyun.png\\\",\\n \\\"nightPictureUrl\\\":\\\"http://api.map.baidu.com/images/weather/night/qing.png\\\",\\n \\\"weather\\\":\\\"多云转晴\\\",\\n \\\"wind\\\":\\\"北风4-5级\\\",\\n \\\"temperature\\\":\\\"19 ~ 8℃\\\"\\n },\\n {\\n \\\"date\\\":\\\"周一\\\",\\n \\\"dayPictureUrl\\\":\\\"http://api.map.baidu.com/images/weather/day/qing.png\\\",\\n \\\"nightPictureUrl\\\":\\\"http://api.map.baidu.com/images/weather/night/qing.png\\\",\\n \\\"weather\\\":\\\"晴\\\",\\n \\\"wind\\\":\\\"微风\\\",\\n \\\"temperature\\\":\\\"21 ~ 9℃\\\"\\n },\\n {\\n \\\"date\\\":\\\"周二\\\",\\n \\\"dayPictureUrl\\\":\\\"http://api.map.baidu.com/images/weather/day/duoyun.png\\\",\\n \\\"nightPictureUrl\\\":\\\"http://api.map.baidu.com/images/weather/night/qing.png\\\",\\n \\\"weather\\\":\\\"多云转晴\\\",\\n \\\"wind\\\":\\\"微风\\\",\\n \\\"temperature\\\":\\\"21 ~ 10℃\\\"\\n }\\n ]\\n }\\n ]\\n}\\n\",\"updateBy\":\"userName:admin | trueName:超级管理员\",\"updateTime\":\"2016-05-22 11:06:00.0\",\"url\":\"http://api.map.baidu.com/telematics/v3/weather\",\"version\":\"1.0\"}','b89bc4dc-92ab-47be-b29e-f32d87c7b9e0'),('1567f525-aa78-49d0-8ba8-545f29e05a3d',0,'2016-08-26 09:46:15',0,'Interface','接口','DELTET','admin','删除:添加客户','{\"createTime\":\"2016-05-15 02:24:06.0\",\"errorList\":\"\",\"errors\":\"[]\",\"falseExam\":\"{\\n \\\"code\\\":2,\\n \\\"msg\\\":\\\"失败\\\",\\n \\\"data\\\":{\\n }\\n}\\n\",\"header\":\"[]\",\"id\":\"eec575a1-f95e-49b1-ae25-f9bdbef4b566\",\"interfaceName\":\"添加客户\",\"logRemark\":\"添加客户\",\"method\":\"post\",\"moduleId\":\"b646a46f-173e-42a3-9486-79b5a02b9d7c\",\"moduleName\":\"客户模块\",\"moduleUrl\":\"\",\"param\":\"form=[{\\\"name\\\":\\\"token\\\",\\\"necessary\\\":\\\"true\\\",\\\"type\\\":\\\"string\\\",\\\"parameterType\\\":\\\"PARAMETER\\\",\\\"remark\\\":\\\"token\\\"},{\\\"name\\\":\\\"customerId\\\",\\\"necessary\\\":\\\"true\\\",\\\"type\\\":\\\"long\\\",\\\"parameterType\\\":\\\"PARAMETER\\\",\\\"remark\\\":\\\"客户ID\\\"},{\\\"name\\\":\\\"customerName\\\",\\\"necessary\\\":\\\"true\\\",\\\"type\\\":\\\"string\\\",\\\"parameterType\\\":\\\"PARAMETER\\\",\\\"remark\\\":\\\"客户姓名\\\"}]\",\"projectId\":\"9e6596c1-9fda-4cd2-b20a-1cce7e572a65\",\"remark\":\"
用于客户模块添加客户信息<\\/p>\",\"requestExam\":\"请求地址:http://www.baidu.com\\r\\n请求头:\\r\\n请求参数:\\r\\n\\ttoken=xxxx\\r\\n\\tcustomerId=xxxx\\r\\n\\tcustomerName=xxxx\\r\\n\",\"responseParam\":\"[{\\\"name\\\":\\\"code\\\",\\\"type\\\":\\\"string\\\",\\\"remark\\\":\\\"返回结果\\\"},{\\\"name\\\":\\\"msg\\\",\\\"type\\\":\\\"string\\\",\\\"remark\\\":\\\"返回消息\\\"},{\\\"name\\\":\\\"data\\\",\\\"type\\\":\\\"返回数据结果\\\",\\\"remark\\\":\\\"\\\"}]\",\"sequence\":0,\"status\":1,\"trueExam\":\"{\\n \\\"code\\\":0,\\n \\\"msg\\\":\\\"成功\\\",\\n \\\"data\\\":{\\n \\\"customerId\\\":1\\n }\\n}\\n\",\"updateBy\":\"userName:super | trueName:测试用户\",\"updateTime\":\"2016-05-15 02:32:00.0\",\"url\":\"http://www.baidu.com\",\"version\":\"1.1\"}','eec575a1-f95e-49b1-ae25-f9bdbef4b566'),('229b3a75-aa4d-4a8a-891f-f1fe8fcb3337',0,'2016-08-26 09:46:11',0,'Interface','接口','DELTET','admin','删除:66','{\"createTime\":\"2016-05-18 00:23:07.0\",\"errorList\":\"\",\"errors\":\"[]\",\"falseExam\":\"{\\\"page\\\":null,\\\"success\\\":0,\\\"data\\\":null,\\\"error\\\":{\\\"code\\\":\\\"000007\\\",\\\"message\\\":\\\"请输入访问密码\\\"},\\\"others\\\":null}\",\"header\":\"[]\",\"id\":\"4f98bab2-f041-4e1d-93ed-4c613308b6e6\",\"interfaceName\":\"66\",\"logRemark\":\"66\",\"method\":\"post\",\"moduleId\":\"b646a46f-173e-42a3-9486-79b5a02b9d7c\",\"moduleName\":\"客户模块\",\"moduleUrl\":\"\",\"param\":\"form=[{\\\"name\\\":\\\"aaa\\\",\\\"necessary\\\":\\\"true\\\",\\\"type\\\":\\\"syttt\\\",\\\"parameterType\\\":\\\"PARAMETER\\\",\\\"remark\\\":\\\"rtr\\\"}]\",\"projectId\":\"9e6596c1-9fda-4cd2-b20a-1cce7e572a65\",\"remark\":\"
shuom <\\/p>\",\"requestExam\":\"请求地址:6767\\r\\n请求头:\\r\\n请求参数:\\r\\n\\taaa=xxxx\\r\\n\",\"responseParam\":\"[{\\\"name\\\":\\\"bbb\\\",\\\"type\\\":\\\"ccc\\\",\\\"remark\\\":\\\"ccc\\\"}]\",\"sequence\":0,\"status\":1,\"trueExam\":\"{\\n \\\"page\\\":{\\n \\\"allRow\\\":2,\\n \\\"currentPage\\\":1,\\n \\\"size\\\":15,\\n \\\"totalPage\\\":1,\\n \\\"start\\\":0\\n },\\n \\\"success\\\":1,\\n \\\"data\\\":{\\n \\\"interfaces\\\":[\\n {\\n \\\"createTime\\\":\\\"2016-05-18 16:23:07.0\\\",\\n \\\"status\\\":1,\\n \\\"sequence\\\":0,\\n \\\"id\\\":\\\"4f98bab2-f041-4e1d-93ed-4c613308b6e6\\\",\\n \\\"url\\\":\\\"6767\\\",\\n \\\"method\\\":\\\"post\\\",\\n \\\"param\\\":\\\"[{\\\\\\\"name\\\\\\\":\\\\\\\"aaa\\\\\\\",\\\\\\\"necessary\\\\\\\":\\\\\\\"true\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"syttt\\\\\\\",\\\\\\\"parameterType\\\\\\\":\\\\\\\"PARAMETER\\\\\\\",\\\\\\\"remark\\\\\\\":\\\\\\\"rtr\\\\\\\"}]\\\",\\n \\\"requestExam\\\":\\\"请求地址:6767\\r\\n请求头:\\r\\n请求参数:\\r\\n\\taaa=xxxx\\r\\n\\\",\\n \\\"responseParam\\\":\\\"[{\\\\\\\"name\\\\\\\":\\\\\\\"bbb\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"ccc\\\\\\\",\\\\\\\"remark\\\\\\\":\\\\\\\"ccc\\\\\\\"}]\\\",\\n \\\"errorList\\\":\\\"\\\",\\n \\\"trueExam\\\":\\\"{\\n \\\\\\\"info\\\\\\\":[\\n [\\n \\\\\\\"14\\\\\\\",\\n \\\\\\\"7\\\\\\\",\\n \\\\\\\"1\\\\\\\",\\n \\\\\\\"6\\\\\\\",\\n \\\\\\\"0\\\\\\\",\\n \\\\\\\"0\\\\\\\",\\n \\\\\\\"0\\\\\\\"\\n ],\\n [\\n \\\\\\\"10\\\\\\\",\\n \\\\\\\"9\\\\\\\",\\n \\\\\\\"1\\\\\\\",\\n \\\\\\\"0\\\\\\\",\\n \\\\\\\"0\\\\\\\"\\n ],\\n [\\n \\\\\\\"3\\\\\\\",\\n \\\\\\\"1\\\\\\\",\\n \\\\\\\"1\\\\\\\",\\n \\\\\\\"1\\\\\\\",\\n \\\\\\\"0\\\\\\\",\\n \\\\\\\"0\\\\\\\",\\n \\\\\\\"0\\\\\\\"\\n ],\\n [\\n \\\\\\\"6\\\\\\\",\\n \\\\\\\"2\\\\\\\",\\n \\\\\\\"4\\\\\\\",\\n \\\\\\\"0\\\\\\\",\\n \\\\\\\"0\\\\\\\"\\n ]\\n ],\\n \\\\\\\"pie\\\\\\\":[\\n [\\n {\\n \\\\\\\"name\\\\\\\":\\\\\\\"未解决1个\\\\\\\",\\n \\\\\\\"color\\\\\\\":\\\\\\\"#e6646c\\\\\\\",\\n \\\\\\\"y\\\\\\\":7.14\\n },\\n {\\n \\\\\\\"name\\\\\\\":\\\\\\\"已关闭6个\\\\\\\",\\n \\\\\\\"color\\\\\\\":\\\\\\\"#f5be77\\\\\\\",\\n \\\\\\\"y\\\\\\\":42.86\\n },\\n {\\n \\\\\\\"name\\\\\\\":\\\\\\\"已解决7个\\\\\\\",\\n \\\\\\\"color\\\\\\\":\\\\\\\"#91bfe2\\\\\\\",\\n \\\\\\\"y\\\\\\\":50\\n },\\n {\\n \\\\\\\"name\\\\\\\":\\\\\\\"正在修复0个\\\\\\\",\\n \\\\\\\"color\\\\\\\":\\\\\\\"#c9e477\\\\\\\",\\n \\\\\\\"y\\\\\\\":0\\n },\\n {\\n \\\\\\\"name\\\\\\\":\\\\\\\"挂起0个\\\\\\\",\\n \\\\\\\"color\\\\\\\":\\\\\\\"#2eac77\\\\\\\",\\n \\\\\\\"y\\\\\\\":0\\n },\\n {\\n \\\\\\\"name\\\\\\\":\\\\\\\"重新开启0个\\\\\\\",\\n \\\\\\\"color\\\\\\\":\\\\\\\"#ecef77\\\\\\\",\\n \\\\\\\"y\\\\\\\":0\\n }\\n ],\\n [\\n {\\n \\\\\\\"name\\\\\\\":\\\\\\\"未解决1个\\\\\\\",\\n \\\\\\\"color\\\\\\\":\\\\\\\"#e6646c\\\\\\\",\\n \\\\\\\"y\\\\\\\":10\\n },\\n {\\n \\\\\\\"name\\\\\\\":\\\\\\\"已关闭0个\\\\\\\",\\n \\\\\\\"color\\\\\\\":\\\\\\\"#f5be77\\\\\\\",\\n \\\\\\\"y\\\\\\\":0\\n },\\n {\\n \\\\\\\"name\\\\\\\":\\\\\\\"已解决9个\\\\\\\",\\n \\\\\\\"color\\\\\\\":\\\\\\\"#91bfe2\\\\\\\",\\n \\\\\\\"y\\\\\\\":90\\n },\\n {\\n \\\\\\\"name\\\\\\\":\\\\\\\"正在开发0个\\\\\\\",\\n \\\\\\\"color\\\\\\\":\\\\\\\"#c9e477\\\\\\\",\\n \\\\\\\"y\\\\\\\":0\\n }\\n ],\\n [\\n {\\n \\\\\\\"name\\\\\\\":\\\\\\\"未解决1个\\\\\\\",\\n \\\\\\\"color\\\\\\\":\\\\\\\"#e6646c\\\\\\\",\\n \\\\\\\"y\\\\\\\":33.33\\n },\\n {\\n \\\\\\\"name\\\\\\\":\\\\\\\"已关闭1个\\\\\\\",\\n \\\\\\\"color\\\\\\\":\\\\\\\"#f5be77\\\\\\\",\\n \\\\\\\"y\\\\\\\":33.33\\n },\\n {\\n \\\\\\\"name\\\\\\\":\\\\\\\"已解决1个\\\\\\\",\\n \\\\\\\"color\\\\\\\":\\\\\\\"#91bfe2\\\\\\\",\\n \\\\\\\"y\\\\\\\":33.33\\n },\\n {\\n \\\\\\\"name\\\\\\\":\\\\\\\"正在修复0个\\\\\\\",\\n \\\\\\\"color\\\\\\\":\\\\\\\"#c9e477\\\\\\\",\\n \\\\\\\"y\\\\\\\":0\\n },\\n {\\n \\\\\\\"name\\\\\\\":\\\\\\\"挂起0个\\\\\\\",\\n \\\\\\\"color\\\\\\\":\\\\\\\"#2eac77\\\\\\\",\\n \\\\\\\"y\\\\\\\":0\\n },\\n {\\n \\\\\\\"name\\\\\\\":\\\\\\\"重新开启0个\\\\\\\",\\n \\\\\\\"color\\\\\\\":\\\\\\\"#ecef77\\\\\\\",\\n \\\\\\\"y\\\\\\\":0\\n }\\n ],\\n [\\n {\\n \\\\\\\"name\\\\\\\":\\\\\\\"未解决4个\\\\\\\",\\n \\\\\\\"color\\\\\\\":\\\\\\\"#e6646c\\\\\\\",\\n \\\\\\\"y\\\\\\\":66.67\\n },\\n {\\n \\\\\\\"name\\\\\\\":\\\\\\\"已关闭0个\\\\\\\",\\n \\\\\\\"color\\\\\\\":\\\\\\\"#f5be77\\\\\\\",\\n \\\\\\\"y\\\\\\\":0\\n },\\n {\\n \\\\\\\"name\\\\\\\":\\\\\\\"已解决2个\\\\\\\",\\n \\\\\\\"color\\\\\\\":\\\\\\\"#91bfe2\\\\\\\",\\n \\\\\\\"y\\\\\\\":33.33\\n },\\n {\\n \\\\\\\"name\\\\\\\":\\\\\\\"正在开发0个\\\\\\\",\\n \\\\\\\"color\\\\\\\":\\\\\\\"#c9e477\\\\\\\",\\n \\\\\\\"y\\\\\\\":0\\n }\\n ]\\n ]\\n}\\n\\\",\\n \\\"falseExam\\\":\\\"{\\n \\\\\\\"error\\\\\\\":1\\n}\\n\\\",\\n \\\"moduleId\\\":\\\"b646a46f-173e-42a3-9486-79b5a02b9d7c\\\",\\n \\\"interfaceName\\\":\\\"66\\\",\\n \\\"updateBy\\\":\\\"userName:super | trueName:测试用户\\\",\\n \\\"updateTime\\\":\\\"2016-05-18 16:24:00.0\\\",\\n \\\"remark\\\":\\\"
shuom <\\/p>\\\",\\n \\\"errors\\\":\\\"[]\\\",\\n \\\"version\\\":\\\"1.0\\\",\\n \\\"moduleName\\\":\\\"客户模块\\\"\\n },\\n {\\n \\\"createTime\\\":\\\"2016-05-15 18:24:06.0\\\",\\n \\\"status\\\":1,\\n \\\"sequence\\\":0,\\n \\\"id\\\":\\\"eec575a1-f95e-49b1-ae25-f9bdbef4b566\\\",\\n \\\"url\\\":\\\"http://www.baidu.com\\\",\\n \\\"method\\\":\\\"post\\\",\\n \\\"param\\\":\\\"[{\\\\\\\"name\\\\\\\":\\\\\\\"token\\\\\\\",\\\\\\\"necessary\\\\\\\":\\\\\\\"true\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"parameterType\\\\\\\":\\\\\\\"PARAMETER\\\\\\\",\\\\\\\"remark\\\\\\\":\\\\\\\"token\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"customerId\\\\\\\",\\\\\\\"necessary\\\\\\\":\\\\\\\"true\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"long\\\\\\\",\\\\\\\"parameterType\\\\\\\":\\\\\\\"PARAMETER\\\\\\\",\\\\\\\"remark\\\\\\\":\\\\\\\"客户ID\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"customerName\\\\\\\",\\\\\\\"necessary\\\\\\\":\\\\\\\"true\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"parameterType\\\\\\\":\\\\\\\"PARAMETER\\\\\\\",\\\\\\\"remark\\\\\\\":\\\\\\\"客户姓名\\\\\\\"}]\\\",\\n \\\"requestExam\\\":\\\"请求地址:http://www.baidu.com\\r\\n请求头:\\r\\n请求参数:\\r\\n\\ttoken=xxxx\\r\\n\\tcustomerId=xxxx\\r\\n\\tcustomerName=xxxx\\r\\n\\\",\\n \\\"responseParam\\\":\\\"[{\\\\\\\"name\\\\\\\":\\\\\\\"code\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"remark\\\\\\\":\\\\\\\"返回结果\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"msg\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"remark\\\\\\\":\\\\\\\"返回消息\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"data\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"返回数据结果\\\\\\\",\\\\\\\"remark\\\\\\\":\\\\\\\"\\\\\\\"}]\\\",\\n \\\"errorList\\\":\\\"\\\",\\n \\\"trueExam\\\":\\\"{\\n \\\\\\\"code\\\\\\\":0,\\n \\\\\\\"msg\\\\\\\":\\\\\\\"成功\\\\\\\",\\n \\\\\\\"data\\\\\\\":{\\n \\\\\\\"customerId\\\\\\\":1\\n }\\n}\\n\\\",\\n \\\"falseExam\\\":\\\"{\\n \\\\\\\"code\\\\\\\":2,\\n \\\\\\\"msg\\\\\\\":\\\\\\\"失败\\\\\\\",\\n \\\\\\\"data\\\\\\\":{\\n }\\n}\\n\\\",\\n \\\"moduleId\\\":\\\"b646a46f-173e-42a3-9486-79b5a02b9d7c\\\",\\n \\\"interfaceName\\\":\\\"添加客户\\\",\\n \\\"updateBy\\\":\\\"userName:super | trueName:测试用户\\\",\\n \\\"updateTime\\\":\\\"2016-05-15 18:32:00.0\\\",\\n \\\"remark\\\":\\\"
用于客户模块添加客户信息<\\/p>\\\",\\n \\\"errors\\\":\\\"[]\\\",\\n \\\"version\\\":\\\"1.1\\\",\\n \\\"moduleName\\\":\\\"客户模块\\\"\\n }\\n ],\\n \\\"parentId\\\":\\\"b646a46f-173e-42a3-9486-79b5a02b9d7c\\\",\\n \\\"modules\\\":[\\n ]\\n },\\n \\\"error\\\":null,\\n \\\"others\\\":null\\n}\\n\",\"updateBy\":\"userName:super | trueName:测试用户\",\"updateTime\":\"2016-05-18 00:33:00.0\",\"url\":\"6767\",\"version\":\"1.0\"}','4f98bab2-f041-4e1d-93ed-4c613308b6e6'),('31c70611-2263-44de-888f-32eeb179b2d5',0,'2016-08-26 09:42:02',0,'Interface','接口','UPDATE','admin','修改:CrapApi接口1-form表单参数、路径参数','{\"createTime\":\"2016-08-27 17:33:47.0\",\"errorList\":\"\",\"errors\":\"[]\",\"falseExam\":\"{\\n \\\"success\\\":1\\n}\\n\",\"header\":\"[{\\\"name\\\":\\\"uid\\\",\\\"necessary\\\":\\\"true\\\",\\\"type\\\":\\\"int\\\",\\\"def\\\":\\\"45\\\",\\\"remark\\\":\\\"用户ID\\\"},{\\\"name\\\":\\\"token\\\",\\\"necessary\\\":\\\"true\\\",\\\"type\\\":\\\"String\\\",\\\"def\\\":\\\"3dfefgeagceltenm2\\\",\\\"remark\\\":\\\"\\\"}]\",\"id\":\"a55a7e8d-7069-4c85-9c09-cdb45fe99099\",\"interfaceName\":\"CrapApi接口1-form表单参数、路径参数\",\"logRemark\":\"CrapApi接口1-form表单参数、路径参数\",\"method\":\"POST,GET,PUT,\",\"moduleId\":\"dfeda26d-8766-431f-9b90-f6e9f2947b25\",\"moduleName\":\"CrapApi公开、加密模块1\",\"moduleUrl\":\"http://api.crap1.cn\",\"param\":\"form=[{\\\"name\\\":\\\"uid\\\",\\\"necessary\\\":\\\"true\\\",\\\"type\\\":\\\"int\\\",\\\"def\\\":\\\"89\\\",\\\"remark\\\":\\\"3324\\\",\\\"inUrl\\\":\\\"false\\\"},{\\\"name\\\":\\\"test\\\",\\\"necessary\\\":\\\"true\\\",\\\"type\\\":\\\"String\\\",\\\"def\\\":\\\"aaa\\\",\\\"remark\\\":\\\"4535\\\",\\\"inUrl\\\":\\\"true\\\"}]\",\"projectId\":\"de2055f4-656a-495b-85dd-6591922bdf5d\",\"remark\":\"
接口说明,接口说明,接口说明,接口说明<\\/p>\",\"requestExam\":\"请求地址:http://api.crap1.cn/aaa/v1.do\\r\\n请求头:\\r\\n\\tuid=45\\r\\n\\ttoken=3dfefgeagceltenm2\\r\\n请求参数:\\r\\n\\tuid=89\\r\\n\",\"responseParam\":\"[{\\\"name\\\":\\\"success\\\",\\\"type\\\":\\\"int\\\",\\\"remark\\\":\\\"1:成功\\\"}]\",\"sequence\":100,\"status\":1,\"trueExam\":\"{\\n \\\"success\\\":1\\n}\\n\",\"updateBy\":\"userName:admin | trueName:超级管理员\",\"updateTime\":\"2016-08-27 17:41:00.0\",\"url\":\"/{test}/v122.do\",\"version\":\"V2.0\"}','a55a7e8d-7069-4c85-9c09-cdb45fe99099'),('3aac0495-3131-4974-92de-0b9b44a0633e',0,'2016-08-26 09:40:04',0,'Interface','接口','UPDATE','admin','修改:CrapApi接口1-自定义参数参数','{\"createTime\":\"2016-08-27 17:35:59.0\",\"errorList\":\"\",\"errors\":\"[]\",\"falseExam\":\"{\\n \\\"success\\\":1\\n}\",\"header\":\"[]\",\"id\":\"9c62ae94-ee1e-4fcf-ac8e-d5d9a97769ac\",\"interfaceName\":\"CrapApi接口1-自定义参数参数\",\"logRemark\":\"CrapApi接口1-自定义参数参数\",\"method\":\"POST,GET,DELETE,\",\"moduleId\":\"de2055f4-656a-495b-85dd-6591922bdf5d\",\"moduleName\":\"CrapApi\",\"moduleUrl\":\"http://api.crap1.cn\",\"param\":\"{\\\"test\\\":\\\"xxx\\\"}\",\"projectId\":\"de2055f4-656a-495b-85dd-6591922bdf5d\",\"remark\":\"
dddddd<\\/p>\",\"requestExam\":\"请求地址:http://api.crap1.cntest/dd.do\\r\\n请求头:\\r\\n请求参数:\\r\\n{\\\"test\\\":\\\"xxx\\\"}\",\"responseParam\":\"[{\\\"name\\\":\\\"success\\\",\\\"type\\\":\\\"int\\\",\\\"remark\\\":\\\"1:成功\\\"}]\",\"sequence\":100,\"status\":1,\"trueExam\":\"{\\n \\\"success\\\":1\\n}\\n\",\"updateBy\":\"userName:admin | trueName:超级管理员\",\"updateTime\":\"2016-08-27 17:35:00.0\",\"url\":\"test/dd.do\",\"version\":\"V1.0\"}','9c62ae94-ee1e-4fcf-ac8e-d5d9a97769ac'),('3d9d6a24-dcfd-4915-92a2-68eea6a16c33',0,'2016-06-09 17:39:02',0,'Interface','接口','UPDATE','admin','修改:淘宝IP归属地查询','{\"createTime\":\"2016-04-12 23:43:21.0\",\"errorList\":\"\",\"errors\":\"[]\",\"falseExam\":\"\",\"id\":\"ae91e6f2-ec51-4080-bcc5-baa16b50de7e\",\"interfaceName\":\"淘宝IP归属地查询\",\"logRemark\":\"淘宝IP归属地查询\",\"method\":\"POST,GET,\",\"moduleId\":\"62bde6e0-988b-475f-bfdf-76203455ec57\",\"moduleName\":\"常用免费常用接口\",\"param\":\"[{\\\"name\\\":\\\"ip\\\",\\\"necessary\\\":\\\"true\\\",\\\"type\\\":\\\"String\\\",\\\"def\\\":\\\"87.98.78.99\\\",\\\"parameterType\\\":\\\"PARAMETER\\\",\\\"remark\\\":\\\"ip地址\\\"}]\",\"remark\":\"\",\"requestExam\":\"请求地址:http://ip.taobao.com/service/getIpInfo.php\\n请求头:\\n请求参数:\\n\\tip=106.39.68.165\",\"responseParam\":\"[{\\\"name\\\":\\\"code\\\",\\\"type\\\":\\\"int\\\",\\\"remark\\\":\\\"code的值的含义为,0:成功,1:失败\\\"}]\",\"sequence\":0,\"status\":1,\"trueExam\":\"{\\n \\\"code\\\":0,\\n \\\"data\\\":{\\n \\\"ip\\\":\\\"210.75.225.254\\\",\\n \\\"country\\\":\\\"中国\\\",\\n \\\"area\\\":\\\"华北\\\",\\n \\\"region\\\":\\\"北京市\\\",\\n \\\"city\\\":\\\"北京市\\\",\\n \\\"county\\\":\\\"\\\",\\n \\\"isp\\\":\\\"电信\\\",\\n \\\"country_id\\\":\\\"86\\\",\\n \\\"area_id\\\":\\\"100000\\\",\\n \\\"region_id\\\":\\\"110000\\\",\\n \\\"city_id\\\":\\\"110000\\\",\\n \\\"county_id\\\":\\\"-1\\\",\\n \\\"isp_id\\\":\\\"100017\\\"\\n }\\n}\\n\",\"updateBy\":\"userName:admin | trueName:超级管理员\",\"updateTime\":\"2016-05-22 11:05:00.0\",\"url\":\"http://ip.taobao.com/service/getIpInfo.php\",\"version\":\"1.0\"}','ae91e6f2-ec51-4080-bcc5-baa16b50de7e'),('418a2935-50b3-41bb-af4e-ee81490a09a4',0,'2016-08-26 09:45:41',0,'Interface','接口','DELTET','admin','删除:接口名称','{\"createTime\":\"2016-05-30 04:00:58.0\",\"errorList\":\"\",\"errors\":\"[]\",\"falseExam\":\"\",\"header\":\"[]\",\"id\":\"f450ae98-3beb-46ac-ab54-2f4b5715bd58\",\"interfaceName\":\"接口名称\",\"logRemark\":\"接口名称\",\"method\":\"\",\"moduleId\":\"a7509548-0358-4d9b-8d5f-d7cbbd4813bb\",\"moduleName\":\"test\",\"moduleUrl\":\"\",\"param\":\"form=[]\",\"projectId\":\"9e6596c1-9fda-4cd2-b20a-1cce7e572a65\",\"remark\":\"\",\"requestExam\":\"请求地址:http://www.api.com/aaaa\\r\\n请求头:\\r\\n请求参数:\\r\\n\",\"responseParam\":\"[]\",\"sequence\":0,\"status\":0,\"trueExam\":\"\",\"updateBy\":\"userName:super | trueName:测试用户\",\"updateTime\":\"2016-05-30 04:00:00.0\",\"url\":\"http://www.api.com/aaaa\",\"version\":\"\"}','f450ae98-3beb-46ac-ab54-2f4b5715bd58'),('47375b8b-9456-4e02-bfd8-a86ac59ccb2a',0,'2016-08-26 09:41:08',0,'Interface','接口','UPDATE','admin','修改:CrapApi接口1-form表单参数、路径参数','{\"createTime\":\"2016-08-27 17:33:47.0\",\"errorList\":\"\",\"errors\":\"[]\",\"falseExam\":\"{\\n \\\"success\\\":1\\n}\\n\",\"header\":\"[{\\\"name\\\":\\\"uid\\\",\\\"necessary\\\":\\\"true\\\",\\\"type\\\":\\\"int\\\",\\\"def\\\":\\\"45\\\",\\\"remark\\\":\\\"用户ID\\\"},{\\\"name\\\":\\\"token\\\",\\\"necessary\\\":\\\"true\\\",\\\"type\\\":\\\"String\\\",\\\"def\\\":\\\"3dfefgeagceltenm2\\\",\\\"remark\\\":\\\"\\\"}]\",\"id\":\"a55a7e8d-7069-4c85-9c09-cdb45fe99099\",\"interfaceName\":\"CrapApi接口1-form表单参数、路径参数\",\"logRemark\":\"CrapApi接口1-form表单参数、路径参数\",\"method\":\"POST,GET,PUT,\",\"moduleId\":\"dfeda26d-8766-431f-9b90-f6e9f2947b25\",\"moduleName\":\"CrapApi公开、加密模块1\",\"moduleUrl\":\"http://api.crap1.cn\",\"param\":\"form=[{\\\"name\\\":\\\"uid\\\",\\\"necessary\\\":\\\"true\\\",\\\"type\\\":\\\"int\\\",\\\"def\\\":\\\"89\\\",\\\"remark\\\":\\\"3324\\\",\\\"inUrl\\\":\\\"false\\\"},{\\\"name\\\":\\\"test\\\",\\\"necessary\\\":\\\"true\\\",\\\"type\\\":\\\"String\\\",\\\"def\\\":\\\"aaa\\\",\\\"remark\\\":\\\"4535\\\",\\\"inUrl\\\":\\\"true\\\"}]\",\"projectId\":\"de2055f4-656a-495b-85dd-6591922bdf5d\",\"remark\":\"
接口说明,接口说明,接口说明,接口说明<\\/p>\",\"requestExam\":\"请求地址:http://api.crap1.cn/aaa/v1.do\\r\\n请求头:\\r\\n\\tuid=45\\r\\n\\ttoken=3dfefgeagceltenm2\\r\\n请求参数:\\r\\n\\tuid=89\\r\\n\",\"responseParam\":\"[{\\\"name\\\":\\\"success\\\",\\\"type\\\":\\\"int\\\",\\\"remark\\\":\\\"1:成功\\\"}]\",\"sequence\":100,\"status\":1,\"trueExam\":\"{\\n \\\"success\\\":1\\n}\\n\",\"updateBy\":\"userName:admin | trueName:超级管理员\",\"updateTime\":\"2016-08-27 17:33:00.0\",\"url\":\"/{test}/v122.do\",\"version\":\"V1.0\"}','a55a7e8d-7069-4c85-9c09-cdb45fe99099'),('68049b7f-38a3-485f-b410-1dbfe0a3b788',0,'2016-06-09 17:39:32',0,'Interface','接口','UPDATE','admin','修改:bac','{\"createTime\":\"2016-05-25 10:34:49.0\",\"errorList\":\"\",\"errors\":\"[]\",\"falseExam\":\"\",\"id\":\"b2b35faf-36ad-4efb-b6f7-bccafc75fc5f\",\"interfaceName\":\"bac\",\"logRemark\":\"bac\",\"method\":\"POST,GET,\",\"moduleId\":\"189d073c-b4ea-4e50-a1c1-f66ec1da1dd4\",\"moduleName\":\"示例模块\",\"param\":\"[{\\\"name\\\":\\\"userId\\\",\\\"necessary\\\":\\\"true\\\",\\\"type\\\":\\\"Long\\\",\\\"def\\\":\\\"无\\\",\\\"parameterType\\\":\\\"PARAMETER\\\",\\\"remark\\\":\\\"\\\"}]\",\"remark\":\"\",\"requestExam\":\"请求地址:11112132132\\r\\n请求头:\\r\\n请求参数:\\r\\n\\t=xxxx\\r\\n\",\"responseParam\":\"[{\\\"name\\\":\\\"code\\\",\\\"type\\\":\\\"string\\\",\\\"remark\\\":\\\"\\\"},{\\\"name\\\":\\\"msg\\\",\\\"type\\\":\\\"string\\\",\\\"remark\\\":\\\"\\\"},{\\\"name\\\":\\\"data\\\",\\\"type\\\":\\\"string\\\",\\\"remark\\\":\\\"\\\"},{\\\"name\\\":\\\"data.a\\\",\\\"type\\\":\\\"String\\\",\\\"remark\\\":\\\"\\\"},{\\\"name\\\":\\\"data.b\\\",\\\"type\\\":\\\"\\\",\\\"remark\\\":\\\"\\\"}]\",\"sequence\":0,\"status\":1,\"trueExam\":\"\",\"updateBy\":\"userName:super | trueName:测试用户\",\"updateTime\":\"2016-05-25 11:27:00.0\",\"url\":\"11112132132\",\"version\":\"1\"}','b2b35faf-36ad-4efb-b6f7-bccafc75fc5f'),('6a27e210-5b04-445d-b6ce-4fafaddc3d87',0,'2016-06-09 17:39:49',0,'Interface','接口','UPDATE','admin','修改:用户登录','{\"createTime\":\"2016-05-27 08:50:35.0\",\"errorList\":\"205007,281007,281009,281010,281012,281013,281014,281015,\",\"errors\":\"[{\\\"createTime\\\":\\\"2016-04-01 12:14:20.0\\\",\\\"errorCode\\\":\\\"281007\\\",\\\"errorId\\\":\\\"00743df0-a358-4dd1-8856-dbdeb1f78633\\\",\\\"errorMsg\\\":\\\"红包不存在\\\",\\\"moduleId\\\":\\\"9e6596c1-9fda-4cd2-b20a-1cce7e572a65\\\",\\\"moduleName\\\":\\\"示例项目\\\",\\\"sequence\\\":0,\\\"status\\\":1},{\\\"createTime\\\":\\\"2016-04-01 12:14:20.0\\\",\\\"errorCode\\\":\\\"281014\\\",\\\"errorId\\\":\\\"2069622d-579e-460e-89c0-dcfaa924fc82\\\",\\\"errorMsg\\\":\\\"趣分期兑换uid为空\\\",\\\"moduleId\\\":\\\"9e6596c1-9fda-4cd2-b20a-1cce7e572a65\\\",\\\"moduleName\\\":\\\"示例项目\\\",\\\"sequence\\\":0,\\\"status\\\":1},{\\\"createTime\\\":\\\"2016-04-01 12:14:20.0\\\",\\\"errorCode\\\":\\\"205007\\\",\\\"errorId\\\":\\\"26622971-152d-4b31-9ba3-0710ce8e2850\\\",\\\"errorMsg\\\":\\\"删除指定商品失败\\\",\\\"moduleId\\\":\\\"9e6596c1-9fda-4cd2-b20a-1cce7e572a65\\\",\\\"moduleName\\\":\\\"示例项目\\\",\\\"sequence\\\":0,\\\"status\\\":1},{\\\"createTime\\\":\\\"2016-04-01 12:14:20.0\\\",\\\"errorCode\\\":\\\"281012\\\",\\\"errorId\\\":\\\"2ece77ba-acdd-4abe-a159-c7ed2038fe83\\\",\\\"errorMsg\\\":\\\"趣分期兑换码已使用\\\",\\\"moduleId\\\":\\\"9e6596c1-9fda-4cd2-b20a-1cce7e572a65\\\",\\\"moduleName\\\":\\\"示例项目\\\",\\\"sequence\\\":0,\\\"status\\\":1},{\\\"createTime\\\":\\\"2016-04-01 12:14:20.0\\\",\\\"errorCode\\\":\\\"281013\\\",\\\"errorId\\\":\\\"3380cef1-432e-4d18-a556-c4b4abd7c279\\\",\\\"errorMsg\\\":\\\"趣分期兑换码无效\\\",\\\"moduleId\\\":\\\"9e6596c1-9fda-4cd2-b20a-1cce7e572a65\\\",\\\"moduleName\\\":\\\"示例项目\\\",\\\"sequence\\\":0,\\\"status\\\":1},{\\\"createTime\\\":\\\"2016-04-01 12:14:20.0\\\",\\\"errorCode\\\":\\\"281010\\\",\\\"errorId\\\":\\\"416a5375-9dc7-46d6-b8cc-6af4d28ead39\\\",\\\"errorMsg\\\":\\\"趣分期兑换码长度错误\\\",\\\"moduleId\\\":\\\"9e6596c1-9fda-4cd2-b20a-1cce7e572a65\\\",\\\"moduleName\\\":\\\"示例项目\\\",\\\"sequence\\\":0,\\\"status\\\":1},{\\\"createTime\\\":\\\"2016-04-01 12:14:20.0\\\",\\\"errorCode\\\":\\\"281009\\\",\\\"errorId\\\":\\\"a1d7ba85-b365-428e-9d18-31be64aac13b\\\",\\\"errorMsg\\\":\\\"红包和体验码不能同时使用\\\",\\\"moduleId\\\":\\\"9e6596c1-9fda-4cd2-b20a-1cce7e572a65\\\",\\\"moduleName\\\":\\\"示例项目\\\",\\\"sequence\\\":0,\\\"status\\\":1},{\\\"createTime\\\":\\\"2016-04-01 12:14:20.0\\\",\\\"errorCode\\\":\\\"281015\\\",\\\"errorId\\\":\\\"c53d5bf3-3a33-41fb-aafa-3e7b9804b923\\\",\\\"errorMsg\\\":\\\"templateId为空123\\\",\\\"moduleId\\\":\\\"9e6596c1-9fda-4cd2-b20a-1cce7e572a65\\\",\\\"moduleName\\\":\\\"示例项目\\\",\\\"sequence\\\":0,\\\"status\\\":1}]\",\"falseExam\":\"{}\",\"id\":\"16e1afe6-cdd4-4846-a4aa-0e7ba830ea5b\",\"interfaceName\":\"用户登录\",\"logRemark\":\"用户登录\",\"method\":\"GET,\",\"moduleId\":\"063578aa-785f-42b8-bd1b-e3061ef45a2f\",\"moduleName\":\"示例模块(访问密码123)\",\"param\":\"[]\",\"remark\":\"
测试接口
<\\/p>\",\"requestExam\":\"请求地址:http://127.0.0.1\\r\\n请求头:\\r\\n请求参数:\\r\\n\\tUserName=xxxx\\r\\n\\tpassword=xxxx\\r\\n\",\"responseParam\":\"[]\",\"sequence\":0,\"status\":1,\"trueExam\":\"{\\n \\\"status\\\":1,\\n \\\"errorCode\\\":0,\\n \\\"errorMessage\\\":null,\\n \\\"actionData\\\":[\\n {\\n \\\"signal\\\":{\\n \\\"signalId\\\":1,\\n \\\"signalAddress\\\":\\\"udp://@:1234\\\",\\n \\\"addTime\\\":\\\"\\\",\\n \\\"signalName\\\":\\\"cctv1\\\",\\n \\\"status\\\":1,\\n \\\"restartFlag\\\":0,\\n \\\"restartTime\\\":0,\\n \\\"deleteFlag\\\":0,\\n \\\"cmdContent\\\":\\\"ffmpeg -i *in* -c:v libx264 -c:a aac -strict -2 -f hls *outM3u8*\\\",\\n \\\"statusFlag\\\":1\\n }\\n }\\n ]\\n}\\n\",\"updateBy\":\"userName:super | trueName:测试用户\",\"updateTime\":\"2016-05-27 15:43:00.0\",\"url\":\"http://127.0.0.1\",\"version\":\"1.0\"}','16e1afe6-cdd4-4846-a4aa-0e7ba830ea5b'),('6bf40ba6-bdfe-44e6-80fb-cf8bd493ecae',0,'2016-06-09 17:39:35',0,'Interface','接口','UPDATE','admin','修改:获取购物车列表数据集','{\"createTime\":\"2016-04-30 19:06:24.0\",\"errorList\":\"200008,200009,200010,205001,205002,\",\"errors\":\"[{\\\"createTime\\\":\\\"2016-04-01 12:14:20.0\\\",\\\"errorCode\\\":\\\"205002\\\",\\\"errorId\\\":\\\"5d232003-0991-40f0-b955-62a8cee30313\\\",\\\"errorMsg\\\":\\\"用户未登录\\\",\\\"moduleId\\\":\\\"9e6596c1-9fda-4cd2-b20a-1cce7e572a65\\\",\\\"moduleName\\\":\\\"示例项目\\\",\\\"status\\\":1},{\\\"createTime\\\":\\\"2016-04-01 12:14:20.0\\\",\\\"errorCode\\\":\\\"200008\\\",\\\"errorId\\\":\\\"7d2a5131-af7d-48a8-a78b-b4a194c5602f\\\",\\\"errorMsg\\\":\\\"网络异常,请稍后重试\\\",\\\"moduleId\\\":\\\"9e6596c1-9fda-4cd2-b20a-1cce7e572a65\\\",\\\"moduleName\\\":\\\"示例项目\\\",\\\"status\\\":1},{\\\"createTime\\\":\\\"2016-04-01 12:14:20.0\\\",\\\"errorCode\\\":\\\"200009\\\",\\\"errorId\\\":\\\"a53c9cfe-b7cb-4ffe-be0e-29cbe94b84b1\\\",\\\"errorMsg\\\":\\\"not have right\\\",\\\"moduleId\\\":\\\"9e6596c1-9fda-4cd2-b20a-1cce7e572a65\\\",\\\"moduleName\\\":\\\"示例项目\\\",\\\"status\\\":1},{\\\"createTime\\\":\\\"2016-04-01 12:14:20.0\\\",\\\"errorCode\\\":\\\"200010\\\",\\\"errorId\\\":\\\"d2d7e8b7-d649-4d82-b5c5-8e9562ad8f2c\\\",\\\"errorMsg\\\":\\\"生成token失败\\\",\\\"moduleId\\\":\\\"9e6596c1-9fda-4cd2-b20a-1cce7e572a65\\\",\\\"moduleName\\\":\\\"示例项目\\\",\\\"status\\\":1},{\\\"createTime\\\":\\\"2016-04-01 12:14:20.0\\\",\\\"errorCode\\\":\\\"205001\\\",\\\"errorId\\\":\\\"ec2a3cd4-375d-412d-b456-bd00b72ab12a\\\",\\\"errorMsg\\\":\\\"当前用户不合法\\\",\\\"moduleId\\\":\\\"9e6596c1-9fda-4cd2-b20a-1cce7e572a65\\\",\\\"moduleName\\\":\\\"示例项目\\\",\\\"status\\\":1}]\",\"falseExam\":\"{\\n \\\"success\\\":1,\\n \\\"data\\\":[\\n {\\n \\\"suId\\\":\\\"1253\\\",\\n \\\"suCode\\\":\\\"157416\\\",\\n \\\"skuCode\\\":null,\\n \\\"modelId\\\":12587\\n }\\n ],\\n \\\"error\\\":null\\n}\\n\",\"id\":\"2f475ebf-2d34-4f52-8bc7-8eb10a153014\",\"interfaceName\":\"获取购物车列表数据集\",\"logRemark\":\"获取购物车列表数据集\",\"method\":\"post and get\",\"moduleId\":\"189d073c-b4ea-4e50-a1c1-f66ec1da1dd4\",\"moduleName\":\"示例模块\",\"param\":\"[{\\\"name\\\":\\\"renderParams\\\",\\\"necessary\\\":\\\"true\\\",\\\"type\\\":\\\"String\\\",\\\"remark\\\":\\\"渲染参数\\\"}]\",\"remark\":\"不可定制面是不需要在用户的定制面列表里面出现\",\"requestExam\":\"请求地址:http://xxx/product/info/render3.do\\r\\n请求头:\\r\\n请求参数:\\r\\n\\trenderParams=xxxx\\r\\n\",\"responseParam\":\"[{\\\"name\\\":\\\"CannotChangeMaterials\\\",\\\"type\\\":\\\"String\\\",\\\"remark\\\":\\\"被关联的面与材料(不可修改的面+材料)\\\"},{\\\"name\\\":\\\"sudata\\\",\\\"type\\\":\\\"String\\\",\\\"remark\\\":\\\"商品信息\\\"},{\\\"name\\\":\\\"sizeList\\\",\\\"type\\\":\\\"String\\\",\\\"remark\\\":\\\"尺码列表\\\"},{\\\"name\\\":\\\"NotShowComponents\\\",\\\"type\\\":\\\"String\\\",\\\"remark\\\":\\\"不可定制面的集合\\\"}]\",\"sequence\":0,\"status\":1,\"trueExam\":\"{\\n \\\"success\\\":1,\\n \\\"data\\\":[\\n {\\n \\\"suId\\\":\\\"1253\\\",\\n \\\"suCode\\\":\\\"157416\\\",\\n \\\"skuCode\\\":null,\\n \\\"modelId\\\":12587\\n }\\n ],\\n \\\"error\\\":null\\n}\\n\",\"updateBy\":\"userName:admin | trueName:超级管理员\",\"updateTime\":\"2016-04-30 19:38:00.0\",\"url\":\"http://xxx/product/info/render3.do\",\"version\":\"1.0\"}','2f475ebf-2d34-4f52-8bc7-8eb10a153014'),('72493b63-a974-468d-8d7c-944b7c2ffb58',0,'2016-06-09 17:39:28',0,'Interface','接口','UPDATE','admin','修改:获取购物车列表数据集','{\"createTime\":\"2016-06-02 13:42:10.0\",\"errorList\":\"200008,200009,200010,205001,205002,\",\"errors\":\"[{\\\"createTime\\\":\\\"2016-04-01 12:14:20.0\\\",\\\"errorCode\\\":\\\"205002\\\",\\\"errorId\\\":\\\"5d232003-0991-40f0-b955-62a8cee30313\\\",\\\"errorMsg\\\":\\\"用户未登录\\\",\\\"moduleId\\\":\\\"9e6596c1-9fda-4cd2-b20a-1cce7e572a65\\\",\\\"moduleName\\\":\\\"示例项目\\\",\\\"sequence\\\":0,\\\"status\\\":1},{\\\"createTime\\\":\\\"2016-04-01 12:14:20.0\\\",\\\"errorCode\\\":\\\"200008\\\",\\\"errorId\\\":\\\"7d2a5131-af7d-48a8-a78b-b4a194c5602f\\\",\\\"errorMsg\\\":\\\"网络异常,请稍后重试\\\",\\\"moduleId\\\":\\\"9e6596c1-9fda-4cd2-b20a-1cce7e572a65\\\",\\\"moduleName\\\":\\\"示例项目\\\",\\\"sequence\\\":0,\\\"status\\\":1},{\\\"createTime\\\":\\\"2016-04-01 12:14:20.0\\\",\\\"errorCode\\\":\\\"200009\\\",\\\"errorId\\\":\\\"a53c9cfe-b7cb-4ffe-be0e-29cbe94b84b1\\\",\\\"errorMsg\\\":\\\"not have right\\\",\\\"moduleId\\\":\\\"9e6596c1-9fda-4cd2-b20a-1cce7e572a65\\\",\\\"moduleName\\\":\\\"示例项目\\\",\\\"sequence\\\":0,\\\"status\\\":1},{\\\"createTime\\\":\\\"2016-04-01 12:14:20.0\\\",\\\"errorCode\\\":\\\"200010\\\",\\\"errorId\\\":\\\"d2d7e8b7-d649-4d82-b5c5-8e9562ad8f2c\\\",\\\"errorMsg\\\":\\\"生成token失败\\\",\\\"moduleId\\\":\\\"9e6596c1-9fda-4cd2-b20a-1cce7e572a65\\\",\\\"moduleName\\\":\\\"示例项目\\\",\\\"sequence\\\":0,\\\"status\\\":1},{\\\"createTime\\\":\\\"2016-04-01 12:14:20.0\\\",\\\"errorCode\\\":\\\"205001\\\",\\\"errorId\\\":\\\"ec2a3cd4-375d-412d-b456-bd00b72ab12a\\\",\\\"errorMsg\\\":\\\"当前用户不合法\\\",\\\"moduleId\\\":\\\"9e6596c1-9fda-4cd2-b20a-1cce7e572a65\\\",\\\"moduleName\\\":\\\"示例项目\\\",\\\"sequence\\\":0,\\\"status\\\":1}]\",\"falseExam\":\"{\\n \\\"success\\\":1,\\n \\\"data\\\":[\\n {\\n \\\"suId\\\":\\\"1253\\\",\\n \\\"suCode\\\":\\\"157416\\\",\\n \\\"skuCode\\\":null,\\n \\\"modelId\\\":12587\\n }\\n ],\\n \\\"error\\\":null\\n}\",\"id\":\"e472bec4-f230-42f0-988a-544153ae919d\",\"interfaceName\":\"获取购物车列表数据集\",\"logRemark\":\"获取购物车列表数据集\",\"method\":\"post and get\",\"moduleId\":\"189d073c-b4ea-4e50-a1c1-f66ec1da1dd4\",\"moduleName\":\"示例模块\",\"param\":\"[{\\\"name\\\":\\\"renderParams\\\",\\\"necessary\\\":\\\"true\\\",\\\"type\\\":\\\"String\\\",\\\"def\\\":\\\"\\\",\\\"parameterType\\\":\\\"undefined\\\",\\\"remark\\\":\\\"渲染参数\\\"},{\\\"name\\\":\\\"userid\\\",\\\"necessary\\\":\\\"true\\\",\\\"type\\\":\\\"int\\\",\\\"def\\\":\\\"\\\",\\\"parameterType\\\":\\\"PARAMETER\\\",\\\"remark\\\":\\\"用户id\\\"}]\",\"remark\":\"不可定制面是不需要在用户的定制面列表里面出现\",\"requestExam\":\"请求地址:http://xxx/product/info/render2.do\\r\\n请求头:\\r\\n请求参数:\\r\\n\\trenderParams=xxxx\\r\\n\\tuserid=xxxx\\r\\n\",\"responseParam\":\"[{\\\"name\\\":\\\"CannotChangeMaterials\\\",\\\"type\\\":\\\"String\\\",\\\"remark\\\":\\\"被关联的面与材料(不可修改的面+材料)\\\"},{\\\"name\\\":\\\"sudata\\\",\\\"type\\\":\\\"String\\\",\\\"remark\\\":\\\"商品信息\\\"},{\\\"name\\\":\\\"sizeList\\\",\\\"type\\\":\\\"String\\\",\\\"remark\\\":\\\"尺码列表\\\"},{\\\"name\\\":\\\"NotShowComponents\\\",\\\"type\\\":\\\"String\\\",\\\"remark\\\":\\\"不可定制面的集合\\\"}]\",\"sequence\":0,\"status\":1,\"trueExam\":\"{\\n \\\"success\\\":1,\\n \\\"data\\\":[\\n {\\n \\\"suId\\\":\\\"1253\\\",\\n \\\"suCode\\\":\\\"157416\\\",\\n \\\"skuCode\\\":null,\\n \\\"modelId\\\":12587\\n }\\n ],\\n \\\"error\\\":null\\n}\",\"updateBy\":\"userName:admin | trueName:超级管理员\",\"updateTime\":\"2016-06-07 10:14:00.0\",\"url\":\"http://www.so.d/dsdf\",\"version\":\"测试\"}','e472bec4-f230-42f0-988a-544153ae919d'),('7cc55958-5197-4d82-8e24-19a7a5d78a74',0,'2016-06-09 17:39:54',0,'Interface','接口','UPDATE','admin','修改:查询某试用活动已经获得试用资格的试用单','{\"createTime\":\"2016-04-01 12:12:51.0\",\"errorList\":\"000001,\",\"errors\":\"[{\\\"createTime\\\":\\\"2016-04-01 12:14:20.0\\\",\\\"errorCode\\\":\\\"000001\\\",\\\"errorId\\\":\\\"82e675b4-0c11-414d-8640-91ddead4f3b1\\\",\\\"errorMsg\\\":\\\"系统未知错误\\\",\\\"moduleId\\\":\\\"62bde6e0-988b-475f-bfdf-76203455ec57\\\",\\\"moduleName\\\":\\\"试用ptapi\\\",\\\"status\\\":1}]\",\"falseExam\":\"{\\n \\\"data\\\": null, \\n \\\"error\\\": {\\n \\\"code\\\": \\\"000001\\\", \\n \\\"data\\\": null, \\n \\\"message\\\": \\\"xxxxxxx\\\"\\n }, \\n \\\"page\\\": null, \\n \\\"success\\\": 0\\n}\",\"id\":\"2e4c0946-61d7-4a63-bb3f-4bf5b3279f4d\",\"interfaceName\":\"查询某试用活动已经获得试用资格的试用单\",\"logRemark\":\"查询某试用活动已经获得试用资格的试用单\",\"method\":\"post and get\",\"moduleId\":\"063578aa-785f-42b8-bd1b-e3061ef45a2f\",\"moduleName\":\"示例模块(访问密码123)\",\"param\":\"[{\\\"name\\\":\\\"activity_id\\\",\\\"necessary\\\":\\\"true\\\",\\\"type\\\":\\\"long\\\",\\\"parameterType\\\":\\\"HEADER\\\",\\\"remark\\\":\\\"试用活动id\\\"},{\\\"name\\\":\\\"page\\\",\\\"necessary\\\":\\\"false\\\",\\\"type\\\":\\\"int\\\",\\\"parameterType\\\":\\\"HEADER\\\",\\\"remark\\\":\\\"页码 如果为空,则返回第一页的数据\\\"},{\\\"name\\\":\\\"pageSize\\\",\\\"necessary\\\":\\\"false\\\",\\\"type\\\":\\\"int\\\",\\\"parameterType\\\":\\\"HEADER\\\",\\\"remark\\\":\\\"每页显示的数量,如果pageSize为空,则不分页,一次选择所有数据\\\"},{\\\"name\\\":\\\"555\\\",\\\"necessary\\\":\\\"true\\\",\\\"type\\\":\\\"5\\\",\\\"parameterType\\\":\\\"HEADER\\\",\\\"remark\\\":\\\"555\\\"}]\",\"remark\":\"查看当某活动的试用单列表(已经砍价成功,并且已经提交了订单)\",\"requestExam\":\"请求地址:http://xxx/activityOrder/8/list.do\\r\\n请求头:\\r\\n\\tactivity_id=xxxx\\r\\n\\tpage=xxxx\\r\\n\\tpageSize=xxxx\\r\\n\\t555=xxxx\\r\\n请求参数:\\r\\n\",\"responseParam\":\"[{\\\"name\\\":\\\"page\\\",\\\"type\\\":\\\"对象\\\",\\\"remark\\\":\\\"分页信息\\\"},{\\\"name\\\":\\\"testList\\\",\\\"type\\\":\\\"数组\\\",\\\"remark\\\":\\\"试用单列表\\\"},{\\\"name\\\":\\\"55\\\",\\\"type\\\":\\\"55\\\",\\\"remark\\\":\\\"555\\\"}]\",\"sequence\":0,\"status\":1,\"trueExam\":\"{\\n \\\"data\\\": {\\n \\\"testList\\\": [\\n {\\n \\\"submitTime\\\": 1456803171000, \\n \\\"userId\\\": 1253817, \\n \\\"userImg\\\": \\\"\\\", \\n \\\"userName\\\": \\\"Ehsan\\\"\\n }, \\n {\\n \\\"submitTime\\\": 1456891539000, \\n \\\"userId\\\": 1253817, \\n \\\"userImg\\\": \\\"\\\", \\n \\\"userName\\\": \\\"Ehsan\\\"\\n }, \\n {\\n \\\"submitTime\\\": 1457170074000, \\n \\\"userId\\\": 1927601, \\n \\\"userImg\\\": \\\"\\\", \\n \\\"userName\\\": \\\"2927602\\\"\\n }, \\n {\\n \\\"submitTime\\\": 1457171696000, \\n \\\"userId\\\": 1772231, \\n \\\"userImg\\\": \\\"\\\", \\n \\\"userName\\\": \\\"snail-阿蒲\\\"\\n }, \\n {\\n \\\"submitTime\\\": 1457184651000, \\n \\\"userId\\\": 389, \\n \\\"userImg\\\": \\\"\\\", \\n \\\"userName\\\": \\\"路上有你\\\"\\n }, \\n {\\n \\\"submitTime\\\": 1457185381000, \\n \\\"userId\\\": 4352, \\n \\\"userImg\\\": \\\"\\\", \\n \\\"userName\\\": \\\"夜月星空\\\"\\n }, \\n {\\n \\\"submitTime\\\": 1457417579000, \\n \\\"userId\\\": 1772231, \\n \\\"userImg\\\": \\\"\\\", \\n \\\"userName\\\": \\\"snail-阿蒲\\\"\\n }, \\n {\\n \\\"submitTime\\\": 1457422208000, \\n \\\"userId\\\": 1927601, \\n \\\"userImg\\\": \\\"\\\", \\n \\\"userName\\\": \\\"EhsanTang\\\"\\n }, \\n {\\n \\\"submitTime\\\": 1458013122000, \\n \\\"userId\\\": 1927601, \\n \\\"userImg\\\": \\\"\\\", \\n \\\"userName\\\": \\\"EhsanTang\\\"\\n }\\n ], \\n \\\"testNum\\\": 9\\n }, \\n \\\"error\\\": null, \\n \\\"page\\\": {\\n \\\"allRow\\\": 15, \\n \\\"currentPage\\\": 1, \\n \\\"size\\\": 1000, \\n \\\"start\\\": 0, \\n \\\"totalPage\\\": 1\\n }, \\n \\\"success\\\": 1\\n}\",\"updateBy\":\"userName:super | trueName:测试用户\",\"updateTime\":\"2016-04-04 14:04:46.0\",\"url\":\"http://xxx/activityOrder/8/list.do\",\"version\":\"1.0\"}','2e4c0946-61d7-4a63-bb3f-4bf5b3279f4d'),('7dd76095-d7ce-4a3b-b41c-bc6fdc74fe9b',0,'2016-08-26 09:41:56',0,'Interface','接口','UPDATE','admin','修改:CrapApi接口1-form表单参数、路径参数','{\"createTime\":\"2016-08-27 17:33:47.0\",\"errorList\":\"\",\"errors\":\"[]\",\"falseExam\":\"{\\n \\\"success\\\":1\\n}\\n\",\"header\":\"[{\\\"name\\\":\\\"uid\\\",\\\"necessary\\\":\\\"true\\\",\\\"type\\\":\\\"int\\\",\\\"def\\\":\\\"45\\\",\\\"remark\\\":\\\"用户ID\\\"},{\\\"name\\\":\\\"token\\\",\\\"necessary\\\":\\\"true\\\",\\\"type\\\":\\\"String\\\",\\\"def\\\":\\\"3dfefgeagceltenm2\\\",\\\"remark\\\":\\\"\\\"}]\",\"id\":\"72e3354d-38ac-4de6-a5e9-0595bc97642b\",\"interfaceName\":\"CrapApi接口1-form表单参数、路径参数\",\"logRemark\":\"CrapApi接口1-form表单参数、路径参数\",\"method\":\"POST,GET,PUT,\",\"moduleId\":\"dfeda26d-8766-431f-9b90-f6e9f2947b25\",\"moduleName\":\"CrapApi公开、加密模块1\",\"moduleUrl\":\"http://api.crap1.cn\",\"param\":\"form=[{\\\"name\\\":\\\"uid\\\",\\\"necessary\\\":\\\"true\\\",\\\"type\\\":\\\"int\\\",\\\"def\\\":\\\"89\\\",\\\"remark\\\":\\\"3324\\\",\\\"inUrl\\\":\\\"false\\\"},{\\\"name\\\":\\\"test\\\",\\\"necessary\\\":\\\"true\\\",\\\"type\\\":\\\"String\\\",\\\"def\\\":\\\"aaa\\\",\\\"remark\\\":\\\"4535\\\",\\\"inUrl\\\":\\\"true\\\"}]\",\"projectId\":\"de2055f4-656a-495b-85dd-6591922bdf5d\",\"remark\":\"
接口说明,接口说明,接口说明,接口说明<\\/p>\",\"requestExam\":\"请求地址:http://api.crap1.cn/aaa/v1.do\\r\\n请求头:\\r\\n\\tuid=45\\r\\n\\ttoken=3dfefgeagceltenm2\\r\\n请求参数:\\r\\n\\tuid=89\\r\\n\",\"responseParam\":\"[{\\\"name\\\":\\\"success\\\",\\\"type\\\":\\\"int\\\",\\\"remark\\\":\\\"1:成功\\\"}]\",\"sequence\":100,\"status\":1,\"trueExam\":\"{\\n \\\"success\\\":1\\n}\\n\",\"updateBy\":\"userName:admin | trueName:超级管理员\",\"updateTime\":\"2016-08-27 17:33:00.0\",\"url\":\"/{test}/v12.do\",\"version\":\"V1.0\"}','72e3354d-38ac-4de6-a5e9-0595bc97642b'),('b51ffba7-aa60-4708-8d96-9d687e3340cc',0,'2016-08-26 09:45:55',0,'Interface','接口','DELTET','admin','删除:测试接口','{\"createTime\":\"2016-05-23 01:49:13.0\",\"errorList\":\"\",\"errors\":\"[]\",\"falseExam\":\"\",\"header\":\"[]\",\"id\":\"e78dbf3e-4f94-4f10-a1db-94ce3dda03f9\",\"interfaceName\":\"测试接口\",\"logRemark\":\"测试接口\",\"method\":\"POST,GET,\",\"moduleId\":\"3eb55737-df6e-479f-840b-30147bafef89\",\"moduleName\":\"PM\",\"moduleUrl\":\"\",\"param\":\"form=[{\\\"name\\\":\\\"name\\\",\\\"necessary\\\":\\\"true\\\",\\\"type\\\":\\\"string\\\",\\\"def\\\":\\\"0\\\",\\\"parameterType\\\":\\\"PARAMETER\\\",\\\"remark\\\":\\\"\\\"},{\\\"name\\\":\\\"age\\\",\\\"necessary\\\":\\\"true\\\",\\\"type\\\":\\\"number\\\",\\\"def\\\":\\\"0\\\",\\\"parameterType\\\":\\\"PARAMETER\\\",\\\"remark\\\":\\\"\\\"}]\",\"projectId\":\"9e6596c1-9fda-4cd2-b20a-1cce7e572a65\",\"remark\":\"\",\"requestExam\":\"请求地址:http://www.baidu.com/security.do\\r\\n请求头:\\r\\n请求参数:\\r\\n\\tname=xxxx\\r\\n\\tage=xxxx\\r\\n\",\"responseParam\":\"[]\",\"sequence\":1,\"status\":1,\"trueExam\":\"\",\"updateBy\":\"userName:super | trueName:测试用户\",\"updateTime\":\"2016-05-23 01:49:00.0\",\"url\":\"http://www.baidu.com/security.do\",\"version\":\"1.0\"}','e78dbf3e-4f94-4f10-a1db-94ce3dda03f9'),('b734e8e0-d648-4ed9-97b8-7166475588a6',0,'2016-06-09 17:38:58',0,'Interface','接口','UPDATE','admin','修改:淘宝查询手机归属地','{\"createTime\":\"2016-04-14 14:56:02.0\",\"errorList\":\"000001,000012,\",\"errors\":\"[{\\\"createTime\\\":\\\"2016-04-01 12:14:20.0\\\",\\\"errorCode\\\":\\\"000012\\\",\\\"errorId\\\":\\\"1e01a3dd-1711-44ab-8481-3f15c57cdcde\\\",\\\"errorMsg\\\":\\\"抱歉,您所选择的试用商品已被抢完,去看看其他活动吧~\\\",\\\"moduleId\\\":\\\"62bde6e0-988b-475f-bfdf-76203455ec57\\\",\\\"moduleName\\\":\\\"常用免费常用接口\\\",\\\"sequence\\\":0,\\\"status\\\":1},{\\\"createTime\\\":\\\"2016-04-01 12:14:20.0\\\",\\\"errorCode\\\":\\\"000001\\\",\\\"errorId\\\":\\\"82e675b4-0c11-414d-8640-91ddead4f3b1\\\",\\\"errorMsg\\\":\\\"系统未知错误\\\",\\\"moduleId\\\":\\\"62bde6e0-988b-475f-bfdf-76203455ec57\\\",\\\"moduleName\\\":\\\"常用免费常用接口\\\",\\\"sequence\\\":0,\\\"status\\\":1}]\",\"falseExam\":\"\",\"id\":\"476679d6-bbbf-4f6a-9157-cf9090fb710a\",\"interfaceName\":\"淘宝查询手机归属地\",\"logRemark\":\"淘宝查询手机归属地\",\"method\":\"POST,GET,\",\"moduleId\":\"62bde6e0-988b-475f-bfdf-76203455ec57\",\"moduleName\":\"常用免费常用接口\",\"param\":\"[{\\\"name\\\":\\\"tel\\\",\\\"necessary\\\":\\\"true\\\",\\\"type\\\":\\\"String\\\",\\\"parameterType\\\":\\\"PARAMETER\\\",\\\"remark\\\":\\\"手机号码\\\"}]\",\"remark\":\"\",\"requestExam\":\"请求地址:aa\\r\\n请求头:\\r\\n请求参数:\\r\\n\\ttel=xxxx\\r\\n\",\"responseParam\":\"[{\\\"name\\\":\\\"__GetZoneResult_\\\",\\\"type\\\":\\\"Json\\\",\\\"remark\\\":\\\"返回归属地信息\\\"}]\",\"sequence\":0,\"status\":1,\"trueExam\":\"{\\n \\\"mts\\\":\\\"1585078\\\",\\n \\\"province\\\":\\\"江苏\\\",\\n \\\"catName\\\":\\\"中国移动\\\",\\n \\\"telString\\\":\\\"15850781443\\\",\\n \\\"areaVid\\\":\\\"30511\\\",\\n \\\"ispVid\\\":\\\"3236139\\\",\\n \\\"carrier\\\":\\\"江苏移动\\\"\\n}\\n\",\"updateBy\":\"userName:admin | trueName:超级管理员\",\"updateTime\":\"2016-05-22 11:05:00.0\",\"url\":\"http://tcc.taobao.com/cc/json/mobile_tel_segment.htm\",\"version\":\"1.0\"}','476679d6-bbbf-4f6a-9157-cf9090fb710a'),('c8036156-6065-4956-baae-a35db32220a3',0,'2016-08-26 10:22:22',0,'Interface','接口','UPDATE','test','修改:CrapApi接口1-自定义参数参数','{\"createTime\":\"2016-08-27 17:35:59.0\",\"errorList\":\"000004,205010,\",\"errors\":\"[{\\\"createTime\\\":\\\"2016-03-31 20:14:20.0\\\",\\\"errorCode\\\":\\\"205010\\\",\\\"errorMsg\\\":\\\"购物车信息已经发生变化,请确认订单是否已经提交,或重新刷新\\\",\\\"id\\\":\\\"7ee682f9-54da-4363-88e0-7ada8c445e4b\\\",\\\"logRemark\\\":\\\"\\\",\\\"moduleId\\\":\\\"de2055f4-656a-495b-85dd-6591922bdf5d\\\",\\\"moduleName\\\":\\\"CrapApi\\\",\\\"sequence\\\":0,\\\"status\\\":1},{\\\"createTime\\\":\\\"2016-03-31 20:14:20.0\\\",\\\"errorCode\\\":\\\"000004\\\",\\\"errorMsg\\\":\\\"您已砍过|您已经帮Ta砍过一次咯~\\\",\\\"id\\\":\\\"f1ce26cd-ea6b-4e77-9c65-1499fcb24e78\\\",\\\"logRemark\\\":\\\"\\\",\\\"moduleId\\\":\\\"de2055f4-656a-495b-85dd-6591922bdf5d\\\",\\\"moduleName\\\":\\\"CrapApi\\\",\\\"sequence\\\":0,\\\"status\\\":1}]\",\"falseExam\":\"{\\n \\\"success\\\":1\\n}\",\"header\":\"[]\",\"id\":\"9c62ae94-ee1e-4fcf-ac8e-d5d9a97769ac\",\"interfaceName\":\"CrapApi接口1-自定义参数参数\",\"logRemark\":\"CrapApi接口1-自定义参数参数\",\"method\":\"POST,GET,DELETE,\",\"moduleId\":\"de2055f4-656a-495b-85dd-6591922bdf5d\",\"moduleName\":\"CrapApi\",\"moduleUrl\":\"http://api.crap1.cn\",\"param\":\"{\\\"test\\\":\\\"xxx\\\"}\",\"projectId\":\"de2055f4-656a-495b-85dd-6591922bdf5d\",\"remark\":\"
dddddd<\\/p>\",\"requestExam\":\"请求地址:http://api.crap1.cntest/dd.do\\r\\n请求头:\\r\\n请求参数:\\r\\n{\\\"test\\\":\\\"xxx\\\"}\",\"responseParam\":\"[{\\\"name\\\":\\\"success\\\",\\\"type\\\":\\\"int\\\",\\\"remark\\\":\\\"1:成功\\\"}]\",\"sequence\":100,\"status\":1,\"trueExam\":\"{\\n \\\"success\\\":1\\n}\\n\",\"updateBy\":\"userName:admin | trueName:超级管理员\",\"updateTime\":\"2016-08-27 17:40:00.0\",\"url\":\"test/dd.do\",\"version\":\"V1.0\"}','9c62ae94-ee1e-4fcf-ac8e-d5d9a97769ac'),('cf1957eb-2083-44ea-8e11-3f7c2753dc21',0,'2016-06-09 17:39:05',0,'Interface','接口','UPDATE','admin','修改:淘宝查询手机归属地','{\"createTime\":\"2016-04-12 23:38:11.0\",\"errorList\":\"\",\"errors\":\"[]\",\"falseExam\":\"\",\"id\":\"579ead79-4ff3-4b74-b70c-676db4618be4\",\"interfaceName\":\"淘宝查询手机归属地\",\"logRemark\":\"淘宝查询手机归属地\",\"method\":\"POST,GET,\",\"moduleId\":\"62bde6e0-988b-475f-bfdf-76203455ec57\",\"moduleName\":\"常用免费常用接口\",\"param\":\"[{\\\"name\\\":\\\"tel\\\",\\\"necessary\\\":\\\"true\\\",\\\"type\\\":\\\"String\\\",\\\"parameterType\\\":\\\"PARAMETER\\\",\\\"remark\\\":\\\"手机号码\\\"}]\",\"remark\":\"\",\"requestExam\":\"请求地址:https://tcc.taobao.com/cc/json/mobile_tel_segment.htm\\r\\n请求头:\\r\\n请求参数:\\r\\n\\ttel=xxxx\\r\\n\",\"responseParam\":\"[{\\\"name\\\":\\\"__GetZoneResult_\\\",\\\"type\\\":\\\"Json\\\",\\\"remark\\\":\\\"返回归属地信息\\\"}]\",\"sequence\":0,\"status\":1,\"trueExam\":\"{\\n \\\"mts\\\":\\\"1585078\\\",\\n \\\"province\\\":\\\"江苏\\\",\\n \\\"catName\\\":\\\"中国移动\\\",\\n \\\"telString\\\":\\\"15850781443\\\",\\n \\\"areaVid\\\":\\\"30511\\\",\\n \\\"ispVid\\\":\\\"3236139\\\",\\n \\\"carrier\\\":\\\"江苏移动\\\"\\n}\\n\",\"updateBy\":\"userName:admin | trueName:超级管理员\",\"updateTime\":\"2016-05-22 11:05:00.0\",\"url\":\"https://tcc.taobao.com/cc/json/mobile_tel_segment.html\",\"version\":\"1.0\"}','579ead79-4ff3-4b74-b70c-676db4618be4'),('db7b8056-c62e-4285-9d22-4ec0d148025b',0,'2016-08-26 09:42:29',0,'Interface','接口','UPDATE','admin','修改:CrapApi接口1-form表单参数、路径参数','{\"createTime\":\"2016-08-27 17:33:47.0\",\"errorList\":\"205010,\",\"errors\":\"[{\\\"createTime\\\":\\\"2016-03-31 20:14:20.0\\\",\\\"errorCode\\\":\\\"205010\\\",\\\"errorMsg\\\":\\\"购物车信息已经发生变化,请确认订单是否已经提交,或重新刷新\\\",\\\"id\\\":\\\"7ee682f9-54da-4363-88e0-7ada8c445e4b\\\",\\\"logRemark\\\":\\\"\\\",\\\"moduleId\\\":\\\"de2055f4-656a-495b-85dd-6591922bdf5d\\\",\\\"moduleName\\\":\\\"CrapApi\\\",\\\"sequence\\\":0,\\\"status\\\":1}]\",\"falseExam\":\"{\\n \\\"success\\\":1\\n}\\n\",\"header\":\"[{\\\"name\\\":\\\"uid\\\",\\\"necessary\\\":\\\"true\\\",\\\"type\\\":\\\"int\\\",\\\"def\\\":\\\"45\\\",\\\"remark\\\":\\\"用户ID\\\"},{\\\"name\\\":\\\"token\\\",\\\"necessary\\\":\\\"true\\\",\\\"type\\\":\\\"String\\\",\\\"def\\\":\\\"3dfefgeagceltenm2\\\",\\\"remark\\\":\\\"\\\"}]\",\"id\":\"a55a7e8d-7069-4c85-9c09-cdb45fe99099\",\"interfaceName\":\"CrapApi接口1-form表单参数、路径参数\",\"logRemark\":\"CrapApi接口1-form表单参数、路径参数\",\"method\":\"POST,GET,PUT,\",\"moduleId\":\"dfeda26d-8766-431f-9b90-f6e9f2947b25\",\"moduleName\":\"CrapApi公开、加密模块1\",\"moduleUrl\":\"http://api.crap1.cn\",\"param\":\"form=[{\\\"name\\\":\\\"uid\\\",\\\"necessary\\\":\\\"true\\\",\\\"type\\\":\\\"int\\\",\\\"def\\\":\\\"89\\\",\\\"remark\\\":\\\"3324\\\",\\\"inUrl\\\":\\\"false\\\"},{\\\"name\\\":\\\"test\\\",\\\"necessary\\\":\\\"true\\\",\\\"type\\\":\\\"String\\\",\\\"def\\\":\\\"aaa\\\",\\\"remark\\\":\\\"4535\\\",\\\"inUrl\\\":\\\"true\\\"}]\",\"projectId\":\"de2055f4-656a-495b-85dd-6591922bdf5d\",\"remark\":\"
接口说明,接口说明,接口说明,接口说明<\\/p>\",\"requestExam\":\"请求地址:http://api.crap1.cn/aaa/v1.do\\r\\n请求头:\\r\\n\\tuid=45\\r\\n\\ttoken=3dfefgeagceltenm2\\r\\n请求参数:\\r\\n\\tuid=89\\r\\n\",\"responseParam\":\"[{\\\"name\\\":\\\"success\\\",\\\"type\\\":\\\"int\\\",\\\"remark\\\":\\\"1:成功\\\"}]\",\"sequence\":100,\"status\":1,\"trueExam\":\"{\\n \\\"success\\\":1\\n}\\n\",\"updateBy\":\"userName:admin | trueName:超级管理员\",\"updateTime\":\"2016-08-27 17:42:00.0\",\"url\":\"/{test}/v122.do\",\"version\":\"V2.0\"}','a55a7e8d-7069-4c85-9c09-cdb45fe99099'),('e515d9da-fe96-4df2-931f-164c6e3f09a0',0,'2016-08-26 10:13:31',0,'Interface','接口','UPDATE','test@crap.cn','修改:接口1','{\"createTime\":\"2016-08-27 18:13:02.0\",\"errorList\":\"\",\"errors\":\"[]\",\"falseExam\":\"\",\"header\":\"[{\\\"name\\\":\\\"test\\\",\\\"necessary\\\":\\\"true\\\",\\\"type\\\":\\\"ttt\\\",\\\"def\\\":\\\"ttt\\\",\\\"remark\\\":\\\"ttt\\\"}]\",\"id\":\"a21003af-b510-4051-8dbb-88e7cec95a00\",\"interfaceName\":\"接口1\",\"logRemark\":\"接口1\",\"method\":\"GET,PUT,\",\"moduleId\":\"b10aca13-1dfe-499f-9259-f8a36d0eb7c6\",\"moduleName\":\"我的项目1\",\"moduleUrl\":\"\",\"param\":\"form=[]\",\"projectId\":\"b10aca13-1dfe-499f-9259-f8a36d0eb7c6\",\"remark\":\"\",\"requestExam\":\"请求地址:test\\r\\n请求头:\\r\\n\\ttest=ttt\\r\\n请求参数:\\r\\n\",\"responseParam\":\"[]\",\"sequence\":0,\"status\":1,\"trueExam\":\"\",\"updateBy\":\"userName:test@crap.cn | trueName:null\",\"updateTime\":\"2016-08-27 18:13:00.0\",\"url\":\"test\",\"version\":\"233\"}','a21003af-b510-4051-8dbb-88e7cec95a00'),('f24dd8d0-ccc3-4096-885c-23053dd08565',0,'2016-08-26 09:46:46',0,'Interface','接口','DELTET','admin','删除:11144','{\"createTime\":\"2016-06-07 18:56:09.0\",\"errorList\":\"\",\"errors\":\"[]\",\"falseExam\":\"\",\"header\":\"[]\",\"id\":\"24ade5c6-ad19-416c-83b7-daa96409435d\",\"interfaceName\":\"11144\",\"logRemark\":\"11144\",\"method\":\"POST,\",\"moduleId\":\"273b4e07-b2df-4d92-9855-8564694ece43\",\"moduleName\":\"种子列表\",\"moduleUrl\":\"test\",\"param\":\"form=[]\",\"projectId\":\"9e6596c1-9fda-4cd2-b20a-1cce7e572a65\",\"remark\":\"\",\"requestExam\":\"请求地址:11111\\r\\n\",\"responseParam\":\"[]\",\"sequence\":0,\"status\":1,\"trueExam\":\"\",\"updateBy\":\"userName:super | trueName:测试用户\",\"updateTime\":\"2016-06-06 18:11:00.0\",\"url\":\"1\",\"version\":\"1\"}','24ade5c6-ad19-416c-83b7-daa96409435d');
+/*!40000 ALTER TABLE `log` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `menu`
+--
+
+DROP TABLE IF EXISTS `menu`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `menu` (
+ `id` varchar(50) NOT NULL DEFAULT '导航菜单编号',
+ `menuName` varchar(50) NOT NULL COMMENT '菜单名称',
+ `menuUrl` varchar(100) DEFAULT NULL COMMENT '菜单链接',
+ `roleIds` varchar(512) DEFAULT NULL COMMENT '角色可见集合 (ID之间以逗号分隔)',
+ `parentId` varchar(50) DEFAULT '0',
+ `iconRemark` varchar(100) DEFAULT NULL,
+ `type` varchar(45) DEFAULT NULL COMMENT '前端菜单、后台菜单',
+ `createTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
+ `status` tinyint(4) NOT NULL DEFAULT '1',
+ `sequence` int(11) NOT NULL DEFAULT '0' COMMENT '排序,越大越靠前',
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `menu`
+--
+
+LOCK TABLES `menu` WRITE;
+/*!40000 ALTER TABLE `menu` DISABLE KEYS */;
+INSERT INTO `menu` VALUES ('0a2e84c9-f097-409d-a568-3f4fcb8d7575','错误码','','0,','0','','FRONT','2016-03-30 04:19:34',1,5),('0c560ac0-1124-4ad9-95ec-49f0bf7d94f7','后台配置的项目','#/9a483c5b-98cc-45da-9cdf-0d3e4c382e49/module/list','4444','1b35d3a5-57fc-4fc7-b458-918523c33042','444','FRONT','2016-03-30 04:19:34',1,0),('17a0bc3b-7b61-44e6-810d-f86acf37f1d8','CrapApi错误码','#/de2055f4-656a-495b-85dd-6591922bdf5d/error/list','','0a2e84c9-f097-409d-a568-3f4fcb8d7575','','FRONT','2016-03-30 04:19:34',1,0),('1b35d3a5-57fc-4fc7-b458-918523c33042','接口列表','','0,','0','','FRONT','2016-03-30 04:19:34',1,100),('2539e1e5-bc0e-4dc4-a27c-57658ce3c892','开源中国','http://www.oschina.net/p/crapapi','','0','','BOTTOM','2016-04-08 09:57:26',0,0),('28e9c99c-c365-41df-8591-771c4301157e','CrapBlog','http://blog.crap.cn/wordpress/','','0','','FRIEND','2016-04-14 15:39:56',0,0),('4b6883f5-4c62-4d96-8c8c-1918ed36d7af','技术文章推荐','http://api.crap.cn/index.do#/top/webPage/list/ARTICLE/%E6%8A%80%E6%9C%AF%E6%96%87%E6%A1%A3','','0','','TOP','2016-05-02 15:12:50',0,0),('504ae496-b480-4f03-9f81-15097c60ef38','商品管理','','','0','',NULL,'2016-04-22 10:26:11',0,0),('807926db-02a3-427c-91bb-3eb8d900f24f','CrapApi.V5','https://github.com/EhsanTang/CrapApi','','0','','FRIEND','2016-08-26 10:08:35',0,0),('92d94fa5-b98b-4397-89e2-a12f6df66aa1','项目帮助文档','http://api.crap.cn/index.do#/top/webPage/list/ARTICLE/%E5%B8%AE%E5%8A%A9%E6%96%87%E6%A1%A3','','0','','TOP','2016-04-08 09:26:36',0,0);
+/*!40000 ALTER TABLE `menu` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `module`
+--
+
+DROP TABLE IF EXISTS `module`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `module` (
+ `id` varchar(50) NOT NULL COMMENT '所属模块ID',
+ `name` varchar(100) NOT NULL COMMENT '所属模块名称',
+ `createTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
+ `status` tinyint(4) NOT NULL DEFAULT '1',
+ `password` varchar(20) DEFAULT NULL COMMENT '访问密码',
+ `sequence` int(11) NOT NULL DEFAULT '0' COMMENT '排序,越大越靠前',
+ `url` varchar(100) NOT NULL DEFAULT '' COMMENT '模块地址',
+ `canDelete` tinyint(4) NOT NULL DEFAULT '1' COMMENT '1:可删除,0:不可删除',
+ `remark` varchar(200) NOT NULL DEFAULT '' COMMENT '备注',
+ `userId` varchar(50) NOT NULL DEFAULT '',
+ `projectId` varchar(50) NOT NULL DEFAULT '',
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `module`
+--
+
+LOCK TABLES `module` WRITE;
+/*!40000 ALTER TABLE `module` DISABLE KEYS */;
+INSERT INTO `module` VALUES ('063578aa-785f-42b8-bd1b-e3061ef45a2f','示例模块(访问密码123)','2016-03-30 12:21:03',1,'123',0,'',1,'','','9e6596c1-9fda-4cd2-b20a-1cce7e572a65'),('189d073c-b4ea-4e50-a1c1-f66ec1da1dd4','示例模块','2016-03-30 12:21:03',1,'',0,'',1,'','','9e6596c1-9fda-4cd2-b20a-1cce7e572a65'),('5c52ebf8-58ac-447c-9b40-5744dad44fd4','CrapApi公开、不加密模块2','2016-08-26 08:57:47',1,'',10,'',0,'CrapApi不加密模块,没有模块地址','6e8af9da-ed79-4342-9eca-591ccb4ea658','de2055f4-656a-495b-85dd-6591922bdf5d'),('62bde6e0-988b-475f-bfdf-76203455ec57','常用免费常用接口','2016-03-30 12:21:03',1,'',0,'',1,'','','62bde6e0-988b-475f-bfdf-76203455ec57'),('9a483c5b-98cc-45da-9cdf-0d3e4c382e49','CrapApi文件目录2','2016-08-26 09:56:12',1,'',10,'',0,'CrapApi文件目录2','6e8af9da-ed79-4342-9eca-591ccb4ea658','9a483c5b-98cc-45da-9cdf-0d3e4c382e49'),('9d526c4a-9433-4bdb-86f2-1cbf4196dfbb','CrapApi私有加密模块1','2016-08-26 08:59:12',2,'123',0,'',0,'访问密码:123','6e8af9da-ed79-4342-9eca-591ccb4ea658','de2055f4-656a-495b-85dd-6591922bdf5d'),('9e6596c1-9fda-4cd2-b20a-1cce7e572a65','示例项目','2016-03-30 12:21:03',1,'',0,'test',1,'','','9e6596c1-9fda-4cd2-b20a-1cce7e572a65'),('b10aca13-1dfe-499f-9259-f8a36d0eb7c6','我的项目1','2016-08-26 10:12:14',1,'',0,'',0,'我的项目1我的项目1我的项目1','fa700eff-ec67-47f7-b10c-1cde41d9befa','b10aca13-1dfe-499f-9259-f8a36d0eb7c6'),('c2eef5a3-76db-4690-8da9-0760e799b02f','CrapApi文件目录1','2016-08-26 09:55:52',1,'123',0,'',0,'CrapApi文件目录1,密码123','6e8af9da-ed79-4342-9eca-591ccb4ea658','c2eef5a3-76db-4690-8da9-0760e799b02f'),('c8b0ec41-e6b9-4f36-b986-963fa44715a9','测试模块','2016-05-25 09:09:31',1,'',0,'',1,'','','9e6596c1-9fda-4cd2-b20a-1cce7e572a65'),('de2055f4-656a-495b-85dd-6591922bdf5d','CrapApi','2016-06-06 20:08:28',1,'',10,'http://api.crap1.cn',1,'CrapApi测试接口','','de2055f4-656a-495b-85dd-6591922bdf5d'),('dfeda26d-8766-431f-9b90-f6e9f2947b25','CrapApi公开、加密模块1','2016-08-26 08:56:52',1,'123',9,'http://api.crap1.cn',0,'加密模块,模块地址:http://api.crap.cn\n密码123','6e8af9da-ed79-4342-9eca-591ccb4ea658','de2055f4-656a-495b-85dd-6591922bdf5d'),('web','站点默认模块','2016-03-30 20:21:03',1,NULL,0,'',0,'','','web');
+/*!40000 ALTER TABLE `module` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `project`
+--
+
+DROP TABLE IF EXISTS `project`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `project` (
`id` varchar(50) NOT NULL COMMENT '项目ID',
`name` varchar(100) NOT NULL COMMENT '项目名称',
`createTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
- `status` tinyint(4) NOT NULL DEFAULT '1',
+ `status` tinyint(4) NOT NULL DEFAULT '1' COMMENT '2:推荐项目,3,管理员管理项目,4,管理管理&推荐项目',
`sequence` int(11) NOT NULL DEFAULT '0' COMMENT '排序,越大越靠前',
`remark` varchar(200) NOT NULL DEFAULT '' COMMENT '备注',
`userId` varchar(50) NOT NULL DEFAULT '',
`type` tinyint(4) NOT NULL DEFAULT '1' COMMENT '1:私有项目,2公开项目,3公开推荐',
+ `password` varchar(45) DEFAULT NULL,
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `project`
+--
+
+LOCK TABLES `project` WRITE;
+/*!40000 ALTER TABLE `project` DISABLE KEYS */;
+INSERT INTO `project` VALUES ('62bde6e0-988b-475f-bfdf-76203455ec57','常用免费常用接口','2016-03-30 12:21:03',1,0,'','',1,''),('9a483c5b-98cc-45da-9cdf-0d3e4c382e49','CrapApi文件目录2','2016-08-26 09:56:12',2,10,'CrapApi文件目录2','6e8af9da-ed79-4342-9eca-591ccb4ea658',2,''),('9e6596c1-9fda-4cd2-b20a-1cce7e572a65','示例项目','2016-03-30 12:21:03',1,0,'','',1,''),('b10aca13-1dfe-499f-9259-f8a36d0eb7c6','我的项目1','2016-08-26 10:12:14',1,0,'我的项目1我的项目1我的项目1','fa700eff-ec67-47f7-b10c-1cde41d9befa',1,''),('c2eef5a3-76db-4690-8da9-0760e799b02f','CrapApi文件目录1','2016-08-26 09:55:52',1,0,'CrapApi文件目录1,密码123','6e8af9da-ed79-4342-9eca-591ccb4ea658',1,'123'),('de2055f4-656a-495b-85dd-6591922bdf5d','CrapApi','2016-06-06 20:08:28',1,10,'CrapApi测试接口','',1,''),('web','站点默认项目','2016-10-03 23:02:10',0,1,'站点默认项目,请勿删除','admin',1,NULL);
+/*!40000 ALTER TABLE `project` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `project_user`
+--
+
+DROP TABLE IF EXISTS `project_user`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `project_user` (
+ `id` varchar(50) NOT NULL,
+ `status` tinyint(4) NOT NULL DEFAULT '1',
+ `sequence` int(11) NOT NULL DEFAULT '0',
+ `createTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
+ `projectId` varchar(50) NOT NULL,
+ `userId` varchar(50) NOT NULL,
+ `addModule` bit(1) NOT NULL DEFAULT b'1' COMMENT '是否可以添加模块',
+ `delModule` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否可以删除模块',
+ `modModule` bit(1) NOT NULL DEFAULT b'1' COMMENT '是否可是修改模块',
+ `addInter` bit(1) NOT NULL DEFAULT b'1' COMMENT '是否可以添加接口',
+ `delInter` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否可以删除接口',
+ `modInter` bit(1) NOT NULL DEFAULT b'1' COMMENT '是否可以修改接口',
+ `addArticle` bit(1) NOT NULL DEFAULT b'1' COMMENT '是否可以添加文章',
+ `delArticle` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否可以删除文章',
+ `modArticle` bit(1) NOT NULL DEFAULT b'1' COMMENT '是否可以修改文章',
+ `addSource` bit(1) NOT NULL DEFAULT b'1' COMMENT '是否可以添加资源',
+ `delSource` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否可以删除资源',
+ `modSource` bit(1) NOT NULL DEFAULT b'1' COMMENT '是否可以修改资源',
+ `addDict` bit(1) NOT NULL DEFAULT b'1' COMMENT '是否可以添加数据字典',
+ `delDict` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否可以删除数据字典',
+ `modDict` bit(1) NOT NULL DEFAULT b'1' COMMENT '是否可以修改数据字典',
+ `userEmail` varchar(45) DEFAULT NULL,
+ `userName` varchar(50) DEFAULT NULL,
+ `addError` bit(1) NOT NULL DEFAULT b'1' COMMENT '是否可以添加错误码',
+ `delError` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否可以删除错误码',
+ `modError` bit(1) NOT NULL DEFAULT b'1' COMMENT '是否可以修改错误码',
+ PRIMARY KEY (`id`),
+ UNIQUE KEY `project_user` (`userId`,`projectId`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `project_user`
+--
+
+LOCK TABLES `project_user` WRITE;
+/*!40000 ALTER TABLE `project_user` DISABLE KEYS */;
+/*!40000 ALTER TABLE `project_user` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `role`
+--
+
+DROP TABLE IF EXISTS `role`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `role` (
+ `id` varchar(50) NOT NULL COMMENT '角色ID',
+ `roleName` varchar(50) NOT NULL COMMENT '角色名称',
+ `auth` text NOT NULL,
+ `authName` text,
+ `createTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
+ `status` tinyint(4) NOT NULL DEFAULT '1',
+ `sequence` int(11) NOT NULL DEFAULT '0' COMMENT '排序,越大越靠前',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
-ALTER TABLE `datacenter`
-RENAME TO `module` ;
+--
+-- Dumping data for table `role`
+--
-ALTER TABLE `module`
-DROP COLUMN `type`,
-DROP INDEX `TYPE` ;
+LOCK TABLES `role` WRITE;
+/*!40000 ALTER TABLE `role` DISABLE KEYS */;
+INSERT INTO `role` VALUES ('ee479a4b-f445-4130-a295-572e6126ec96','test','MODULE_de2055f4-656a-495b-85dd-6591922bdf5d,INTERFACE_de2055f4-656a-495b-85dd-6591922bdf5d,ERROR_de2055f4-656a-495b-85dd-6591922bdf5d,DICTIONARY_de2055f4-656a-495b-85dd-6591922bdf5d,ARTICLE_top,5a459a29-0932-4ef3-b907-579931b432d5,87534e09-1636-45fd-92a2-b5b90f5da58b,5891d916-a05d-4864-8c05-f8a844e71dd9,2b2292d5-0fb0-4d63-97cc-ce3a48d83fb0,3384cd9c-ff39-41b4-b5fc-84044fad6d30,4a8eee1c-4863-41f3-9ba8-d11c255de46f,5358c830-7a24-46d8-924e-ff47f3e8fb01,de6f4d42-bf2e-4e1b-a0b8-a706cf24addb,','CrapApi【模块】,CrapApi【接口】,CrapApi【错误码】,CrapApi,文章,网站页面&文章管理【菜单】,数据字典管理【菜单】,系统设置【菜单】,用户管理【菜单】,角色管理【菜单】,项目&模块&接口管理【菜单】,菜单管理【菜单】,错误码管理【菜单】,','2016-03-30 12:22:07',1,0);
+/*!40000 ALTER TABLE `role` ENABLE KEYS */;
+UNLOCK TABLES;
-ALTER TABLE `source`
-CHANGE COLUMN `directoryId` `moduleId` VARCHAR(50) NOT NULL DEFAULT '0' COMMENT '模块ID' ;
+--
+-- Table structure for table `setting`
+--
-ALTER TABLE `webpage`
-RENAME TO `article` ;
+DROP TABLE IF EXISTS `setting`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `setting` (
+ `id` varchar(50) NOT NULL DEFAULT '',
+ `mkey` varchar(20) NOT NULL,
+ `value` varchar(500) NOT NULL,
+ `remark` text,
+ `createTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
+ `status` tinyint(4) NOT NULL DEFAULT '1',
+ `type` varchar(10) NOT NULL DEFAULT 'TEXT' COMMENT '设置类型(IMAGE,LINK,TEXT)',
+ `canDelete` tinyint(4) NOT NULL DEFAULT '0' COMMENT '1:可删除,0:不可删除',
+ `sequence` int(11) NOT NULL DEFAULT '0' COMMENT '排序,越大越靠前',
+ PRIMARY KEY (`id`),
+ UNIQUE KEY `key` (`mkey`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
-UPDATE `module` SET `id`='web',`projectId`='web',`name`='站点默认模块', `parentId`='web' WHERE `id`='0';
+--
+-- Dumping data for table `setting`
+--
-INSERT INTO `project` (`id`, `name`, `createTime`, `status`, `sequence`, `remark`, `userId`, `type`) VALUES ('web', '站点默认项目', '2016-10-04 23:02:10', '0', '1', '站点默认项目,请勿删除', 'admin', '1');
+LOCK TABLES `setting` WRITE;
+/*!40000 ALTER TABLE `setting` DISABLE KEYS */;
+INSERT INTO `setting` VALUES ('062f01ae-e50b-4dd3-808b-b4a6d65eeadc','LOGO','http://api.crap.cn/resources/upload/images/2016-04-27/231357cAgbyp.png','网站主logo,可以直接在value中填写绝对链接地址,也可以自行上传图片','2016-03-30 12:23:18',1,'IMAGE',0,90),('8a95bc2f-ea61-4dd6-8163-d9c520b28181','VISITCODE','true','游客访问私密模块输入密码的同时是否需要输入图像验证码?true为需要,其他为不需要','2016-04-01 18:07:14',0,'TEXT',0,90),('98ecca1b-f762-4cd3-831a-4042b36419d8','VERIFICATIONCODE','true','是否开启安全登录?ture为开启,其他为不开启,开启后登录将需要输入图片验证码','2016-04-01 18:07:58',0,'TEXT',0,90),('b97a3a75-c1c3-42cc-b944-8fb5ac5c5f49','SECRETKEY','crapApiKey','秘钥,用于cookie加密等','2016-04-01 01:04:40',0,'TEXT',0,90),('de94c622-02fc-4b39-9cc5-0c24870ac21f','TITLE','CrapApi|Api接口管理系统','站点标题','2016-03-31 19:09:13',1,'TEXT',0,90),('e0dec957-5043-4c6e-9225-960fbc401116','ICON','http://api2.crap.cn/resources/upload/images/2016-04-04/063633hG35aC.ico','站点ICON图标(浏览器标题栏图标)','2016-03-31 19:49:41',1,'IMAGE',0,100),('e2a493a7-c4f0-4cbb-832f-4495a7074252','LOGINBG','https://dn-coding-net-production-static.qbox.me/d58141c9-9a0c-40b0-a408-5935fd70670f.jpg','登陆背景图','2016-08-26 08:02:28',1,'IMAGE',0,100),('e2a493a7-c888-4cbb-832f-4495a7074252','TITLEBG','resources/images/project.jpg','头部标题背景图:resources/images/project.jpg,为空则显示主色调','2016-08-26 08:02:28',1,'IMAGE',0,100),('ecd676c2-0b04-4b4a-a049-4a825221a6d0','BG_COLOR','#f7f7f7','前端显示背景颜色','2016-04-29 13:07:37',1,'COLOR',0,99),('ef157b7f-cc53-4a41-9679-d243d478023d','COMMENTCODE','true','游客评论是否需要输入验证码','2016-04-15 22:47:29',1,'TEXT',0,90),('f1c8dc8b-9cd8-4839-b38a-1cea3ceb3942','MAX_WIDTH','1100','前端显示最大宽度(数字,建议:900-1200)','2016-04-29 13:07:37',1,'TEXT',0,90),('foc8dc8b-9cd8-4839-b38a-1cea3ceb3942','FOOTER_BG_COLOR','#000000','前端顶部、底部颜色 #383942','2016-04-29 13:07:37',1,'COLOR',0,91),('fpc8dc8b-9cd8-4839-b38a-1cea3ceb3942','FOOTER_COLOR','#a9a9a9','前端顶部、底部字体颜色 #a9a9a9','2016-04-29 13:07:37',1,'COLOR',0,98),('fpmbdc00-9cd8-4839-b38a-1cea3ceb3945','LUCENE_DIR','/usr/local/crap/lucene','Lucene全文检索文件存储地址','2016-06-07 13:07:37',1,'TEXT',0,22),('fpmbdc8b-9cd8-4839-b38a-1cea3ceb3942','MAIN_COLOR','#407aaa','网站主色调,默认#CC6699 #007742','2016-04-29 13:07:37',1,'COLOR',0,97),('fpmbdc8b-9cd8-4839-b38a-1cea3ceb3945','FONT_FAMILY','\"Lantinghei SC\", \"Open Sans\", Arial, \"Hiragino Sans GB\", \"Microsoft YaHei\", \"STHeiti\", \"WenQuanYi Micro Hei\", SimSun, sans-serif;','网站字体','2016-06-07 13:07:37',1,'FONTFAMILY',0,77),('fpmbdc8b-9cd8-4839-b38a-1cea3ceb3999','ADORN_COLOR','#1c4c22','装饰背景颜色:左侧导航条背景颜色 #1c2034','2016-06-07 13:07:37',1,'COLOR',0,26);
+/*!40000 ALTER TABLE `setting` ENABLE KEYS */;
+UNLOCK TABLES;
-UPDATE `article` SET `moduleId`='web' WHERE `moduleId`='top';
+--
+-- Table structure for table `source`
+--
-ALTER TABLE `module`
-DROP COLUMN `parentId`;
+DROP TABLE IF EXISTS `source`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `source` (
+ `id` varchar(50) NOT NULL,
+ `createTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
+ `sequence` int(11) NOT NULL DEFAULT '0',
+ `status` tinyint(4) NOT NULL DEFAULT '1',
+ `name` varchar(100) NOT NULL COMMENT '资源名称',
+ `updateTime` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `moduleId` varchar(50) NOT NULL DEFAULT '0' COMMENT '模块ID',
+ `remark` varchar(5000) NOT NULL DEFAULT '' COMMENT '备注',
+ `filePath` varchar(200) NOT NULL DEFAULT '' COMMENT '文件目录',
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
-ALTER TABLE `project`
-ADD COLUMN `password` VARCHAR(45) NULL AFTER `type`;
+--
+-- Dumping data for table `source`
+--
-ALTER TABLE `article`
-DROP COLUMN `password`;
+LOCK TABLES `source` WRITE;
+/*!40000 ALTER TABLE `source` DISABLE KEYS */;
+INSERT INTO `source` VALUES ('8242cd49-8033-47fc-afae-75612c25cd98','2016-08-26 09:59:19',0,0,'165909EReCgf.CAV.qFjnfI.2 (1).pdf','2016-08-26 09:59:47','c2eef5a3-76db-4690-8da9-0760e799b02f','面试题 2:实现单例模式 \n1.饿汉式单例类 \npublic class SingletonClass{ \n private static final SingletonClass instance=new SingletonClass(); \n //私有构造函数 \n private SingletonClass(){} \n public static SingletonClass getInstance(){ \n return instance; \n} \n} \n2.懒汉式单例模式 \npublic class SingletonClass{ \n private static SingletonClass instance=null; \n //私有构造函数 \n private SingletonClass(){} \n public synchronized static SingletonClass getInstance(){ \n if(instance==null){ \n instance=new SingletonClass(); \n} \nreturn instance; \n} \n} \n面试题 3:二维数组中的查找 \n题目描述:一个二维数组,每一行从左到右递增,每一列从上到下递增.输\n入一个二维数组和一个整数,判断数组中是否含有整数。 \npublic class Find{ \npublic static boolean find(int[][] array,int number){ \nif(array==null){ \n return false; \n} \n int column=array[0].length-1; \nint row=0; \nwhile (row