智慧乡村政务服务系统是基于Spring Boot框架开发的一款小程序,旨在提供高效可靠的政务服务体验。该系统主要面向普通用户和管理员,提供了多个功能模块,包括普通用户、管理员、业务信息、业务办理、办理结果和通知公告等。通过对系统需求的分析和设计,采用合理的数据库结构和前后端技术实现,对于普通用户而言,他们可以通过该小程序方便地浏览和查询乡村相关的业务信息,并进行在线办理申请、填写表单等操作。用户还能够实时查看办理进度和获取办理结果,提高办事效率和便利性。管理员则可以通过该系统实现对业务信息的发布、管理和更新,包括业务指南、办事流程等内容。管理员还能够监控和处理用户的办理请求、审核申请和发布通知公告,确保政务服务的高效运行和顺畅沟通。借助SpringBoot框架、Java技术的优势,系统具备良好的代码模块化、可扩展性和易维护性。在系统开发过程中,进行了充分的测试和优化,以确保系统的稳定性和性能。同时,注重用户体验,通过友好的界面设计和操作流程,提供便捷、直观的使用体验。
开发语言:Java
使用框架:spring boot
前端技术:JavaScript、Vue 、css3
开发工具:IDEA/MyEclipse/Eclipse、Visual Studio Code
数据库:MySQL 5.7/8.0
数据库管理工具:phpstudy/Navicat
JDK版本:jdk1.8
Maven: apache-maven 3.8.1-bin
智慧乡村政务服务系统小程序我划分为了普通用户模块和管理员模块这两大部分。
普通用户管理模块:
(1)用户注册登录:游客可以随时进入到系统中,对系统中的信息浏览,但是想要实现业务的办理、收藏、评论操作,就必须有这个系统的账号,如果没有账号的话,可以注册成员用户进行相关的操作,同时用户还可以通过“我的”这以按钮对个人信息以及操作的信息进行管控。
(2)查看智慧乡村政务服务系统小程序的首页信息:智慧乡村政务服务系统小程序的首页信息包含了首页、通知公告、政策资讯、业务信息等。
(3)通知公告:当用户点击“通知公告”这一菜单按钮,会显示管理员在后台发布的所有的通知公告,可以查看详情;
(4)政策资讯:当用户点击“政策资讯”这一菜单按钮,会显示管理员在后台发布的所有的政策资讯,可以查看详情,进行收藏、点赞、评论等;
(5)业务信息:用户可以查看业务信息,在查询到自己想要了解的业务信息的时候,可以进入查看详细的介绍,点击“业务办理”这一按钮以后会跳转到业务办理填写的界面,根据提示填写好业务办理的信息,点击“提交”以后业务办理就完成了;在业务信息详情这个界面,同时支持用户对喜欢的业务信息进行收藏、点赞、评论的功能。
管理员管理模块:
(1)用户管理:管理员可以对智慧乡村政务服务系统小程序中的管理员,以及前台注册的游客用户进行增删改查。
(2)业务信息管理:管理员点击“业务信息”菜单可以对业务信息进行增删改查。
(3)业务办理管理:管理员点击“业务办理”菜单可以对业务办理进行管控。
(4)办理结果管理:管理员点击“办理结果”菜单可以对办理结果进行管控。
(5)轮播图:管理员点击“轮播图”菜单可以对首页展示的轮播图进行增删改查。
(6)通知公告:管理员点击“通知公告”菜单可以查看到系统中的所有通知公告信息,对已经存在的通知公告,管理员可以修改,也可以添加新的通知公告或者删除通知公告。
(7)资源管理:管理员点击“资源管理”菜单能够对其下子菜单资讯列表和资讯分类进行增删改查。
前台首页界面
当进入智慧乡村政务服务系统小程序的时候,系统以上中下的布局进行展示,首先映入眼帘的是系统的导航栏,下面是轮播图,再往下是公告信息,其主界面展示如下图
用户注册界面
智慧乡村政务服务系统小程序的游客和时可以进行注册登录,当用户右上角“注册”按钮的时候,当填写上自己的账号+密码+确认密码+昵称+邮箱+手机号等后再点击“注册”按钮后将会先验证输入的有没有空数据,再次验证密码和确认密码是否是一样的,最后验证输入的账户名和数据库表中已经注册的账户名是否重复,只有都验证没问题后即可用户注册成功。其用用户注册界面展示如下图
用户登录界面
智慧乡村政务服务系统小程序中的前台上注册后的用户是可以通过自己的账户名和密码进行登录的,当会员输入完整的自己的账户名和密码信息并点击“登录”按钮后,将会首先验证输入的有没有空数据,再次验证输入的账户名+密码和数据库中当前保存的用户信息是否一致,只有在一致后将会登录成功并自动跳转到智慧乡村政务服务系统小程序的首页中;否则将会提示相应错误信息,用户登录界面如下图
政策资讯界面
当访客点击智慧乡村政务服务系统小程序中导航栏上的“政策资讯”后将会进入到该“政策资讯”列表的界面,然后选择想要看的政策资讯,点击进入到详细界面,同时可以进行点赞、收藏、评论操作,政策资讯界面如下图
业务信息详情界面
用户可以查看业务信息,在查询到自己想要了解的业务的时候,可以进入查看详细的介绍,点击“业务办理”这一按钮以后会跳转到业务办理信息填写的界面,根据提示填写好业务办理的信息,点击“提交”以后业务办理就完成了;在业务信息详情这个界面,同时支持用户对喜欢的业务信息进行收藏、点赞、评论的功能,业务信息详情界面如下图
业务办理界面
当用户在业务信息界面想要进行业务办理,点击下方的“业务办理”按钮,就会跳转到业务办理信息填写界面,根据界面提示输入业务办理信息,点击“提交”按钮,业务办理就完成了,业务办理界面如下图
用户管理界面
管理员点击“用户管理”这一菜单会显示管理员和普通用户这两个子菜单,管理员可以对这两个角色的信息进行增删改查操作。界面如下图
业务信息管理界面
点击“业务信息”按钮会显示自己发布的所有的业务信息,如果想要添加新的业务信息,点击“添加”按钮根据提示输入业务信息,点击“提交”后在业务信息界面就可以显示了,如果信息有错,点击“编辑”按钮可以对业务信息进行更新维护,也可以直接删除某一业务信息,同时设有查看管理评论的功能,对用户提交的评论进行管控。界面如下图
业务办理管理界面
管理员点击“业务办理”会显示出所有的业务办理信息,支持输入业务名称或者业务编号对业务办理信息进行查询,可以选择某一条业务办理信息,点击“删除”进行删除,也可以点击后面的“结果”按钮对业务办理的结果信息进行更新维护。界面如下图
办理结果管理界面
点击“办理结果”按钮会显示自己发布的所有的办理结果,支持输入用户账户或者用户姓名对办理结果信息进行查询,可以直接删除某一办理结果,界面如下图
资源管理界面
管理员点击“资源管理”菜单能够对其下子菜单资讯列表和资讯的分类进行增删改查。界面如下图
/**
* 登录相关
*/
@RequestMapping("users")
@RestController
public class UsersController {
@Autowired
private UsersService usersService;
@Autowired
private TokenService tokenService;
/**
* 登录
*/
@IgnoreAuth
@PostMapping(value = "/login")
public R login(String username, String password, String captcha, HttpServletRequest request) {
UsersEntity user = usersService.selectOne(new EntityWrapper<UsersEntity>().eq("username", username));
if(user==null || !user.getPassword().equals(password)) {
return R.error("账号或密码不正确");
}
String token = tokenService.generateToken(user.getId(),username, "users", user.getRole());
R r = R.ok();
r.put("token", token);
r.put("role",user.getRole());
r.put("userId",user.getId());
return r;
}
/**
* 注册
*/
@IgnoreAuth
@PostMapping(value = "/register")
public R register(@RequestBody UsersEntity user){
// ValidatorUtils.validateEntity(user);
if(usersService.selectOne(new EntityWrapper<UsersEntity>().eq("username", user.getUsername())) !=null) {
return R.error("用户已存在");
}
usersService.insert(user);
return R.ok();
}
/**
* 退出
*/
@GetMapping(value = "logout")
public R logout(HttpServletRequest request) {
request.getSession().invalidate();
return R.ok("退出成功");
}
/**
* 修改密码
*/
@GetMapping(value = "/updatePassword")
public R updatePassword(String oldPassword, String newPassword, HttpServletRequest request) {
UsersEntity users = usersService.selectById((Integer)request.getSession().getAttribute("userId"));
if(newPassword == null){
return R.error("新密码不能为空") ;
}
if(!oldPassword.equals(users.getPassword())){
return R.error("原密码输入错误");
}
if(newPassword.equals(users.getPassword())){
return R.error("新密码不能和原密码一致") ;
}
users.setPassword(newPassword);
usersService.updateById(users);
return R.ok();
}
/**
* 密码重置
*/
@IgnoreAuth
@RequestMapping(value = "/resetPass")
public R resetPass(String username, HttpServletRequest request){
UsersEntity user = usersService.selectOne(new EntityWrapper<UsersEntity>().eq("username", username));
if(user==null) {
return R.error("账号不存在");
}
user.setPassword("123456");
usersService.update(user,null);
return R.ok("密码已重置为:123456");
}
/**
* 列表
*/
@RequestMapping("/page")
public R page(@RequestParam Map<String, Object> params,UsersEntity user){
EntityWrapper<UsersEntity> ew = new EntityWrapper<UsersEntity>();
PageUtils page = usersService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.allLike(ew, user), params), params));
return R.ok().put("data", page);
}
/**
* 列表
*/
@RequestMapping("/list")
public R list( UsersEntity user){
EntityWrapper<UsersEntity> ew = new EntityWrapper<UsersEntity>();
ew.allEq(MPUtil.allEQMapPre( user, "user"));
return R.ok().put("data", usersService.selectListView(ew));
}
/**
* 信息
*/
@RequestMapping("/info/{id}")
public R info(@PathVariable("id") String id){
UsersEntity user = usersService.selectById(id);
return R.ok().put("data", user);
}
/**
* 获取用户的session用户信息
*/
@RequestMapping("/session")
public R getCurrUser(HttpServletRequest request){
Integer id = (Integer)request.getSession().getAttribute("userId");
UsersEntity user = usersService.selectById(id);
return R.ok().put("data", user);
}
/**
* 保存
*/
@PostMapping("/save")
public R save(@RequestBody UsersEntity user){
// ValidatorUtils.validateEntity(user);
if(usersService.selectOne(new EntityWrapper<UsersEntity>().eq("username", user.getUsername())) !=null) {
return R.error("用户已存在");
}
usersService.insert(user);
return R.ok();
}
/**
* 修改
*/
@RequestMapping("/update")
public R update(@RequestBody UsersEntity user){
// ValidatorUtils.validateEntity(user);
usersService.updateById(user);//全部更新
return R.ok();
}
/**
* 删除
*/
@RequestMapping("/delete")
public R delete(@RequestBody Long[] ids){
List<UsersEntity> user = usersService.selectList(null);
if(user.size() > 1){
usersService.deleteBatchIds(Arrays.asList(ids));
}else{
return R.error("管理员最少保留一个");
}
return R.ok();
}
}