{"id":21008899,"url":"https://github.com/easin/itmuch-platform","last_synced_at":"2026-04-27T19:03:05.959Z","repository":{"id":85788822,"uuid":"96263113","full_name":"easin/itmuch-platform","owner":"easin","description":"转自周立","archived":false,"fork":false,"pushed_at":"2017-07-05T01:16:12.000Z","size":92999,"stargazers_count":1,"open_issues_count":0,"forks_count":2,"subscribers_count":1,"default_branch":"master","last_synced_at":"2026-03-01T08:40:30.644Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/easin.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-07-05T01:04:21.000Z","updated_at":"2019-11-15T16:08:00.000Z","dependencies_parsed_at":"2023-03-04T14:00:34.587Z","dependency_job_id":null,"html_url":"https://github.com/easin/itmuch-platform","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/easin/itmuch-platform","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/easin%2Fitmuch-platform","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/easin%2Fitmuch-platform/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/easin%2Fitmuch-platform/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/easin%2Fitmuch-platform/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/easin","download_url":"https://codeload.github.com/easin/itmuch-platform/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/easin%2Fitmuch-platform/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32350244,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-27T17:12:42.749Z","status":"ssl_error","status_checked_at":"2026-04-27T17:12:41.658Z","response_time":128,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-19T09:14:21.643Z","updated_at":"2026-04-27T19:03:05.953Z","avatar_url":"https://github.com/easin.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 文档:\n详见doc目录, 都是图文教程, 非常详细.\n\n# 项目截图\n- 单点登录\n\n![单点登录](http://git.oschina.net/uploads/images/2015/0923/102204_15cead43_347469.png \"单点登录\")\n\n- 用户管理\n\n![用户管理](http://git.oschina.net/uploads/images/2015/0923/102227_ef9f6957_347469.png \"用户管理\")\n\n- 菜单管理\n\n![菜单管理](http://git.oschina.net/uploads/images/2015/0923/102257_b3528e2b_347469.png \"菜单管理\")\n\n- 数据源监控\n\n![数据源监控](http://git.oschina.net/uploads/images/2015/0923/102329_32203210_347469.png \"数据源监控\")\n\n- 项目监控\n\n![项目监控](http://git.oschina.net/uploads/images/2015/0923/102406_132f0539_347469.png \"项目监控\")\n\n- CXF\n\n![CXF](http://git.oschina.net/uploads/images/2015/0923/102422_1a433d79_347469.png \"CXF\")\n\n#技术选型:\n## 前端\n- JS框架: jQuery\n- 后台控件: EasyUI\n- 表单序列化: jquery.serializeJSON(序列化表单为json)\n- 上传组件: Uploadify [准备换用HTML5的上传]\n\n## 后端\n- 核心框架: Spring Framework 4.x\n- 安全框架: Apache Shiro 1.2.4\n- MVC框架: Spring MVC 4.x\n- 单点登录：Jasig Cas 4.0.4\n- 持久层框架: MyBatis 3.3.0\n- NOSQL: MongoDB(目前用于记录日志)\n- 缓存: Ehcache、Redis\n- Web Service: CXF\n- 程序监控：Javamelody\n- 日志管理: slf4j门面、logback实现\n- 工具类: Dozer(对象转换与映射)、guava(集合API)\n- 服务端验证: Hibernate Validator 5.x(JSR349)\n- 数据库连接池: Alibaba Druid\n\n## 支持平台\n- JDK版本:支持jdk1.7及以上(如无需cxf的restful，可使用jdk1.6+)\n- Web容器: 支持Tomcat6+、Jboss7、WebLogic10、WebSphere8、jetty等。\n- 数据库支持: Oracle、mysql\n- 开发环境: Eclipse、Maven、Git\n\n# 各模块的规划\n- code-generator:代码生成器, 用于生成Mybatis的代码;\n- itmuch-core:公共组件,包括常用的工具类/BaseService/BaseMapper等;\n- platform-parent/platform-biz:项目中的Model(包含:service/dao等);\n- platform-parent/platform-war:项目的后台(包含后台的controller/页面视图等)\n- platform-parent/platform-search:搜索引擎，封装了solrj\n- platform-parent/platform-webservice:cxf\n- jasig-cas:单点登录\n\n# 项目特点\n##后端\n- 分页可插拔(mybatis pagehelper), 并进行扩展, 排序防注入\n- 异常统一控制, 所有异常只需throw, 无需自行处理\n\u003e 99%的情况下, 如果try...catch...这种代码, 说明你的设计有问题. \n\u003e 封装内容详见: com.itmuch.core.web.servlet.handler.CustomSimpleMappingExceptionResolver\n- JSR349的后端校验\n- 生成mybatis代码(扩展自mybatis-generator): 实体带注释, xxMapper.xml生成基础的增删改查\n- 基于shiro的、精确到按钮的细粒度的权限划分\n- 无侵入可插拔的MongoDB日志,对使用者透明,打印日志和之前无任何区别\n\n## 其他\n- rest风格的url\n\n#实现功能\n## 登录\n- 基于jasig cas的单点登录\n- 基于shiro自身的登录\n\n## 基础功能\n- 地区管理\n- 机构管理\n- 权限管理\n- 角色管理\n- 用户管理\n\n## 监控\n- 系统监控: 使用JavaMelody\n- 日志记录: 使用MongoDB\n- 数据源监控: 使用Druid\n\n## 存在问题\n- CXF可能存在线程安全问题: 待测试, http://www.blogjava.net/aoxj/archive/2009/07/27/288548.html\n\n# 捐助\n![输入图片说明](http://git.oschina.net/uploads/images/2015/0826/164830_e2b7a39c_347469.png \"在这里输入图片标题\")","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feasin%2Fitmuch-platform","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Feasin%2Fitmuch-platform","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feasin%2Fitmuch-platform/lists"}