├── .classpath ├── .project ├── .settings ├── .jsdtscope ├── org.eclipse.jdt.core.prefs ├── org.eclipse.m2e.core.prefs ├── org.eclipse.wst.common.component ├── org.eclipse.wst.common.project.facet.core.xml ├── org.eclipse.wst.jsdt.ui.superType.container ├── org.eclipse.wst.jsdt.ui.superType.name └── org.eclipse.wst.validation.prefs ├── README.md ├── pom.xml ├── src └── main │ ├── java │ └── cn │ │ └── tedu │ │ └── ttms │ │ ├── attachment │ │ ├── controller │ │ │ └── AttachmentController.java │ │ ├── dao │ │ │ └── AttachmentDao.java │ │ ├── entity │ │ │ └── Attachment.java │ │ └── service │ │ │ ├── AttachmentService.java │ │ │ └── impl │ │ │ └── AttachmentServiceImpl.java │ │ ├── common │ │ ├── controller │ │ │ └── IndexController.java │ │ ├── dao │ │ │ └── BaseDao.java │ │ ├── exception │ │ │ ├── ControllerExceptionHandler.java │ │ │ └── ServiceException.java │ │ ├── service │ │ │ ├── SysShiroService.java │ │ │ └── impl │ │ │ │ ├── ShiroUserRealm.java │ │ │ │ └── SysShiroServiceImpl.java │ │ ├── util │ │ │ └── StringUtil.java │ │ └── web │ │ │ ├── JsonDateTypeConvert.java │ │ │ ├── JsonResult.java │ │ │ └── PageObject.java │ │ ├── product │ │ ├── controller │ │ │ ├── ProductTypeController.java │ │ │ ├── ProjectController.java │ │ │ └── TeamController.java │ │ ├── dao │ │ │ ├── ProductTypeDao.java │ │ │ ├── ProjectDao.java │ │ │ └── TeamDao.java │ │ ├── entity │ │ │ ├── ProductType.java │ │ │ ├── Project.java │ │ │ └── Team.java │ │ └── service │ │ │ ├── ProductTypeService.java │ │ │ ├── ProjectService.java │ │ │ ├── TeamService.java │ │ │ └── impl │ │ │ ├── ProductTypeServiceImpl.java │ │ │ ├── ProjectServiceImpl.java │ │ │ └── TeamServiceImpl.java │ │ └── system │ │ ├── controller │ │ ├── SysLoginController.java │ │ ├── SysMenuController.java │ │ ├── SysRoleController.java │ │ └── SysUserController.java │ │ ├── dao │ │ ├── SysMenuDao.java │ │ ├── SysRoleDao.java │ │ ├── SysRoleMenuDao.java │ │ ├── SysUserDao.java │ │ └── SysUserRoleDao.java │ │ ├── entity │ │ ├── Organization.java │ │ ├── SysMenu.java │ │ ├── SysRole.java │ │ ├── SysRoleMenu.java │ │ ├── SysUser.java │ │ └── SysUserRole.java │ │ └── service │ │ ├── SysMenuService.java │ │ ├── SysRoleService.java │ │ ├── SysUserService.java │ │ └── impl │ │ ├── SysMenuServiceImpl.java │ │ ├── SysRoleServiceImpl.java │ │ └── SysUserServiceImpl.java │ ├── resources │ ├── config.properties │ ├── log4j2.xml │ ├── mapper │ │ ├── attachement │ │ │ └── AttchmentMapper.xml │ │ ├── product │ │ │ ├── ProductTypeMapper.xml │ │ │ ├── ProjectMapper.xml │ │ │ └── TeamMapper.xml │ │ └── system │ │ │ ├── SysMenuMapper.xml │ │ │ ├── SysRoleMapper.xml │ │ │ ├── SysRoleMenuMapper.xml │ │ │ ├── SysUserMapper.xml │ │ │ └── SysUserRoleMapper.xml │ ├── mybatis-config.xml │ ├── spring-mvc.xml │ ├── spring-mybatis.xml │ └── spring-shiro.xml │ └── webapp │ ├── WEB-INF │ ├── pages │ │ ├── attachment │ │ │ └── attachment.jsp │ │ ├── common │ │ │ └── page.jsp │ │ ├── error.jsp │ │ ├── footer.jsp │ │ ├── header.jsp │ │ ├── index.jsp │ │ ├── left.jsp │ │ ├── login.jsp │ │ ├── product │ │ │ ├── project_edit.jsp │ │ │ ├── project_list.jsp │ │ │ ├── team_edit.jsp │ │ │ ├── team_list.jsp │ │ │ ├── type_edit.jsp │ │ │ └── type_list.jsp │ │ └── system │ │ │ ├── menu_edit.jsp │ │ │ ├── menu_list.jsp │ │ │ ├── role_edit.jsp │ │ │ ├── role_list.jsp │ │ │ ├── user_edit.jsp │ │ │ └── user_list.jsp │ └── web.xml │ ├── bootstrap │ ├── css │ │ ├── all-skins.min.css │ │ ├── bootstrap-datepicker.min.css │ │ ├── bootstrap-responsive.min.css │ │ ├── bootstrap-table.min.css │ │ ├── bootstrap.min.css │ │ ├── font-awesome.min.css │ │ └── main.css │ ├── fonts │ │ ├── FontAwesome.otf │ │ ├── fontawesome-webfont.eot │ │ ├── fontawesome-webfont.svg │ │ ├── fontawesome-webfont.ttf │ │ ├── fontawesome-webfont.woff │ │ ├── fontawesome-webfont.woff2 │ │ ├── glyphicons-halflings-regular.eot │ │ ├── glyphicons-halflings-regular.svg │ │ ├── glyphicons-halflings-regular.ttf │ │ ├── glyphicons-halflings-regular.woff │ │ └── glyphicons-halflings-regular.woff2 │ ├── js │ │ ├── ajaxupload.js │ │ ├── bootstrap-datepicker.min.js │ │ ├── bootstrap-table.min.js │ │ ├── bootstrap.min.js │ │ └── router.js │ └── plugins │ │ ├── jqgrid │ │ ├── grid.locale-cn.js │ │ ├── jquery.jqGrid.min.js │ │ ├── ui.jqgrid-bootstrap-ui.css │ │ ├── ui.jqgrid-bootstrap.css │ │ └── ui.jqgrid.css │ │ ├── layer │ │ ├── layer.js │ │ ├── mobile │ │ │ ├── layer.js │ │ │ └── need │ │ │ │ └── layer.css │ │ └── skin │ │ │ ├── default │ │ │ ├── icon-ext.png │ │ │ ├── icon.png │ │ │ ├── layer.css │ │ │ ├── loading-0.gif │ │ │ ├── loading-1.gif │ │ │ └── loading-2.gif │ │ │ └── moon │ │ │ ├── default.png │ │ │ └── style.css │ │ ├── treegrid │ │ ├── img │ │ │ ├── collapse.png │ │ │ ├── expand.png │ │ │ ├── file.png │ │ │ └── folder.png │ │ ├── jquery.treegrid.bootstrap3.js │ │ ├── jquery.treegrid.css │ │ ├── jquery.treegrid.extension.js │ │ ├── jquery.treegrid.min.js │ │ └── tree.table.js │ │ └── ztree │ │ ├── css │ │ ├── awesomeStyle │ │ │ ├── awesome.css │ │ │ ├── awesome.less │ │ │ ├── fa.less │ │ │ └── img │ │ │ │ └── loading.gif │ │ ├── metroStyle │ │ │ ├── img │ │ │ │ ├── line_conn.png │ │ │ │ ├── loading.gif │ │ │ │ ├── metro.gif │ │ │ │ └── metro.png │ │ │ └── metroStyle.css │ │ └── zTreeStyle │ │ │ ├── img │ │ │ ├── diy │ │ │ │ ├── 1_close.png │ │ │ │ ├── 1_open.png │ │ │ │ ├── 2.png │ │ │ │ ├── 3.png │ │ │ │ ├── 4.png │ │ │ │ ├── 5.png │ │ │ │ ├── 6.png │ │ │ │ ├── 7.png │ │ │ │ ├── 8.png │ │ │ │ └── 9.png │ │ │ ├── line_conn.gif │ │ │ ├── loading.gif │ │ │ ├── zTreeStandard.gif │ │ │ └── zTreeStandard.png │ │ │ └── zTreeStyle.css │ │ └── jquery.ztree.all.min.js │ ├── dist │ ├── css │ │ ├── AdminLTE.css │ │ ├── AdminLTE.min.css │ │ ├── alt │ │ │ ├── AdminLTE-bootstrap-social.css │ │ │ ├── AdminLTE-bootstrap-social.min.css │ │ │ ├── AdminLTE-fullcalendar.css │ │ │ ├── AdminLTE-fullcalendar.min.css │ │ │ ├── AdminLTE-select2.css │ │ │ ├── AdminLTE-select2.min.css │ │ │ ├── AdminLTE-without-plugins.css │ │ │ └── AdminLTE-without-plugins.min.css │ │ ├── ionicons.min.css │ │ └── skins │ │ │ ├── _all-skins.css │ │ │ ├── _all-skins.min.css │ │ │ ├── skin-black-light.css │ │ │ ├── skin-black-light.min.css │ │ │ ├── skin-black.css │ │ │ ├── skin-black.min.css │ │ │ ├── skin-blue-light.css │ │ │ ├── skin-blue-light.min.css │ │ │ ├── skin-blue.css │ │ │ ├── skin-blue.min.css │ │ │ ├── skin-green-light.css │ │ │ ├── skin-green-light.min.css │ │ │ ├── skin-green.css │ │ │ ├── skin-green.min.css │ │ │ ├── skin-purple-light.css │ │ │ ├── skin-purple-light.min.css │ │ │ ├── skin-purple.css │ │ │ ├── skin-purple.min.css │ │ │ ├── skin-red-light.css │ │ │ ├── skin-red-light.min.css │ │ │ ├── skin-red.css │ │ │ ├── skin-red.min.css │ │ │ ├── skin-yellow-light.css │ │ │ ├── skin-yellow-light.min.css │ │ │ ├── skin-yellow.css │ │ │ └── skin-yellow.min.css │ ├── img │ │ ├── avatar.png │ │ ├── avatar04.png │ │ ├── avatar2.png │ │ ├── avatar3.png │ │ ├── avatar5.png │ │ ├── boxed-bg.jpg │ │ ├── boxed-bg.png │ │ ├── credit │ │ │ ├── american-express.png │ │ │ ├── cirrus.png │ │ │ ├── mastercard.png │ │ │ ├── mestro.png │ │ │ ├── paypal.png │ │ │ ├── paypal2.png │ │ │ └── visa.png │ │ ├── default-50x50.gif │ │ ├── icons.png │ │ ├── logo.png │ │ ├── photo1.png │ │ ├── photo2.png │ │ ├── photo3.jpg │ │ ├── photo4.jpg │ │ ├── user1-128x128.jpg │ │ ├── user2-160x160.jpg │ │ ├── user3-128x128.jpg │ │ ├── user4-128x128.jpg │ │ ├── user5-128x128.jpg │ │ ├── user6-128x128.jpg │ │ ├── user7-128x128.jpg │ │ └── user8-128x128.jpg │ └── js │ │ ├── app.js │ │ ├── app.min.js │ │ ├── demo.js │ │ └── pages │ │ ├── dashboard.js │ │ └── dashboard2.js │ ├── images │ ├── logo.png │ └── logo01.png │ ├── jquery │ ├── jquery-3.2.1.min.js │ ├── jquery-ui.min.js │ ├── jquery.form.js │ └── jquery.validate.min.js │ └── ttms │ ├── attach │ └── attach.js │ ├── common │ ├── index.js │ └── page.js │ ├── product │ ├── project_edit.js │ ├── project_list.js │ ├── team_edit.js │ ├── team_list.js │ ├── type_edit.js │ └── type_list.js │ └── system │ ├── menu_edit.js │ ├── menu_list.js │ ├── organization_edit.js │ ├── organization_list.js │ ├── role_edit.js │ ├── role_list.js │ ├── user_edit.js │ └── user_list.js ├── target ├── classes │ ├── cn │ │ └── tedu │ │ │ └── ttms │ │ │ ├── attachment │ │ │ ├── controller │ │ │ │ └── AttachmentController.class │ │ │ ├── dao │ │ │ │ └── AttachmentDao.class │ │ │ ├── entity │ │ │ │ └── Attachment.class │ │ │ └── service │ │ │ │ ├── AttachmentService.class │ │ │ │ └── impl │ │ │ │ └── AttachmentServiceImpl.class │ │ │ ├── common │ │ │ ├── controller │ │ │ │ └── IndexController.class │ │ │ ├── dao │ │ │ │ └── BaseDao.class │ │ │ ├── exception │ │ │ │ ├── ControllerExceptionHandler.class │ │ │ │ └── ServiceException.class │ │ │ ├── service │ │ │ │ ├── SysShiroService.class │ │ │ │ └── impl │ │ │ │ │ ├── ShiroUserRealm.class │ │ │ │ │ └── SysShiroServiceImpl.class │ │ │ ├── util │ │ │ │ └── StringUtil.class │ │ │ └── web │ │ │ │ ├── JsonDateTypeConvert.class │ │ │ │ ├── JsonResult.class │ │ │ │ └── PageObject.class │ │ │ ├── product │ │ │ ├── controller │ │ │ │ ├── ProductTypeController.class │ │ │ │ ├── ProjectController.class │ │ │ │ └── TeamController.class │ │ │ ├── dao │ │ │ │ ├── ProductTypeDao.class │ │ │ │ ├── ProjectDao.class │ │ │ │ └── TeamDao.class │ │ │ ├── entity │ │ │ │ ├── ProductType.class │ │ │ │ ├── Project.class │ │ │ │ └── Team.class │ │ │ └── service │ │ │ │ ├── ProductTypeService.class │ │ │ │ ├── ProjectService.class │ │ │ │ ├── TeamService.class │ │ │ │ └── impl │ │ │ │ ├── ProductTypeServiceImpl.class │ │ │ │ ├── ProjectServiceImpl.class │ │ │ │ └── TeamServiceImpl.class │ │ │ └── system │ │ │ ├── controller │ │ │ ├── SysLoginController.class │ │ │ ├── SysMenuController.class │ │ │ ├── SysRoleController.class │ │ │ └── SysUserController.class │ │ │ ├── dao │ │ │ ├── SysMenuDao.class │ │ │ ├── SysRoleDao.class │ │ │ ├── SysRoleMenuDao.class │ │ │ ├── SysUserDao.class │ │ │ └── SysUserRoleDao.class │ │ │ ├── entity │ │ │ ├── Organization.class │ │ │ ├── SysMenu.class │ │ │ ├── SysRole.class │ │ │ ├── SysRoleMenu.class │ │ │ ├── SysUser.class │ │ │ └── SysUserRole.class │ │ │ └── service │ │ │ ├── SysMenuService.class │ │ │ ├── SysRoleService.class │ │ │ ├── SysUserService.class │ │ │ └── impl │ │ │ ├── SysMenuServiceImpl.class │ │ │ ├── SysRoleServiceImpl.class │ │ │ └── SysUserServiceImpl.class │ ├── config.properties │ ├── log4j2.xml │ ├── mapper │ │ ├── attachement │ │ │ └── AttchmentMapper.xml │ │ ├── product │ │ │ ├── ProductTypeMapper.xml │ │ │ ├── ProjectMapper.xml │ │ │ └── TeamMapper.xml │ │ └── system │ │ │ ├── SysMenuMapper.xml │ │ │ ├── SysRoleMapper.xml │ │ │ ├── SysRoleMenuMapper.xml │ │ │ ├── SysUserMapper.xml │ │ │ └── SysUserRoleMapper.xml │ ├── mybatis-config.xml │ ├── spring-mvc.xml │ ├── spring-mybatis.xml │ └── spring-shiro.xml └── m2e-wtp │ └── web-resources │ └── META-INF │ ├── MANIFEST.MF │ └── maven │ └── cn.tedu │ └── ttms1.02 │ ├── pom.properties │ └── pom.xml └── ttms.sql /.classpath: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | -------------------------------------------------------------------------------- /.project: -------------------------------------------------------------------------------- 1 | 2 | 3 | ttms1.02 4 | 5 | 6 | 7 | 8 | 9 | org.eclipse.jdt.core.javabuilder 10 | 11 | 12 | 13 | 14 | org.eclipse.wst.common.project.facet.core.builder 15 | 16 | 17 | 18 | 19 | org.eclipse.wst.validation.validationbuilder 20 | 21 | 22 | 23 | 24 | org.eclipse.m2e.core.maven2Builder 25 | 26 | 27 | 28 | 29 | org.springframework.ide.eclipse.core.springbuilder 30 | 31 | 32 | 33 | 34 | 35 | org.springframework.ide.eclipse.core.springnature 36 | org.eclipse.jem.workbench.JavaEMFNature 37 | org.eclipse.wst.common.modulecore.ModuleCoreNature 38 | org.eclipse.jdt.core.javanature 39 | org.eclipse.m2e.core.maven2Nature 40 | org.eclipse.wst.common.project.facet.core.nature 41 | org.eclipse.wst.jsdt.core.jsNature 42 | 43 | 44 | -------------------------------------------------------------------------------- /.settings/.jsdtscope: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /.settings/org.eclipse.jdt.core.prefs: -------------------------------------------------------------------------------- 1 | eclipse.preferences.version=1 2 | org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled 3 | org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate 4 | org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5 5 | org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve 6 | org.eclipse.jdt.core.compiler.compliance=1.5 7 | org.eclipse.jdt.core.compiler.debug.lineNumber=generate 8 | org.eclipse.jdt.core.compiler.debug.localVariable=generate 9 | org.eclipse.jdt.core.compiler.debug.sourceFile=generate 10 | org.eclipse.jdt.core.compiler.problem.assertIdentifier=error 11 | org.eclipse.jdt.core.compiler.problem.enumIdentifier=error 12 | org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning 13 | org.eclipse.jdt.core.compiler.source=1.5 14 | -------------------------------------------------------------------------------- /.settings/org.eclipse.m2e.core.prefs: -------------------------------------------------------------------------------- 1 | activeProfiles= 2 | eclipse.preferences.version=1 3 | resolveWorkspaceProjects=true 4 | version=1 5 | -------------------------------------------------------------------------------- /.settings/org.eclipse.wst.common.component: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /.settings/org.eclipse.wst.common.project.facet.core.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /.settings/org.eclipse.wst.jsdt.ui.superType.container: -------------------------------------------------------------------------------- 1 | org.eclipse.wst.jsdt.launching.baseBrowserLibrary -------------------------------------------------------------------------------- /.settings/org.eclipse.wst.jsdt.ui.superType.name: -------------------------------------------------------------------------------- 1 | Window -------------------------------------------------------------------------------- /.settings/org.eclipse.wst.validation.prefs: -------------------------------------------------------------------------------- 1 | disabled=06target 2 | eclipse.preferences.version=1 3 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # TTMS1.02 2 | -------------------------------------------------------------------------------- /src/main/java/cn/tedu/ttms/attachment/controller/AttachmentController.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.ttms.attachment.controller; 2 | import java.io.IOException; 3 | import java.net.URLEncoder; 4 | import java.nio.file.Files; 5 | import java.nio.file.Path; 6 | import java.nio.file.Paths; 7 | import java.util.List; 8 | 9 | import javax.annotation.Resource; 10 | import javax.servlet.http.HttpServletResponse; 11 | 12 | import org.springframework.stereotype.Controller; 13 | import org.springframework.web.bind.annotation.RequestMapping; 14 | import org.springframework.web.bind.annotation.ResponseBody; 15 | import org.springframework.web.multipart.MultipartFile; 16 | 17 | import cn.tedu.ttms.attachment.entity.Attachment; 18 | import cn.tedu.ttms.attachment.service.AttachmentService; 19 | import cn.tedu.ttms.common.web.JsonResult; 20 | 21 | @Controller 22 | @RequestMapping("/attachment/") 23 | public class AttachmentController { 24 | @Resource 25 | private AttachmentService attachmentService; 26 | @RequestMapping("attachmentUI") 27 | public String attachmentUI(){ 28 | return "attachment/attachment"; 29 | } 30 | /** 31 | * @param title 为附件标题 32 | * @param mFile 用于接收上传的附件的对象 33 | * */ 34 | @RequestMapping("doUpload") 35 | @ResponseBody 36 | public JsonResult doUpload( 37 | String title, 38 | MultipartFile mFile){ 39 | //原有内容是练习上传,业务要写到service 40 | attachmentService 41 | .uploadObject(title,mFile); 42 | return new JsonResult(); 43 | } 44 | @RequestMapping("doDownload") 45 | @ResponseBody 46 | public byte[] doDownload(Integer id,HttpServletResponse response) 47 | throws IOException{ 48 | //1.根据id执行查找操作 49 | Attachment a=attachmentService.findObjectById(id); 50 | //2.设置下载内容类型以及响应头(固定格式) 51 | response.setContentType("appliction/octet-stream"); 52 | String fileName=URLEncoder.encode(a.getFileName(),"utf-8"); 53 | response.setHeader("Content-disposition", 54 | "attachment;filename="+fileName); 55 | //3.获得指定文件的路径对象(java.nio.Path) 56 | Path path=Paths.get(a.getFilePath()); 57 | //4.读取path路径对应的文件,并返回字节数组 58 | return Files.readAllBytes(path); 59 | } 60 | 61 | /**获得所有的附件信息*/ 62 | @RequestMapping("doFindObjects") 63 | @ResponseBody 64 | public JsonResult doFindObjects(){ 65 | List list= 66 | attachmentService.findObjects(); 67 | return new JsonResult(list); 68 | } 69 | } 70 | -------------------------------------------------------------------------------- /src/main/java/cn/tedu/ttms/attachment/dao/AttachmentDao.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.ttms.attachment.dao; 2 | 3 | import java.util.List; 4 | 5 | import cn.tedu.ttms.attachment.entity.Attachment; 6 | 7 | public interface AttachmentDao { 8 | int insertObject(Attachment entity); 9 | /**根据摘要信息获取记录数*/ 10 | int getRowCountByDigest(String fileDisgest); 11 | /**获得所有上传的文件信息*/ 12 | List findObjects(); 13 | /**根据id查找某个对象*/ 14 | Attachment findObjectById(Integer id); 15 | 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/cn/tedu/ttms/attachment/entity/Attachment.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.ttms.attachment.entity; 2 | 3 | import java.io.Serializable; 4 | import java.util.Date; 5 | /**附件实体对象*/ 6 | public class Attachment implements Serializable{ 7 | private static final long serialVersionUID = -2066834040491586051L; 8 | private Integer id; 9 | /**附件标题*/ 10 | private String title; 11 | /**文件名称(实际的文件名)*/ 12 | private String fileName; 13 | /**文件内容类型*/ 14 | private String contentType; 15 | /**文件路径(实际存储的路径)*/ 16 | private String filePath; 17 | /**文件摘要信息(一般为MD5对内容加密以后的一个结果)*/ 18 | private String fileDisgest; 19 | /**归属类型(例如附件属于哪个对象的附件,是产品的还是分销商)*/ 20 | private Integer athType; 21 | /**具体归属对象(例如具体归属哪个产品)*/ 22 | private Integer belongId; 23 | 24 | private Date createdTime; 25 | private Date modifiedTime; 26 | private String createdUser; 27 | private String modifiedUser; 28 | public Integer getId() { 29 | return id; 30 | } 31 | public void setId(Integer id) { 32 | this.id = id; 33 | } 34 | public String getTitle() { 35 | return title; 36 | } 37 | public void setTitle(String title) { 38 | this.title = title; 39 | } 40 | public String getFileName() { 41 | return fileName; 42 | } 43 | public void setFileName(String fileName) { 44 | this.fileName = fileName; 45 | } 46 | public String getContentType() { 47 | return contentType; 48 | } 49 | public void setContentType(String contentType) { 50 | this.contentType = contentType; 51 | } 52 | public String getFilePath() { 53 | return filePath; 54 | } 55 | public void setFilePath(String filePath) { 56 | this.filePath = filePath; 57 | } 58 | public String getFileDisgest() { 59 | return fileDisgest; 60 | } 61 | public void setFileDisgest(String fileDisgest) { 62 | this.fileDisgest = fileDisgest; 63 | } 64 | public Integer getAthType() { 65 | return athType; 66 | } 67 | public void setAthType(Integer athType) { 68 | this.athType = athType; 69 | } 70 | public Integer getBelongId() { 71 | return belongId; 72 | } 73 | public void setBelongId(Integer belongId) { 74 | this.belongId = belongId; 75 | } 76 | public Date getCreatedTime() { 77 | return createdTime; 78 | } 79 | public void setCreatedTime(Date createdTime) { 80 | this.createdTime = createdTime; 81 | } 82 | public Date getModifiedTime() { 83 | return modifiedTime; 84 | } 85 | public void setModifiedTime(Date modifiedTime) { 86 | this.modifiedTime = modifiedTime; 87 | } 88 | public String getCreatedUser() { 89 | return createdUser; 90 | } 91 | public void setCreatedUser(String createdUser) { 92 | this.createdUser = createdUser; 93 | } 94 | public String getModifiedUser() { 95 | return modifiedUser; 96 | } 97 | public void setModifiedUser(String modifiedUser) { 98 | this.modifiedUser = modifiedUser; 99 | } 100 | 101 | } 102 | -------------------------------------------------------------------------------- /src/main/java/cn/tedu/ttms/attachment/service/AttachmentService.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.ttms.attachment.service; 2 | 3 | import java.util.List; 4 | 5 | import org.springframework.web.multipart.MultipartFile; 6 | 7 | import cn.tedu.ttms.attachment.entity.Attachment; 8 | 9 | 10 | public interface AttachmentService { 11 | /**实现文件上传*/ 12 | public void uploadObject(String title, 13 | MultipartFile mFile); 14 | public List findObjects(); 15 | public Attachment findObjectById(Integer id); 16 | 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/cn/tedu/ttms/common/controller/IndexController.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.ttms.common.controller; 2 | import org.apache.shiro.SecurityUtils; 3 | import org.springframework.beans.factory.annotation.Autowired; 4 | import org.springframework.stereotype.Controller; 5 | import org.springframework.web.bind.annotation.RequestMapping; 6 | import org.springframework.web.bind.annotation.ResponseBody; 7 | 8 | import cn.tedu.ttms.common.web.JsonResult; 9 | import cn.tedu.ttms.system.entity.SysUser; 10 | import cn.tedu.ttms.system.service.SysUserService; 11 | 12 | @Controller 13 | public class IndexController { 14 | @Autowired 15 | private SysUserService userService; 16 | @RequestMapping("/indexUI.do") 17 | public String indexUI(){ 18 | System.out.println("indexUI"); 19 | //返回的字符串会对应一个/WEB-INF/pages/index.jsp页面 20 | return "index"; 21 | } 22 | @RequestMapping("doFindUserMenus.do") 23 | @ResponseBody 24 | public JsonResult doFindUserMenus() { 25 | SysUser user = (SysUser) SecurityUtils.getSubject().getSession().getAttribute("currentUser"); 26 | return new JsonResult(userService.findUserMenus(user.getId())); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/main/java/cn/tedu/ttms/common/dao/BaseDao.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.ttms.common.dao; 2 | /*** 3 | * 通过此接口实现对子类共性的提取 4 | * @author adminitartor 5 | * @param 6 | * 通过类上的泛型约束类中: 7 | * 1)方法的参数类型 8 | * 2)方法的返回值类型 9 | */ 10 | public interface BaseDao { 11 | int insertObject(T entity); 12 | int updateObject(T entity); 13 | } 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /src/main/java/cn/tedu/ttms/common/exception/ControllerExceptionHandler.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.ttms.common.exception; 2 | import org.springframework.web.bind.annotation.ControllerAdvice; 3 | import org.springframework.web.bind.annotation.ExceptionHandler; 4 | import org.springframework.web.bind.annotation.ResponseBody; 5 | import org.springframework.web.servlet.ModelAndView; 6 | 7 | import cn.tedu.ttms.common.web.JsonResult; 8 | /**通过此注解声明此类为一个全局异常处理类型*/ 9 | @ControllerAdvice 10 | public class ControllerExceptionHandler { 11 | /**当spring发现系统出现异常了,且异常的 12 | * 类型为ServiceException类型,此时就会 13 | * 回调此方法,并将异常值传递给这个方法, 14 | * 这时我们就可以在此方法中对业务异常进行 15 | * 统一处理,例如封装到jsonResult,然后 16 | * 写到客户端告诉用户.*/ 17 | @ExceptionHandler(ServiceException.class) 18 | @ResponseBody 19 | public JsonResult handleServiceException( 20 | ServiceException e){ 21 | e.printStackTrace(); 22 | //将异常封装到JsonResult 23 | return new JsonResult(e); 24 | //this.state=ERROR; 25 | //this.message=e.getMessage(); 26 | } 27 | @ExceptionHandler(RuntimeException.class) 28 | public ModelAndView handleRuntimeException(RuntimeException e) { 29 | System.out.println("handleRuntimeException"); 30 | ModelAndView mv=new ModelAndView("error"); 31 | mv.addObject("exp", e.getMessage()); 32 | return mv; 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /src/main/java/cn/tedu/ttms/common/exception/ServiceException.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.ttms.common.exception; 2 | 3 | /**细化运行时异常,自己定义一个业务异常*/ 4 | public class ServiceException extends RuntimeException { 5 | 6 | public ServiceException() { 7 | super(); 8 | } 9 | public ServiceException(String message, Throwable cause, boolean enableSuppression, 10 | boolean writableStackTrace) { 11 | super(message, cause, enableSuppression, writableStackTrace); 12 | } 13 | public ServiceException(String message, Throwable cause) { 14 | super(message, cause); 15 | // TODO Auto-generated constructor stub 16 | } 17 | 18 | public ServiceException(String message) { 19 | super(message); 20 | // TODO Auto-generated constructor stub 21 | } 22 | 23 | public ServiceException(Throwable cause) { 24 | super(cause); 25 | // TODO Auto-generated constructor stub 26 | } 27 | 28 | } 29 | -------------------------------------------------------------------------------- /src/main/java/cn/tedu/ttms/common/service/SysShiroService.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.ttms.common.service; 2 | 3 | public interface SysShiroService { 4 | void login(String username,String password); 5 | } 6 | -------------------------------------------------------------------------------- /src/main/java/cn/tedu/ttms/common/service/impl/ShiroUserRealm.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.ttms.common.service.impl; 2 | 3 | import java.util.ArrayList; 4 | import java.util.HashSet; 5 | import java.util.List; 6 | import java.util.Set; 7 | 8 | import javax.annotation.Resource; 9 | 10 | import org.apache.shiro.SecurityUtils; 11 | import org.apache.shiro.authc.AuthenticationException; 12 | import org.apache.shiro.authc.AuthenticationInfo; 13 | import org.apache.shiro.authc.AuthenticationToken; 14 | import org.apache.shiro.authc.SimpleAuthenticationInfo; 15 | import org.apache.shiro.authc.UsernamePasswordToken; 16 | import org.apache.shiro.authz.AuthorizationInfo; 17 | import org.apache.shiro.authz.SimpleAuthorizationInfo; 18 | import org.apache.shiro.realm.AuthorizingRealm; 19 | import org.apache.shiro.subject.PrincipalCollection; 20 | import org.apache.shiro.util.ByteSource; 21 | 22 | import cn.tedu.ttms.system.dao.SysUserDao; 23 | import cn.tedu.ttms.system.entity.SysUser; 24 | 25 | public class ShiroUserRealm extends AuthorizingRealm{ 26 | @Resource 27 | private SysUserDao sysUserDao; 28 | @Override 29 | protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) { 30 | System.out.println("==doGetAuthorizationInfo=="); 31 | SysUser user = (SysUser) SecurityUtils.getSubject().getSession().getAttribute("currentUser"); 32 | int userId = user.getId(); 33 | List permsList = new ArrayList(); 34 | permsList = sysUserDao.findUserPermissions(userId); 35 | //用户权限列表 36 | Set permsSet = new HashSet(); 37 | for(String perm : permsList){ 38 | if(perm!=null && !("".equals(perm))){ 39 | permsSet.add(perm); 40 | } 41 | } 42 | System.out.println("permsSet="+permsSet); 43 | SimpleAuthorizationInfo info = new SimpleAuthorizationInfo(); 44 | info.setStringPermissions(permsSet); 45 | return info; 46 | } 47 | 48 | @Override 49 | protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException { 50 | System.out.println("==doGetAuthenticationInfo=="); 51 | //1. 把 AuthenticationToken 转换为 UsernamePasswordToken 52 | UsernamePasswordToken upToken = (UsernamePasswordToken) token; 53 | //2. 从 UsernamePasswordToken 中来获取 username 54 | String username = upToken.getUsername(); 55 | //判断用户名是否存在,若存在,返回user对象 56 | SysUser user =sysUserDao.findObjectByName(username); 57 | //盐值. 58 | ByteSource credentialsSalt = ByteSource.Util.bytes(user.getSalt()); 59 | //自动完成密码比对 - 密码的比对: 60 | //通过 AuthenticatingRealm 的 credentialsMatcher 属性来进行的密码的比对! 61 | SimpleAuthenticationInfo info = 62 | new SimpleAuthenticationInfo( 63 | username, user.getPassword(),credentialsSalt,getName()); 64 | SecurityUtils.getSubject().getSession() 65 | .setAttribute("currentUser",user); 66 | return info; 67 | } 68 | } 69 | -------------------------------------------------------------------------------- /src/main/java/cn/tedu/ttms/common/service/impl/SysShiroServiceImpl.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.ttms.common.service.impl; 2 | import org.apache.shiro.SecurityUtils; 3 | import org.apache.shiro.authc.AuthenticationException; 4 | import org.apache.shiro.authc.IncorrectCredentialsException; 5 | import org.apache.shiro.authc.UsernamePasswordToken; 6 | import org.apache.shiro.subject.Subject; 7 | import org.springframework.beans.factory.annotation.Autowired; 8 | import org.springframework.stereotype.Service; 9 | 10 | import cn.tedu.ttms.common.exception.ServiceException; 11 | import cn.tedu.ttms.common.service.SysShiroService; 12 | import cn.tedu.ttms.system.dao.SysUserDao; 13 | @Service 14 | public class SysShiroServiceImpl implements SysShiroService { 15 | public void login(String username, String password) { 16 | Subject subject = SecurityUtils.getSubject(); 17 | if(subject.isAuthenticated())return; 18 | // 把用户名和密码封装为 UsernamePasswordToken 对象 19 | UsernamePasswordToken token = 20 | new UsernamePasswordToken(username, password); 21 | try{//登录认证 - 调用userRealm 22 | subject.login(token); 23 | }catch (IncorrectCredentialsException ice) { 24 | throw new ServiceException("密码错误!"); 25 | } catch(AuthenticationException ae){ 26 | ae.printStackTrace(); 27 | throw new ServiceException("认证失败"); 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /src/main/java/cn/tedu/ttms/common/util/StringUtil.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.ttms.common.util; 2 | 3 | import java.util.ArrayList; 4 | import java.util.Arrays; 5 | import java.util.List; 6 | 7 | 8 | public class StringUtil { 9 | 10 | /* public static List parseIntegerList(String strList, List listInt){ 11 | List listStr = Arrays.asList(strList.split(",")); 12 | listInt =new ArrayList(listStr.size()); 13 | CollectionUtils.collect(listStr, 14 | new Transformer(){ 15 | public java.lang.Object transform(java.lang.Object input){ 16 | return Integer.parseInt((String)input); 17 | } 18 | } ,listInt ); 19 | return listInt; 20 | }*/ 21 | 22 | // public static void main(String[] args) { 23 | // List list = new ArrayList(); 24 | // list.add("1"); 25 | // list.add("2"); 26 | // List listint = null; 27 | // 28 | // listint = parseIntegerList(list, listint); 29 | // System.out.println(listint.getClass()); 30 | // System.out.println(listint); 31 | // } 32 | 33 | } 34 | -------------------------------------------------------------------------------- /src/main/java/cn/tedu/ttms/common/web/JsonDateTypeConvert.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.ttms.common.web; 2 | 3 | import java.io.IOException; 4 | import java.text.SimpleDateFormat; 5 | import java.util.Date; 6 | 7 | import com.fasterxml.jackson.core.JsonGenerator; 8 | import com.fasterxml.jackson.core.JsonProcessingException; 9 | import com.fasterxml.jackson.databind.JsonSerializer; 10 | import com.fasterxml.jackson.databind.SerializerProvider; 11 | /**springmvc 在将日期对象转换为字符串时, 12 | * 一般默认会转换为长整型,假如我们需要自己 13 | * 定义格式,通常会写一个类继承JsonSerializer,\ 14 | * 假如在对象中需要将日期转换为我们需要的格式 15 | * 可以在对应的实体对象的get方法中使用 16 | * @JsonSerializer(using= 17 | * JsonDateTypeConvert.class) 18 | * */ 19 | public class JsonDateTypeConvert 20 | extends JsonSerializer{ 21 | /** 22 | * @param value 是要转换的日期 23 | * @param gen 为一个json对象生成器 24 | * */ 25 | @Override 26 | public void serialize(Date value, 27 | JsonGenerator gen, 28 | SerializerProvider serializers) 29 | throws IOException, 30 | JsonProcessingException { 31 | //定义日期字符串转换对象 32 | SimpleDateFormat sdf= 33 | new SimpleDateFormat("yyyy/MM/dd"); 34 | //将日期转换为指定格式字符串 35 | String dateStr=sdf.format(value); 36 | //将此字符串写入到json对象中 37 | gen.writeString(dateStr); 38 | }//alt+/ 39 | }// 40 | -------------------------------------------------------------------------------- /src/main/java/cn/tedu/ttms/common/web/JsonResult.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.ttms.common.web; 2 | /**借助此对象封装Controller方法上有 3 | * @ResponseBody注解的方法的返回值, 4 | * 目的:统一返回值类型,便于在页面上进 5 | * 行统一处理 6 | * */ 7 | public class JsonResult { 8 | private static final int SUCCESS=1; 9 | private static final int ERROR=0; 10 | /**状态*/ 11 | private int state; 12 | /**对应状态的消息*/ 13 | private String message; 14 | /**具体业务数据*/ 15 | private Object data; 16 | /**此构造方法应用于data为null的场景*/ 17 | public JsonResult(){ 18 | this.state=SUCCESS;//1 19 | this.message="OK"; 20 | } 21 | /**有具体业务数据返回时,使用此构造方法*/ 22 | public JsonResult(Object data){ 23 | this(); 24 | this.data=data; 25 | } 26 | /**出现异常以后要调用此方法封装异常信息*/ 27 | public JsonResult(Throwable t){ 28 | this.state=ERROR; 29 | this.message=t.getMessage(); 30 | } 31 | public Object getData() { 32 | return data; 33 | } 34 | public int getState() { 35 | return state; 36 | } 37 | public String getMessage() { 38 | return message; 39 | } 40 | public void setState(int state) { 41 | this.state = state; 42 | } 43 | 44 | } 45 | -------------------------------------------------------------------------------- /src/main/java/cn/tedu/ttms/common/web/PageObject.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.ttms.common.web; 2 | 3 | import java.io.Serializable; 4 | 5 | /**封装具体的分页信息*/ 6 | public class PageObject implements Serializable{ 7 | private static final long serialVersionUID = -8753809986545361268L; 8 | /**当前页*/ 9 | private int pageCurrent=1; 10 | /**每页最多能显示的记录数*/ 11 | private int pageSize=3; 12 | /**总记录数*/ 13 | private int rowCount; 14 | /**上一页的最后一条记录位置 15 | * 对应:limit startIndex,pageSize; 16 | */ 17 | private int startIndex; 18 | public int getPageCurrent() { 19 | return pageCurrent; 20 | } 21 | public void setPageCurrent(int pageCurrent) { 22 | this.pageCurrent = pageCurrent; 23 | } 24 | public int getPageSize() { 25 | return pageSize; 26 | } 27 | public void setPageSize(int pageSize) { 28 | this.pageSize = pageSize; 29 | } 30 | public int getRowCount() { 31 | return rowCount; 32 | } 33 | public void setRowCount(int rowCount) { 34 | this.rowCount = rowCount; 35 | } 36 | public int getPageCount() { 37 | int pages = rowCount/pageSize; 38 | if(0 != rowCount%pageSize) { 39 | pages +=1; 40 | } 41 | return pages; 42 | } 43 | public int getStartIndex() { 44 | return startIndex; 45 | } 46 | public void setStartIndex(int startIndex) { 47 | this.startIndex = startIndex; 48 | } 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | } 57 | -------------------------------------------------------------------------------- /src/main/java/cn/tedu/ttms/product/controller/ProductTypeController.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.ttms.product.controller; 2 | 3 | import java.util.List; 4 | import java.util.Map; 5 | 6 | import javax.annotation.Resource; 7 | 8 | import org.springframework.stereotype.Controller; 9 | import org.springframework.web.bind.annotation.RequestMapping; 10 | import org.springframework.web.bind.annotation.ResponseBody; 11 | 12 | import cn.tedu.ttms.common.web.JsonResult; 13 | import cn.tedu.ttms.product.entity.ProductType; 14 | import cn.tedu.ttms.product.service.ProductTypeService; 15 | @RequestMapping("/type/") 16 | @Controller 17 | public class ProductTypeController { 18 | @Resource 19 | private ProductTypeService productTypeService; 20 | @RequestMapping("listUI") 21 | public String listUI(){ 22 | return "product/type_list"; 23 | } 24 | @RequestMapping("editUI") 25 | public String editUI(){ 26 | return "product/type_edit"; 27 | } 28 | @RequestMapping("doFindGridTreeObjects") 29 | @ResponseBody 30 | public JsonResult doFindGridTreeObjects(){ 31 | List> list= 32 | productTypeService.findGridTreeObjects(); 33 | return new JsonResult(list); 34 | } 35 | @RequestMapping("doFindZtreeObjects") 36 | @ResponseBody 37 | public JsonResult doFindZtreeObjects(){ 38 | List> list= 39 | productTypeService.findZtreeNodes(); 40 | return new JsonResult(list); 41 | } 42 | 43 | 44 | /**执行删除动作 45 | * @param id 为页面上选中的某条记录的id值 46 | */ 47 | @RequestMapping("doDeleteObject") 48 | @ResponseBody 49 | public JsonResult doDeleteObject( 50 | Integer id){ 51 | productTypeService.deleteObject(id); 52 | return new JsonResult(); 53 | //this.state=1 54 | //this.message=ok 55 | } 56 | @RequestMapping("doSaveObject") 57 | @ResponseBody 58 | public JsonResult doSaveObject( 59 | ProductType entity){ 60 | productTypeService.saveObject(entity); 61 | return new JsonResult(); 62 | } 63 | @RequestMapping("doFindObjectById") 64 | @ResponseBody 65 | public JsonResult doFindObjectById( 66 | Integer id){ 67 | 68 | Map type= 69 | productTypeService.findMapById(id); 70 | return new JsonResult(type); 71 | } 72 | /**执行更新操作*/ 73 | @RequestMapping("doUpdateObject") 74 | @ResponseBody 75 | public JsonResult doUpdateObject( 76 | ProductType entity){ 77 | System.out.println("Controller.id="+entity.getId()); 78 | productTypeService.updateObject(entity); 79 | return new JsonResult(); 80 | } 81 | } 82 | 83 | -------------------------------------------------------------------------------- /src/main/java/cn/tedu/ttms/product/controller/ProjectController.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.ttms.product.controller; 2 | import java.util.Map; 3 | import javax.annotation.Resource; 4 | import javax.servlet.http.HttpServletRequest; 5 | import org.apache.shiro.authz.annotation.RequiresPermissions; 6 | import org.springframework.stereotype.Controller; 7 | import org.springframework.web.bind.annotation.RequestMapping; 8 | import org.springframework.web.bind.annotation.ResponseBody; 9 | import cn.tedu.ttms.common.web.JsonResult; 10 | import cn.tedu.ttms.product.entity.Project; 11 | import cn.tedu.ttms.product.service.ProjectService; 12 | @RequestMapping("/project/") 13 | @Controller 14 | public class ProjectController { 15 | @Resource 16 | private ProjectService projectService; 17 | 18 | @RequestMapping("listUI") 19 | public String listUI(){ 20 | return "product/project_list";//WEB-INF/pages/product/project_list.jsp 21 | } 22 | @RequestMapping("editUI") 23 | public String editUI(){ 24 | return "product/project_edit";//WEB-INF/pages/product/project_edit.jsp 25 | } 26 | 27 | //http://localhost:8080/ttms1.0/project/doFindObjects.do 28 | @RequestMapping("doFindObjects") 29 | @ResponseBody //用于将返回的对象转换为json串 30 | public JsonResult doFindObjects( 31 | String name, 32 | Integer valid, 33 | int pageCurrent){ 34 | Map map= 35 | projectService.findObjects( 36 | name,valid,pageCurrent); 37 | //将获得的数据封装到JsonResult对象 38 | return new JsonResult(map); 39 | }//JSON string 40 | 41 | /** 42 | * var params={ 43 | * "checkedIds":checkedId, 44 | * "valid":valid} 45 | * 46 | * */ 47 | @RequestMapping("doValidById") 48 | @ResponseBody 49 | public JsonResult doValidById( 50 | String checkedIds, 51 | Integer valid){ 52 | System.out.println( 53 | "checkedIds="+checkedIds); 54 | projectService.validById( 55 | checkedIds, 56 | valid); 57 | return new JsonResult(); 58 | //this.message="ok" 59 | //this.state=SUCCESS 60 | } 61 | /**执行添加操作 62 | * var params={"name":"A","code":"tt20170807xxxx",..} 63 | * @param entity 对象会封装页面上传入的参数值 64 | * 页面上参数的名字和entity对象中属性的值 65 | * 一致时会实现自动注入操作. 66 | * */ 67 | @RequestMapping("doSaveObject") 68 | @ResponseBody 69 | public JsonResult doSaveObject( 70 | Project entity){ 71 | projectService.saveObject(entity); 72 | return new JsonResult(); 73 | } 74 | @RequestMapping("doFindObjectById") 75 | @ResponseBody 76 | public JsonResult doFindObjectById( 77 | Integer id){ 78 | Project project= 79 | projectService.findObjectById(id); 80 | return new JsonResult(project); 81 | } 82 | @RequestMapping("doUpdateObject") 83 | @ResponseBody 84 | public JsonResult doUpdateObject( 85 | Project entity, 86 | HttpServletRequest request){ 87 | //假设有用户登录,可以从session中获得用户信息 88 | /*User user=(User) 89 | request.getSession() 90 | .getAttribute("user"); 91 | entity.setModifiedUser(user.getUsername()); 92 | */ 93 | projectService.updateObject(entity); 94 | return new JsonResult(); 95 | } 96 | 97 | } 98 | -------------------------------------------------------------------------------- /src/main/java/cn/tedu/ttms/product/controller/TeamController.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.ttms.product.controller; 2 | 3 | import java.util.List; 4 | import java.util.Map; 5 | 6 | import javax.annotation.Resource; 7 | 8 | import org.springframework.stereotype.Controller; 9 | import org.springframework.web.bind.annotation.RequestMapping; 10 | import org.springframework.web.bind.annotation.ResponseBody; 11 | 12 | import cn.tedu.ttms.common.web.JsonResult; 13 | import cn.tedu.ttms.product.entity.Team; 14 | import cn.tedu.ttms.product.service.TeamService; 15 | 16 | @Controller 17 | @RequestMapping("/team/") 18 | public class TeamController { 19 | @Resource 20 | private TeamService teamService; 21 | @RequestMapping("listUI") 22 | public String listUI(){ 23 | return "product/team_list"; 24 | } 25 | /**当在页面上点击添加或修改按钮时 26 | * 访问此方法,通过此方法返回一个 27 | * 页面*/ 28 | @RequestMapping("editUI") 29 | public String editUI(){ 30 | return "product/team_edit"; 31 | } 32 | /**执行修改操作 @param entity 用于封装页面团信息数据*/ 33 | @RequestMapping("doUpdateObject") 34 | @ResponseBody 35 | public JsonResult doUpdateObject(Team entity){ 36 | //1.修改团信息 37 | teamService.updateObject(entity); 38 | //2.返回响应信息 39 | return new JsonResult(); 40 | } 41 | /**根据id执行查找操作 42 | * @param id 是页面上传过来的记录的id值*/ 43 | @RequestMapping("doFindObjectById") 44 | @ResponseBody 45 | public JsonResult doFindObjectById( 46 | Integer id){ 47 | Team team= 48 | teamService.findObjectById(id); 49 | return new JsonResult(team); 50 | } 51 | /**执行保存操作*/ 52 | @RequestMapping("doSaveObject") 53 | @ResponseBody 54 | public JsonResult doSaveObject(Team entity){ 55 | teamService.saveObject(entity); 56 | return new JsonResult(); 57 | } 58 | 59 | 60 | @RequestMapping("doFindObjects") 61 | @ResponseBody 62 | public JsonResult doFindObjects( 63 | Integer valid, 64 | Integer projectId, 65 | Integer pageCurrent){ 66 | Map map= 67 | teamService.findObjects(valid, 68 | projectId, 69 | pageCurrent); 70 | return new JsonResult(map); 71 | } 72 | /**查询所有启用项目的id和名字*/ 73 | @RequestMapping("doFindPrjIdAndNames") 74 | @ResponseBody 75 | public JsonResult doFindPrjIdAndNames(){ 76 | List> 77 | list=teamService.findPrjIdAndNames(); 78 | return new JsonResult(list); 79 | } 80 | @RequestMapping("doValidById") 81 | @ResponseBody 82 | public JsonResult doValidById( 83 | String checkedIds, 84 | Integer valid){ 85 | //1.更新状态 86 | teamService.validById(checkedIds, 87 | valid); 88 | //2.返回状态信息 89 | return new JsonResult(); 90 | } 91 | 92 | } 93 | -------------------------------------------------------------------------------- /src/main/java/cn/tedu/ttms/product/dao/ProductTypeDao.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.ttms.product.dao; 2 | 3 | import java.util.List; 4 | import java.util.Map; 5 | 6 | import cn.tedu.ttms.common.dao.BaseDao; 7 | import cn.tedu.ttms.product.entity.ProductType; 8 | /**产品分类的持久层对象*/ 9 | public interface ProductTypeDao 10 | extends BaseDao{ 11 | /**查询分类信息*/ 12 | List> 13 | findObjects(); 14 | /**添加删除的方法*/ 15 | int deleteObject(Integer id); 16 | /**判定分类下是否还有子分类*/ 17 | int hasChilds(Integer id); 18 | /**获得以Ztree形式进行展示的产品分类信息 19 | * 其中一个节点信息中应该包含: 20 | * 1)id 21 | * 2)parentId 22 | * 3)name 23 | * 每条记录的节点信息都要存储到一个map对象 24 | * 多个,多个节点信息再存储到list集合. 25 | * */ 26 | List> 27 | findZtreeNodes(); 28 | 29 | Map findMapById(Integer id); 30 | 31 | } 32 | 33 | -------------------------------------------------------------------------------- /src/main/java/cn/tedu/ttms/product/dao/ProjectDao.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.ttms.product.dao; 2 | 3 | import java.util.List; 4 | import java.util.Map; 5 | 6 | import org.apache.ibatis.annotations.Param; 7 | 8 | import cn.tedu.ttms.common.dao.BaseDao; 9 | import cn.tedu.ttms.product.entity.Project; 10 | /**数据持久层对象(方法名必须 11 | * 与ProjectMapper中的id值对应)*/ 12 | public interface ProjectDao 13 | extends BaseDao{ 14 | /**获得表中所有记录 15 | * @param name 模糊查询时输入的项目 16 | * @param valid 项目启用、禁用状态值(1,0) 17 | * @param startIndex 表示从哪条记录开始取数据 18 | * @param pageSize 表示每页显示多少条记录 19 | * @return 表示查询到的当前页的所有记录 20 | * 当方法中的参数个数多于1个时需要使用 21 | * @param 注解进行声明 22 | * */ 23 | List findObjects( 24 | @Param("name")String name, 25 | @Param("valid")Integer valid, 26 | @Param("startIndex")int startIndex, 27 | @Param("pageSize")int pageSize); 28 | /**获得总记录数 29 | * @param name 模糊查询时输入的项目 30 | * @param valid 项目启用、禁用状态值(1,0) 31 | * @return 总记录数 32 | */ 33 | int getRowCount( 34 | @Param("name")String name, 35 | @Param("valid")Integer valid); 36 | /**将对象信息写入到表中*/ 37 | //int insertObject(Project entity); 38 | 39 | /**修改表中记录信息*/ 40 | //int updateObject(Project entity); 41 | 42 | /**禁用或启动项目信息 43 | * String idStr=1,2,3; 44 | * String ids[]=ids.split(",");[1,2,3]; 45 | * @param 要修改的id的值 46 | * @param 将valid具体修改为什么值?(1,0) 47 | * @return 为被修改的记录的行数 48 | * */ 49 | int validById( 50 | @Param("ids")String[] ids, 51 | @Param("valid")int valid); 52 | 53 | /**根据id执行查询操作 54 | * @param id 来自页面上的某条记录的id值 55 | * */ 56 | //Project findObjectById(Integer id); 57 | 58 | /**查询所有启用项目的id以及名字*/ 59 | List> 60 | findPrjIdAndNames(); 61 | 62 | Project findObjectById(Integer id); 63 | 64 | 65 | 66 | 67 | 68 | } 69 | -------------------------------------------------------------------------------- /src/main/java/cn/tedu/ttms/product/dao/TeamDao.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.ttms.product.dao; 2 | import java.util.List; 3 | import java.util.Map; 4 | 5 | import org.apache.ibatis.annotations.Param; 6 | 7 | import cn.tedu.ttms.common.dao.BaseDao; 8 | import cn.tedu.ttms.product.entity.Team; 9 | /**数据持久层对象(数据访问对象): 10 | * 此对象对应的mapp文件为TeamMapper*/ 11 | public interface TeamDao extends BaseDao{ 12 | 13 | Team findObjectById(Integer id); 14 | 15 | /**查询团信息以及团所在的项目的项目 16 | * id,项目名称(尝试自己写SQL) 17 | * 此方法用于获得当前页的团信息 18 | * @param valid 团的禁用和启动状态, 19 | * 可能会根据此状态进行条件查询 20 | * @param projectId 项目的id,可能会 21 | * 根据此id查询项目下相关团的信息 22 | * @param startIndex 表示查询当前页面的起始位置 23 | * @param pageSize 表示每页显示多少条记录 24 | * @return 用于封装查询结果,一般结果 25 | * 中的数据假如来自于多张表,可以将每条记录 26 | * 封装到一个map对象,然后在将多个map封装到list 27 | * */ 28 | List> findObjects( 29 | @Param("valid")Integer valid, 30 | @Param("projectId")Integer projectId, 31 | @Param("startIndex")int startIndex, 32 | @Param("pageSize") int pageSize); 33 | 34 | /**获得表中满足条件的记录总数 35 | * @param valid 团的禁用和启动状态, 36 | * 可能会根据此状态进行条件查询 37 | * @param projectId 项目的id,可能会 38 | * 根据此id查询项目下相关团的信息 39 | * @return 返回查询到记录总数 40 | * */ 41 | int getRowCount( 42 | @Param("valid")Integer valid, 43 | @Param("projectId")Integer projectId); 44 | /** 45 | * 此方法用于实现记录的禁用和启用 46 | * @param ids 数组中封装的是页面上选择的记录的id 47 | * @param valid 封装的是禁用或启用的状态值 48 | * */ 49 | int validById( 50 | @Param("ids")String[] ids, 51 | @Param("valid")Integer valid); 52 | 53 | } 54 | -------------------------------------------------------------------------------- /src/main/java/cn/tedu/ttms/product/entity/ProductType.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.ttms.product.entity; 2 | import java.io.Serializable; 3 | import java.util.Date; 4 | /**产品分类:属于旅游管理的产品分类实体 5 | * 例如: 6 | * 1)出境游 7 | * 1.1)置业游 8 | * 1.2)体育游 9 | * 1.3)亲子游 10 | * 1.4)......... 11 | * 2)境内游 12 | * */ 13 | public class ProductType 14 | implements Serializable{ 15 | private static final long serialVersionUID = 7611388056449233479L; 16 | /**分类id*/ 17 | private Integer id; 18 | /**分类名称*/ 19 | private String name; 20 | /**分类排序编号*/ 21 | private Integer sort; 22 | /**上一级分类的parentId*/ 23 | private Integer parentId; 24 | /**分类备注*/ 25 | private String note; 26 | /**创建时间*/ 27 | private Date createdTime; 28 | private Date modifiedTime; 29 | private String createdUser; 30 | private String modifiedUser; 31 | 32 | public Date getCreatedTime() { 33 | return createdTime; 34 | } 35 | public void setCreatedTime(Date createdTime) { 36 | this.createdTime = createdTime; 37 | } 38 | public Date getModifiedTime() { 39 | return modifiedTime; 40 | } 41 | public void setModifiedTime(Date modifiedTime) { 42 | this.modifiedTime = modifiedTime; 43 | } 44 | public String getCreatedUser() { 45 | return createdUser; 46 | } 47 | public void setCreatedUser(String createdUser) { 48 | this.createdUser = createdUser; 49 | } 50 | public String getModifiedUser() { 51 | return modifiedUser; 52 | } 53 | public void setModifiedUser(String modifiedUser) { 54 | this.modifiedUser = modifiedUser; 55 | } 56 | public Integer getId() { 57 | return id; 58 | } 59 | public void setId(Integer id) { 60 | this.id = id; 61 | } 62 | public String getName() { 63 | return name; 64 | } 65 | public void setName(String name) { 66 | this.name = name; 67 | } 68 | public Integer getSort() { 69 | return sort; 70 | } 71 | public void setSort(Integer sort) { 72 | this.sort = sort; 73 | } 74 | public Integer getParentId() { 75 | return parentId; 76 | } 77 | public void setParentId(Integer parentId) { 78 | this.parentId = parentId; 79 | } 80 | public String getNote() { 81 | return note; 82 | } 83 | public void setNote(String note) { 84 | this.note = note; 85 | } 86 | @Override 87 | public String toString() { 88 | return "ProductType [id=" + id + ", name=" + name + ", sort=" + sort + ", parentId=" + parentId + ", note=" 89 | + note + "]"; 90 | } 91 | 92 | 93 | } 94 | -------------------------------------------------------------------------------- /src/main/java/cn/tedu/ttms/product/entity/Team.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.ttms.product.entity; 2 | 3 | import java.io.Serializable; 4 | import java.util.Date; 5 | 6 | import com.fasterxml.jackson.databind.annotation.JsonSerialize; 7 | 8 | import cn.tedu.ttms.common.web.JsonDateTypeConvert; 9 | 10 | /**用于封装团信息: 11 | * 业务:一个项目下可以有多个团 12 | * 表关系:one2many 13 | * 表设计:关联字段projectId 14 | * 应该添加多的一端,例如在tms_teams表中添加projectId 15 | * */ 16 | public class Team implements Serializable{ 17 | private static final long serialVersionUID = 368009064732092303L; 18 | /**团的id*/ 19 | private Integer id; 20 | /**团名称*/ 21 | private String name; 22 | /**项目id(关联项目模块的项目id)*/ 23 | private Integer projectId; 24 | /**有效性(启动[1]和禁用[0])*/ 25 | private Integer valid; 26 | /**备注*/ 27 | private String note; 28 | /**创建时间*/ 29 | private Date createdTime; 30 | /**修改时间*/ 31 | private Date modifiedTime; 32 | /**创建用户*/ 33 | private String createdUser; 34 | /**修改用户*/ 35 | private String modifiedUser; 36 | public Integer getId() { 37 | return id; 38 | } 39 | public void setId(Integer id) { 40 | this.id = id; 41 | } 42 | public String getName() { 43 | return name; 44 | } 45 | public void setName(String name) { 46 | this.name = name; 47 | } 48 | public Integer getProjectId() { 49 | return projectId; 50 | } 51 | public void setProjectId(Integer projectId) { 52 | this.projectId = projectId; 53 | } 54 | public Integer getValid() { 55 | return valid; 56 | } 57 | public void setValid(Integer valid) { 58 | this.valid = valid; 59 | } 60 | public String getNote() { 61 | return note; 62 | } 63 | public void setNote(String note) { 64 | this.note = note; 65 | } 66 | @JsonSerialize(using=JsonDateTypeConvert.class) 67 | public Date getCreatedTime() { 68 | return createdTime; 69 | } 70 | public void setCreatedTime(Date createdTime) { 71 | this.createdTime = createdTime; 72 | } 73 | @JsonSerialize(using=JsonDateTypeConvert.class) 74 | public Date getModifiedTime() { 75 | return modifiedTime; 76 | } 77 | public void setModifiedTime(Date modifiedTime) { 78 | this.modifiedTime = modifiedTime; 79 | } 80 | public String getCreatedUser() { 81 | return createdUser; 82 | } 83 | public void setCreatedUser(String createdUser) { 84 | this.createdUser = createdUser; 85 | } 86 | public String getModifiedUser() { 87 | return modifiedUser; 88 | } 89 | public void setModifiedUser(String modifiedUser) { 90 | this.modifiedUser = modifiedUser; 91 | } 92 | @Override 93 | public String toString() { 94 | return "Team [id=" + id + ", name=" + name + ", projectId=" + projectId + ", valid=" + valid + ", note=" + note 95 | + ", createdTime=" + createdTime + ", modifiedTime=" + modifiedTime + ", createdUser=" + createdUser 96 | + ", modifiedUser=" + modifiedUser + "]"; 97 | } 98 | 99 | 100 | } 101 | -------------------------------------------------------------------------------- /src/main/java/cn/tedu/ttms/product/service/ProductTypeService.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.ttms.product.service; 2 | 3 | import java.util.List; 4 | import java.util.Map; 5 | 6 | import cn.tedu.ttms.product.entity.ProductType; 7 | 8 | public interface ProductTypeService { 9 | /**查询分类的列表信息,在client端以gridTree形式展示*/ 10 | public List> 11 | findGridTreeObjects(); 12 | /**删除指定的分类信息 13 | * @param id 为分类id 14 | */ 15 | void deleteObject(Integer id); 16 | /**保存产品类型信息*/ 17 | void saveObject(ProductType entity); 18 | /**查询分类节点信息,在client端以zTree形式展示*/ 19 | List>findZtreeNodes(); 20 | /**根据id执行查找操作*/ 21 | //ProductType findObjectById(Integer id); 22 | Map findMapById(Integer id); 23 | /**根据id执行更新 操作*/ 24 | void updateObject(ProductType entity); 25 | 26 | } 27 | 28 | 29 | 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /src/main/java/cn/tedu/ttms/product/service/ProjectService.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.ttms.product.service; 2 | 3 | import java.util.Map; 4 | 5 | import cn.tedu.ttms.product.entity.Project; 6 | 7 | /** 8 | * 项目管理模块的业务层对象: 9 | * 负责具体项目信息的业务处理 10 | */ 11 | public interface ProjectService { 12 | /**获得当前页项目信息以及分页信息 13 | * 1)项目信息封装到List 14 | * 2)分页信息封装到PageObject 15 | * 将项目信息和分页信息再次封装, 16 | * 封装map,然后做统一返回 17 | * */ 18 | Map findObjects( 19 | String name, 20 | Integer valid, 21 | int pageCurrent); 22 | /**启用禁用项目信息*/ 23 | void validById( 24 | String idStr, 25 | Integer valid); 26 | /**向表中写入数据*/ 27 | void saveObject(Project entity); 28 | /**修改表中数据*/ 29 | void updateObject(Project entity); 30 | /**根据id查找具体对象*/ 31 | Project findObjectById(Integer id); 32 | } 33 | 34 | 35 | 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /src/main/java/cn/tedu/ttms/product/service/TeamService.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.ttms.product.service; 2 | 3 | import java.util.List; 4 | import java.util.Map; 5 | 6 | import cn.tedu.ttms.product.entity.Team; 7 | 8 | public interface TeamService { 9 | /**根据条件查询当前页数据*/ 10 | MapfindObjects( 11 | Integer valid, 12 | Integer projectId, 13 | Integer pageCurrent); 14 | /**查询项目id和名称信息*/ 15 | List> 16 | findPrjIdAndNames(); 17 | 18 | /**禁用和启用团信息 19 | * @param ids对应页面上选中的多个团id值 20 | * 例如ids=1,2,3,4,5 21 | * @param valid 对应禁用或启用的状态值 22 | * */ 23 | void validById(String ids,Integer valid); 24 | /**保存团信息*/ 25 | void saveObject(Team entity); 26 | /**修改项目信息*/ 27 | void updateObject(Team entity); 28 | /**根据id查找团信息*/ 29 | Team findObjectById(Integer id); 30 | } 31 | 32 | 33 | 34 | 35 | 36 | -------------------------------------------------------------------------------- /src/main/java/cn/tedu/ttms/system/controller/SysLoginController.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.ttms.system.controller; 2 | import org.springframework.beans.factory.annotation.Autowired; 3 | import org.springframework.stereotype.Controller; 4 | import org.springframework.web.bind.annotation.RequestMapping; 5 | import org.springframework.web.bind.annotation.ResponseBody; 6 | 7 | import cn.tedu.ttms.common.service.SysShiroService; 8 | import cn.tedu.ttms.common.web.JsonResult; 9 | 10 | @Controller 11 | public class SysLoginController { 12 | @Autowired 13 | private SysShiroService loginService; 14 | @RequestMapping("/loginUI") 15 | public String login(){ 16 | return "login"; 17 | } 18 | /**登录操作*/ 19 | @RequestMapping("/login") 20 | @ResponseBody 21 | public JsonResult login(String username,String password){ 22 | System.out.println(username+"/"+password); 23 | loginService.login(username, password); 24 | return new JsonResult(); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/main/java/cn/tedu/ttms/system/controller/SysMenuController.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.ttms.system.controller; 2 | import java.util.List; 3 | import java.util.Map; 4 | import javax.annotation.Resource; 5 | import org.springframework.stereotype.Controller; 6 | import org.springframework.web.bind.annotation.RequestMapping; 7 | import org.springframework.web.bind.annotation.ResponseBody; 8 | 9 | import cn.tedu.ttms.common.web.JsonResult; 10 | import cn.tedu.ttms.system.entity.SysMenu; 11 | import cn.tedu.ttms.system.service.SysMenuService; 12 | 13 | @Controller 14 | @RequestMapping("/menu/") 15 | public class SysMenuController { 16 | 17 | @Resource 18 | private SysMenuService menuService; 19 | 20 | @RequestMapping("listUI") 21 | //@RequiresPermissions("sys:menu:view") 22 | public String listUI(){ 23 | return "system/menu_list"; 24 | } 25 | 26 | /** 27 | * 查找所有菜单 28 | * @param entity 29 | * @return 30 | */ 31 | @RequestMapping("doFindObjects") 32 | @ResponseBody 33 | public JsonResult doFindObjects(){ 34 | List> list = 35 | menuService.findObjects(); 36 | return new JsonResult(list); 37 | } 38 | 39 | /** 40 | * 新增 41 | */ 42 | @RequestMapping("editUI") 43 | public String editUI(){ 44 | return "system/menu_edit"; 45 | } 46 | 47 | /** 48 | * 加载选择菜单树结构 49 | */ 50 | @RequestMapping("treeUI") 51 | @ResponseBody 52 | public JsonResult treeUI(){ 53 | List> list = 54 | menuService.findZtreeNodes(); 55 | return new JsonResult(list); 56 | } 57 | 58 | /** 59 | * 添加菜单 60 | */ 61 | @RequestMapping("doSaveObject") 62 | @ResponseBody 63 | public JsonResult save(SysMenu entity){ 64 | menuService.saveObject(entity); 65 | return new JsonResult(); 66 | } 67 | 68 | /** 69 | * 根据id查询菜单信息 70 | */ 71 | @RequestMapping("doFindObjectById") 72 | @ResponseBody 73 | public JsonResult doFindObjectById(Integer menuId){ 74 | Map map = 75 | menuService.findMapById(menuId); 76 | return new JsonResult(map); 77 | } 78 | 79 | /**updateMenu*/ 80 | @RequestMapping("doUpdateObject") 81 | @ResponseBody 82 | public JsonResult doUpdateObject(SysMenu entity){ 83 | menuService.updateObject(entity); 84 | return new JsonResult(); 85 | } 86 | 87 | /** 判断要删除的菜单是否有子菜单*/ 88 | @RequestMapping("doDeleteObject") 89 | @ResponseBody 90 | public JsonResult doDeleteObject(Integer menuId){ 91 | menuService.deleteObject(menuId); 92 | return new JsonResult(); 93 | } 94 | 95 | } 96 | -------------------------------------------------------------------------------- /src/main/java/cn/tedu/ttms/system/controller/SysRoleController.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.ttms.system.controller; 2 | import java.util.List; 3 | import java.util.Map; 4 | 5 | import javax.annotation.Resource; 6 | 7 | import org.apache.shiro.authz.annotation.RequiresPermissions; 8 | import org.springframework.stereotype.Controller; 9 | import org.springframework.web.bind.annotation.RequestMapping; 10 | import org.springframework.web.bind.annotation.ResponseBody; 11 | 12 | import cn.tedu.ttms.common.web.JsonResult; 13 | import cn.tedu.ttms.system.entity.SysRole; 14 | import cn.tedu.ttms.system.service.SysRoleService; 15 | 16 | @Controller 17 | @RequestMapping("/role/") 18 | public class SysRoleController { 19 | @Resource 20 | private SysRoleService roleService; 21 | @RequestMapping("listUI") 22 | //@RequiresPermissions("sys:role:view") 23 | public String listUI(){ 24 | return "system/role_list"; 25 | } 26 | 27 | @RequestMapping("editUI") 28 | public String editRoleUI(){ 29 | return "system/role_edit"; 30 | } 31 | /** 32 | * 分页查询角色信息 33 | * @return 34 | */ 35 | @RequestMapping("doFindObjects") 36 | @ResponseBody 37 | public JsonResult doFindObjects(String name,Integer pageCurrent){ 38 | Map map = 39 | roleService.findObjects(name,pageCurrent); 40 | return new JsonResult(map); 41 | } 42 | /** 43 | * 加载菜单树 44 | */ 45 | @RequestMapping("doFindZtreeNodes") 46 | @ResponseBody 47 | public JsonResult findZtreeNodes(){ 48 | List> list = 49 | roleService.findZtreeNodes(); 50 | return new JsonResult(list); 51 | } 52 | /** 53 | * 保存角色信息 54 | */ 55 | @RequestMapping("doSaveObject") 56 | @ResponseBody 57 | public JsonResult saveObject(SysRole role,String menuIdList){ 58 | roleService.saveObject(role,menuIdList); 59 | return new JsonResult(); 60 | } 61 | /** 62 | * 根据id查询角色信息 63 | */ 64 | @RequestMapping("doFindObjectById") 65 | @ResponseBody 66 | public JsonResult findObjectById(Integer roleId){ 67 | Map map = 68 | roleService.findMapById(roleId); 69 | return new JsonResult(map); 70 | } 71 | /** 72 | * 修改更新角色信息 73 | */ 74 | @RequestMapping("doUpdateObject") 75 | @ResponseBody 76 | public JsonResult updateObject(SysRole role,String menuIdList){ 77 | roleService.updateRole(role,menuIdList); 78 | return new JsonResult(); 79 | } 80 | /** 81 | * 删除角色 82 | */ 83 | @RequestMapping("doDeleteObject") 84 | @ResponseBody 85 | public JsonResult deleteObject(Integer roleId){ 86 | roleService.deleteObject(roleId); 87 | return new JsonResult(); 88 | } 89 | } 90 | -------------------------------------------------------------------------------- /src/main/java/cn/tedu/ttms/system/controller/SysUserController.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.ttms.system.controller; 2 | 3 | import java.util.List; 4 | import java.util.Map; 5 | import javax.annotation.Resource; 6 | import org.springframework.stereotype.Controller; 7 | import org.springframework.web.bind.annotation.RequestMapping; 8 | import org.springframework.web.bind.annotation.ResponseBody; 9 | 10 | import cn.tedu.ttms.common.web.JsonResult; 11 | import cn.tedu.ttms.system.entity.SysUser; 12 | import cn.tedu.ttms.system.service.SysUserService; 13 | 14 | @Controller 15 | @RequestMapping("user") 16 | public class SysUserController { 17 | @Resource 18 | private SysUserService userService; 19 | /** 20 | * 用户列表页面 21 | */ 22 | @RequestMapping("listUI") 23 | //@RequiresPermissions("sys:user:view") 24 | public String listUI(){ 25 | return "system/user_list"; 26 | } 27 | /** 28 | * 查询用户列表 29 | */ 30 | @RequestMapping("doFindObjects") 31 | @ResponseBody 32 | public JsonResult doFindObjects(String username,Integer pageCurrent){ 33 | Map map = 34 | userService.findPageObjects(username, pageCurrent); 35 | return new JsonResult(map); 36 | } 37 | 38 | /** 39 | * 跳转到用户编辑页面(新增/修改) 40 | */ 41 | @RequestMapping("editUI") 42 | public String editUser(){ 43 | return "system/user_edit"; 44 | } 45 | /** 46 | * 查询所有角色列表 47 | */ 48 | @RequestMapping("doFindRoles") 49 | @ResponseBody 50 | public JsonResult doFindRoles(){ 51 | List> list = 52 | userService.findSysRoles(); 53 | return new JsonResult(list); 54 | } 55 | 56 | /** 57 | * 保存用户 58 | */ 59 | @RequestMapping("doSaveObject") 60 | @ResponseBody 61 | public JsonResult doSaveObject(SysUser user,String roleIds){ 62 | userService.saveObject(user, roleIds); 63 | return new JsonResult(); 64 | } 65 | /** 66 | * 根据id查询用户信息,用于回显 67 | */ 68 | @RequestMapping("doFindObjectById") 69 | @ResponseBody 70 | public JsonResult doFindObjectById(Integer userId){ 71 | Map map = 72 | userService.findUserById(userId); 73 | //System.out.println("map="+map); 74 | return new JsonResult(map); 75 | } 76 | /** 77 | * 修改更新用户信息 78 | */ 79 | @RequestMapping("doUpdateObject") 80 | @ResponseBody 81 | public JsonResult doUpdateObject(SysUser user,String roleIds){ 82 | userService.updateObject(user,roleIds); 83 | return new JsonResult(); 84 | } 85 | /** 86 | * 启用/禁用 87 | */ 88 | @RequestMapping("doValidById") 89 | @ResponseBody 90 | public JsonResult doValidById(Integer userId,Integer valid){ 91 | userService.validById(userId,valid); 92 | return new JsonResult(); 93 | } 94 | 95 | } 96 | -------------------------------------------------------------------------------- /src/main/java/cn/tedu/ttms/system/dao/SysMenuDao.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.ttms.system.dao; 2 | 3 | import java.util.List; 4 | import java.util.Map; 5 | 6 | import cn.tedu.ttms.common.dao.BaseDao; 7 | import cn.tedu.ttms.system.entity.SysMenu; 8 | 9 | 10 | public interface SysMenuDao extends BaseDao { 11 | 12 | List> findObjects(); 13 | int getRowCount(); 14 | List> findZtreeNodes(); 15 | int hasChild(Integer menuId); 16 | Map findMapById(Integer id); 17 | int deleteObject(Integer id); 18 | 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/cn/tedu/ttms/system/dao/SysRoleDao.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.ttms.system.dao; 2 | import java.util.List; 3 | import java.util.Map; 4 | 5 | import org.apache.ibatis.annotations.Param; 6 | 7 | import cn.tedu.ttms.common.dao.BaseDao; 8 | import cn.tedu.ttms.system.entity.SysRole; 9 | 10 | public interface SysRoleDao extends BaseDao { 11 | /**获取所有角色信息*/ 12 | List> findObjects(); 13 | /**分页获取所有角色信息*/ 14 | List findPageObjects( 15 | @Param("name")String name, 16 | @Param("startIndex")int startIndex, 17 | @Param("pageSize")int pageSize); 18 | /**根据id获取角色信息*/ 19 | SysRole findObjectById(Integer id); 20 | /**根据参数获取名字记录数*/ 21 | public int getRowCounts(@Param("name") String name); 22 | /**根据id删除对象信息*/ 23 | int deleteObject(Integer id); 24 | 25 | } 26 | -------------------------------------------------------------------------------- /src/main/java/cn/tedu/ttms/system/dao/SysRoleMenuDao.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.ttms.system.dao; 2 | 3 | 4 | import java.util.List; 5 | 6 | import org.apache.ibatis.annotations.Param; 7 | 8 | public interface SysRoleMenuDao{ 9 | int insertRoleMenus(@Param("roleId")Integer roleId,@Param("menuIds")String[] menuIds); 10 | int deleteObject(Integer id); 11 | List findMenuIdsByRoleId(Integer id); 12 | 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/cn/tedu/ttms/system/dao/SysUserDao.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.ttms.system.dao; 2 | 3 | import java.util.List; 4 | import java.util.Map; 5 | 6 | import org.apache.ibatis.annotations.Param; 7 | 8 | import cn.tedu.ttms.common.dao.BaseDao; 9 | import cn.tedu.ttms.system.entity.SysUser; 10 | 11 | public interface SysUserDao extends BaseDao { 12 | 13 | List findPageObjects( 14 | @Param("username")String username, 15 | @Param("startIndex")Integer startIndex, 16 | @Param("pageSize") Integer pageSize); 17 | 18 | int getRowCount(@Param("username")String username); 19 | SysUser findObjectById(Integer id); 20 | int validById(@Param("id")Integer id,@Param("valid")Integer valid); 21 | SysUser findObjectByName(String username); 22 | /** 23 | * 查询用户得权限 24 | * @param userId 25 | */ 26 | List findUserPermissions(Integer userId); 27 | List> findUserMenus(Integer userId); 28 | 29 | 30 | 31 | } 32 | -------------------------------------------------------------------------------- /src/main/java/cn/tedu/ttms/system/dao/SysUserRoleDao.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.ttms.system.dao; 2 | import java.util.List; 3 | import java.util.Map; 4 | import org.apache.ibatis.annotations.Param; 5 | 6 | public interface SysUserRoleDao { 7 | int isUsedByUser(@Param("roleId")Integer roleId); 8 | int insertObject(@Param("userId")Integer userId, 9 | @Param("roleIds")String[] roleIds); 10 | int deleteUserRoles(Integer userId); 11 | List findRoleIdsByUserId(Integer userId); 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/cn/tedu/ttms/system/entity/SysRole.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.ttms.system.entity; 2 | 3 | import java.io.Serializable; 4 | import java.util.Date; 5 | 6 | public class SysRole implements Serializable { 7 | private static final long serialVersionUID = -4947502179670638712L; 8 | private Integer id; 9 | private String name; 10 | private String note; 11 | private String createdUser; 12 | private String modifiedUser; 13 | private Date coreatedTime; 14 | private Date modifiedTime; 15 | public Integer getId() { 16 | return id; 17 | } 18 | public void setId(Integer id) { 19 | this.id = id; 20 | } 21 | public String getName() { 22 | return name; 23 | } 24 | public void setName(String name) { 25 | this.name = name; 26 | } 27 | public String getNote() { 28 | return note; 29 | } 30 | public void setNote(String note) { 31 | this.note = note; 32 | } 33 | public String getCreatedUser() { 34 | return createdUser; 35 | } 36 | public void setCreatedUser(String createdUser) { 37 | this.createdUser = createdUser; 38 | } 39 | public String getModifiedUser() { 40 | return modifiedUser; 41 | } 42 | public void setModifiedUser(String modifiedUser) { 43 | this.modifiedUser = modifiedUser; 44 | } 45 | public Date getCoreatedTime() { 46 | return coreatedTime; 47 | } 48 | public void setCoreatedTime(Date coreatedTime) { 49 | this.coreatedTime = coreatedTime; 50 | } 51 | public Date getModifiedTime() { 52 | return modifiedTime; 53 | } 54 | public void setModifiedTime(Date modifiedTime) { 55 | this.modifiedTime = modifiedTime; 56 | } 57 | @Override 58 | public String toString() { 59 | return "Role [id=" + id + ", name=" + name + ", note=" + note + ", createdUser=" + createdUser 60 | + ", modifiedUser=" + modifiedUser + ", coreatedTime=" + coreatedTime + ", modifiedTime=" + modifiedTime 61 | + "]"; 62 | } 63 | @Override 64 | public int hashCode() { 65 | final int prime = 31; 66 | int result = 1; 67 | result = prime * result + ((id == null) ? 0 : id.hashCode()); 68 | return result; 69 | } 70 | @Override 71 | public boolean equals(Object obj) { 72 | if (this == obj) 73 | return true; 74 | if (obj == null) 75 | return false; 76 | if (getClass() != obj.getClass()) 77 | return false; 78 | SysRole other = (SysRole) obj; 79 | if (id == null) { 80 | if (other.id != null) 81 | return false; 82 | } else if (!id.equals(other.id)) 83 | return false; 84 | return true; 85 | } 86 | 87 | 88 | } 89 | -------------------------------------------------------------------------------- /src/main/java/cn/tedu/ttms/system/entity/SysRoleMenu.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.ttms.system.entity; 2 | 3 | import java.io.Serializable; 4 | 5 | public class SysRoleMenu implements Serializable{ 6 | /** 7 | * 8 | */ 9 | private static final long serialVersionUID = -2672889691576779463L; 10 | private Integer id; 11 | private Integer roleId; 12 | private Integer menuId; 13 | public Integer getId() { 14 | return id; 15 | } 16 | public void setId(Integer id) { 17 | this.id = id; 18 | } 19 | public Integer getRoleId() { 20 | return roleId; 21 | } 22 | public void setRoleId(Integer roleId) { 23 | this.roleId = roleId; 24 | } 25 | public Integer getMenuId() { 26 | return menuId; 27 | } 28 | public void setMenuId(Integer menuId) { 29 | this.menuId = menuId; 30 | } 31 | @Override 32 | public String toString() { 33 | return "RoleMenu [id=" + id + ", roleId=" + roleId + ", menuId=" + menuId + "]"; 34 | } 35 | @Override 36 | public int hashCode() { 37 | final int prime = 31; 38 | int result = 1; 39 | result = prime * result + ((id == null) ? 0 : id.hashCode()); 40 | return result; 41 | } 42 | @Override 43 | public boolean equals(Object obj) { 44 | if (this == obj) 45 | return true; 46 | if (obj == null) 47 | return false; 48 | if (getClass() != obj.getClass()) 49 | return false; 50 | SysRoleMenu other = (SysRoleMenu) obj; 51 | if (id == null) { 52 | if (other.id != null) 53 | return false; 54 | } else if (!id.equals(other.id)) 55 | return false; 56 | return true; 57 | } 58 | } 59 | -------------------------------------------------------------------------------- /src/main/java/cn/tedu/ttms/system/entity/SysUserRole.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.ttms.system.entity; 2 | 3 | import java.io.Serializable; 4 | 5 | public class SysUserRole implements Serializable{ 6 | 7 | private static final long serialVersionUID = -2342647929704997618L; 8 | private Integer id; 9 | private Integer userId; 10 | private Integer roleId; 11 | public Integer getId() { 12 | return id; 13 | } 14 | public void setId(Integer id) { 15 | this.id = id; 16 | } 17 | public Integer getUserId() { 18 | return userId; 19 | } 20 | public void setUserId(Integer userId) { 21 | this.userId = userId; 22 | } 23 | public Integer getRoleId() { 24 | return roleId; 25 | } 26 | public void setRoleId(Integer roleId) { 27 | this.roleId = roleId; 28 | } 29 | @Override 30 | public String toString() { 31 | return "UserRole [id=" + id + ", userId=" + userId + ", roleId=" + roleId + "]"; 32 | } 33 | @Override 34 | public int hashCode() { 35 | final int prime = 31; 36 | int result = 1; 37 | result = prime * result + ((id == null) ? 0 : id.hashCode()); 38 | return result; 39 | } 40 | @Override 41 | public boolean equals(Object obj) { 42 | if (this == obj) 43 | return true; 44 | if (obj == null) 45 | return false; 46 | if (getClass() != obj.getClass()) 47 | return false; 48 | SysUserRole other = (SysUserRole) obj; 49 | if (id == null) { 50 | if (other.id != null) 51 | return false; 52 | } else if (!id.equals(other.id)) 53 | return false; 54 | return true; 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /src/main/java/cn/tedu/ttms/system/service/SysMenuService.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.ttms.system.service; 2 | 3 | import java.util.List; 4 | import java.util.Map; 5 | 6 | import cn.tedu.ttms.system.entity.SysMenu; 7 | 8 | public interface SysMenuService { 9 | 10 | List> findObjects(); 11 | List> findZtreeNodes(); 12 | void saveObject(SysMenu entity); 13 | Map findMapById(Integer menuId); 14 | void updateObject(SysMenu entity); 15 | void deleteObject(Integer menuId); 16 | 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/cn/tedu/ttms/system/service/SysRoleService.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.ttms.system.service; 2 | 3 | import java.util.List; 4 | import java.util.Map; 5 | 6 | import cn.tedu.ttms.system.entity.SysRole; 7 | 8 | 9 | public interface SysRoleService { 10 | 11 | Map findObjects(String name, 12 | Integer pageCurrent); 13 | void saveObject(SysRole role,String menuIdList); 14 | Map findMapById(Integer roleId); 15 | void updateRole(SysRole role,String menuIdList); 16 | void deleteObject(Integer roleId); 17 | List> findZtreeNodes(); 18 | 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/cn/tedu/ttms/system/service/SysUserService.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.ttms.system.service; 2 | 3 | import java.util.List; 4 | import java.util.Map; 5 | import cn.tedu.ttms.system.entity.SysUser; 6 | 7 | public interface SysUserService { 8 | 9 | Map findPageObjects(String username, 10 | Integer currentPage); 11 | void saveObject(SysUser user,String roleIds); 12 | Map findUserById(Integer userId); 13 | void updateObject(SysUser user,String roleIds); 14 | void validById(Integer userId, Integer valid); 15 | List findUserPermissions(Integer userId); 16 | List> findUserMenus(Integer userId); 17 | List> findSysRoles(); 18 | 19 | 20 | 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/cn/tedu/ttms/system/service/impl/SysMenuServiceImpl.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.ttms.system.service.impl; 2 | 3 | import java.util.List; 4 | import java.util.Map; 5 | 6 | import javax.annotation.Resource; 7 | 8 | import org.springframework.stereotype.Service; 9 | import org.springframework.transaction.annotation.Transactional; 10 | 11 | import cn.tedu.ttms.common.exception.ServiceException; 12 | import cn.tedu.ttms.system.dao.SysMenuDao; 13 | import cn.tedu.ttms.system.entity.SysMenu; 14 | import cn.tedu.ttms.system.service.SysMenuService; 15 | 16 | @Service("menuService") 17 | @Transactional 18 | public class SysMenuServiceImpl implements SysMenuService{ 19 | @Resource 20 | private SysMenuDao menuDao; 21 | public List> findObjects() { 22 | return menuDao.findObjects(); 23 | } 24 | public List> findZtreeNodes() { 25 | return menuDao.findZtreeNodes(); 26 | } 27 | public void saveObject(SysMenu entity) { 28 | if(entity==null) 29 | throw new ServiceException("添加菜单对象不能为空!"); 30 | int i = menuDao.insertObject(entity); 31 | if(i!=1) 32 | throw new ServiceException("添加菜单失败!"); 33 | } 34 | public Map findMapById(Integer menuId) { 35 | if(menuId==null) 36 | throw new ServiceException("菜单id能为空!"); 37 | Map map = menuDao.findMapById(menuId); 38 | if(map==null || map.size()==0) 39 | throw new ServiceException("修改菜单信息过程中获取菜单信息失败!"); 40 | 41 | return map; 42 | } 43 | 44 | public void updateObject(SysMenu entity) { 45 | if(entity==null) 46 | throw new ServiceException("修改菜单信息,菜单对象不能为空!"); 47 | int i = menuDao.updateObject(entity); 48 | if(i!=1) 49 | throw new ServiceException("更新菜单信息失败!"); 50 | } 51 | public void deleteObject(Integer menuId) { 52 | if(menuId==null) 53 | throw new ServiceException("删除菜单,菜单id不能为空!"); 54 | int count = menuDao.hasChild(menuId); 55 | if(count!=0) 56 | throw new ServiceException("请先删除子菜单或按钮!"); 57 | int i = menuDao.deleteObject(menuId); 58 | if(i!=1)throw new ServiceException("删除菜单失败!"); 59 | } 60 | } 61 | -------------------------------------------------------------------------------- /src/main/resources/config.properties: -------------------------------------------------------------------------------- 1 | driver=com.mysql.jdbc.Driver 2 | url=jdbc:mysql:///ttms?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true&useSSL=true 3 | username=root 4 | password=root 5 | initialSize=5 6 | maxActive=50 7 | minIdle=0 8 | maxWait=60000 9 | druid.filters= 10 | timeBetweenLogStatsMillis=60000 -------------------------------------------------------------------------------- /src/main/resources/log4j2.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 8 | 9 | 10 | 11 | 12 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /src/main/resources/mapper/attachement/AttchmentMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 12 | 13 | 18 | 19 | 26 | 28 | insert into tms_attachements( 29 | title, 30 | fileName, 31 | contentType, 32 | filePath, 33 | fileDisgest, 34 | athType, 35 | belongId, 36 | createdUser, 37 | modifiedUser, 38 | createdTime, 39 | modifiedTime 40 | )values( 41 | #{title}, 42 | #{fileName}, 43 | #{contentType}, 44 | #{filePath}, 45 | #{fileDisgest}, 46 | #{athType}, 47 | #{belongId}, 48 | #{createdUser}, 49 | #{modifiedUser}, 50 | NOW(), 51 | NOW() 52 | ); 53 | 54 | 55 | -------------------------------------------------------------------------------- /src/main/resources/mapper/product/ProductTypeMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 12 | 13 | 18 | 22 | 28 | 29 | 30 | delete from tms_classes 31 | where id=#{id} 32 | 33 | 35 | 39 | insert into tms_classes 40 | ( 41 | id, 42 | name, 43 | sort, 44 | parentId, 45 | note, 46 | createdTime, 47 | modifiedTime, 48 | createdUser, 49 | modifiedUser 50 | )values( 51 | #{id}, 52 | #{name}, 53 | #{sort}, 54 | #{parentId}, 55 | #{note}, 56 | NOW(), 57 | NOW(), 58 | #{createdUser}, 59 | #{modifiedUser} 60 | ) 61 | 62 | 64 | 70 | 72 | update tms_classes 73 | set 74 | name=#{name}, 75 | parentId=#{parentId}, 76 | note=#{note}, 77 | modifiedTime=now(), 78 | modifiedUser=#{modifiedUser} 79 | where id=#{id} 80 | 81 | -------------------------------------------------------------------------------- /src/main/resources/mapper/product/TeamMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 7 | 8 | 9 | t.valid=#{valid} 10 | 11 | 12 | and t.projectId=#{projectId} 13 | 14 | 15 | 16 | 25 | 32 | 33 | 34 | 35 | 37 | insert into tms_teams 38 | ( 39 | name, 40 | projectId, 41 | valid, 42 | note, 43 | createdTime, 44 | modifiedTime, 45 | createdUser, 46 | modifiedUser 47 | ) 48 | values 49 | (#{name}, 50 | #{projectId}, 51 | #{valid}, 52 | #{note}, 53 | NOW(), 54 | NOW(), 55 | #{createdUser}, 56 | #{modifiedUser}); 57 | 58 | 59 | update tms_teams 60 | set valid=#{valid} 61 | where id in 62 | 63 | 67 | #{item} 68 | 69 | 70 | 71 | 72 | 73 | 75 | update tms_teams 76 | set 77 | name=#{name}, 78 | projectId=#{projectId}, 79 | valid=#{valid}, 80 | note=#{note}, 81 | modifiedTime=NOW(), 82 | modifiedUser=#{modifiedUser} 83 | where id=#{id} 84 | 85 | 86 | 87 | 93 | -------------------------------------------------------------------------------- /src/main/resources/mapper/system/SysMenuMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 12 | 13 | 14 | 22 | 23 | 31 | 32 | 34 | insert into 35 | sys_menus(name,url,type,sort,parentId,permission,createdTime,modifiedTime) 36 | values 37 | (#{name},#{url},#{type},#{sort},#{parentId}, 38 | #{permission},NOW(),NOW()) 39 | 40 | 41 | 42 | 56 | 57 | 59 | update sys_menus 60 | set 61 | name= #{name}, 62 | url = #{url}, 63 | type = #{type}, 64 | sort = #{sort}, 65 | parentId = #{parentId}, 66 | permission = #{permission}, 67 | modifiedTime = NOW() 68 | where id = #{id} 69 | 70 | 71 | 76 | 77 | 78 | delete from sys_menus where id = #{id} 79 | 80 | -------------------------------------------------------------------------------- /src/main/resources/mapper/system/SysRoleMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 16 | 17 | 25 | 28 | 32 | insert into 33 | sys_roles(name,note,createdTime,modifiedTime) 34 | values 35 | (#{name}, #{note}, NOW(), NOW()) 36 | 37 | 38 | 39 | 50 | 51 | 53 | update sys_roles 54 | set 55 | name = #{name}, 56 | note = #{note}, 57 | modifiedTime = NOW() 58 | where id = #{id} 59 | 60 | 61 | 62 | 63 | delete from sys_roles where id = #{id} 64 | 65 | 66 | 67 | 71 | -------------------------------------------------------------------------------- /src/main/resources/mapper/system/SysRoleMenuMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | insert into sys_role_menus (role_id,menu_id) 7 | values 8 | 9 | (#{roleId},#{item}) 10 | 11 | 12 | 13 | 14 | 22 | 23 | 24 | 26 | delete from sys_role_menus where role_id=#{id} 27 | 28 | 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /src/main/resources/mapper/system/SysUserRoleMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 15 | 16 | 17 | insert into 18 | sys_user_roles(user_id,role_id) 19 | values 20 | 21 | (#{userId},#{item}) 22 | 23 | 24 | 25 | 33 | 34 | 35 | delete from sys_user_roles where user_id = #{id} 36 | 37 | -------------------------------------------------------------------------------- /src/main/resources/mybatis-config.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 15 | 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /src/main/resources/spring-mvc.xml: -------------------------------------------------------------------------------- 1 | 2 | 18 | 19 | 25 | 26 | 27 | 28 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | -------------------------------------------------------------------------------- /src/main/webapp/WEB-INF/pages/attachment/attachment.jsp: -------------------------------------------------------------------------------- 1 | <%@ page contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> 2 | <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> 3 | 4 | 5 | 6 |
7 | 8 | 16 |
18 | 19 | 28 | 29 |
30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 |
标题文件名文件类型操作
41 |
42 |
43 |
44 | 45 | 46 | 47 | 48 | 49 | -------------------------------------------------------------------------------- /src/main/webapp/WEB-INF/pages/common/page.jsp: -------------------------------------------------------------------------------- 1 | <%@ page contentType="text/html; charset=UTF-8" 2 | pageEncoding="UTF-8"%> 3 | 4 | 首页 5 | 上一页  6 | 7 | 尾页 8 | 总页数(1) 9 | 当前页(1) 10 | -------------------------------------------------------------------------------- /src/main/webapp/WEB-INF/pages/error.jsp: -------------------------------------------------------------------------------- 1 | <%@ page language="java" contentType="text/html; charset=UTF-8" 2 | pageEncoding="UTF-8"%> 3 | 4 | 5 | 6 | 7 | Insert title here 8 | 9 | 10 |

error:${exp}

11 | 12 | -------------------------------------------------------------------------------- /src/main/webapp/WEB-INF/pages/footer.jsp: -------------------------------------------------------------------------------- 1 | <%@ page language="java" contentType="text/html; charset=UTF-8" 2 | pageEncoding="UTF-8"%> 3 |
4 | 7 | Copyright © 2017-2020 tarena. All rightsreserved. 8 |
-------------------------------------------------------------------------------- /src/main/webapp/WEB-INF/pages/product/project_edit.jsp: -------------------------------------------------------------------------------- 1 | <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> 2 | <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 3 | 10 |
11 |
12 | 13 |
14 | 15 |
16 |
17 |
18 | 19 |
20 | 21 |
22 |
23 |
24 | 25 |
26 | 27 |
28 |
29 |
30 | 31 |
32 | 33 |
34 |
35 |
36 | 37 |
38 | 39 | 40 |
41 |
42 |
43 | 44 |
45 | 46 |
47 |
48 |
49 | 50 | -------------------------------------------------------------------------------- /src/main/webapp/WEB-INF/pages/product/project_list.jsp: -------------------------------------------------------------------------------- 1 | <%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> 2 | <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> 3 | <%@taglib prefix="shiro" uri="http://shiro.apache.org/tags" %> 4 | 5 | 6 | 7 | 8 |
9 | 10 | 18 |
19 | 20 | 36 | 37 |
38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 |
选择项目编码项目名称开始时间结束时间状态操作
54 | <%@include file="../common/page.jsp" %> 55 |
56 |
57 |
-------------------------------------------------------------------------------- /src/main/webapp/WEB-INF/pages/product/team_edit.jsp: -------------------------------------------------------------------------------- 1 | <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> 2 | <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 3 | 10 |
11 |
12 | 13 |
14 | 15 |
16 |
17 |
18 | 19 |
20 | 21 |
22 |
23 |
24 | 25 |
26 | 27 | 28 |
29 |
30 |
31 | 32 |
33 | 34 |
35 |
36 |
37 | 38 | -------------------------------------------------------------------------------- /src/main/webapp/WEB-INF/pages/product/team_list.jsp: -------------------------------------------------------------------------------- 1 | <%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> 2 | <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> 3 | 4 | 5 | 6 | 7 |
8 | 9 | 17 |
18 | 19 | 39 | 40 |
41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 |
选择团名称所属项目状态操作
55 | <%@include file="../common/page.jsp" %> 56 |
57 |
58 |
-------------------------------------------------------------------------------- /src/main/webapp/WEB-INF/pages/product/type_edit.jsp: -------------------------------------------------------------------------------- 1 | <%@ page language="java" contentType="text/html; charset=UTF-8" 2 | pageEncoding="UTF-8"%> 3 | <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> 4 | 5 |
6 | 7 | 15 |
16 |
17 |
18 |
分类名称:
19 |
20 | 21 |
22 |
23 |
24 |
上级分类:
25 |
26 | 28 |
29 |
30 | 31 |
32 |
排序号:
33 |
34 | 35 |
36 |
37 |
38 | 39 |
40 | 41 |
42 |
43 |
44 |
45 | 46 |      47 | 48 |
49 |
50 |
51 |
52 | 53 | 54 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | -------------------------------------------------------------------------------- /src/main/webapp/WEB-INF/pages/product/type_list.jsp: -------------------------------------------------------------------------------- 1 | <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> 2 | <%@taglib uri= "http://java.sun.com/jsp/jstl/core" prefix= "c" %> 3 | 4 | 5 | 6 |
7 | 8 | 15 |
16 | 17 | 26 | 27 |
28 | 29 | 30 | 31 | 32 | 33 | 34 |
35 |
36 |
37 |
38 | -------------------------------------------------------------------------------- /src/main/webapp/WEB-INF/pages/system/menu_list.jsp: -------------------------------------------------------------------------------- 1 | <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> 2 | <%@taglib uri= "http://java.sun.com/jsp/jstl/core" prefix= "c" %> 3 | 4 | 5 |
6 | 7 | 14 |
15 | 16 | 25 | 26 |
27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 |
35 |
36 |
37 | -------------------------------------------------------------------------------- /src/main/webapp/WEB-INF/pages/system/role_edit.jsp: -------------------------------------------------------------------------------- 1 | <%@ page language="java" contentType="text/html; charset=UTF-8" 2 | pageEncoding="UTF-8"%> 3 | <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> 4 | 5 |
6 | 7 | 14 |
15 |
16 |
17 |
角色名称
18 |
19 | 20 |
21 |
22 |
23 |
备注
24 |
25 | 26 |
27 |
28 |
29 |
授权
30 |
31 | 32 |
33 |
34 |
35 |
36 | 37 |    38 | 39 |
40 |
41 |
42 |
43 | -------------------------------------------------------------------------------- /src/main/webapp/WEB-INF/pages/system/role_list.jsp: -------------------------------------------------------------------------------- 1 | <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> 2 | <%@taglib uri= "http://java.sun.com/jsp/jstl/core" prefix= "c" %> 3 | 4 | 5 |
6 | 7 | 14 |
15 | 16 | 27 | 28 |
29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 |
选择角色ID角色名称备注
40 | <%@include file="../common/page.jsp" %> 41 |
42 |
43 |
44 | -------------------------------------------------------------------------------- /src/main/webapp/WEB-INF/pages/system/user_edit.jsp: -------------------------------------------------------------------------------- 1 | <%@ page language="java" contentType="text/html; charset=UTF-8" 2 | pageEncoding="UTF-8"%> 3 | <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> 4 | 5 |
6 | 7 | 14 |
15 |
16 |
17 |
*用户名:
18 |
19 | 20 |
21 |
22 |
23 |
*密码:
24 |
25 | 26 |
27 |
28 | 34 |
35 |
邮箱:
36 |
37 | 38 |
39 |
40 |
41 |
*手机号:
42 |
43 | 44 |
45 |
46 |
47 |
角色:
48 |
49 | 50 |
51 |
52 |
53 |
54 | 55 |    56 | 57 |
58 |
59 |
60 |
61 | -------------------------------------------------------------------------------- /src/main/webapp/WEB-INF/pages/system/user_list.jsp: -------------------------------------------------------------------------------- 1 | <%@ page language="java" contentType="text/html; charset=UTF-8" 2 | pageEncoding="UTF-8"%> 3 | <%@taglib uri= "http://java.sun.com/jsp/jstl/core" prefix= "c" %> 4 | 5 | 6 |
7 | 8 | 15 |
16 | 17 | 27 | 28 |
29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 |
选择用户名邮箱手机号状态操作
42 | <%@include file="../common/page.jsp" %> 43 |
44 |
45 |
46 | -------------------------------------------------------------------------------- /src/main/webapp/WEB-INF/web.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | ttms1.02 4 | 5 | dispatcherServlet 6 | org.springframework.web.servlet.DispatcherServlet 7 | 8 | contextConfigLocation 9 | classpath:spring-*.xml 10 | 11 | 1 12 | 13 | 14 | dispatcherServlet 15 | *.do 16 | 17 | 18 | 19 | DelegatingFilterProxy 20 | org.springframework.web.filter.DelegatingFilterProxy 21 | 22 | 23 | targetBeanName 24 | shiroFilter 25 | 26 | 27 | 28 | DelegatingFilterProxy 29 | /* 30 | 31 | 32 | 33 | default.html 34 | 35 | -------------------------------------------------------------------------------- /src/main/webapp/bootstrap/css/main.css: -------------------------------------------------------------------------------- 1 | html { overflow-x:hidden; } 2 | .content-header { 3 | position: relative; 4 | padding: 0 0 3px 8px 5 | } 6 | 7 | .content-header>.breadcrumb { 8 | position: relative; 9 | top: 0; 10 | right: 0; 11 | float: none; 12 | margin-top: 0px; 13 | padding-left: 10px; 14 | background: #ecf0f5; 15 | } 16 | 17 | .main-footer { 18 | padding: 7px; 19 | color: #444; 20 | border-top: 1px solid #eee; 21 | } 22 | 23 | [v-cloak] { 24 | display: none; 25 | } 26 | 27 | .grid-btn{ 28 | margin-bottom:12px; 29 | } 30 | .grid-btn .btn{ 31 | margin-right:10px; 32 | } 33 | .pointer{cursor: pointer;} 34 | 35 | .ml-10 { margin-left:0 !important; } 36 | @media (min-width: 768px) { 37 | .ml-10 { margin-left:10px !important; } 38 | .col-sm-10 {width: 70%;padding-left: 0px;} 39 | .col-sm-2 {width: 24%;} 40 | } 41 | tbody > tr > th {font-weight: normal; } 42 | .panel .table { margin:0 0; } 43 | .panel .pagination { margin:0; } 44 | .panel-default>.panel-heading {background-color: #f5f5f5;} 45 | .row{ 46 | border-top: 1px solid #ddd; 47 | margin:0; 48 | padding:20px 2px 0px 2px; 49 | } 50 | .col-xs-6{padding-left: 0px;padding-right: 0px;} 51 | .form-horizontal .form-group {margin-left:0px;margin-right:0px;} 52 | .form-horizontal{ 53 | width:550px;padding-top:20px; 54 | } -------------------------------------------------------------------------------- /src/main/webapp/bootstrap/fonts/FontAwesome.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vinophantom/TTMS/79820ee57a48614cab928ceca762923dc96af3db/src/main/webapp/bootstrap/fonts/FontAwesome.otf -------------------------------------------------------------------------------- /src/main/webapp/bootstrap/fonts/fontawesome-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vinophantom/TTMS/79820ee57a48614cab928ceca762923dc96af3db/src/main/webapp/bootstrap/fonts/fontawesome-webfont.eot -------------------------------------------------------------------------------- /src/main/webapp/bootstrap/fonts/fontawesome-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vinophantom/TTMS/79820ee57a48614cab928ceca762923dc96af3db/src/main/webapp/bootstrap/fonts/fontawesome-webfont.ttf -------------------------------------------------------------------------------- /src/main/webapp/bootstrap/fonts/fontawesome-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vinophantom/TTMS/79820ee57a48614cab928ceca762923dc96af3db/src/main/webapp/bootstrap/fonts/fontawesome-webfont.woff -------------------------------------------------------------------------------- /src/main/webapp/bootstrap/fonts/fontawesome-webfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vinophantom/TTMS/79820ee57a48614cab928ceca762923dc96af3db/src/main/webapp/bootstrap/fonts/fontawesome-webfont.woff2 -------------------------------------------------------------------------------- /src/main/webapp/bootstrap/fonts/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vinophantom/TTMS/79820ee57a48614cab928ceca762923dc96af3db/src/main/webapp/bootstrap/fonts/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /src/main/webapp/bootstrap/fonts/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vinophantom/TTMS/79820ee57a48614cab928ceca762923dc96af3db/src/main/webapp/bootstrap/fonts/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /src/main/webapp/bootstrap/fonts/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vinophantom/TTMS/79820ee57a48614cab928ceca762923dc96af3db/src/main/webapp/bootstrap/fonts/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /src/main/webapp/bootstrap/fonts/glyphicons-halflings-regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vinophantom/TTMS/79820ee57a48614cab928ceca762923dc96af3db/src/main/webapp/bootstrap/fonts/glyphicons-halflings-regular.woff2 -------------------------------------------------------------------------------- /src/main/webapp/bootstrap/js/router.js: -------------------------------------------------------------------------------- 1 | (function() { 2 | window.Router = function() { 3 | var self = this; 4 | 5 | self.hashList = {}; /* 路由表 */ 6 | self.index = null; 7 | self.key = '!'; 8 | 9 | window.onhashchange = function() { 10 | self.reload(); 11 | }; 12 | }; 13 | 14 | /** 15 | * 添加路由,如果路由已经存在则会覆盖 16 | * @param addr: 地址 17 | * @param callback: 回调函数,调用回调函数的时候同时也会传入相应参数 18 | */ 19 | Router.prototype.add = function(addr, callback) { 20 | var self = this; 21 | 22 | self.hashList[addr] = callback; 23 | }; 24 | 25 | /** 26 | * 删除路由 27 | * @param addr: 地址 28 | */ 29 | Router.prototype.remove = function(addr) { 30 | var self = this; 31 | 32 | delete self.hashList[addr]; 33 | }; 34 | 35 | /** 36 | * 设置主页地址 37 | * @param index: 主页地址 38 | */ 39 | Router.prototype.setIndex = function(index) { 40 | var self = this; 41 | 42 | self.index = index; 43 | }; 44 | 45 | 46 | /** 47 | * 跳转到指定地址 48 | * @param addr: 地址值 49 | */ 50 | Router.prototype.go = function(addr) { 51 | var self = this; 52 | 53 | window.location.hash = '#' + self.key + addr; 54 | }; 55 | 56 | /** 57 | * 重载页面 58 | */ 59 | Router.prototype.reload = function() { 60 | var self = this; 61 | 62 | var hash = window.location.hash.replace('#' + self.key, ''); 63 | //var addr = hash.split('/')[0]; 64 | var addr = hash; 65 | var cb = getCb(addr, self.hashList); 66 | if(cb != false) { 67 | var arr = hash.split('/'); 68 | arr.shift(); 69 | cb.apply(self, arr); 70 | } 71 | else { 72 | self.index && self.go(self.index); 73 | } 74 | }; 75 | 76 | /** 77 | * 开始路由,实际上只是为了当直接访问路由路由地址的时候能够及时调用回调 78 | */ 79 | Router.prototype.start = function() { 80 | var self = this; 81 | 82 | self.reload(); 83 | } 84 | 85 | /** 86 | * 获取callback 87 | * @return false or callback 88 | */ 89 | function getCb(addr, hashList) { 90 | for(var key in hashList) { 91 | if(key == addr) { 92 | return hashList[key] 93 | } 94 | } 95 | return false; 96 | } 97 | })(); -------------------------------------------------------------------------------- /src/main/webapp/bootstrap/plugins/jqgrid/ui.jqgrid-bootstrap-ui.css: -------------------------------------------------------------------------------- 1 | /* 2 | To change this license header, choose License Headers in Project Properties. 3 | To change this template file, choose Tools | Templates 4 | and open the template in the editor. 5 | */ 6 | /* 7 | Created on : Mar 16, 2015, 10:24:01 AM 8 | Author : tony 9 | */ 10 | 11 | .ui-jqgrid tr.jqgrow td { height: 26px;} 12 | .ui-jqgrid .ui-pg-input,.ui-jqgrid .ui-jqgrid-toppager .ui-pg-input { height:20px } 13 | .ui-state-hover 14 | { 15 | border: .15em solid; 16 | border-color: inherit; 17 | 18 | } 19 | .ui-jqdialog .ui-jqdialog-titlebar { 20 | height:29px; 21 | border-color: inherit; 22 | } 23 | 24 | .ui-jqdialog-content input.FormElement { 25 | padding: 0.25em; 26 | } 27 | 28 | .fm-button { 29 | height:30px; 30 | } 31 | #nData, #pData { height:20px; width:18px; } -------------------------------------------------------------------------------- /src/main/webapp/bootstrap/plugins/layer/skin/default/icon-ext.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vinophantom/TTMS/79820ee57a48614cab928ceca762923dc96af3db/src/main/webapp/bootstrap/plugins/layer/skin/default/icon-ext.png -------------------------------------------------------------------------------- /src/main/webapp/bootstrap/plugins/layer/skin/default/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vinophantom/TTMS/79820ee57a48614cab928ceca762923dc96af3db/src/main/webapp/bootstrap/plugins/layer/skin/default/icon.png -------------------------------------------------------------------------------- /src/main/webapp/bootstrap/plugins/layer/skin/default/loading-0.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vinophantom/TTMS/79820ee57a48614cab928ceca762923dc96af3db/src/main/webapp/bootstrap/plugins/layer/skin/default/loading-0.gif -------------------------------------------------------------------------------- /src/main/webapp/bootstrap/plugins/layer/skin/default/loading-1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vinophantom/TTMS/79820ee57a48614cab928ceca762923dc96af3db/src/main/webapp/bootstrap/plugins/layer/skin/default/loading-1.gif -------------------------------------------------------------------------------- /src/main/webapp/bootstrap/plugins/layer/skin/default/loading-2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vinophantom/TTMS/79820ee57a48614cab928ceca762923dc96af3db/src/main/webapp/bootstrap/plugins/layer/skin/default/loading-2.gif -------------------------------------------------------------------------------- /src/main/webapp/bootstrap/plugins/layer/skin/moon/default.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vinophantom/TTMS/79820ee57a48614cab928ceca762923dc96af3db/src/main/webapp/bootstrap/plugins/layer/skin/moon/default.png -------------------------------------------------------------------------------- /src/main/webapp/bootstrap/plugins/layer/skin/moon/style.css: -------------------------------------------------------------------------------- 1 | html #layui_layer_skinmoonstylecss{display:none;position:absolute;width:1989px}body .layer-ext-moon[type=dialog]{min-width:320px}body .layer-ext-moon-msg[type=dialog]{min-width:200px}body .layer-ext-moon .layui-layer-title{background:#f6f6f6;color:#212a31;font-size:16px;font-weight:700;height:46px;line-height:46px;border-bottom:1px solid #D5D5D5}body .layer-ext-moon .layui-layer-content .layui-layer-ico{height:32px;width:32px;top:18.5px}body .layer-ext-moon .layui-layer-ico0{background:url(default.png) -96px 0 no-repeat}body .layer-ext-moon .layui-layer-ico1{background:url(default.png) -224px 0 no-repeat}body .layer-ext-moon .layui-layer-ico2{background:url(default.png) -192px 0 no-repeat}body .layer-ext-moon .layui-layer-ico3{background:url(default.png) -160px 0 no-repeat}body .layer-ext-moon .layui-layer-ico4{background:url(default.png) -320px 0 no-repeat}body .layer-ext-moon .layui-layer-ico5{background:url(default.png) -288px 0 no-repeat}body .layer-ext-moon .layui-layer-ico6{background:url(default.png) -256px 0}body .layer-ext-moon .layui-layer-ico7{background:url(default.png) -128px 0 no-repeat}body .layer-ext-moon .layui-layer-setwin{top:15px;right:15px}body .layer-ext-moon .layui-layer-setwin a{width:16px;height:16px}body .layer-ext-moon .layui-layer-setwin .layui-layer-min cite:hover{background-color:#56abe4}body .layer-ext-moon .layui-layer-setwin .layui-layer-max{background:url(default.png) -80px 0 no-repeat}body .layer-ext-moon .layui-layer-setwin .layui-layer-max:hover{background:url(default.png) -64px 0 no-repeat}body .layer-ext-moon .layui-layer-setwin .layui-layer-maxmin{background:url(default.png) -32px 0 no-repeat}body .layer-ext-moon .layui-layer-setwin .layui-layer-maxmin:hover{background:url(default.png) -16px 0 no-repeat}body .layer-ext-moon .layui-layer-setwin .layui-layer-close1,body .layer-ext-moon .layui-layer-setwin .layui-layer-close2{background:url(default.png)}body .layer-ext-moon .layui-layer-setwin .layui-layer-close1:hover,body .layer-ext-moon .layui-layer-setwin .layui-layer-close2:hover{background:url(default.png) -48px 0}body .layer-ext-moon .layui-layer-padding{padding-top:24px}body .layer-ext-moon .layui-layer-btn{text-align:center;padding-top:15px;padding-bottom:15px;background:#f0f4f7;border-top:1px #c7c7c7 solid}body .layer-ext-moon .layui-layer-btn a{font-size:12px;font-weight:400;margin:0 7px;padding:6px 20px;color:#fff;border:1px solid #0064b6;background:no-repeat #0071ce;border-radius:3px;display:inline-block;height:20px;line-height:20px;text-align:center;vertical-align:middle;text-decoration:none;outline:0}body .layer-ext-moon .layui-layer-btn .layui-layer-btn0{background:#0071ce}body .layer-ext-moon .layui-layer-btn .layui-layer-btn1{background:#fff;color:#404a58;border:1px solid #c0c4cd;border-radius:3px}body .layer-ext-moon .layui-layer-btn .layui-layer-btn2{background:#f60;color:#fff;border:1px solid #f60;border-radius:3px}body .layer-ext-moon .layui-layer-btn .layui-layer-btn3{background:red;color:#fff;border:1px solid red;border-radius:3px}body .layer-ext-moon .layui-layer-title span.layui-layer-tabnow{height:47px} -------------------------------------------------------------------------------- /src/main/webapp/bootstrap/plugins/treegrid/img/collapse.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vinophantom/TTMS/79820ee57a48614cab928ceca762923dc96af3db/src/main/webapp/bootstrap/plugins/treegrid/img/collapse.png -------------------------------------------------------------------------------- /src/main/webapp/bootstrap/plugins/treegrid/img/expand.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vinophantom/TTMS/79820ee57a48614cab928ceca762923dc96af3db/src/main/webapp/bootstrap/plugins/treegrid/img/expand.png -------------------------------------------------------------------------------- /src/main/webapp/bootstrap/plugins/treegrid/img/file.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vinophantom/TTMS/79820ee57a48614cab928ceca762923dc96af3db/src/main/webapp/bootstrap/plugins/treegrid/img/file.png -------------------------------------------------------------------------------- /src/main/webapp/bootstrap/plugins/treegrid/img/folder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vinophantom/TTMS/79820ee57a48614cab928ceca762923dc96af3db/src/main/webapp/bootstrap/plugins/treegrid/img/folder.png -------------------------------------------------------------------------------- /src/main/webapp/bootstrap/plugins/treegrid/jquery.treegrid.bootstrap3.js: -------------------------------------------------------------------------------- 1 | $.extend($.fn.treegrid.defaults, { 2 | expanderExpandedClass: 'glyphicon glyphicon-chevron-down', 3 | expanderCollapsedClass: 'glyphicon glyphicon-chevron-right' 4 | }); 5 | -------------------------------------------------------------------------------- /src/main/webapp/bootstrap/plugins/treegrid/jquery.treegrid.css: -------------------------------------------------------------------------------- 1 | .treegrid-indent {width:16px; height: 16px; display: inline-block; position: relative;} 2 | 3 | .treegrid-expander {width:16px; height: 16px; display: inline-block; position: relative; cursor: pointer;} 4 | 5 | .treegrid-expander-expanded{background-image: url(img/collapse.png); } 6 | .treegrid-expander-collapsed{background-image: url(img/expand.png);} 7 | .treegrid-selected{background: #f5f5f5 !important;} 8 | .treegrid-table{border:0 !important;margin-bottom:0} 9 | .treegrid-table tbody {display:block;height:auto;overflow-y:auto;} 10 | .treegrid-table thead, .treegrid-table tbody tr {display:table;width:100%;table-layout:fixed;} 11 | .treegrid-thead th{line-height:40px;border: 0 !important;background:#fff !important;border-radius: 4px;border-left:1px solid #e7eaec !important;border-bottom:2px solid #e7eaec !important;text-align: center;} 12 | .treegrid-thead tr :first-child{border-left:0 !important} 13 | .treegrid-tbody td{border: 0 !important;border-left:1px solid #e7eaec !important;border-bottom:1px solid #e7eaec !important;overflow: hidden; 14 | white-space: nowrap; 15 | text-overflow: ellipsis;} 16 | .treegrid-tbody tr :first-child{border-left:0 !important} 17 | 18 | -------------------------------------------------------------------------------- /src/main/webapp/bootstrap/plugins/ztree/css/awesomeStyle/img/loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vinophantom/TTMS/79820ee57a48614cab928ceca762923dc96af3db/src/main/webapp/bootstrap/plugins/ztree/css/awesomeStyle/img/loading.gif -------------------------------------------------------------------------------- /src/main/webapp/bootstrap/plugins/ztree/css/metroStyle/img/line_conn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vinophantom/TTMS/79820ee57a48614cab928ceca762923dc96af3db/src/main/webapp/bootstrap/plugins/ztree/css/metroStyle/img/line_conn.png -------------------------------------------------------------------------------- /src/main/webapp/bootstrap/plugins/ztree/css/metroStyle/img/loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vinophantom/TTMS/79820ee57a48614cab928ceca762923dc96af3db/src/main/webapp/bootstrap/plugins/ztree/css/metroStyle/img/loading.gif -------------------------------------------------------------------------------- /src/main/webapp/bootstrap/plugins/ztree/css/metroStyle/img/metro.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vinophantom/TTMS/79820ee57a48614cab928ceca762923dc96af3db/src/main/webapp/bootstrap/plugins/ztree/css/metroStyle/img/metro.gif -------------------------------------------------------------------------------- /src/main/webapp/bootstrap/plugins/ztree/css/metroStyle/img/metro.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vinophantom/TTMS/79820ee57a48614cab928ceca762923dc96af3db/src/main/webapp/bootstrap/plugins/ztree/css/metroStyle/img/metro.png -------------------------------------------------------------------------------- /src/main/webapp/bootstrap/plugins/ztree/css/zTreeStyle/img/diy/1_close.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vinophantom/TTMS/79820ee57a48614cab928ceca762923dc96af3db/src/main/webapp/bootstrap/plugins/ztree/css/zTreeStyle/img/diy/1_close.png -------------------------------------------------------------------------------- /src/main/webapp/bootstrap/plugins/ztree/css/zTreeStyle/img/diy/1_open.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vinophantom/TTMS/79820ee57a48614cab928ceca762923dc96af3db/src/main/webapp/bootstrap/plugins/ztree/css/zTreeStyle/img/diy/1_open.png -------------------------------------------------------------------------------- /src/main/webapp/bootstrap/plugins/ztree/css/zTreeStyle/img/diy/2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vinophantom/TTMS/79820ee57a48614cab928ceca762923dc96af3db/src/main/webapp/bootstrap/plugins/ztree/css/zTreeStyle/img/diy/2.png -------------------------------------------------------------------------------- /src/main/webapp/bootstrap/plugins/ztree/css/zTreeStyle/img/diy/3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vinophantom/TTMS/79820ee57a48614cab928ceca762923dc96af3db/src/main/webapp/bootstrap/plugins/ztree/css/zTreeStyle/img/diy/3.png -------------------------------------------------------------------------------- /src/main/webapp/bootstrap/plugins/ztree/css/zTreeStyle/img/diy/4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vinophantom/TTMS/79820ee57a48614cab928ceca762923dc96af3db/src/main/webapp/bootstrap/plugins/ztree/css/zTreeStyle/img/diy/4.png -------------------------------------------------------------------------------- /src/main/webapp/bootstrap/plugins/ztree/css/zTreeStyle/img/diy/5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vinophantom/TTMS/79820ee57a48614cab928ceca762923dc96af3db/src/main/webapp/bootstrap/plugins/ztree/css/zTreeStyle/img/diy/5.png -------------------------------------------------------------------------------- /src/main/webapp/bootstrap/plugins/ztree/css/zTreeStyle/img/diy/6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vinophantom/TTMS/79820ee57a48614cab928ceca762923dc96af3db/src/main/webapp/bootstrap/plugins/ztree/css/zTreeStyle/img/diy/6.png -------------------------------------------------------------------------------- /src/main/webapp/bootstrap/plugins/ztree/css/zTreeStyle/img/diy/7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vinophantom/TTMS/79820ee57a48614cab928ceca762923dc96af3db/src/main/webapp/bootstrap/plugins/ztree/css/zTreeStyle/img/diy/7.png -------------------------------------------------------------------------------- /src/main/webapp/bootstrap/plugins/ztree/css/zTreeStyle/img/diy/8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vinophantom/TTMS/79820ee57a48614cab928ceca762923dc96af3db/src/main/webapp/bootstrap/plugins/ztree/css/zTreeStyle/img/diy/8.png -------------------------------------------------------------------------------- /src/main/webapp/bootstrap/plugins/ztree/css/zTreeStyle/img/diy/9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vinophantom/TTMS/79820ee57a48614cab928ceca762923dc96af3db/src/main/webapp/bootstrap/plugins/ztree/css/zTreeStyle/img/diy/9.png -------------------------------------------------------------------------------- /src/main/webapp/bootstrap/plugins/ztree/css/zTreeStyle/img/line_conn.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vinophantom/TTMS/79820ee57a48614cab928ceca762923dc96af3db/src/main/webapp/bootstrap/plugins/ztree/css/zTreeStyle/img/line_conn.gif -------------------------------------------------------------------------------- /src/main/webapp/bootstrap/plugins/ztree/css/zTreeStyle/img/loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vinophantom/TTMS/79820ee57a48614cab928ceca762923dc96af3db/src/main/webapp/bootstrap/plugins/ztree/css/zTreeStyle/img/loading.gif -------------------------------------------------------------------------------- /src/main/webapp/bootstrap/plugins/ztree/css/zTreeStyle/img/zTreeStandard.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vinophantom/TTMS/79820ee57a48614cab928ceca762923dc96af3db/src/main/webapp/bootstrap/plugins/ztree/css/zTreeStyle/img/zTreeStandard.gif -------------------------------------------------------------------------------- /src/main/webapp/bootstrap/plugins/ztree/css/zTreeStyle/img/zTreeStandard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vinophantom/TTMS/79820ee57a48614cab928ceca762923dc96af3db/src/main/webapp/bootstrap/plugins/ztree/css/zTreeStyle/img/zTreeStandard.png -------------------------------------------------------------------------------- /src/main/webapp/dist/css/alt/AdminLTE-fullcalendar.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Plugin: Full Calendar 3 | * --------------------- 4 | */ 5 | .fc-button { 6 | background: #f4f4f4; 7 | background-image: none; 8 | color: #444; 9 | border-color: #ddd; 10 | border-bottom-color: #ddd; 11 | } 12 | .fc-button:hover, 13 | .fc-button:active, 14 | .fc-button.hover { 15 | background-color: #e9e9e9; 16 | } 17 | .fc-header-title h2 { 18 | font-size: 15px; 19 | line-height: 1.6em; 20 | color: #666; 21 | margin-left: 10px; 22 | } 23 | .fc-header-right { 24 | padding-right: 10px; 25 | } 26 | .fc-header-left { 27 | padding-left: 10px; 28 | } 29 | .fc-widget-header { 30 | background: #fafafa; 31 | } 32 | .fc-grid { 33 | width: 100%; 34 | border: 0; 35 | } 36 | .fc-widget-header:first-of-type, 37 | .fc-widget-content:first-of-type { 38 | border-left: 0; 39 | border-right: 0; 40 | } 41 | .fc-widget-header:last-of-type, 42 | .fc-widget-content:last-of-type { 43 | border-right: 0; 44 | } 45 | .fc-toolbar { 46 | padding: 10px; 47 | margin: 0; 48 | } 49 | .fc-day-number { 50 | font-size: 20px; 51 | font-weight: 300; 52 | padding-right: 10px; 53 | } 54 | .fc-color-picker { 55 | list-style: none; 56 | margin: 0; 57 | padding: 0; 58 | } 59 | .fc-color-picker > li { 60 | float: left; 61 | font-size: 30px; 62 | margin-right: 5px; 63 | line-height: 30px; 64 | } 65 | .fc-color-picker > li .fa { 66 | -webkit-transition: -webkit-transform linear 0.3s; 67 | -moz-transition: -moz-transform linear 0.3s; 68 | -o-transition: -o-transform linear 0.3s; 69 | transition: transform linear 0.3s; 70 | } 71 | .fc-color-picker > li .fa:hover { 72 | -webkit-transform: rotate(30deg); 73 | -ms-transform: rotate(30deg); 74 | -o-transform: rotate(30deg); 75 | transform: rotate(30deg); 76 | } 77 | #add-new-event { 78 | -webkit-transition: all linear 0.3s; 79 | -o-transition: all linear 0.3s; 80 | transition: all linear 0.3s; 81 | } 82 | .external-event { 83 | padding: 5px 10px; 84 | font-weight: bold; 85 | margin-bottom: 4px; 86 | box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1); 87 | text-shadow: 0 1px 1px rgba(0, 0, 0, 0.1); 88 | border-radius: 3px; 89 | cursor: move; 90 | } 91 | .external-event:hover { 92 | box-shadow: inset 0 0 90px rgba(0, 0, 0, 0.2); 93 | } 94 | -------------------------------------------------------------------------------- /src/main/webapp/dist/css/alt/AdminLTE-fullcalendar.min.css: -------------------------------------------------------------------------------- 1 | .fc-button{background:#f4f4f4;background-image:none;color:#444;border-color:#ddd;border-bottom-color:#ddd}.fc-button:hover,.fc-button:active,.fc-button.hover{background-color:#e9e9e9}.fc-header-title h2{font-size:15px;line-height:1.6em;color:#666;margin-left:10px}.fc-header-right{padding-right:10px}.fc-header-left{padding-left:10px}.fc-widget-header{background:#fafafa}.fc-grid{width:100%;border:0}.fc-widget-header:first-of-type,.fc-widget-content:first-of-type{border-left:0;border-right:0}.fc-widget-header:last-of-type,.fc-widget-content:last-of-type{border-right:0}.fc-toolbar{padding:10px;margin:0}.fc-day-number{font-size:20px;font-weight:300;padding-right:10px}.fc-color-picker{list-style:none;margin:0;padding:0}.fc-color-picker>li{float:left;font-size:30px;margin-right:5px;line-height:30px}.fc-color-picker>li .fa{-webkit-transition:-webkit-transform linear .3s;-moz-transition:-moz-transform linear .3s;-o-transition:-o-transform linear .3s;transition:transform linear .3s}.fc-color-picker>li .fa:hover{-webkit-transform:rotate(30deg);-ms-transform:rotate(30deg);-o-transform:rotate(30deg);transform:rotate(30deg)}#add-new-event{-webkit-transition:all linear .3s;-o-transition:all linear .3s;transition:all linear .3s}.external-event{padding:5px 10px;font-weight:bold;margin-bottom:4px;box-shadow:0 1px 1px rgba(0,0,0,0.1);text-shadow:0 1px 1px rgba(0,0,0,0.1);border-radius:3px;cursor:move}.external-event:hover{box-shadow:inset 0 0 90px rgba(0,0,0,0.2)} -------------------------------------------------------------------------------- /src/main/webapp/dist/css/alt/AdminLTE-select2.min.css: -------------------------------------------------------------------------------- 1 | .select2-container--default.select2-container--focus,.select2-selection.select2-container--focus,.select2-container--default:focus,.select2-selection:focus,.select2-container--default:active,.select2-selection:active{outline:none}.select2-container--default .select2-selection--single,.select2-selection .select2-selection--single{border:1px solid #d2d6de;border-radius:0;padding:6px 12px;height:34px}.select2-container--default.select2-container--open{border-color:#3c8dbc}.select2-dropdown{border:1px solid #d2d6de;border-radius:0}.select2-container--default .select2-results__option--highlighted[aria-selected]{background-color:#3c8dbc;color:white}.select2-results__option{padding:6px 12px;user-select:none;-webkit-user-select:none}.select2-container .select2-selection--single .select2-selection__rendered{padding-left:0;padding-right:0;height:auto;margin-top:-4px}.select2-container[dir="rtl"] .select2-selection--single .select2-selection__rendered{padding-right:6px;padding-left:20px}.select2-container--default .select2-selection--single .select2-selection__arrow{height:28px;right:3px}.select2-container--default .select2-selection--single .select2-selection__arrow b{margin-top:0}.select2-dropdown .select2-search__field,.select2-search--inline .select2-search__field{border:1px solid #d2d6de}.select2-dropdown .select2-search__field:focus,.select2-search--inline .select2-search__field:focus{outline:none;border:1px solid #3c8dbc}.select2-container--default .select2-results__option[aria-disabled=true]{color:#999}.select2-container--default .select2-results__option[aria-selected=true]{background-color:#ddd}.select2-container--default .select2-results__option[aria-selected=true],.select2-container--default .select2-results__option[aria-selected=true]:hover{color:#444}.select2-container--default .select2-selection--multiple{border:1px solid #d2d6de;border-radius:0}.select2-container--default .select2-selection--multiple:focus{border-color:#3c8dbc}.select2-container--default.select2-container--focus .select2-selection--multiple{border-color:#d2d6de}.select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#3c8dbc;border-color:#367fa9;padding:1px 10px;color:#fff}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove{margin-right:5px;color:rgba(255,255,255,0.7)}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#fff}.select2-container .select2-selection--single .select2-selection__rendered{padding-right:10px} -------------------------------------------------------------------------------- /src/main/webapp/dist/css/skins/skin-blue.min.css: -------------------------------------------------------------------------------- 1 | .skin-blue .main-header .navbar{background-color:#3c8dbc}.skin-blue .main-header .navbar .nav>li>a{color:#fff}.skin-blue .main-header .navbar .nav>li>a:hover,.skin-blue .main-header .navbar .nav>li>a:active,.skin-blue .main-header .navbar .nav>li>a:focus,.skin-blue .main-header .navbar .nav .open>a,.skin-blue .main-header .navbar .nav .open>a:hover,.skin-blue .main-header .navbar .nav .open>a:focus,.skin-blue .main-header .navbar .nav>.active>a{background:rgba(0,0,0,0.1);color:#f6f6f6}.skin-blue .main-header .navbar .sidebar-toggle{color:#fff}.skin-blue .main-header .navbar .sidebar-toggle:hover{color:#f6f6f6;background:rgba(0,0,0,0.1)}.skin-blue .main-header .navbar .sidebar-toggle{color:#fff}.skin-blue .main-header .navbar .sidebar-toggle:hover{background-color:#367fa9}@media (max-width:767px){.skin-blue .main-header .navbar .dropdown-menu li.divider{background-color:rgba(255,255,255,0.1)}.skin-blue .main-header .navbar .dropdown-menu li a{color:#fff}.skin-blue .main-header .navbar .dropdown-menu li a:hover{background:#367fa9}}.skin-blue .main-header .logo{background-color:#367fa9;color:#fff;border-bottom:0 solid transparent}.skin-blue .main-header .logo:hover{background-color:#357ca5}.skin-blue .main-header li.user-header{background-color:#3c8dbc}.skin-blue .content-header{background:transparent}.skin-blue .wrapper,.skin-blue .main-sidebar,.skin-blue .left-side{background-color:#222d32}.skin-blue .user-panel>.info,.skin-blue .user-panel>.info>a{color:#fff}.skin-blue .sidebar-menu>li.header{color:#4b646f;background:#1a2226}.skin-blue .sidebar-menu>li>a{border-left:3px solid transparent}.skin-blue .sidebar-menu>li:hover>a,.skin-blue .sidebar-menu>li.active>a{color:#fff;background:#1e282c;border-left-color:#3c8dbc}.skin-blue .sidebar-menu>li>.treeview-menu{margin:0 1px;background:#2c3b41}.skin-blue .sidebar a{color:#b8c7ce}.skin-blue .sidebar a:hover{text-decoration:none}.skin-blue .treeview-menu>li>a{color:#8aa4af}.skin-blue .treeview-menu>li.active>a,.skin-blue .treeview-menu>li>a:hover{color:#fff}.skin-blue .sidebar-form{border-radius:3px;border:1px solid #374850;margin:10px 10px}.skin-blue .sidebar-form input[type="text"],.skin-blue .sidebar-form .btn{box-shadow:none;background-color:#374850;border:1px solid transparent;height:35px}.skin-blue .sidebar-form input[type="text"]{color:#666;border-top-left-radius:2px;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:2px}.skin-blue .sidebar-form input[type="text"]:focus,.skin-blue .sidebar-form input[type="text"]:focus+.input-group-btn .btn{background-color:#fff;color:#666}.skin-blue .sidebar-form input[type="text"]:focus+.input-group-btn .btn{border-left-color:#fff}.skin-blue .sidebar-form .btn{color:#999;border-top-left-radius:0;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:0}.skin-blue.layout-top-nav .main-header>.logo{background-color:#3c8dbc;color:#fff;border-bottom:0 solid transparent}.skin-blue.layout-top-nav .main-header>.logo:hover{background-color:#3b8ab8} -------------------------------------------------------------------------------- /src/main/webapp/dist/css/skins/skin-green.min.css: -------------------------------------------------------------------------------- 1 | .skin-green .main-header .navbar{background-color:#00a65a}.skin-green .main-header .navbar .nav>li>a{color:#fff}.skin-green .main-header .navbar .nav>li>a:hover,.skin-green .main-header .navbar .nav>li>a:active,.skin-green .main-header .navbar .nav>li>a:focus,.skin-green .main-header .navbar .nav .open>a,.skin-green .main-header .navbar .nav .open>a:hover,.skin-green .main-header .navbar .nav .open>a:focus,.skin-green .main-header .navbar .nav>.active>a{background:rgba(0,0,0,0.1);color:#f6f6f6}.skin-green .main-header .navbar .sidebar-toggle{color:#fff}.skin-green .main-header .navbar .sidebar-toggle:hover{color:#f6f6f6;background:rgba(0,0,0,0.1)}.skin-green .main-header .navbar .sidebar-toggle{color:#fff}.skin-green .main-header .navbar .sidebar-toggle:hover{background-color:#008d4c}@media (max-width:767px){.skin-green .main-header .navbar .dropdown-menu li.divider{background-color:rgba(255,255,255,0.1)}.skin-green .main-header .navbar .dropdown-menu li a{color:#fff}.skin-green .main-header .navbar .dropdown-menu li a:hover{background:#008d4c}}.skin-green .main-header .logo{background-color:#008d4c;color:#fff;border-bottom:0 solid transparent}.skin-green .main-header .logo:hover{background-color:#008749}.skin-green .main-header li.user-header{background-color:#00a65a}.skin-green .content-header{background:transparent}.skin-green .wrapper,.skin-green .main-sidebar,.skin-green .left-side{background-color:#222d32}.skin-green .user-panel>.info,.skin-green .user-panel>.info>a{color:#fff}.skin-green .sidebar-menu>li.header{color:#4b646f;background:#1a2226}.skin-green .sidebar-menu>li>a{border-left:3px solid transparent}.skin-green .sidebar-menu>li:hover>a,.skin-green .sidebar-menu>li.active>a{color:#fff;background:#1e282c;border-left-color:#00a65a}.skin-green .sidebar-menu>li>.treeview-menu{margin:0 1px;background:#2c3b41}.skin-green .sidebar a{color:#b8c7ce}.skin-green .sidebar a:hover{text-decoration:none}.skin-green .treeview-menu>li>a{color:#8aa4af}.skin-green .treeview-menu>li.active>a,.skin-green .treeview-menu>li>a:hover{color:#fff}.skin-green .sidebar-form{border-radius:3px;border:1px solid #374850;margin:10px 10px}.skin-green .sidebar-form input[type="text"],.skin-green .sidebar-form .btn{box-shadow:none;background-color:#374850;border:1px solid transparent;height:35px}.skin-green .sidebar-form input[type="text"]{color:#666;border-top-left-radius:2px;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:2px}.skin-green .sidebar-form input[type="text"]:focus,.skin-green .sidebar-form input[type="text"]:focus+.input-group-btn .btn{background-color:#fff;color:#666}.skin-green .sidebar-form input[type="text"]:focus+.input-group-btn .btn{border-left-color:#fff}.skin-green .sidebar-form .btn{color:#999;border-top-left-radius:0;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:0} -------------------------------------------------------------------------------- /src/main/webapp/dist/css/skins/skin-purple.min.css: -------------------------------------------------------------------------------- 1 | .skin-purple .main-header .navbar{background-color:#605ca8}.skin-purple .main-header .navbar .nav>li>a{color:#fff}.skin-purple .main-header .navbar .nav>li>a:hover,.skin-purple .main-header .navbar .nav>li>a:active,.skin-purple .main-header .navbar .nav>li>a:focus,.skin-purple .main-header .navbar .nav .open>a,.skin-purple .main-header .navbar .nav .open>a:hover,.skin-purple .main-header .navbar .nav .open>a:focus,.skin-purple .main-header .navbar .nav>.active>a{background:rgba(0,0,0,0.1);color:#f6f6f6}.skin-purple .main-header .navbar .sidebar-toggle{color:#fff}.skin-purple .main-header .navbar .sidebar-toggle:hover{color:#f6f6f6;background:rgba(0,0,0,0.1)}.skin-purple .main-header .navbar .sidebar-toggle{color:#fff}.skin-purple .main-header .navbar .sidebar-toggle:hover{background-color:#555299}@media (max-width:767px){.skin-purple .main-header .navbar .dropdown-menu li.divider{background-color:rgba(255,255,255,0.1)}.skin-purple .main-header .navbar .dropdown-menu li a{color:#fff}.skin-purple .main-header .navbar .dropdown-menu li a:hover{background:#555299}}.skin-purple .main-header .logo{background-color:#555299;color:#fff;border-bottom:0 solid transparent}.skin-purple .main-header .logo:hover{background-color:#545096}.skin-purple .main-header li.user-header{background-color:#605ca8}.skin-purple .content-header{background:transparent}.skin-purple .wrapper,.skin-purple .main-sidebar,.skin-purple .left-side{background-color:#222d32}.skin-purple .user-panel>.info,.skin-purple .user-panel>.info>a{color:#fff}.skin-purple .sidebar-menu>li.header{color:#4b646f;background:#1a2226}.skin-purple .sidebar-menu>li>a{border-left:3px solid transparent}.skin-purple .sidebar-menu>li:hover>a,.skin-purple .sidebar-menu>li.active>a{color:#fff;background:#1e282c;border-left-color:#605ca8}.skin-purple .sidebar-menu>li>.treeview-menu{margin:0 1px;background:#2c3b41}.skin-purple .sidebar a{color:#b8c7ce}.skin-purple .sidebar a:hover{text-decoration:none}.skin-purple .treeview-menu>li>a{color:#8aa4af}.skin-purple .treeview-menu>li.active>a,.skin-purple .treeview-menu>li>a:hover{color:#fff}.skin-purple .sidebar-form{border-radius:3px;border:1px solid #374850;margin:10px 10px}.skin-purple .sidebar-form input[type="text"],.skin-purple .sidebar-form .btn{box-shadow:none;background-color:#374850;border:1px solid transparent;height:35px}.skin-purple .sidebar-form input[type="text"]{color:#666;border-top-left-radius:2px;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:2px}.skin-purple .sidebar-form input[type="text"]:focus,.skin-purple .sidebar-form input[type="text"]:focus+.input-group-btn .btn{background-color:#fff;color:#666}.skin-purple .sidebar-form input[type="text"]:focus+.input-group-btn .btn{border-left-color:#fff}.skin-purple .sidebar-form .btn{color:#999;border-top-left-radius:0;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:0} -------------------------------------------------------------------------------- /src/main/webapp/dist/css/skins/skin-red.min.css: -------------------------------------------------------------------------------- 1 | .skin-red .main-header .navbar{background-color:#dd4b39}.skin-red .main-header .navbar .nav>li>a{color:#fff}.skin-red .main-header .navbar .nav>li>a:hover,.skin-red .main-header .navbar .nav>li>a:active,.skin-red .main-header .navbar .nav>li>a:focus,.skin-red .main-header .navbar .nav .open>a,.skin-red .main-header .navbar .nav .open>a:hover,.skin-red .main-header .navbar .nav .open>a:focus,.skin-red .main-header .navbar .nav>.active>a{background:rgba(0,0,0,0.1);color:#f6f6f6}.skin-red .main-header .navbar .sidebar-toggle{color:#fff}.skin-red .main-header .navbar .sidebar-toggle:hover{color:#f6f6f6;background:rgba(0,0,0,0.1)}.skin-red .main-header .navbar .sidebar-toggle{color:#fff}.skin-red .main-header .navbar .sidebar-toggle:hover{background-color:#d73925}@media (max-width:767px){.skin-red .main-header .navbar .dropdown-menu li.divider{background-color:rgba(255,255,255,0.1)}.skin-red .main-header .navbar .dropdown-menu li a{color:#fff}.skin-red .main-header .navbar .dropdown-menu li a:hover{background:#d73925}}.skin-red .main-header .logo{background-color:#d73925;color:#fff;border-bottom:0 solid transparent}.skin-red .main-header .logo:hover{background-color:#d33724}.skin-red .main-header li.user-header{background-color:#dd4b39}.skin-red .content-header{background:transparent}.skin-red .wrapper,.skin-red .main-sidebar,.skin-red .left-side{background-color:#222d32}.skin-red .user-panel>.info,.skin-red .user-panel>.info>a{color:#fff}.skin-red .sidebar-menu>li.header{color:#4b646f;background:#1a2226}.skin-red .sidebar-menu>li>a{border-left:3px solid transparent}.skin-red .sidebar-menu>li:hover>a,.skin-red .sidebar-menu>li.active>a{color:#fff;background:#1e282c;border-left-color:#dd4b39}.skin-red .sidebar-menu>li>.treeview-menu{margin:0 1px;background:#2c3b41}.skin-red .sidebar a{color:#b8c7ce}.skin-red .sidebar a:hover{text-decoration:none}.skin-red .treeview-menu>li>a{color:#8aa4af}.skin-red .treeview-menu>li.active>a,.skin-red .treeview-menu>li>a:hover{color:#fff}.skin-red .sidebar-form{border-radius:3px;border:1px solid #374850;margin:10px 10px}.skin-red .sidebar-form input[type="text"],.skin-red .sidebar-form .btn{box-shadow:none;background-color:#374850;border:1px solid transparent;height:35px}.skin-red .sidebar-form input[type="text"]{color:#666;border-top-left-radius:2px;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:2px}.skin-red .sidebar-form input[type="text"]:focus,.skin-red .sidebar-form input[type="text"]:focus+.input-group-btn .btn{background-color:#fff;color:#666}.skin-red .sidebar-form input[type="text"]:focus+.input-group-btn .btn{border-left-color:#fff}.skin-red .sidebar-form .btn{color:#999;border-top-left-radius:0;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:0} -------------------------------------------------------------------------------- /src/main/webapp/dist/css/skins/skin-yellow.min.css: -------------------------------------------------------------------------------- 1 | .skin-yellow .main-header .navbar{background-color:#f39c12}.skin-yellow .main-header .navbar .nav>li>a{color:#fff}.skin-yellow .main-header .navbar .nav>li>a:hover,.skin-yellow .main-header .navbar .nav>li>a:active,.skin-yellow .main-header .navbar .nav>li>a:focus,.skin-yellow .main-header .navbar .nav .open>a,.skin-yellow .main-header .navbar .nav .open>a:hover,.skin-yellow .main-header .navbar .nav .open>a:focus,.skin-yellow .main-header .navbar .nav>.active>a{background:rgba(0,0,0,0.1);color:#f6f6f6}.skin-yellow .main-header .navbar .sidebar-toggle{color:#fff}.skin-yellow .main-header .navbar .sidebar-toggle:hover{color:#f6f6f6;background:rgba(0,0,0,0.1)}.skin-yellow .main-header .navbar .sidebar-toggle{color:#fff}.skin-yellow .main-header .navbar .sidebar-toggle:hover{background-color:#e08e0b}@media (max-width:767px){.skin-yellow .main-header .navbar .dropdown-menu li.divider{background-color:rgba(255,255,255,0.1)}.skin-yellow .main-header .navbar .dropdown-menu li a{color:#fff}.skin-yellow .main-header .navbar .dropdown-menu li a:hover{background:#e08e0b}}.skin-yellow .main-header .logo{background-color:#e08e0b;color:#fff;border-bottom:0 solid transparent}.skin-yellow .main-header .logo:hover{background-color:#db8b0b}.skin-yellow .main-header li.user-header{background-color:#f39c12}.skin-yellow .content-header{background:transparent}.skin-yellow .wrapper,.skin-yellow .main-sidebar,.skin-yellow .left-side{background-color:#222d32}.skin-yellow .user-panel>.info,.skin-yellow .user-panel>.info>a{color:#fff}.skin-yellow .sidebar-menu>li.header{color:#4b646f;background:#1a2226}.skin-yellow .sidebar-menu>li>a{border-left:3px solid transparent}.skin-yellow .sidebar-menu>li:hover>a,.skin-yellow .sidebar-menu>li.active>a{color:#fff;background:#1e282c;border-left-color:#f39c12}.skin-yellow .sidebar-menu>li>.treeview-menu{margin:0 1px;background:#2c3b41}.skin-yellow .sidebar a{color:#b8c7ce}.skin-yellow .sidebar a:hover{text-decoration:none}.skin-yellow .treeview-menu>li>a{color:#8aa4af}.skin-yellow .treeview-menu>li.active>a,.skin-yellow .treeview-menu>li>a:hover{color:#fff}.skin-yellow .sidebar-form{border-radius:3px;border:1px solid #374850;margin:10px 10px}.skin-yellow .sidebar-form input[type="text"],.skin-yellow .sidebar-form .btn{box-shadow:none;background-color:#374850;border:1px solid transparent;height:35px}.skin-yellow .sidebar-form input[type="text"]{color:#666;border-top-left-radius:2px;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:2px}.skin-yellow .sidebar-form input[type="text"]:focus,.skin-yellow .sidebar-form input[type="text"]:focus+.input-group-btn .btn{background-color:#fff;color:#666}.skin-yellow .sidebar-form input[type="text"]:focus+.input-group-btn .btn{border-left-color:#fff}.skin-yellow .sidebar-form .btn{color:#999;border-top-left-radius:0;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:0} -------------------------------------------------------------------------------- /src/main/webapp/dist/img/avatar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vinophantom/TTMS/79820ee57a48614cab928ceca762923dc96af3db/src/main/webapp/dist/img/avatar.png -------------------------------------------------------------------------------- /src/main/webapp/dist/img/avatar04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vinophantom/TTMS/79820ee57a48614cab928ceca762923dc96af3db/src/main/webapp/dist/img/avatar04.png -------------------------------------------------------------------------------- /src/main/webapp/dist/img/avatar2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vinophantom/TTMS/79820ee57a48614cab928ceca762923dc96af3db/src/main/webapp/dist/img/avatar2.png -------------------------------------------------------------------------------- /src/main/webapp/dist/img/avatar3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vinophantom/TTMS/79820ee57a48614cab928ceca762923dc96af3db/src/main/webapp/dist/img/avatar3.png -------------------------------------------------------------------------------- /src/main/webapp/dist/img/avatar5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vinophantom/TTMS/79820ee57a48614cab928ceca762923dc96af3db/src/main/webapp/dist/img/avatar5.png -------------------------------------------------------------------------------- /src/main/webapp/dist/img/boxed-bg.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vinophantom/TTMS/79820ee57a48614cab928ceca762923dc96af3db/src/main/webapp/dist/img/boxed-bg.jpg -------------------------------------------------------------------------------- /src/main/webapp/dist/img/boxed-bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vinophantom/TTMS/79820ee57a48614cab928ceca762923dc96af3db/src/main/webapp/dist/img/boxed-bg.png -------------------------------------------------------------------------------- /src/main/webapp/dist/img/credit/american-express.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vinophantom/TTMS/79820ee57a48614cab928ceca762923dc96af3db/src/main/webapp/dist/img/credit/american-express.png -------------------------------------------------------------------------------- /src/main/webapp/dist/img/credit/cirrus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vinophantom/TTMS/79820ee57a48614cab928ceca762923dc96af3db/src/main/webapp/dist/img/credit/cirrus.png -------------------------------------------------------------------------------- /src/main/webapp/dist/img/credit/mastercard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vinophantom/TTMS/79820ee57a48614cab928ceca762923dc96af3db/src/main/webapp/dist/img/credit/mastercard.png -------------------------------------------------------------------------------- /src/main/webapp/dist/img/credit/mestro.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vinophantom/TTMS/79820ee57a48614cab928ceca762923dc96af3db/src/main/webapp/dist/img/credit/mestro.png -------------------------------------------------------------------------------- /src/main/webapp/dist/img/credit/paypal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vinophantom/TTMS/79820ee57a48614cab928ceca762923dc96af3db/src/main/webapp/dist/img/credit/paypal.png -------------------------------------------------------------------------------- /src/main/webapp/dist/img/credit/paypal2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vinophantom/TTMS/79820ee57a48614cab928ceca762923dc96af3db/src/main/webapp/dist/img/credit/paypal2.png -------------------------------------------------------------------------------- /src/main/webapp/dist/img/credit/visa.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vinophantom/TTMS/79820ee57a48614cab928ceca762923dc96af3db/src/main/webapp/dist/img/credit/visa.png -------------------------------------------------------------------------------- /src/main/webapp/dist/img/default-50x50.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vinophantom/TTMS/79820ee57a48614cab928ceca762923dc96af3db/src/main/webapp/dist/img/default-50x50.gif -------------------------------------------------------------------------------- /src/main/webapp/dist/img/icons.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vinophantom/TTMS/79820ee57a48614cab928ceca762923dc96af3db/src/main/webapp/dist/img/icons.png -------------------------------------------------------------------------------- /src/main/webapp/dist/img/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vinophantom/TTMS/79820ee57a48614cab928ceca762923dc96af3db/src/main/webapp/dist/img/logo.png -------------------------------------------------------------------------------- /src/main/webapp/dist/img/photo1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vinophantom/TTMS/79820ee57a48614cab928ceca762923dc96af3db/src/main/webapp/dist/img/photo1.png -------------------------------------------------------------------------------- /src/main/webapp/dist/img/photo2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vinophantom/TTMS/79820ee57a48614cab928ceca762923dc96af3db/src/main/webapp/dist/img/photo2.png -------------------------------------------------------------------------------- /src/main/webapp/dist/img/photo3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vinophantom/TTMS/79820ee57a48614cab928ceca762923dc96af3db/src/main/webapp/dist/img/photo3.jpg -------------------------------------------------------------------------------- /src/main/webapp/dist/img/photo4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vinophantom/TTMS/79820ee57a48614cab928ceca762923dc96af3db/src/main/webapp/dist/img/photo4.jpg -------------------------------------------------------------------------------- /src/main/webapp/dist/img/user1-128x128.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vinophantom/TTMS/79820ee57a48614cab928ceca762923dc96af3db/src/main/webapp/dist/img/user1-128x128.jpg -------------------------------------------------------------------------------- /src/main/webapp/dist/img/user2-160x160.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vinophantom/TTMS/79820ee57a48614cab928ceca762923dc96af3db/src/main/webapp/dist/img/user2-160x160.jpg -------------------------------------------------------------------------------- /src/main/webapp/dist/img/user3-128x128.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vinophantom/TTMS/79820ee57a48614cab928ceca762923dc96af3db/src/main/webapp/dist/img/user3-128x128.jpg -------------------------------------------------------------------------------- /src/main/webapp/dist/img/user4-128x128.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vinophantom/TTMS/79820ee57a48614cab928ceca762923dc96af3db/src/main/webapp/dist/img/user4-128x128.jpg -------------------------------------------------------------------------------- /src/main/webapp/dist/img/user5-128x128.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vinophantom/TTMS/79820ee57a48614cab928ceca762923dc96af3db/src/main/webapp/dist/img/user5-128x128.jpg -------------------------------------------------------------------------------- /src/main/webapp/dist/img/user6-128x128.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vinophantom/TTMS/79820ee57a48614cab928ceca762923dc96af3db/src/main/webapp/dist/img/user6-128x128.jpg -------------------------------------------------------------------------------- /src/main/webapp/dist/img/user7-128x128.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vinophantom/TTMS/79820ee57a48614cab928ceca762923dc96af3db/src/main/webapp/dist/img/user7-128x128.jpg -------------------------------------------------------------------------------- /src/main/webapp/dist/img/user8-128x128.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vinophantom/TTMS/79820ee57a48614cab928ceca762923dc96af3db/src/main/webapp/dist/img/user8-128x128.jpg -------------------------------------------------------------------------------- /src/main/webapp/images/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vinophantom/TTMS/79820ee57a48614cab928ceca762923dc96af3db/src/main/webapp/images/logo.png -------------------------------------------------------------------------------- /src/main/webapp/images/logo01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vinophantom/TTMS/79820ee57a48614cab928ceca762923dc96af3db/src/main/webapp/images/logo01.png -------------------------------------------------------------------------------- /src/main/webapp/ttms/attach/attach.js: -------------------------------------------------------------------------------- 1 | $(document).ready(function(){ 2 | $("#uploadFormId") 3 | .on("click",".btn-upload",doUpload) 4 | .on("click",".btn-down",doDownload) 5 | doGetObjects(); 6 | }); 7 | function doDownload(){ 8 | var id=$(this).parent().parent().data("id"); 9 | var url="attachment/doDownload.do?id="+id; 10 | document.location.href=url; 11 | } 12 | function doGetObjects(){ 13 | var url="attachment/doFindObjects.do"; 14 | $.getJSON(url,function(result){ 15 | if(result.state==1){ 16 | setTableBodyRows(result.data); 17 | }else{ 18 | alert(result.message); 19 | } 20 | }); 21 | } 22 | function setTableBodyRows(list){ 23 | var tBody=$("#tbodyId");tBody.empty(); 24 | for(var i in list){ 25 | var tr=$(""); 26 | tr.data("id",list[i].id); 27 | tr.append(""+list[i].title+""); 28 | tr.append(""+list[i].fileName+""); 29 | tr.append(""+list[i].contentType+""); 30 | tr.append('') 31 | tBody.append(tr); 32 | } 33 | } 34 | 35 | /*点击文件上传按钮执行此函数*/ 36 | function doUpload(){ 37 | //异步提交表单($.ajaxSubmit为异步提交表单) 38 | //使用此函数时需要在页面引入(jquery.form.js ) 39 | $("#uploadFormId").ajaxSubmit({ 40 | type:"post", 41 | url:"attachment/doUpload.do", 42 | dataType:"json", 43 | success:function(result){ 44 | alert(result.message); 45 | doGetObjects(); 46 | } 47 | }); 48 | //$("#uploadFormId").resetForm(); 49 | return false;//防止表单重复提交的一种方式 50 | } 51 | -------------------------------------------------------------------------------- /src/main/webapp/ttms/common/index.js: -------------------------------------------------------------------------------- 1 | function doGetUserMenus(){ 2 | //到controller请求菜单 3 | var url = 'doFindUserMenus.do'; 4 | $.getJSON(url,function(result){ 5 | if(result.state==1){ 6 | doSetMenus(result.data); 7 | }else{ 8 | alert(result.message); 9 | } 10 | }); 11 | } 12 | 13 | function doSetMenus(list){ 14 | //加载一级菜单 15 | var firstLevelMenus = $('#menu-nav'); 16 | for(var i in list){ 17 | if(list[i].parentId==null||list[i].parentId==''){ 18 | var template = ''; 21 | firstLevelMenus.append(template); 22 | } 23 | } 24 | //加载二级菜单 25 | for(var i in list){ 26 | if(list[i].parentId!=null && list[i].parentId!=''){ 27 | var secondLevelMenu = $('#menu'+list[i].parentId); 28 | var li = $('
  • '); 29 | li.data('url',list[i].url); 30 | var temp = ''+list[i].name+''; 31 | temp = li.append(temp); 32 | var separetor = ''; 33 | secondLevelMenu.append(temp).append(separetor); 34 | } 35 | } 36 | } 37 | function doLoadUrl(){ 38 | var url = $(this).parent().data('url'); 39 | url = url+'?t=;'+Math.random(1000); 40 | $("#container").load(url); 41 | } 42 | -------------------------------------------------------------------------------- /src/main/webapp/ttms/common/page.js: -------------------------------------------------------------------------------- 1 | $(document).ready(function(){ 2 | $("#pageId").on('click', 3 | '.pre,.next,.first,.last',jumpToPage); 4 | }); 5 | //设置分页 6 | function setPagination(pageObject){ 7 | //1.初始化总页数 8 | $(".pageCount").html("总页数("+pageObject.pageCount+")"); 9 | //2.初始化当前页的页码 10 | $(".pageCurrent").html("当前页("+pageObject.pageCurrent+")"); 11 | //3.在pageId对应的对象上绑定总页数 12 | //data函数用于以key/value的方式在对象上绑定数据 13 | $("#pageId").data("pageCount",pageObject.pageCount); 14 | //4.在pageId对象的对象上绑定当前页面值 15 | $("#pageId").data("pageCurrent",pageObject.pageCurrent); 16 | } 17 | //定义一个函数,通过此函数实现页面的跳转 18 | function jumpToPage(){ 19 | //获得点击对象上class属性对应的值,根据此值 20 | //判定具体点击的是哪个对象(例如上一页,下一页) 21 | var clazz=$(this).attr("class"); 22 | //获得pageId对象上绑定的pageCurrent对应的值 23 | var pageCurrent=$('#pageId').data("pageCurrent"); 24 | //获得pageId对象上绑定的pageCount对应的值 25 | var pageCount=$('#pageId').data("pageCount") 26 | //根据class属性的值判断点击的是否是上一页 27 | if(clazz=='pre'&&pageCurrent>1){ 28 | pageCurrent--; 29 | } 30 | //判断点击的是否是下一页 31 | if(clazz=="next"&&pageCurrent==请选择==") 99 | var option= 100 | "" 101 | for(var i in list){ 102 | select.append( 103 | option.replace("[id]",list[i].id) 104 | .replace("[name]",list[i].name)); 105 | } 106 | } 107 | 108 | 109 | 110 | -------------------------------------------------------------------------------- /src/main/webapp/ttms/product/type_list.js: -------------------------------------------------------------------------------- 1 | var columns = [ 2 | { 3 | field : 'selectItem', 4 | radio : true 5 | }, 6 | { 7 | title : '分类id', 8 | field : 'id', 9 | visible : false, 10 | align : 'center', 11 | valign : 'middle', 12 | width : '80px' 13 | }, 14 | { 15 | title : '分类名称', 16 | field : 'name', 17 | align : 'center', 18 | valign : 'middle', 19 | sortable : true, 20 | width : '180px' 21 | }, 22 | { 23 | title : '上级分类', 24 | field : 'parentName', 25 | align : 'center', 26 | valign : 'middle', 27 | sortable : true, 28 | width : '180px' 29 | }, 30 | { 31 | title : '排序号', 32 | field : 'sort', 33 | align : 'center', 34 | valign : 'middle', 35 | sortable : true, 36 | width : '100px' 37 | }]; 38 | $(document).ready(function(){ 39 | $("#formHead") 40 | .on("click",".btn-delete",doDeleteObject) 41 | .on("click",".btn-add,.btn-update",doLoadEditPage); 42 | doGetObjects(); 43 | }); 44 | /**加载编辑页面到制定位置*/ 45 | function doLoadEditPage(){ 46 | var title; 47 | if($(this).hasClass("btn-add")){ 48 | title="添加分类信息"; 49 | } 50 | if($(this).hasClass("btn-update")){ 51 | title="修改分类信息" 52 | var id=getSelectedId();//获得选中的记录id值 53 | if(id==-1){ 54 | alert("请先选择");return; 55 | } 56 | $("#container").data("id",id); 57 | console.log("id="+id); 58 | } 59 | var url="type/editUI.do" 60 | $(".content").load(url,function(){ 61 | $(".panel-heading").html(title) 62 | }) 63 | } 64 | /**获得选中的id值*/ 65 | function getSelectedId(){ 66 | //1.1 获得选中的对象,默认返回值为一个对象数组 67 | var selections=$("#typeTable") 68 | .bootstrapTreeTable("getSelections"); 69 | if(selections.length==0){ 70 | return -1;//表示没选择任何对象 71 | } 72 | //1.2获得选中数组中下标为0的元素id的值 73 | return selections[0].id; 74 | } 75 | /**执行删除操作*/ 76 | function doDeleteObject(){ 77 | //debugger 78 | //1.获得选中的id 79 | var typeId=getSelectedId(); 80 | if(typeId==-1){ 81 | alert("请先选择"); 82 | return; 83 | } 84 | console.log("typeId="+typeId); 85 | //2.发送异步请求,根据id执行删除操作 86 | //2.1定义url 87 | var url="type/doDeleteObject.do"; 88 | //2.2定义参数值("id"要与controller方法中参数的名字相同) 89 | var params={"id":typeId}; 90 | //2.3执行异步删除操作 91 | $.post(url,params,function(result){ 92 | if(result.state==1){ 93 | doGetObjects(); 94 | alert("删除ok"); 95 | }else{ 96 | alert(result.message); 97 | } 98 | }); 99 | } 100 | function doGetObjects(){ 101 | var tableId="typeTable";//对象type_list.jsp中的table id 102 | var url="type/doFindGridTreeObjects.do"; 103 | var table=new TreeTable(tableId,url,columns); 104 | table.setIdField("id");//设置选中记录的返回id() 105 | table.setCodeField("id");//设置级联关系的id 106 | table.setParentCodeField("parentId");//设置级联关系中的parentId 107 | table.setExpandColumn(2);//设置默认展开列 108 | table.setExpandAll(false);//设置默认不展开 109 | table.init();//初始化对象树(底层会发起异步请求) 110 | } 111 | 112 | 113 | -------------------------------------------------------------------------------- /src/main/webapp/ttms/system/organization_edit.js: -------------------------------------------------------------------------------- 1 | //获得模态框绑定的id 2 | $(document).ready(function(){ 3 | $('#modal-dialog').on('click', '.ok', doSubmitEditForm); 4 | $("#modal-dialog").on("hidden.bs.modal", function() { 5 | $(this).off('click', '.ok') 6 | .removeData("bs.modal") 7 | .data("id","") 8 | .data("parentId",""); 9 | console.log("parentId="+$("#modal-dialog")); 10 | }); 11 | var id=$('#modal-dialog').data('id'); 12 | console.log("id="+id); 13 | if(id)doGetObjectById(); 14 | }) 15 | //提交表单数据 16 | function doSubmitEditForm(){ 17 | var params=doGetFormParameterValues(); 18 | var id=$('#modal-dialog').data('id'); 19 | var url=id?'org/update.do':'org/save.do'; 20 | $.post(url,params,function(result){ 21 | if(result.state==1){ 22 | $('#modal-dialog').modal('hide'); 23 | doGetObjects(); 24 | }else{ 25 | alert(result.message); 26 | } 27 | }) 28 | } 29 | //获得表单数据 30 | function doGetFormParameterValues(){ 31 | var params={ 32 | "id":$('#modal-dialog').data('id'), 33 | "name":$('#nameId').val(), 34 | "code":$('#codeId').val(), 35 | "parentId": $("#modal-dialog").data("parentId"), 36 | "valid":$('input[name="valid"]:checked').val(), 37 | "note":$('#noteId').val(), 38 | } 39 | return params; 40 | } 41 | //修改时根据id获得相关团信息 42 | function doGetObjectById(){ 43 | var url='org/findById.do'; 44 | var id=$('#modal-dialog').data('id'); 45 | var params={"id":id}; 46 | $.post(url,params,function(result){ 47 | if(result.state==1){ 48 | doFillUpdateForm(result.data); 49 | }else{ 50 | alert(result.message); 51 | } 52 | }); 53 | } 54 | //修改时填充页面数据 55 | function doFillUpdateForm(obj){ 56 | $('#nameId').val(obj.name); 57 | $('#codeId').val(obj.code); 58 | $('#noteId').html(obj.note); 59 | $('input[name="valid"]').each(function(){ 60 | if($(this).val()==obj.valid){ 61 | $(this).prop("checked",true); 62 | } 63 | }) 64 | } 65 | 66 | 67 | 68 | -------------------------------------------------------------------------------- /src/main/webapp/ttms/system/role_list.js: -------------------------------------------------------------------------------- 1 | $(document).ready(function(){ 2 | //条件查询 3 | $('#formHead').on('click','.btn-search',doGetObjects) 4 | //新增 5 | $('#formHead').on('click','.btn-add',showAddUI) 6 | //修改 7 | $('#formHead').on('click','.btn-update',showEditUI) 8 | //删除 9 | $('#formHead').on('click','.btn-delete',deleteObject) 10 | doGetObjects() 11 | }) 12 | //删除角色 13 | function deleteObject(){ 14 | var checkedIds = getCheckedId(); 15 | if(!checkedIds){ 16 | alert('请选择要删除的选项!'); 17 | return; 18 | } 19 | var param = {'roleId':checkedIds}; 20 | var url = 'role/doDeleteObject.do'; 21 | $.post(url,param,function(result){ 22 | if(result.state==1){ 23 | alert('删除成功!'); 24 | doGetObjects(); 25 | }else{ 26 | alert(result.message); 27 | } 28 | }) 29 | } 30 | //显示修改角色页面 31 | function showEditUI(){ 32 | var checkecIds = getCheckedId(); 33 | if(!checkecIds){ 34 | alert('请选择要修改的选项!'); 35 | return; 36 | } 37 | $('.content').data('roleId',checkecIds); 38 | $('.content').load('role/editUI.do'); 39 | } 40 | //显示新增页面 41 | function showAddUI(){ 42 | var url = 'role/editUI.do'; 43 | $('.content').load(url); 44 | } 45 | function doGetObjects(){ 46 | var params = getQueryFormData(); 47 | var pageCurrent=$("#pageId").data("pageCurrent"); 48 | if(!pageCurrent)pageCurrent=1; 49 | params.pageCurrent=pageCurrent; 50 | var url = 'role/doFindObjects.do'; 51 | $.post(url,params,function(result){ 52 | if(result.state==1){ 53 | setTableBodyRows(result.data.list); 54 | setPagination(result.data.pageObject); 55 | }else{ 56 | alert(result.message); 57 | } 58 | }) 59 | } 60 | 61 | //获取条件查询条件 62 | function getQueryFormData(){ 63 | var params = {'name':$('#roleName').val()} 64 | return params; 65 | } 66 | 67 | //初始化列表页面 68 | function setTableBodyRows(list){ 69 | var tBody=$('#tbodyId'); 70 | tBody.empty(); 71 | var tds=''+ 72 | '[roleId]'+ 73 | '[name]'+ 74 | '[note]'; 75 | for(var i in list){ 76 | var tr=$(''); 77 | tr.append(tds.replace('[id]',list[i].id) 78 | .replace('[roleId]',list[i].id) 79 | .replace('[name]',list[i].name) 80 | .replace('[note]',list[i].note)); 81 | 82 | tBody.append(tr); 83 | } 84 | } 85 | 86 | //获得选中的id,然后拼接成字符串 87 | function getCheckedId(){ 88 | var checkedId; 89 | $('tbody input[name="checkedItem"]').each(function(){ 90 | if($(this).is(':checked')){ //或者用prop('checked') 91 | checkedId=$(this).val(); 92 | } 93 | }) 94 | return checkedId; 95 | } -------------------------------------------------------------------------------- /target/classes/cn/tedu/ttms/attachment/controller/AttachmentController.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vinophantom/TTMS/79820ee57a48614cab928ceca762923dc96af3db/target/classes/cn/tedu/ttms/attachment/controller/AttachmentController.class -------------------------------------------------------------------------------- /target/classes/cn/tedu/ttms/attachment/dao/AttachmentDao.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vinophantom/TTMS/79820ee57a48614cab928ceca762923dc96af3db/target/classes/cn/tedu/ttms/attachment/dao/AttachmentDao.class -------------------------------------------------------------------------------- /target/classes/cn/tedu/ttms/attachment/entity/Attachment.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vinophantom/TTMS/79820ee57a48614cab928ceca762923dc96af3db/target/classes/cn/tedu/ttms/attachment/entity/Attachment.class -------------------------------------------------------------------------------- /target/classes/cn/tedu/ttms/attachment/service/AttachmentService.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vinophantom/TTMS/79820ee57a48614cab928ceca762923dc96af3db/target/classes/cn/tedu/ttms/attachment/service/AttachmentService.class -------------------------------------------------------------------------------- /target/classes/cn/tedu/ttms/attachment/service/impl/AttachmentServiceImpl.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vinophantom/TTMS/79820ee57a48614cab928ceca762923dc96af3db/target/classes/cn/tedu/ttms/attachment/service/impl/AttachmentServiceImpl.class -------------------------------------------------------------------------------- /target/classes/cn/tedu/ttms/common/controller/IndexController.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vinophantom/TTMS/79820ee57a48614cab928ceca762923dc96af3db/target/classes/cn/tedu/ttms/common/controller/IndexController.class -------------------------------------------------------------------------------- /target/classes/cn/tedu/ttms/common/dao/BaseDao.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vinophantom/TTMS/79820ee57a48614cab928ceca762923dc96af3db/target/classes/cn/tedu/ttms/common/dao/BaseDao.class -------------------------------------------------------------------------------- /target/classes/cn/tedu/ttms/common/exception/ControllerExceptionHandler.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vinophantom/TTMS/79820ee57a48614cab928ceca762923dc96af3db/target/classes/cn/tedu/ttms/common/exception/ControllerExceptionHandler.class -------------------------------------------------------------------------------- /target/classes/cn/tedu/ttms/common/exception/ServiceException.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vinophantom/TTMS/79820ee57a48614cab928ceca762923dc96af3db/target/classes/cn/tedu/ttms/common/exception/ServiceException.class -------------------------------------------------------------------------------- /target/classes/cn/tedu/ttms/common/service/SysShiroService.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vinophantom/TTMS/79820ee57a48614cab928ceca762923dc96af3db/target/classes/cn/tedu/ttms/common/service/SysShiroService.class -------------------------------------------------------------------------------- /target/classes/cn/tedu/ttms/common/service/impl/ShiroUserRealm.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vinophantom/TTMS/79820ee57a48614cab928ceca762923dc96af3db/target/classes/cn/tedu/ttms/common/service/impl/ShiroUserRealm.class -------------------------------------------------------------------------------- /target/classes/cn/tedu/ttms/common/service/impl/SysShiroServiceImpl.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vinophantom/TTMS/79820ee57a48614cab928ceca762923dc96af3db/target/classes/cn/tedu/ttms/common/service/impl/SysShiroServiceImpl.class -------------------------------------------------------------------------------- /target/classes/cn/tedu/ttms/common/util/StringUtil.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vinophantom/TTMS/79820ee57a48614cab928ceca762923dc96af3db/target/classes/cn/tedu/ttms/common/util/StringUtil.class -------------------------------------------------------------------------------- /target/classes/cn/tedu/ttms/common/web/JsonDateTypeConvert.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vinophantom/TTMS/79820ee57a48614cab928ceca762923dc96af3db/target/classes/cn/tedu/ttms/common/web/JsonDateTypeConvert.class -------------------------------------------------------------------------------- /target/classes/cn/tedu/ttms/common/web/JsonResult.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vinophantom/TTMS/79820ee57a48614cab928ceca762923dc96af3db/target/classes/cn/tedu/ttms/common/web/JsonResult.class -------------------------------------------------------------------------------- /target/classes/cn/tedu/ttms/common/web/PageObject.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vinophantom/TTMS/79820ee57a48614cab928ceca762923dc96af3db/target/classes/cn/tedu/ttms/common/web/PageObject.class -------------------------------------------------------------------------------- /target/classes/cn/tedu/ttms/product/controller/ProductTypeController.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vinophantom/TTMS/79820ee57a48614cab928ceca762923dc96af3db/target/classes/cn/tedu/ttms/product/controller/ProductTypeController.class -------------------------------------------------------------------------------- /target/classes/cn/tedu/ttms/product/controller/ProjectController.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vinophantom/TTMS/79820ee57a48614cab928ceca762923dc96af3db/target/classes/cn/tedu/ttms/product/controller/ProjectController.class -------------------------------------------------------------------------------- /target/classes/cn/tedu/ttms/product/controller/TeamController.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vinophantom/TTMS/79820ee57a48614cab928ceca762923dc96af3db/target/classes/cn/tedu/ttms/product/controller/TeamController.class -------------------------------------------------------------------------------- /target/classes/cn/tedu/ttms/product/dao/ProductTypeDao.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vinophantom/TTMS/79820ee57a48614cab928ceca762923dc96af3db/target/classes/cn/tedu/ttms/product/dao/ProductTypeDao.class -------------------------------------------------------------------------------- /target/classes/cn/tedu/ttms/product/dao/ProjectDao.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vinophantom/TTMS/79820ee57a48614cab928ceca762923dc96af3db/target/classes/cn/tedu/ttms/product/dao/ProjectDao.class -------------------------------------------------------------------------------- /target/classes/cn/tedu/ttms/product/dao/TeamDao.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vinophantom/TTMS/79820ee57a48614cab928ceca762923dc96af3db/target/classes/cn/tedu/ttms/product/dao/TeamDao.class -------------------------------------------------------------------------------- /target/classes/cn/tedu/ttms/product/entity/ProductType.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vinophantom/TTMS/79820ee57a48614cab928ceca762923dc96af3db/target/classes/cn/tedu/ttms/product/entity/ProductType.class -------------------------------------------------------------------------------- /target/classes/cn/tedu/ttms/product/entity/Project.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vinophantom/TTMS/79820ee57a48614cab928ceca762923dc96af3db/target/classes/cn/tedu/ttms/product/entity/Project.class -------------------------------------------------------------------------------- /target/classes/cn/tedu/ttms/product/entity/Team.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vinophantom/TTMS/79820ee57a48614cab928ceca762923dc96af3db/target/classes/cn/tedu/ttms/product/entity/Team.class -------------------------------------------------------------------------------- /target/classes/cn/tedu/ttms/product/service/ProductTypeService.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vinophantom/TTMS/79820ee57a48614cab928ceca762923dc96af3db/target/classes/cn/tedu/ttms/product/service/ProductTypeService.class -------------------------------------------------------------------------------- /target/classes/cn/tedu/ttms/product/service/ProjectService.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vinophantom/TTMS/79820ee57a48614cab928ceca762923dc96af3db/target/classes/cn/tedu/ttms/product/service/ProjectService.class -------------------------------------------------------------------------------- /target/classes/cn/tedu/ttms/product/service/TeamService.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vinophantom/TTMS/79820ee57a48614cab928ceca762923dc96af3db/target/classes/cn/tedu/ttms/product/service/TeamService.class -------------------------------------------------------------------------------- /target/classes/cn/tedu/ttms/product/service/impl/ProductTypeServiceImpl.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vinophantom/TTMS/79820ee57a48614cab928ceca762923dc96af3db/target/classes/cn/tedu/ttms/product/service/impl/ProductTypeServiceImpl.class -------------------------------------------------------------------------------- /target/classes/cn/tedu/ttms/product/service/impl/ProjectServiceImpl.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vinophantom/TTMS/79820ee57a48614cab928ceca762923dc96af3db/target/classes/cn/tedu/ttms/product/service/impl/ProjectServiceImpl.class -------------------------------------------------------------------------------- /target/classes/cn/tedu/ttms/product/service/impl/TeamServiceImpl.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vinophantom/TTMS/79820ee57a48614cab928ceca762923dc96af3db/target/classes/cn/tedu/ttms/product/service/impl/TeamServiceImpl.class -------------------------------------------------------------------------------- /target/classes/cn/tedu/ttms/system/controller/SysLoginController.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vinophantom/TTMS/79820ee57a48614cab928ceca762923dc96af3db/target/classes/cn/tedu/ttms/system/controller/SysLoginController.class -------------------------------------------------------------------------------- /target/classes/cn/tedu/ttms/system/controller/SysMenuController.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vinophantom/TTMS/79820ee57a48614cab928ceca762923dc96af3db/target/classes/cn/tedu/ttms/system/controller/SysMenuController.class -------------------------------------------------------------------------------- /target/classes/cn/tedu/ttms/system/controller/SysRoleController.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vinophantom/TTMS/79820ee57a48614cab928ceca762923dc96af3db/target/classes/cn/tedu/ttms/system/controller/SysRoleController.class -------------------------------------------------------------------------------- /target/classes/cn/tedu/ttms/system/controller/SysUserController.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vinophantom/TTMS/79820ee57a48614cab928ceca762923dc96af3db/target/classes/cn/tedu/ttms/system/controller/SysUserController.class -------------------------------------------------------------------------------- /target/classes/cn/tedu/ttms/system/dao/SysMenuDao.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vinophantom/TTMS/79820ee57a48614cab928ceca762923dc96af3db/target/classes/cn/tedu/ttms/system/dao/SysMenuDao.class -------------------------------------------------------------------------------- /target/classes/cn/tedu/ttms/system/dao/SysRoleDao.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vinophantom/TTMS/79820ee57a48614cab928ceca762923dc96af3db/target/classes/cn/tedu/ttms/system/dao/SysRoleDao.class -------------------------------------------------------------------------------- /target/classes/cn/tedu/ttms/system/dao/SysRoleMenuDao.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vinophantom/TTMS/79820ee57a48614cab928ceca762923dc96af3db/target/classes/cn/tedu/ttms/system/dao/SysRoleMenuDao.class -------------------------------------------------------------------------------- /target/classes/cn/tedu/ttms/system/dao/SysUserDao.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vinophantom/TTMS/79820ee57a48614cab928ceca762923dc96af3db/target/classes/cn/tedu/ttms/system/dao/SysUserDao.class -------------------------------------------------------------------------------- /target/classes/cn/tedu/ttms/system/dao/SysUserRoleDao.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vinophantom/TTMS/79820ee57a48614cab928ceca762923dc96af3db/target/classes/cn/tedu/ttms/system/dao/SysUserRoleDao.class -------------------------------------------------------------------------------- /target/classes/cn/tedu/ttms/system/entity/Organization.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vinophantom/TTMS/79820ee57a48614cab928ceca762923dc96af3db/target/classes/cn/tedu/ttms/system/entity/Organization.class -------------------------------------------------------------------------------- /target/classes/cn/tedu/ttms/system/entity/SysMenu.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vinophantom/TTMS/79820ee57a48614cab928ceca762923dc96af3db/target/classes/cn/tedu/ttms/system/entity/SysMenu.class -------------------------------------------------------------------------------- /target/classes/cn/tedu/ttms/system/entity/SysRole.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vinophantom/TTMS/79820ee57a48614cab928ceca762923dc96af3db/target/classes/cn/tedu/ttms/system/entity/SysRole.class -------------------------------------------------------------------------------- /target/classes/cn/tedu/ttms/system/entity/SysRoleMenu.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vinophantom/TTMS/79820ee57a48614cab928ceca762923dc96af3db/target/classes/cn/tedu/ttms/system/entity/SysRoleMenu.class -------------------------------------------------------------------------------- /target/classes/cn/tedu/ttms/system/entity/SysUser.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vinophantom/TTMS/79820ee57a48614cab928ceca762923dc96af3db/target/classes/cn/tedu/ttms/system/entity/SysUser.class -------------------------------------------------------------------------------- /target/classes/cn/tedu/ttms/system/entity/SysUserRole.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vinophantom/TTMS/79820ee57a48614cab928ceca762923dc96af3db/target/classes/cn/tedu/ttms/system/entity/SysUserRole.class -------------------------------------------------------------------------------- /target/classes/cn/tedu/ttms/system/service/SysMenuService.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vinophantom/TTMS/79820ee57a48614cab928ceca762923dc96af3db/target/classes/cn/tedu/ttms/system/service/SysMenuService.class -------------------------------------------------------------------------------- /target/classes/cn/tedu/ttms/system/service/SysRoleService.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vinophantom/TTMS/79820ee57a48614cab928ceca762923dc96af3db/target/classes/cn/tedu/ttms/system/service/SysRoleService.class -------------------------------------------------------------------------------- /target/classes/cn/tedu/ttms/system/service/SysUserService.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vinophantom/TTMS/79820ee57a48614cab928ceca762923dc96af3db/target/classes/cn/tedu/ttms/system/service/SysUserService.class -------------------------------------------------------------------------------- /target/classes/cn/tedu/ttms/system/service/impl/SysMenuServiceImpl.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vinophantom/TTMS/79820ee57a48614cab928ceca762923dc96af3db/target/classes/cn/tedu/ttms/system/service/impl/SysMenuServiceImpl.class -------------------------------------------------------------------------------- /target/classes/cn/tedu/ttms/system/service/impl/SysRoleServiceImpl.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vinophantom/TTMS/79820ee57a48614cab928ceca762923dc96af3db/target/classes/cn/tedu/ttms/system/service/impl/SysRoleServiceImpl.class -------------------------------------------------------------------------------- /target/classes/cn/tedu/ttms/system/service/impl/SysUserServiceImpl.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vinophantom/TTMS/79820ee57a48614cab928ceca762923dc96af3db/target/classes/cn/tedu/ttms/system/service/impl/SysUserServiceImpl.class -------------------------------------------------------------------------------- /target/classes/config.properties: -------------------------------------------------------------------------------- 1 | driver=com.mysql.jdbc.Driver 2 | url=jdbc:mysql:///ttms?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true&useSSL=true 3 | username=root 4 | password=root 5 | initialSize=5 6 | maxActive=50 7 | minIdle=0 8 | maxWait=60000 9 | druid.filters= 10 | timeBetweenLogStatsMillis=60000 -------------------------------------------------------------------------------- /target/classes/log4j2.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 8 | 9 | 10 | 11 | 12 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /target/classes/mapper/attachement/AttchmentMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 12 | 13 | 18 | 19 | 26 | 28 | insert into tms_attachements( 29 | title, 30 | fileName, 31 | contentType, 32 | filePath, 33 | fileDisgest, 34 | athType, 35 | belongId, 36 | createdUser, 37 | modifiedUser, 38 | createdTime, 39 | modifiedTime 40 | )values( 41 | #{title}, 42 | #{fileName}, 43 | #{contentType}, 44 | #{filePath}, 45 | #{fileDisgest}, 46 | #{athType}, 47 | #{belongId}, 48 | #{createdUser}, 49 | #{modifiedUser}, 50 | NOW(), 51 | NOW() 52 | ); 53 | 54 | 55 | -------------------------------------------------------------------------------- /target/classes/mapper/product/ProductTypeMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 12 | 13 | 18 | 22 | 28 | 29 | 30 | delete from tms_classes 31 | where id=#{id} 32 | 33 | 35 | 39 | insert into tms_classes 40 | ( 41 | id, 42 | name, 43 | sort, 44 | parentId, 45 | note, 46 | createdTime, 47 | modifiedTime, 48 | createdUser, 49 | modifiedUser 50 | )values( 51 | #{id}, 52 | #{name}, 53 | #{sort}, 54 | #{parentId}, 55 | #{note}, 56 | NOW(), 57 | NOW(), 58 | #{createdUser}, 59 | #{modifiedUser} 60 | ) 61 | 62 | 64 | 70 | 72 | update tms_classes 73 | set 74 | name=#{name}, 75 | parentId=#{parentId}, 76 | note=#{note}, 77 | modifiedTime=now(), 78 | modifiedUser=#{modifiedUser} 79 | where id=#{id} 80 | 81 | -------------------------------------------------------------------------------- /target/classes/mapper/product/TeamMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 7 | 8 | 9 | t.valid=#{valid} 10 | 11 | 12 | and t.projectId=#{projectId} 13 | 14 | 15 | 16 | 25 | 32 | 33 | 34 | 35 | 37 | insert into tms_teams 38 | ( 39 | name, 40 | projectId, 41 | valid, 42 | note, 43 | createdTime, 44 | modifiedTime, 45 | createdUser, 46 | modifiedUser 47 | ) 48 | values 49 | (#{name}, 50 | #{projectId}, 51 | #{valid}, 52 | #{note}, 53 | NOW(), 54 | NOW(), 55 | #{createdUser}, 56 | #{modifiedUser}); 57 | 58 | 59 | update tms_teams 60 | set valid=#{valid} 61 | where id in 62 | 63 | 67 | #{item} 68 | 69 | 70 | 71 | 72 | 73 | 75 | update tms_teams 76 | set 77 | name=#{name}, 78 | projectId=#{projectId}, 79 | valid=#{valid}, 80 | note=#{note}, 81 | modifiedTime=NOW(), 82 | modifiedUser=#{modifiedUser} 83 | where id=#{id} 84 | 85 | 86 | 87 | 93 | -------------------------------------------------------------------------------- /target/classes/mapper/system/SysMenuMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 12 | 13 | 14 | 22 | 23 | 31 | 32 | 34 | insert into 35 | sys_menus(name,url,type,sort,parentId,permission,createdTime,modifiedTime) 36 | values 37 | (#{name},#{url},#{type},#{sort},#{parentId}, 38 | #{permission},NOW(),NOW()) 39 | 40 | 41 | 42 | 56 | 57 | 59 | update sys_menus 60 | set 61 | name= #{name}, 62 | url = #{url}, 63 | type = #{type}, 64 | sort = #{sort}, 65 | parentId = #{parentId}, 66 | permission = #{permission}, 67 | modifiedTime = NOW() 68 | where id = #{id} 69 | 70 | 71 | 76 | 77 | 78 | delete from sys_menus where id = #{id} 79 | 80 | -------------------------------------------------------------------------------- /target/classes/mapper/system/SysRoleMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 16 | 17 | 25 | 28 | 32 | insert into 33 | sys_roles(name,note,createdTime,modifiedTime) 34 | values 35 | (#{name}, #{note}, NOW(), NOW()) 36 | 37 | 38 | 39 | 50 | 51 | 53 | update sys_roles 54 | set 55 | name = #{name}, 56 | note = #{note}, 57 | modifiedTime = NOW() 58 | where id = #{id} 59 | 60 | 61 | 62 | 63 | delete from sys_roles where id = #{id} 64 | 65 | 66 | 67 | 71 | -------------------------------------------------------------------------------- /target/classes/mapper/system/SysRoleMenuMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | insert into sys_role_menus (role_id,menu_id) 7 | values 8 | 9 | (#{roleId},#{item}) 10 | 11 | 12 | 13 | 14 | 22 | 23 | 24 | 26 | delete from sys_role_menus where role_id=#{id} 27 | 28 | 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /target/classes/mapper/system/SysUserRoleMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 15 | 16 | 17 | insert into 18 | sys_user_roles(user_id,role_id) 19 | values 20 | 21 | (#{userId},#{item}) 22 | 23 | 24 | 25 | 33 | 34 | 35 | delete from sys_user_roles where user_id = #{id} 36 | 37 | -------------------------------------------------------------------------------- /target/classes/mybatis-config.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 15 | 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /target/classes/spring-mvc.xml: -------------------------------------------------------------------------------- 1 | 2 | 18 | 19 | 25 | 26 | 27 | 28 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | -------------------------------------------------------------------------------- /target/m2e-wtp/web-resources/META-INF/MANIFEST.MF: -------------------------------------------------------------------------------- 1 | Manifest-Version: 1.0 2 | Built-By: phantom 3 | Build-Jdk: 1.8.0_111 4 | Created-By: Maven Integration for Eclipse 5 | 6 | -------------------------------------------------------------------------------- /target/m2e-wtp/web-resources/META-INF/maven/cn.tedu/ttms1.02/pom.properties: -------------------------------------------------------------------------------- 1 | #Generated by Maven Integration for Eclipse 2 | #Wed Oct 18 21:29:22 CST 2017 3 | version=0.0.1-SNAPSHOT 4 | groupId=cn.tedu 5 | m2e.projectName=ttms1.02 6 | m2e.projectLocation=E\:\\workspace\\ttms1.02 7 | artifactId=ttms1.02 8 | --------------------------------------------------------------------------------