基于javaweb的SpringBoot大学生在线答疑平台(java+springboot+maven+vue+elementui+mysql)

运行环境

Java≥8、MySQL≥5.7、Node.js≥14

开发工具

后端:eclipse/idea/myeclipse/sts等均可配置运行
前端:WebStorm/VSCode/HBuilderX等均可

❗没学过node.js的不要搞前后端分离项目

适用

课程设计,大作业,毕业设计,项目练习,学习演示等

功能说明

321424060701

341424060701

351424060701

361424060701

371424060701

381424060701

391424060701

401424060701

基于javaweb的SpringBoot大学生在线答疑平台(java+springboot+maven+vue+elementui+mysql)

分为后台管理员、老师、学生

后端:SpringBoot(Spring+SpringMVC+Mybatis)

前端:Vue+ElementUI

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
44
45
46
47
48
49
50
51
52
53
            //分页查询
if (param.containsKey(SysConst.PAGA_CURRENT_KEY) && param.containsKey(SysConst.PAGA_SIZE_KEY)) {
IPage<Role> page = new Page<>();
page.setCurrent(param.getLong(SysConst.PAGA_CURRENT_KEY)).setSize(param.getLong(SysConst.PAGA_SIZE_KEY));
// IPage<Role> list = professionService.queryByCondition(page, role);
List<Role> list = roleService.list(null);
return ResultMsg.success(list);
} else { //普通查询
List<Role> list = roleService.list();
return ResultMsg.success(list);
}
} catch (Exception e) {
e.printStackTrace();
return ResultMsg.create(StatusCode.QUERY_FAILURE, StatusCode.QUERY_FAILURE_MSG);
}
}

/**
* 角色资源权限分配
*
* @param param
* @return
*/
@PostMapping("/resourceAuth")
@Permission
public ResultMsg addResourceAuth(@RequestBody JSONObject param) {
try{
List<Integer> resourceIds = param.getJSONArray("resourceIds").toJavaList(Integer.class);
Integer roleId = param.getObject("roleId", Integer.class);
Map<String, Object> delMap=null;
if(resourceIds!=null && resourceIds.size()>0 && roleId!=null){
delMap = new HashMap<>();
delMap.put("role_id", roleId);
}
roleService.resourceAuth(delMap,resourceIds,roleId);
return ResultMsg.success();
}catch(Exception e){
e.printStackTrace();
return ResultMsg.create(StatusCode.SAVE_FAILURE,StatusCode.SAVE_FAILURE_MSG);
}
}


/**
* 保存
*
* @param profession
* @return
*/
/* @PostMapping("/save")
public ResultMsg save(@RequestBody Profession profession) {
try {
if (profession == null) {
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
44
45
46
47
48
49
50
51
52
53
@PostMapping("/save")
@Permission
public ResultMsg save(HttpServletRequest request, @RequestBody Request myRequest) {
try {
if (myRequest == null) {
return ResultMsg.create(StatusCode.PARAMETER_ERROR, StatusCode.PARAMETER_ERROR_MSG);
}
// 给修改日期赋值
Integer currentUserId = getCurrentUserId(request);
myRequest.setUpdateAt(LocalDateTime.now()).setUserId(currentUserId);
requestService.saveOrUpdate(myRequest);
return ResultMsg.success();
} catch (OperatorFailureException ofe) {
ofe.printStackTrace();
return ResultMsg.create(ofe.getCode(), ofe.getMessage());
} catch (Exception e) {
e.printStackTrace();
return ResultMsg.create(StatusCode.SAVE_FAILURE, StatusCode.SAVE_FAILURE_MSG);
}
}

/**
* 收藏问答
*
* @param collect
* @return
*/
@RequestMapping("/collecte")
@Permission
public ResultMsg collecte(HttpServletRequest httRequest, @RequestBody Collect collect) {
try {
if (collect == null) {
return ResultMsg.create(StatusCode.PARAMETER_ERROR, StatusCode.PARAMETER_ERROR_MSG);
}
// 获取当前用户
collect.setUserId(getCurrentUserId(httRequest));
// 如果查出相同的,拦截掉,不让修改
Collect retCollection = collectService.getOne(new QueryWrapper<Collect>().lambda()
.eq(Collect::getReqAnsId, collect.getReqAnsId())
.eq(Collect::getReqAnsType, collect.getReqAnsType())
.eq(Collect::getUserId, collect.getUserId()));

if (retCollection != null) return ResultMsg.create(StatusCode.DATA_EXIST, StatusCode.DATA_EXIST_MSG);
collectService.save(collect);
return ResultMsg.success();
} catch (Exception e) {
e.printStackTrace();
return ResultMsg.create(StatusCode.SAVE_FAILURE, StatusCode.SAVE_FAILURE_MSG);
}
}

/**
* 举报问答
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
     */
@DeleteMapping("/delect")
public ResultMsg delectAdmin(@RequestBody JSONObject param) {
try {
if (param == null || !param.containsKey(SysConst.BATCH_ID)
|| !param.getString(SysConst.BATCH_ID).contains(SysConst.BATCH_ID_SEPARATOR)) {
return ResultMsg.create(StatusCode.PARAMETER_ERROR, StatusCode.PARAMETER_ERROR_MSG);
}
String ids = param.getString(SysConst.BATCH_ID);
List idlist = Utils.idsToList(ids, SysConst.BATCH_ID_SEPARATOR);
courseService.removeByIds(idlist);
return ResultMsg.success();
} catch (Exception e) {
e.printStackTrace();
return ResultMsg.create(StatusCode.DELETE_FAILUER, StatusCode.DELETE_FAILUER_MSG);
}
}

}


/**
* 举报处理 控制器
*
* @Version 1.0
*/
@CrossOrigin
@RestController
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
44
45
46
47
48
49
50
51
52
53

System.out.println(result);
if (!StringUtils.isEmpty(result)) {
WxAuthResultMedel wxAuthResultMedel = JSONObject.parseObject(result, WxAuthResultMedel.class);
System.out.println(wxAuthResultMedel);
String errcode = wxAuthResultMedel.getErrcode();
String openid = wxAuthResultMedel.getOpenid();
String sessionKey = wxAuthResultMedel.getSession_key();
// 成功
if (!StringUtils.isEmpty(openid) && !StringUtils.isEmpty(sessionKey)) {
// 判断
UserThirdAuthen userThirdAuthenDb = thirdAuthenService.getOne(new QueryWrapper<UserThirdAuthen>().lambda().eq(UserThirdAuthen::getOpenid, wxAuthResultMedel.getOpenid()));
SysUserInfo userInfo = null;
Integer userId = null;
if (userThirdAuthenDb == null) {
// 首次登录
// 保存用户信息
SysUserInfo sysUserInfo = new SysUserInfo()
.setName(wxAuthResultMedel.getOpenid()).setRoleId(4);
iSysUserInfoService.wxSave(sysUserInfo);
Integer userIdTemp = sysUserInfo.getTid();
// 保存 微信 openId
UserThirdAuthen userThirdAuthen = new UserThirdAuthen();
userThirdAuthen.setOuthType("wx")
.setUserId(userIdTemp)
.setOpenid(wxAuthResultMedel.getOpenid())
.setSessionKey(wxAuthResultMedel.getSession_key())
.setUnionid(wxAuthResultMedel.getUnionid());
thirdAuthenService.save(userThirdAuthen);
// TODO 获取access_token
userId = userIdTemp;
} else {
// 二次登录
userId = userThirdAuthenDb.getUserId();
SysUserInfo userInfoTemp = iSysUserInfoService.getById(userId);
userInfo = wxAuthResultMedel.getOpenid().equals(userInfoTemp.getName()) ? null : userInfoTemp;
}
// 签发token
String token = tokenUtil.createToken(userId);
Map<String, Object> resultMap = new HashMap<>();
resultMap.put("token", token);
resultMap.put("userInfo", userInfo);
return ResultMsg.success(resultMap);
} else {
// TODO 错误情况 还需要单独处理
return ResultMsg.create(Integer.parseInt(errcode), wxAuthResultMedel.getErrmsg());
}
// TODO 异常也需要做处理
}
return ResultMsg.create(-1, "获取未获取到信息!");
}


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
44
45
46
        //分页查询
if (param.containsKey(SysConst.PAGA_CURRENT_KEY) && param.containsKey(SysConst.PAGA_SIZE_KEY)) {
IPage<Request> requestPage = new Page<>();
requestPage.setCurrent(param.getLong(SysConst.PAGA_CURRENT_KEY)).setSize(param.getLong(SysConst.PAGA_SIZE_KEY));
IPage<Request> list = requestService.queryByCondition(requestPage, request);
return ResultMsg.success(list);
} else { //普通查询
List<Request> list = requestService.queryByCondition(request);
return ResultMsg.success(list);
}
} catch (Exception e) {
e.printStackTrace();
return ResultMsg.create(StatusCode.QUERY_FAILURE, StatusCode.QUERY_FAILURE_MSG);
}
}

/**
* 获取用户回答
*
* @param param
* @return
*/
@RequestMapping("/queryAnswer")
@Permission
public ResultMsg queryAnswer(HttpServletRequest httpRequest, @RequestBody JSONObject param) {
try {
//查询条件
Answer answer = null;
if (param.containsKey(SysConst.QUERY_CONDITION_KEY)) {
answer = param.getObject(SysConst.QUERY_CONDITION_KEY, Answer.class);
} else {
answer = new Answer();
}
Integer currentUserId = getCurrentUserId(httpRequest);
answer.setUserId(currentUserId);
answer.setAnswerOwn(SysConst.ANSWER_PLAIN);
//分页查询
if (param.containsKey(SysConst.PAGA_CURRENT_KEY) && param.containsKey(SysConst.PAGA_SIZE_KEY)) {
IPage<Answer> answerPage = new Page<>();
answerPage.setCurrent(param.getLong(SysConst.PAGA_CURRENT_KEY)).setSize(param.getLong(SysConst.PAGA_SIZE_KEY));
IPage<Answer> list = answerService.queryByCondition(answerPage, answer);
return ResultMsg.success(list);
} else { //普通查询
List<Answer> list = answerService.queryByCondition(answer);
return ResultMsg.success(list);
}


项目链接:
https://javayms.github.io?id=591524170701201hj
https://javayms.pages.dev?id=591524170701201hj