Java專案:學生管理系統(java+Springboot+Maven+mybatis+Vue+Mysql)

兜綠餃嗆俗發表於2022-03-03

一、專案簡述


本系統功能包括:

學生管理,教師管理,課程管理,成績管理,系統管理等等。



二、專案執行

環境配置:


Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支援)。



專案技術:


Springboot + Maven + mybatis+ Vue 等等組成,B/S模式 + Maven管理等等。













學生管理控制層:

@Controller

@RequestMapping("admin/system/user")

public class UserController {

 

    @Autowired

    UserService userService;

 

    @Autowired

    RoleService roleService;

 

    @Autowired

    UploadService uploadService;

 

    @RequestMapping("list")

    @SysLog("跳轉系統使用者列表頁面")

    public String list(){

        return "admin/user/list";

    }

 

    @RequiresPermissions("sys:user:list")

    @PostMapping("list")

    @ResponseBody

    public PageData<User> list(@RequestParam(value = "page",defaultValue = "1")Integer page,

                               @RequestParam(value = "limit",defaultValue = "10")Integer limit,

                               ServletRequest request){

        Map map = WebUtils.getParametersStartingWith(request, "s_");

        PageData<User> userPageData = new PageData<>();

        QueryWrapper<User> userWrapper = new QueryWrapper<>();

        if(!map.isEmpty()){

            String type = (String) map.get("type");

            if(StringUtils.isNotBlank(type)) {

                userWrapper.eq("is_admin", "admin".equals(type) ? true : false);

            }

            String keys = (String) map.get("key");

            if(StringUtils.isNotBlank(keys)) {

                userWrapper.and(wrapper -> wrapper.like("login_name", keys).or().like("tel", keys).or().like("email", keys));

            }

        }

        IPage<User> userPage = userService.page(new Page<>(page,limit),userWrapper);

        userPageData.setCount(userPage.getTotal());

        userPageData.setData(userPage.getRecords());

        return userPageData;

    }

 

    @RequestMapping("add")

    public String add(ModelMap modelMap){

        List<Role> roleList = roleService.selectAll();

        modelMap.put("roleList",roleList);

        return "admin/user/add";

    }

 

    @RequiresPermissions("sys:user:add")

    @PostMapping("add")

    @ResponseBody

    @SysLog("儲存新增系統使用者資料")

    public ResponseEntity add(@RequestBody  User user){

        if(StringUtils.isBlank(user.getLoginName())){

            return ResponseEntity.failure("登入名不能為空");

        }

        if(user.getRoleLists() == null || user.getRoleLists().size() == 0){

            return  ResponseEntity.failure("使用者角色至少選擇一個");

        }

        if(userService.userCount(user.getLoginName())>0){

            return ResponseEntity.failure("登入名稱已經存在");

        }

//        if(StringUtils.isNotBlank(user.getEmail())){

//            if(userService.userCount(user.getEmail())>0){

//                return ResponseEntity.failure("該郵箱已被使用");

//            }

//        }

//        if(StringUtils.isNoneBlank(user.getTel())){

//            if(userService.userCount(user.getTel())>0){

//                return ResponseEntity.failure("該手機號已被繫結");

//            }

//        }

        //設定預設密碼

        if(StringUtils.isBlank(user.getPassword())){

            user.setPassword(Constants.DEFAULT_PASSWORD);

        }

        userService.saveUser(user);

        if(StringUtils.isBlank(user.getId())){

            return ResponseEntity.failure("儲存使用者資訊出錯");

        }

        //儲存使用者角色關係

        userService.saveUserRoles(user.getId(),user.getRoleLists());

        return ResponseEntity.success("操作成功");

    }

 

    @RequestMapping("edit")

    public String edit(String id,ModelMap modelMap){

        User user = userService.findUserById(id);

        String roleIds = "";

        if(user != null) {

            roleIds = user.getRoleLists().stream().map(role -> role.getId()).collect(Collectors.joining(","));

        }

        List<Role> roleList = roleService.selectAll();

        modelMap.put("localuser",user);

        modelMap.put("roleIds",roleIds);

        modelMap.put("roleList",roleList);

        return "admin/user/edit";

    }

 

    @RequiresPermissions("sys:user:edit")

    @PostMapping("edit")

    @ResponseBody

    @SysLog("儲存系統使用者編輯資料")

    public ResponseEntity edit(@RequestBody  User user){

        if(StringUtils.isBlank(user.getId())){

            return ResponseEntity.failure("使用者ID不能為空");

        }

        if(StringUtils.isBlank(user.getLoginName())){

            return ResponseEntity.failure("登入名不能為空");

        }

        if(user.getRoleLists() == null || user.getRoleLists().size() == 0){

            return  ResponseEntity.failure("使用者角色至少選擇一個");

        }

        User oldUser = userService.findUserById(user.getId());

        if(StringUtils.isNotBlank(user.getEmail())){

            if(!user.getEmail().equals(oldUser.getEmail())){

                if(userService.userCount(user.getEmail())>0){

                    return ResponseEntity.failure("該郵箱已被使用");

                }

            }

        }

        if(StringUtils.isNotBlank(user.getLoginName())){

            if(!user.getLoginName().equals(oldUser.getLoginName())) {

                if (userService.userCount(user.getLoginName()) > 0) {

                    return ResponseEntity.failure("該登入名已存在");

                }

            }

        }

        if(StringUtils.isNotBlank(user.getTel())){

            if(!user.getTel().equals(oldUser.getTel())) {

                if (userService.userCount(user.getTel()) > 0) {

                    return ResponseEntity.failure("該手機號已經被繫結");

                }

            }

        }

        user.setIcon(oldUser.getIcon());

        userService.updateUser(user);

 

        if(StringUtils.isBlank(user.getId())){

            return ResponseEntity.failure("儲存使用者資訊出錯");

        }

        userService.saveUserRoles(user.getId(),user.getRoleLists());

        return ResponseEntity.success("操作成功");

    }

 

    @RequiresPermissions("sys:user:lock")

    @PostMapping("lock")

    @ResponseBody

    @SysLog("鎖定或開啟系統使用者")

    public ResponseEntity lock(@RequestParam(value = "id",required = false)String id){

        if(StringUtils.isBlank(id)){

            return ResponseEntity.failure("引數錯誤");

        }

        User user = userService.getById(id);

        if(user == null){

            return ResponseEntity.failure("使用者不存在");

        }

        userService.lockUser(user);

        return ResponseEntity.success("操作成功");

    }

 

    @RequiresPermissions("sys:user:delete")

    @PostMapping("delete")

    @ResponseBody

    @SysLog("刪除系統使用者資料(單個)")

    public ResponseEntity delete(@RequestParam(value = "id",required = false)String id){

        if(StringUtils.isBlank(id)){

            return ResponseEntity.failure("引數錯誤");

        }

        User user = userService.getById(id);

        if(user == null){

            return ResponseEntity.failure("使用者不存在");

        }else if(user.getAdminUser()) {

            return ResponseEntity.failure("不能刪除後臺使用者");

        }

        userService.deleteUser(user);

        return ResponseEntity.success("操作成功");

    }

 

    @RequiresPermissions("sys:user:delete")

    @PostMapping("deleteSome")

    @ResponseBody

    @SysLog("刪除系統使用者資料(多個)")

    public ResponseEntity deleteSome(@RequestBody List<User> users){

        if(users == null || users.size()==0){

            return ResponseEntity.failure("請選擇需要刪除的使用者");

        }

        for (User u : users){

            if(u.getAdminUser()){

                return ResponseEntity.failure("不能刪除超級管理員");

            }else{

                userService.deleteUser(u);

            }

        }

        return ResponseEntity.success("操作成功");

    }

 

    @RequestMapping("userinfo")

    public String toEditMyInfo(ModelMap modelMap){

        String userId = MySysUser.id();

        User user = userService.findUserById(userId);

        modelMap.put("userinfo",user);

        modelMap.put("userRole",user.getRoleLists());

        return "admin/user/userInfo";

    }

 

    @SysLog("系統使用者個人資訊修改")

    @PostMapping("saveUserinfo")

    @ResponseBody

    public ResponseEntity saveUserInfo(User user){

        if(StringUtils.isBlank(user.getId())){

            return ResponseEntity.failure("使用者ID不能為空");

        }

        if(StringUtils.isBlank(user.getLoginName())){

            return ResponseEntity.failure("登入名不能為空");

        }

        User oldUser = userService.findUserById(user.getId());

        if(StringUtils.isNotBlank(user.getEmail())){

            if(!user.getEmail().equals(oldUser.getEmail())){

                if(userService.userCount(user.getEmail())>0){

                    return ResponseEntity.failure("該郵箱已被使用");

                }

            }

        }

        if(StringUtils.isNotBlank(user.getTel())){

            if(!user.getTel().equals(oldUser.getTel())) {

                if (userService.userCount(user.getTel()) > 0) {

                    return ResponseEntity.failure("該手機號已經被繫結");

                }

            }

        }

        userService.updateById(user);

        return ResponseEntity.success("操作成功");

    }

 

    @RequestMapping("changePassword")

    public String changePassword(ModelMap modelMap){

        modelMap.put("currentUser",userService.getById(MySysUser.id()));

        return "admin/user/changePassword";

    }

    @CrossOrigin

    @SysLog("使用者修改密碼")

    @PostMapping("changePassword")

    @ResponseBody

    public ResponseEntity changePassword(@RequestParam(value = "userName",required = false)String userName,

                                         @RequestParam(value = "oldPwd",required = false)String oldPwd,

                                       @RequestParam(value = "newPwd",required = false)String newPwd,

                                       @RequestParam(value = "confirmPwd",required = false)String confirmPwd){

        if(StringUtils.isBlank(oldPwd)){

            return ResponseEntity.failure("舊密碼不能為空");

        }

        if(StringUtils.isBlank(newPwd)){

            return ResponseEntity.failure("新密碼不能為空");

        }

        if(StringUtils.isBlank(confirmPwd)){

            return ResponseEntity.failure("確認密碼不能為空");

        }

        if(!confirmPwd.equals(newPwd)){

            return ResponseEntity.failure("確認密碼與新密碼不一致");

        }

        //小程式修改密碼

        if(StringUtils.isBlank(userName)){

            //PC修改密碼

            User user = userService.findUserById(MySysUser.id());

 

            byte[] hashPassword = Encodes.sha1(oldPwd.getBytes(), Encodes.SHA1, Encodes.decodeHex(user.getSalt()), Constants.HASH_INTERATIONS);

            String password = Encodes.encodeHex(hashPassword);

 

            if(!user.getPassword().equals(password)){

                return ResponseEntity.failure("舊密碼錯誤");

            }

            user.setPassword(newPwd);

            Encodes.entryptPassword(user);

            userService.updateById(user);

            return ResponseEntity.success("操作成功");

        }else {

            //小程式修改密碼

            User user = userService.findUserByLoginName(userName);

 

            byte[] hashPassword = Encodes.sha1(oldPwd.getBytes(), Encodes.SHA1, Encodes.decodeHex(user.getSalt()), Constants.HASH_INTERATIONS);

            String password = Encodes.encodeHex(hashPassword);

 

            if(!user.getPassword().equals(password)){

                return ResponseEntity.failure("舊密碼錯誤");

            }

            user.setPassword(newPwd);

            Encodes.entryptPassword(user);

            userService.updateById(user);

            return ResponseEntity.success("操作成功");

        }

 

    }

 

    @SysLog("上傳頭像")

    @PostMapping("uploadFace")

    @ResponseBody

    public ResponseEntity uploadFile(@RequestParam("icon") MultipartFile file, HttpServletRequest httpServletRequest) {

        if(file == null){

            return ResponseEntity.failure("上傳檔案為空 ");

        }

        String url = null;

        Map map = new HashMap();

        try {

            url = uploadService.upload(file);

            map.put("url", url);

            map.put("name", file.getOriginalFilename());

        } catch (Exception e) {

            e.printStackTrace();

            return ResponseEntity.failure(e.getMessage());

        }

        return ResponseEntity.success("操作成功").setAny("data",map);

    }

 

}


教師管理控制層:

@Controller

public class TeacherController {

    @Autowired

    private TeacherService lxxTeacherService;

    @Autowired

    private StudentService lxxStudentService;

    @Autowired

    private DeleteService deleteService;

 

    // 跳轉教師查詢頁面

    @RequestMapping("/selectTeacher")

    public String selectTeacher(){

        return "view/teacher/selTeacher";

    }

 

 

    //  查詢教師資訊

    @RequestMapping("selTeacher")

    @ResponseBody

    public LayuiResult<Map> selTeacher(TeacherDB teacherDB, pageCount pageCount){

        LayuiResult<Map> result = new LayuiResult<>();

        //  查詢所有教師資訊/模糊查詢教師資訊

        List<Map> list = lxxTeacherService.selTeacher(teacherDB,pageCount);

        //  查詢符合條件的教師數量

        int count = lxxTeacherService.selTeacherCount(teacherDB);

        result.setData(list);

        result.setCount(count);

        return result;

    }

 

    //  根據教師編號查詢教師資訊

    @RequestMapping("/selTeacherId")

    public String selTeacherId(Integer id, Model model){

        List<TeacherDB> tea = lxxTeacherService.selTeacherId(id);

        //  查詢政治面貌

        List<PoliticsTypeDB> selpol = lxxStudentService.selPolitics();

        model.addAttribute("tea",tea);

        model.addAttribute("selpol",selpol);

        return "view/teacher/updTeacher";

    }

 

    //  根據教師編號查詢教師詳細資訊

    @RequestMapping("/selectTeaMessage")

    public String selectTeaMessage(Integer id, Model model){

        List<TeacherDB> tea = lxxTeacherService.selTeacherId(id);

        //  查詢政治面貌

        List<PoliticsTypeDB> selpol = lxxStudentService.selPolitics();

        model.addAttribute("tea",tea);

        model.addAttribute("selpol",selpol);

        return "view/teacher/selTchMessage";

    }

 

    //  修改教師資訊

    @RequestMapping("/updateTeacher")

    @ResponseBody

    public LayuiResult<TeacherDB> updTeacher(TeacherDB teacherDB, String birthday) throws Exception{

        LayuiResult result= new LayuiResult();

        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");

        Date date=format.parse(birthday);

        teacherDB.setTbirthday(date);

        Integer state = teacherDB.getTchstate();

        Integer tid = teacherDB.getTid();

        if(state == 1){

            //  修改教師為離職狀態並邏輯刪除

            Integer deleteTeacher = deleteService.deleteTeacher(teacherDB);

            //  刪除教師授課資訊

            Integer deleteTchCourse = deleteService.deleteTchCourse(tid);

            //  刪除教師班級資訊

            Integer deleteTchClass = deleteService.deleteTchClass(tid);

            //  刪除教師成績資訊

            Integer deleteTchExam = deleteService.deleteTchExam(tid);

            //  刪除教評記錄資訊

            Integer deleteTeaRecord = deleteService.deleteTeaRecord(tid);

            //  改使用者登入狀態改為(1)鎖定狀態

            Integer deleteUser = deleteService.deleteUser(teacherDB.getTchid());

            //刪除提示

            result.setMsg("修改成功!");

            return result;

        }else{

            int a =lxxTeacherService.updTeacher(teacherDB);

            //刪除提示

            result.setMsg("修改成功!");

            return result;

        }

    }

 

}


角色管理控制層:

————————————————

版權宣告:本文為CSDN博主「qq1334611189」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處連結及本宣告。

原文連結:https://blog.csdn.net/m0_66863468/article/details/123150892


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69921766/viewspace-2863059/,如需轉載,請註明出處,否則將追究法律責任。

相關文章