用户登录通过账号、密码页面,进入到系统小程序主界面,进入到操作界面,进行相对应操作,如下图所示。
学生登录系统后,可以对首页、公告信息、我的等功能进行详细操作,如下图所示。
找工作申报,在找工作申报页面学生可以申报自己的工作信息,然后等待管理员审核回复,并可以查看自己的找工作申报信息,包括学生姓名、学号、头像、班级、年级、专业、公司名称、公司地址、出发日期、结束日期、申报时间、备注、行程、审核回复等,如下图所示。
实习打卡管理,在实习打卡管理页面学生可以填写打卡信息,包括了学号、学生姓名、头像、班级、年级、专业、单位名称、单位地址、打卡类型、打卡时间、备注等信息,如下图所示。
我的,在我的页面可以查看实习打卡、考研申报、找工作申报等详细信息进行操作,如下图所示。
5.2后台管理端实现效果
管理员登录,管理员通过登录页面输入用户名、密码,选择角色并点击登录操作,如下图所示。
管理员登录系统后,可以对首页、个人中心、学生管理、实习单位管理、实习打卡管理、考研申报管理、找工作申报管理、系统管理等功能进行相应操作,如下图所示。
六.部分功能代码
/\*\*
\* 权限(Token)验证
\*/
@Component
public class AuthorizationInterceptor implements HandlerInterceptor {
public static final String LOGIN\_TOKEN\_KEY = "Token";
@Autowired
private TokenService tokenService;
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
String servletPath = request.getServletPath();
if("/dictionary/page".equals(request.getServletPath()) || "/file/upload".equals(request.getServletPath()) || "/yonghu/register".equals(request.getServletPath()) ){//请求路径是字典表或者文件上传 直接放行
return true;
}
//支持跨域请求
response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");
response.setHeader("Access-Control-Max-Age", "3600");
response.setHeader("Access-Control-Allow-Credentials", "true");
response.setHeader("Access-Control-Allow-Headers", "x-requested-with,request-source,Token, Origin,imgType, Content-Type, cache-control,postman-token,Cookie, Accept,authorization");
response.setHeader("Access-Control-Allow-Origin", request.getHeader("Origin"));
IgnoreAuth annotation;
if (handler instanceof HandlerMethod) {
annotation = ((HandlerMethod) handler).getMethodAnnotation(IgnoreAuth.class);
} else {
return true;
}
//从header中获取token
String token = request.getHeader(LOGIN\_TOKEN\_KEY);
/\*\*
\* 不需要验证权限的方法直接放过
\*/
if(annotation!=null) {
return true;
}
TokenEntity tokenEntity = null;
if(StringUtils.isNotBlank(token)) {
tokenEntity = tokenService.getTokenEntity(token);
}
if(tokenEntity != null) {
request.getSession().setAttribute("userId", tokenEntity.getUserid());
request.getSession().setAttribute("role", tokenEntity.getRole());
request.getSession().setAttribute("tableName", tokenEntity.getTablename());
request.getSession().setAttribute("username", tokenEntity.getUsername());
return true;
}
PrintWriter writer = null;
response.setCharacterEncoding("UTF-8");
response.setContentType("application/json; charset=utf-8");
try {
writer = response.getWriter();
writer.print(JSONObject.toJSONString(R.error(401, "请先登录")));
} finally {
if(writer != null){
writer.close();
}
}
// throw new EIException("请先登录", 401);
return false;
}
}