• 基于springboot高校社团管理系统


    开发工具:IDEA,jdk1.8

    数据库:mysql5.7

    技术:springboot+freemark+jpa

    前台:

    1、社团信息浏览搜索、社团活动风采、新闻信息浏览搜索。

    2、学生注册登录。

    3、登录后可自己申请创建社团,也可申请加入其他社团活动。

    4、管理自己社团的申请人员。

    5个人信息修改及留言等。

    后台:社团审核管理、活动新闻管理、学生管理、留言管理、活动申请审核、活动经费管理等等。

    前台截图:

    后台截图:

    1. package com.jinku.jsj.springboot.controller.admin;
    2. import com.jinku.jsj.springboot.bean.CodeMsg;
    3. import com.jinku.jsj.springboot.bean.PageBean;
    4. import com.jinku.jsj.springboot.bean.Result;
    5. import com.jinku.jsj.springboot.constant.SessionConstant;
    6. import com.jinku.jsj.springboot.entity.admin.User;
    7. import com.jinku.jsj.springboot.entity.common.Activities;
    8. import com.jinku.jsj.springboot.service.admin.OperaterLogService;
    9. import com.jinku.jsj.springboot.service.common.ActivitiesService;
    10. import com.jinku.jsj.springboot.service.common.AssociationService;
    11. import com.jinku.jsj.springboot.service.common.NewsService;
    12. import com.jinku.jsj.springboot.util.ValidateEntityUtil;
    13. import org.apache.commons.lang3.StringUtils;
    14. import org.springframework.beans.BeanUtils;
    15. import org.springframework.beans.factory.annotation.Autowired;
    16. import org.springframework.stereotype.Controller;
    17. import org.springframework.ui.Model;
    18. import org.springframework.web.bind.annotation.RequestMapping;
    19. import org.springframework.web.bind.annotation.RequestMethod;
    20. import org.springframework.web.bind.annotation.RequestParam;
    21. import org.springframework.web.bind.annotation.ResponseBody;
    22. import javax.servlet.http.HttpServletRequest;
    23. import javax.servlet.http.HttpSession;
    24. import java.util.Date;
    25. /**
    26. * 社团活动管理
    27. */
    28. @RequestMapping("/admin/activities")
    29. @Controller
    30. public class ActivitiesController {
    31. @Autowired
    32. private NewsService newsService;
    33. @Autowired
    34. private OperaterLogService operaterLogService;
    35. @Autowired
    36. private AssociationService associationService;
    37. @Autowired
    38. private ActivitiesService activitiesService;
    39. @RequestMapping(value = "/list")
    40. public String list(Model model, PageBean<Activities> pageBean, Activities activities
    41. ) {
    42. model.addAttribute("pageBean", activitiesService.findList(activities, pageBean));
    43. model.addAttribute("title", "社团活动列表");
    44. model.addAttribute("activitiesTitle",activities.getTitle()==null?null:activities.getTitle());
    45. //这里要把社团查询出来并返回给页面
    46. model.addAttribute("associations", associationService.findAll());
    47. model.addAttribute("auditStatus",activities.getIsAudit());
    48. model.addAttribute("teamId",activities.getBelonTeam());
    49. return "admin/activities/list";
    50. }
    51. /**
    52. * 社团活动添加页面
    53. *
    54. * @param model
    55. * @return
    56. */
    57. @RequestMapping(value = "/add", method = RequestMethod.GET)
    58. public String add(Model model) {
    59. //这里要把社团查询出来并返回给页面
    60. model.addAttribute("associations",associationService.findAll());
    61. model.addAttribute("title","社团活动列表");
    62. return "admin/activities/add";
    63. }
    64. /**
    65. * 社团活动添加
    66. *
    67. * @param model
    68. * @param activities
    69. * @return at wjk
    70. */
    71. @ResponseBody
    72. @RequestMapping(value = "/add", method = RequestMethod.POST)
    73. public Result<Boolean> add(Model model, Activities activities, HttpServletRequest request) {
    74. //检查活动标题是否已存在
    75. Activities byTitle = activitiesService.findByTitle(activities.getTitle());
    76. if(byTitle!=null){
    77. return Result.error(CodeMsg.ADMIN_ACTIVITIES_EXIST_ERROR);
    78. }
    79. //比较两日期大小
    80. Date actStartTime = activities.getActStartTime();
    81. Date actEndTime = activities.getActEndTime();
    82. boolean before = actStartTime.before(actEndTime);
    83. if(!before){
    84. return Result.error(CodeMsg.ADMIN_ACTIVITIES_DATE_ERROR);
    85. }
    86. HttpSession session = request.getSession();
    87. User user = (User) session.getAttribute(SessionConstant.SESSION_USER_LOGIN_KEY);
    88. //用统一验证实体方法验证是否合法
    89. CodeMsg validate = ValidateEntityUtil.validate(activities);
    90. if (validate.getCode() != CodeMsg.SUCCESS.getCode()) {
    91. return Result.error(validate);
    92. }
    93. activities.setCreateUser(user.getUsername());
    94. if (activitiesService.save(activities) == null) {
    95. return Result.error(CodeMsg.ADMIN_ACTIVITIES_ADD_ERROR);
    96. }
    97. operaterLogService.add("添加活动,活动标题:" + activities.getTitle());
    98. return Result.success(true);
    99. }
    100. /**
    101. * 社团活动编辑页面
    102. *
    103. * @param model
    104. * @param id
    105. * @return
    106. */
    107. @RequestMapping(value = "/edit", method = RequestMethod.GET)
    108. public String edit(Model model, @RequestParam(name = "id", required = true) Long id) {
    109. //这里要把社团查询出来并返回给页面
    110. model.addAttribute("associations", associationService.findAll());
    111. model.addAttribute("activities", activitiesService.find(id));
    112. return "admin/activities/edit";
    113. }
    114. /**
    115. * 编辑社团活动
    116. * @param activities
    117. * @return
    118. */
    119. @ResponseBody
    120. @RequestMapping(value = "/edit", method = RequestMethod.POST)
    121. public Result<Boolean> edit(Activities activities,HttpServletRequest request) {
    122. //用统一验证实体方法验证是否合法
    123. CodeMsg validate = ValidateEntityUtil.validate(activities);
    124. if (validate.getCode() != CodeMsg.SUCCESS.getCode()) {
    125. return Result.error(validate);
    126. }
    127. //将提交的用户信息指定字段复制到已存在的user对象中
    128. Activities findbyId = activitiesService.find(activities.getId());
    129. HttpSession session = request.getSession();
    130. User user = (User) session.getAttribute(SessionConstant.SESSION_USER_LOGIN_KEY);
    131. activities.setCreateUser(user.getUsername());
    132. //source原来的字段复制到目标对象当中ignoreProperties表示忽略哪些字段 该方法会覆盖新字段内容
    133. BeanUtils.copyProperties(activities, findbyId, "id", "createTime", "updateTime");
    134. //到这说明一切通过 开始进行数据库编辑
    135. if (activitiesService.save(findbyId) == null) {
    136. return Result.error(CodeMsg.ADMIN_ACTIVITIES_EDIT_ERROR);
    137. }
    138. operaterLogService.add("编辑活动,活动标题:" + activities.getTitle());
    139. return Result.success(true);
    140. }
    141. /**
    142. * 社团活动删除
    143. * @param ids
    144. * @return
    145. */
    146. @ResponseBody
    147. @RequestMapping(value = "/delete", method = RequestMethod.POST)
    148. public Result<Boolean> delete(@RequestParam(name = "ids", required = true) String ids) {
    149. if (!StringUtils.isEmpty(ids)) {
    150. String[] splitIds = ids.split(",");
    151. for (String id : splitIds) {
    152. Activities activities = activitiesService.find(Long.valueOf(id));
    153. if (activities != null) {
    154. try {
    155. activitiesService.delete(Long.valueOf(id));
    156. operaterLogService.add("删除社团活动,id为:" + id);
    157. }catch (Exception e){
    158. return Result.error(CodeMsg.ADMIN_ACTIVITIES_DELETE_ERROR);
    159. }
    160. }
    161. }
    162. }
    163. return Result.success(true);
    164. }
    165. }
    package com.jinku.jsj.springboot.controller.admin;
    
    
    import com.jinku.jsj.springboot.bean.CodeMsg;
    import com.jinku.jsj.springboot.bean.PageBean;
    import com.jinku.jsj.springboot.bean.Result;
    import com.jinku.jsj.springboot.constant.SessionConstant;
    import com.jinku.jsj.springboot.entity.admin.User;
    import com.jinku.jsj.springboot.entity.common.SiteNews;
    import com.jinku.jsj.springboot.service.admin.OperaterLogService;
    import com.jinku.jsj.springboot.service.common.AssociationService;
    import com.jinku.jsj.springboot.service.common.NewsService;
    import com.jinku.jsj.springboot.util.ValidateEntityUtil;
    import org.apache.commons.lang3.StringUtils;
    import org.springframework.beans.BeanUtils;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Controller;
    import org.springframework.ui.Model;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestMethod;
    import org.springframework.web.bind.annotation.RequestParam;
    import org.springframework.web.bind.annotation.ResponseBody;
    
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpSession;
    
    /**
     * 新闻管理
     */
    
    @RequestMapping("/admin/news")
    @Controller
    public class NewsController {
    
        @Autowired
        private NewsService newsService;
    
        @Autowired
        private OperaterLogService operaterLogService;
    
        @Autowired
        private AssociationService associationService;
    
        @RequestMapping(value = "/list")
        public String list(Model model, PageBean pageBean, SiteNews siteNews) {
            model.addAttribute("pageBean", newsService.findList(siteNews, pageBean));
            model.addAttribute("isAudit",siteNews.getIsAudit());
            model.addAttribute("title", "新闻列表");
            model.addAttribute("newsTitle",siteNews.getTitle()==null?null:siteNews.getTitle());
            model.addAttribute("teamId",siteNews.getBelonTeam());
            //这里要把社团查询出来并返回给页面
            model.addAttribute("associations", associationService.findAll());
            return "admin/news/list";
        }
    
        /**
         * 新闻添加页面
         *
         * @param model
         * @return
         */
        @RequestMapping(value = "/add", method = RequestMethod.GET)
        public String add(Model model) {
            //这里要把社团查询出来并返回给页面
            model.addAttribute("associations",associationService.findAll());
            return "admin/news/add";
        }
    
        /**
         * 新闻添加
         *
         * @param model
         * @param siteNews
         * @return at wjk
         */
        @ResponseBody
        @RequestMapping(value = "/add", method = RequestMethod.POST)
        public Result add(Model model, SiteNews siteNews, HttpServletRequest request) {
            HttpSession session = request.getSession();
            User user = (User) session.getAttribute(SessionConstant.SESSION_USER_LOGIN_KEY);
            //用统一验证实体方法验证是否合法
            CodeMsg validate = ValidateEntityUtil.validate(siteNews);
            if (validate.getCode() != CodeMsg.SUCCESS.getCode()) {
                return Result.error(validate);
            }
            siteNews.setCreateUser(user.getUsername());
            if (newsService.save(siteNews) == null) {
                return Result.error(CodeMsg.ADMIN_NEWS_ADD_ERROR);
            }
            operaterLogService.add("添加新闻,新闻标题:" + siteNews.getTitle());
    
            return Result.success(true);
        }
    
    
        /**
         * 新闻编辑页面
         *
         * @param model
         * @param id
         * @return
         */
        @RequestMapping(value = "/edit", method = RequestMethod.GET)
        public String edit(Model model, @RequestParam(name = "id", required = true) Long id) {
            //这里要把社团查询出来并返回给页面
            model.addAttribute("associations", associationService.findAll());
            model.addAttribute("news", newsService.find(id));
            return "admin/news/edit";
        }
    
        /**
         * 新闻编辑
         *
         * @param siteNews
         * @return
         */
    
        @ResponseBody
        @RequestMapping(value = "/edit", method = RequestMethod.POST)
        public Result edit(SiteNews siteNews) {
            //用统一验证实体方法验证是否合法
            CodeMsg validate = ValidateEntityUtil.validate(siteNews);
            if (validate.getCode() != CodeMsg.SUCCESS.getCode()) {
                return Result.error(validate);
            }
            //将提交的用户信息指定字段复制到已存在的user对象中
            SiteNews findbyId = newsService.find(siteNews.getId());
            //把source原来的字段复制到目标对象当中ignoreProperties表示忽略哪些字段 该方法会覆盖新字段内容
            BeanUtils.copyProperties(siteNews, findbyId, "id", "createTime", "updateTime", "createUser");
            //到这说明一切通过 开始进行数据库编辑
            if (newsService.save(findbyId) == null) {
                return Result.error(CodeMsg.ADMIN_NEWS_EDIT_ERROR);
            }
            operaterLogService.add("编辑新闻,新闻标题:" + siteNews.getTitle());
            return Result.success(true);
        }
    
    
        /**
         * 新闻删除
         * @param ids
         * @return
         */
        @ResponseBody
        @RequestMapping(value = "/delete", method = RequestMethod.POST)
        public Result delete(@RequestParam(name = "ids", required = true) String ids) {
            if (!StringUtils.isEmpty(ids)) {
                String[] splitIds = ids.split(",");
                for (String id : splitIds) {
                    SiteNews siteNews = newsService.find(Long.valueOf(id));
                    if (siteNews != null) {
                        try {
                            newsService.delete(Long.valueOf(id));
                            operaterLogService.add("删除新闻,id为:" + id);
                        }catch (Exception e){
                            return Result.error(CodeMsg.ADMIN_NEWS_DELETE_ERROR);
                        }
                    }
    
                }
    
            }
            return Result.success(true);
        }
    
    
    
    }
    
  • 相关阅读:
    .NET性能优化-ArrayPool同时复用数组和对象
    ES 中时间日期类型 “yyyy-MM-dd HHmmss” 的完全避坑指南
    什么是 Azuki NFT 系列?
    android 下简单侧滑删除、编辑等功能实现
    7.0、C语言——数组
    吐血经验,怎么把OAK相机的镜头模组拆下来?
    windows下玩anaconda和librosa遇到的一些坑
    vue3 setup函数
    列表标签(非常重要)
    LeetCode 算法:LRU 缓存 c++
  • 原文地址:https://blog.csdn.net/weixin_42899150/article/details/126679456