日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

基于Spring Boot的讲师积分管理系统(毕业设计,毕设)

發(fā)布時間:2023/12/20 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 基于Spring Boot的讲师积分管理系统(毕业设计,毕设) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

文章目錄

  • 一、軟件架構(gòu)
  • 二、系統(tǒng)設(shè)計
  • 三、代碼實現(xiàn)
    • 1.積分標準Controller
    • 2. 提交積分Controller
    • 3. 查詢積分詳情
  • 四、軟件截圖

一、軟件架構(gòu)

講師積分管理系統(tǒng)畢業(yè)設(shè)計

Spring Boot + Spring + MyBatis + Spring MVC + MysQL + Layui

或者是

Spring Boot + Spring + MyBatis + Spring MVC + MysQL + Vue + Element

兩個版本都是前后端分離的項目

系統(tǒng)分為三種用戶角色:講師、項目經(jīng)理、超級管理員

超級管理員可指定積分標準

項目經(jīng)理可對講師申請的標準進行申請

講師可查看自己的申請 和項目排名

二、系統(tǒng)設(shè)計

1.教學管理部模塊
(1)在系統(tǒng)的登錄界面,用戶輸入教學管理部特定的用戶名密碼,經(jīng)過后臺驗證后跳轉(zhuǎn)到教學管理部模塊。
(2)教學管理部可以對積分條目進行增刪改查,在增加積分條目的時候具體的積分擁有三個指標,分別為一級指標、二級指標和三級指標。通過這三級指標更加細化了積分的分類。同時需要指定為項目部積分還是講師積分,項目部積分是由項目經(jīng)理申請后,再由講師進行選擇申請。講師積分可以直接由講師進行申請。
(3)教學管理部可以對講師積分進行終審的操作,終審后駁回給對應的項目經(jīng)理。同時也可以對項目部積分進行審核。
(4)可以查看所有講師積分的排名情況,同時也可以進行準確的搜索查詢,以及查看每個項目部的積分排名情況。

2.項目經(jīng)理模塊
(1)在系統(tǒng)的登錄界面,用戶輸入項目經(jīng)理特定的用戶名密碼,經(jīng)過后臺驗證后跳轉(zhuǎn)到項目經(jīng)理模塊。
(2)項目經(jīng)理可以查看項目部可申請的積分條目,選擇對應的條目后進行申請操作。
(3)可以對講師積分申請進行初審,初審時需要輸入具體的意見。同時項目經(jīng)理可以對終審駁回的數(shù)據(jù)進行操作,選擇繼續(xù)向下駁回或者是修改后提交。
(4)項目經(jīng)理可以查看整個項目部內(nèi)講師積分申請的排名以及具體的情況。

3.講師模塊
(1)在系統(tǒng)的登錄界面,用戶輸入講師特定的用戶名密碼,經(jīng)過后臺驗證后跳轉(zhuǎn)到講師模塊。
(2)講師可以查看到的積分標準分為兩種:教學管理部規(guī)定的講師積分標準、項目部審核通過的項目部積分標準。可以查看具體積分標準的申請要求。
(3)選擇對應的積分標準進行申請的操作。申請的時候需要上傳指定格式的佐證材料,選擇申請積分的數(shù)量以及輸入具體的積分名稱。
(4)講師可以查看自己已經(jīng)申請積分的狀態(tài),這里狀態(tài)分為六種:待初審、待終審、初審通過、終審通過、初審駁回以及終審駁回。可以點擊具體的申請條目,跳轉(zhuǎn)到具體積分申請詳情頁面。
講師可以查看自己項目部積分排名情況。

三、代碼實現(xiàn)

1.積分標準Controller

/** 講師查詢積分標準(包含講師可申請的積分項 + 項目部審核通過的積分項)* 講師的方法* @param standard 封裝了條件* @return*/@PostMapping("/qLectureStandard")public ResponseResult queryStandard(@RequestBody PointsStandard standard, Integer pageNum, Integer pageSize, @RequestHeader HttpHeaders headers){//判斷請求頭中是否有tokenif (headers.get(RedisConstant.TOKEN_PREFIX) == null){return ResponseResult.error(HttpStatus.UNAUTHORIZED, RtnConstant.NOT_LOGIN);}String token = RedisConstant.LOGIN_TOKEN_KEY + headers.get(RedisConstant.TOKEN_PREFIX).get(0);Users users = redisUtil.getCacheObject(token);//判斷Redis中是否有token對應的用戶if (users == null){return ResponseResult.error(HttpStatus.UNAUTHORIZED, RtnConstant.NOT_LOGIN);}PageHelper.startPage(pageNum,pageSize);PageInfo<PointsStandard> res = new PageInfo<>(sandardService.queryStandard(standard,users.getDepId()));return ResponseResult.success(res);}/** 查詢項目部可申請的積分標準* 項目部方法* @param standard* @param pageNum* @param pageSize* @return*/@PostMapping("/queryDeptStandard")public ResponseResult queryDeptStandard(@RequestBody PointsStandard standard, Integer pageNum, Integer pageSize){PageHelper.startPage(pageNum,pageSize);PageInfo<PointsStandard> info = new PageInfo<>(sandardService.queryDeptStandard(standard));return ResponseResult.success(info);}/** 查詢所有的積分標準* 管理部的方法* @param standard* @param pageNum* @param pageSize* @return*/@PostMapping("/queryAllStandard")public ResponseResult queryAllStandard(@RequestBody PointsStandard standard, Integer pageNum, Integer pageSize){PageHelper.startPage(pageNum,pageSize);PageInfo<PointsStandard> info = new PageInfo<>(sandardService.queryAllStandard(standard));return ResponseResult.success(info);}/** 查詢所有的積分標準指標 封裝為前端需要的數(shù)據(jù)結(jié)構(gòu)* 公用方法* @return*/@GetMapping("/queryLevelTreeSelect")public ResponseResult queryLevelTreeSelect(){List<TreeSelect> list = sandardService.queryAllLevel();return ResponseResult.success(list);}/** 查詢系數(shù)樹狀結(jié)構(gòu)* 公用方法* @return*/@PostMapping("/queryCoeffcientTree")public ResponseResult queryCoeffcient(@RequestBody ArrayEntity arrayEntity){List<TreeSelect> tree = sandardService.queryCoeffcient(arrayEntity.getCids());return ResponseResult.success(tree);}

2. 提交積分Controller

/** 提交積分申請* 公共方法* @param pointId* @param detailName* @param applyCount* @param arrayEntity* @param flag 是否為內(nèi)部調(diào)用* @return*/@MyLog(title = ModelConstant.POINT_MODEL, businessType = BusinessTypeConstant.APPLY)@PostMapping("/submitApplication")public ResponseResult submitApplication(String pointId, String detailName, String applyCount, @RequestBody ArrayEntity arrayEntity, @RequestHeader HttpHeaders headers, Boolean flag){//判斷請求頭中是否有tokenif (headers.get(RedisConstant.TOKEN_PREFIX) == null){return ResponseResult.error(HttpStatus.UNAUTHORIZED, RtnConstant.NOT_LOGIN);}String token = RedisConstant.LOGIN_TOKEN_KEY + headers.get(RedisConstant.TOKEN_PREFIX).get(0);Users users = redisUtil.getCacheObject(token);//判斷Redis中是否有token對應的用戶if (users == null){return ResponseResult.error(HttpStatus.UNAUTHORIZED, RtnConstant.NOT_LOGIN);}UserPoints userPoints = new UserPoints();userPoints.setApplyCount(Integer.parseInt(applyCount));userPoints.setApplyDate(new Date());//將審批人Id數(shù)組轉(zhuǎn)化為 1,2,3 格式StringBuilder sb = new StringBuilder();for(int i=0;i<arrayEntity.getShenheUser().length;i++){sb.append(arrayEntity.getShenheUser()[i]);if (i != arrayEntity.getShenheUser().length-1){sb.append(",");}}userPoints.setApproverId(sb.toString());//轉(zhuǎn)化系數(shù)ID數(shù)組Integer[] cids = arrayEntity.getCids();StringBuilder cid = new StringBuilder();if (cids != null){for(int i=0;i<cids.length;i++){cid.append(cids[i]);if (i != cids.length-1){cid.append(",");}}}userPoints.setCoefficientIds(cid.toString());userPoints.setDetailName(detailName);userPoints.setPointId(pointId);userPoints.setState(1);//判斷為講師積分申請還是項目部積分申請if (flag == null || flag == false){userPoints.setType(1);}else {userPoints.setType(0);}userPoints.setUPointId(UUID.randomUUID().toString().replace("-",""));String[] fileNameArray = arrayEntity.getFileNameArray();String[] filePathArray = arrayEntity.getFilePathArray();StringBuilder filePath = new StringBuilder();StringBuilder fileName = new StringBuilder();for(int i=0;i<filePathArray.length;i++){filePath.append(filePathArray[i]);fileName.append(fileNameArray[i]);if (i != filePathArray.length-1){fileName.append(",");filePath.append(",");}}userPoints.setMaterialsPath(filePath.toString());userPoints.setRealName(fileName.toString());userPoints.setUserId(users.getUId());userPointsService.apply(userPoints);return ResponseResult.success();}

3. 查詢積分詳情

@GetMapping("/queryApplicationById")public ResponseResult queryApplicationById(String id){UserPoints userPoints = userPointsService.queryApplicationById(id);String coefficientIds = userPoints.getCoefficientIds();String [] arr;if (coefficientIds != null && !coefficientIds.equals("")){if (coefficientIds.contains(",")){arr = coefficientIds.split(",");}else {arr = new String[1];arr[0] = coefficientIds;}List<String> list = Arrays.asList(arr);List<TreeSelect> treeSelects = sandardService.queryCoeffBySelected(list);userPoints.setTree(treeSelects);}String eMsgId = userPoints.getEMsgId();List<String> msgIds = new ArrayList<>();if (!StringUtils.isEmpty(eMsgId)){if (eMsgId.contains(",")){msgIds = Arrays.asList(eMsgId.split(","));}else {msgIds.add(eMsgId);}List<ExamineMsg> msgList = userPointsService.queryMsgList(msgIds);userPoints.setExamineMsg(msgList);}return ResponseResult.success(userPoints);}

四、軟件截圖

  • 講師


  • 項目經(jīng)理

  • 超級管理員

  • Vue版

    評論區(qū)回復“666”獲取項目

總結(jié)

以上是生活随笔為你收集整理的基于Spring Boot的讲师积分管理系统(毕业设计,毕设)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。