这篇文章主要介绍了一个Java 语言(一种计算机语言,尤用于创建网站)语言(一种计算机语言,尤用于创建网站)实战项目:通过java、SSM、JSP、mysql和雷迪斯实现一个物流配送系统。文中的示例代码非常详细,需要的朋友可以参考一下
目录
介绍效果图展示主要实现代码
介绍
系统分普通用户、企业、超级管理员等角色,除基础脚手架外,实现的功能有:
超级管理员:系统管理、用户管理、企业用户管理、普通用户管理、货物类型管理、车辆管理、公告管理、使用帮助等。
普通用户:注册登录、个人信息管理(个人资料、密码修改、充值、订单管理等)、货物浏览、公告查看、下单等。
企业用户:注册登录、修改密码、充值、订单管理、货物管理、车辆管理、安排车辆等。
运行环境:windows/Linux均可、jdk1.8、mysql5.7、redis3.0、idea/eclipse均可。
特色功能:系统支持支付宝沙箱支付。
效果图展示
主要实现代码
后台角色管理控制器:
/**
* 后台角色管理控制器
*
*/
@RequestMapping('/admin/role ')
@控制器
公共类角色控制器{
私有记录器日志=记录器工厂。获取记录器(角色控制器。类);
@自动连线
私有菜单服务
@自动连线
私有OperaterLogService OperaterLogService;
@自动连线
私有角色服务角色服务;
/**
* 分页搜索角色列表
* @param模型
* @param角色
* @param pageBean
* @返回
*/
@RequestMapping(value='/list ')
公共字符串列表(模型模型,角色角色,页面豆角色页面Bean){
model.addAttribute('title ','角色列表');
model.addAttribute('name ',role。getname());
model.addAttribute('pageBean ',roleService.findByName(role,page bean));
返回"管理员/角色/列表";
}
/**
* 角色添加页面
* @param模型
* @返回
*/
@RequestMapping(value='/add ',method=RequestMethod .获取)
公共字符串添加(模型模型){
列表菜单查找全部=菜单服务。find all();
model.addAttribute('roleTypes ',userroletypeenum。values());
model.addAttribute('topMenus ',菜单实用程序。gettop菜单(查找全部));
模型。添加属性(“第二菜单”,菜单实用程序)。getsecondmenus(find all));
model.addAttribute('thirdMenus ',menu util。getthird menus(查找全部));
返回"管理/角色/添加";
}
/**
* 角色添加表单提交处理
* @param角色
* @返回
*/
@RequestMapping(value='/add ',method=RequestMethod .帖子)
@ResponseBody
公共结果布尔添加(角色role){
角色top 1 byroletype=roleservice。查找前1名byroletype androletypenot(角色。getroletype());
if (top1ByRoleType!=null){
返回结果.错误(代码消息. ADMIN _ ROLE _ exit);
}
//用统一验证实体方法验证是否合法
CodeMsg validate=validateentityutil。验证(角色);
if(validate.getCode()!=CodeMsg .SUCCESS.getCode()){
返回结果.错误(验证);
}
如果(roleservice。保存(角色)==空){
返回结果.错误(代码消息。管理员_角色_添加_错误);
}
log.info('添加角色【'角色'】');
operaterLogService.add('添加角色【’的角色。getname()'】');
返回结果。成功(真);
}
/**
* 角色编辑页面
* @param id
* @param模型
* @返回
*/
@RequestMapping(value='/edit ',method=RequestMethod .获取)
公共字符串编辑(@RequestParam(name='id ',required=true)Long id,Model model){
列表菜单查找全部=菜单服务。find all();
model.addAttribute('topMenus ',菜单实用程序。gettop菜单(查找全部));
模型。添加属性(“第二菜单”,菜单实用程序)。getsecondmenus(find all));
model.addAttribute('thirdMenus ',menu util。getthird menus(查找全部));
角色role=roleservice。查找(id);
model.addAttribute('role ',role);
模型。添加属性(' authorities ',JSON数组。托吉森(角色。getauthorities()).toString());
model.addAttribute('roleTypes ',userroletypeenum。values());
返回"管理/角色/编辑";
}
/**
* 角色修改表单提交处理
* @param请求
* @param角色
* @返回
*/
@RequestMapping(value='/edit ',method=RequestMethod .帖子)
@ResponseBody
公共结果布尔编辑(角色角色){
//用统一验证实体方法验证是否合法
CodeMsg validate=validateentityutil。验证(角色);
if(validate.getCode()!=CodeMsg .SUCCESS.getCode()){
返回结果.错误(验证);
}
角色存在角色=角色服务。找(角色。getid());
if(existRole==null){
返回结果.错误(代码消息. ADMIN _ ROLE _ NO _ exit);
}
现有角色。设置名称(角色。getname());
现有角色。设置备注(角色。get remark());
现有角色。设置状态(角色。get status());
现有角色。设置权限(角色。getauthorities());
如果(roleservice。保存(现有角色)==空){
返回结果.错误(代码消息。管理_角色_编辑_错误);
}
log.info('编辑角色【'角色'】');
operaterLogService.add('编辑角色【’的角色。getname()'】');
返回结果。成功(真);
}
/**
* 删除角色
* @param请求
* @param id
* @返回
*/
@RequestMapping(value='delete ',method=RequestMethod .帖子)
@ResponseBody
公共结果布尔删除(@RequestParam(name='id ',required=true)Long id){
尝试{
角色服务。删除(id);
} catch(异常e) {
//TODO:处理异常
返回结果.错误(代码消息。管理_角色_删除_错误);
}
log.info('编辑角色ID【‘ID’】’);
operaterLogService.add('删除角色ID【‘ID’】’);
返回结果。成功(真);
}
}
系统控制器:
/**
* 系统控制器
*
*/
@RequestMapping('/system ')
@控制器
公共类系统控制器{
@自动连线
私有OperaterLogService OperaterLogService;
@自动连线
私有用户服务用户服务;
@自动连线
私有DatabaseBakService DatabaseBakService;
@自动连线
私有order authservice order authservice;
@自动连线
私有home userservice home userservice;
@自动连线
private expressmailoderservice expressmailoderservice;
私有记录器日志=记录器工厂。获取记录器(系统控制器。类);
/**
* 登录页面
* @param模型
* @返回
*/
@RequestMapping(value='/login ',method=RequestMethod .获取)
公共字符串登录(模型模型){
返回"管理员/系统/登录";
}
/**
* 用户登录提交表单处理方法
* @param请求
* @param用户
* @param cpacha
* @返回
*/
@RequestMapping(value='/login ',method=RequestMethod .帖子)
@ResponseBody
公共结果布尔登录(HttpServletRequest请求,用户用户,字符串cpacha
if(user==null){
返回结果.错误(代码消息. DATA _ ERROR);
}
if (user.getUsername()==null || ' ' .等于(用户。获取用户名()){
返回结果.错误(代码消息. ADMIN _用户名_空);
}
if (user.getPassword()==null || ' ' .等于(用户。get password()){
返回结果.错误(代码消息. ADMIN _密码_空);
}
//表示实体信息合法,开始验证验证码是否为空
if(字符串实用程序。isempty(cpacha)){
返回结果.错误(代码消息. CPA cha _ EMPTY);
}
//说明验证码不为空,从会议里获取验证码
对象属性=请求。getsession().get属性(“admin _ log in”);
if(attribute==null){
返回结果.错误(代码消息SESSION _ EXPIRED);
}
//表示会议未失效,进一步判断用户填写的验证码是否正确
如果(!cpacha。equalsignorecase(属性。tostring()){
返回结果.错误(代码消息. CPA cha _ ERROR);
}
//表示验证码正确,开始查询数据库,检验密码是否正确
通过用户名=用户服务查找用户。按用户名查找(用户。get username());
//判断是否为空
if(findbysusername==null){
返回结果.错误(代码消息. ADMIN _用户名_不存在);
}
//表示用户存在,进一步对比密码是否正确
如果(!findByUsername.getPassword().等于(用户。get password()){
返回结果.错误(代码消息. ADMIN _密码_错误);
}
//表示密码正确,接下来判断用户状态是否可用
if(findbysusername。获取状态()==用户.ADMIN_USER_STATUS_UNABLE){
返回结果.错误(代码消息. ADMIN _ USER _ UNABLE);
}
//检查用户所属角色状态是否可用
if(findbysusername。getrole()==null | | findbysusername。getrole().getStatus()==角色ADMIN_ROLE_STATUS_UNABLE){
返回结果.错误(代码消息. ADMIN _ USER _ ROLE _ UNABLE);
}
//检查用户所属角色的权限是否存在
if(findbysusername。getrole().getAuthorities()==null | |按用户名查找。getrole().getAuthorities().size()==0){
返回结果.错误(代码消息. ADMIN _ USER _ ROLE _ AUTHORITES _ EMPTY);
}
//检查一切符合,可以登录,将用户信息存放至会议
request.getSession().setAttribute(SessionConstant .SESSION_USER_LOGIN_KEY,findbysusername);
//销毁会议中的验证码
request.getSession().setAttribute('admin_login ',null);
//将登陆记录写入日志库
operaterLogService.add('用户【‘用户。【获取用户名()’】于【string util。getformatterdate(new Date(),' yyyy-MM-dd HH:mm:ss ')'】登录系统!');
log.info('用户成功登录,user=' findbysusername);
返回结果。成功(真);
}
/**
* 登录成功后的系统主页
* @param模型
* @返回
*/
@RequestMapping(value='/index ')
公共字符串索引(模型模型){
模型。添加属性(“操作员日志”,operaterlogservice)。findlastelog(10));
BigDecimal home user count=new BigDecimal(home user service。total());
BigDecimal用户计数=new BigDecimal(userservice。total());
BigDecimal home user count adduser count=home user count。add(用户计数);
模型。添加属性(“分支用户”,用户服务)。inquiryoutletsunderthecourier());
模型。添加属性(' orderCountAndMonthByNowYearList),expressmailorderservice。ordercountandmonthbynowyear());
model.addAttribute('userTotal ',homeUserCountAddUserCount);
模型。添加属性('操作员日志总数',operaterlogservice。total());
模型。添加属性(' databasebackuptal ',databasebaservice)。total());
模型。添加属性(“在线用户总数”,会话监听程序)。在线用户数);
返回"管理/系统/索引";
}
/**
* 注销登录
* @返回
*/
@RequestMapping(value='/logout ')
公共字符串注销(){
用户登录的用户=会话实用程序。getlogined用户();
if(loginedUser!=null){
会话实用程序。set(会话常数.SESSION_USER_LOGIN_KEY,null);
}
返回"重定向:登录";
}
/**
* 无权限提示页面
* @返回
*/
@请求映射(value='/no _ right ')
公共字符串noRight(){
返回”管理员/系统/无权限”;
}
/**
* 修改用户个人信息
* @返回
*/
@请求映射(value='/update _ userinfo ',method=RequestMethod .获取)
公共字符串updateUserInfo(){
返回”管理/系统/更新_用户信息”;
}
/**
* 修改个人信息保存
* @param用户
* @返回
*/
@请求映射(value='/update _ userinfo ',method=RequestMethod .帖子)
公共字符串updateUserInfo(用户user){
用户登录的用户=会话实用程序。getlogined用户();
登录用户。设置手机(用户。get mobile());
登录用户。setheadpic(用户。getheadpic());
//首先保存到数据库
用户服务。保存(登录用户);
//更新会议里的值
会话实用程序。set(会话常数.SESSION_USER_LOGIN_KEY,登录用户);
返回”重定向:update _ userinfo”;
}
/**
* 修改密码页面
* @返回
*/
@ request mapping(value='/update _ pwd ',method=RequestMethod .获取)
公共字符串updatePwd(){
返回”管理/系统/更新_密码”;
}
/**
* 修改密码表单提交
* @param oldPwd
* @param newPwd
* @返回
*/
@ request mapping(value='/update _ pwd ',method=RequestMethod .帖子)
@ResponseBody
公共结果布尔更新pwd(@ request param(name=' old pwd ',required=true)字符串old pwd
@RequestParam(name='newPwd ',required=true)String newPwd
){
用户登录的用户=会话实用程序。getlogined用户();
如果(!loginedUser.getPassword().等于(oldPwd)){
返回结果.错误(代码消息。管理员_用户_更新_ PWD _错误);
}
if(字符串实用程序。isempty(新密码)){
返回结果.错误(代码消息. ADMIN _ USER _ UPDATE _ PWD _ EMPTY);
}
登录用户。设置密码(新密码);
//保存数据库
用户保存=用户服务。保存(登录用户);
//更新会议
会话实用程序。set(会话常数.会话_用户_登录_密钥,保存);
返回结果。成功(真);
}
/**
* 日志管理列表
* @param模型
* @ param operaterLog
* @param pageBean
* @返回
*/
@请求映射(value='/operator _ log _ list ')
公共字符串operatorLogList(模型模型,操作员日志操作员日志,页面Bean操作员日志页面bean){
model.addAttribute('pageBean ',operaterlogservice。findlist(操作员日志,页面bean));
model.addAttribute('operator ',操作员日志。get运算符());
model.addAttribute('title ','日志列表');
返回”管理员/系统/操作员_日志_列表”;
}
/**
* 删除操作日志,可删除多个
* @ param ids
* @返回
*/
@ request mapping(value='/delete _ operator _ log ',method=RequestMethod .帖子)
@ResponseBody
公共结果布尔删除(字符串本能冲动
如果(!StringUtils.isEmpty(ids)){
String[] splitIds=ids.split(',');
对于(字符串id:拆分id){
operaterlogservice。删除(长。(id)的值);
}
}
返回结果。成功(真);
}
/**
* 清空整个日志
* @返回
*/
@请求映射(value='/delete _ all _ operator _ log),方法=RequestMethod .帖子)
@ResponseBody
公共结果布尔deleteAll(){
operaterlogservice。delete all();
返回结果。成功(真);
}
}
后台管理员管理控制器:
/**
* 后台管理员管理控制器
*
*/
@RequestMapping('/admin/user ')
@控制器
公共类用户控制器{
@自动连线
私人用户服务用户服务;
@自动连线
私有角色服务角色服务;
@自动连线
私有OperaterLogService OperaterLogService;
/**
* 管理员列表页面
* @param模型
* @param用户
* @param pageBean
* @返回
*/
@RequestMapping(value='/list ')
公共字符串列表(模型模型,用户用户,页面豆用户页面Bean){
model.addAttribute('title ','管理员列表');
model.addAttribute('username ',用户。get username());
model.addAttribute('pageBean ',userService.findList(pageBean,user.getUsername(),UserRoleTypeEnum).ADMIN));
返回"管理员/用户/列表";
}
/**
* 新增管理员页面
* @param模型
* @返回
*/
@RequestMapping(value='/add ',method=RequestMethod .获取)
公共字符串添加(模型模型){
model.addAttribute('roles ',roleservice。findallbyroletype(userroletypeanum .ADMIN));
返回"管理员/用户/添加";
}
/**
* 管理员添加表单提交处理
* @param用户
* @返回
*/
@RequestMapping(value='/add ',method=RequestMethod .帖子)
@ResponseBody
公共结果布尔添加(用户用户){
//用统一验证实体方法验证是否合法
CodeMsg validate=validateentityutil。验证(用户);
if(validate.getCode()!=CodeMsg .SUCCESS.getCode()){
返回结果.错误(验证);
}
如果(用户。getrole()==null | |用户。getrole().getId()==null){
返回结果.错误(代码消息. ADMIN _用户_角色_空);
}
//判断管理员名是否存在
if(userservice。isexist用户名(用户。获取用户名(),0L)){
返回结果.错误(代码消息. ADMIN _用户名_存在);
}
用户。设置用户类型(UserRoleTypeEnum .ADMIN);
//到这说明一切符合条件,进行数据库新增
if(userservice。保存(用户)==空){
返回结果.错误(代码消息. ADMIN _ USE _ ADD _ ERROR);
}
operaterLogService.add('添加管理员,管理员名:'用户。get username());
返回结果。成功(真);
}
/**
* 管理员编辑页面
* @param模型
* @返回
*/
@RequestMapping(value='/edit ',method=RequestMethod .获取)
公共字符串编辑(模型模型,@RequestParam(name='id ',required=true)Long id){
model.addAttribute('roles ',roleservice。findallbyroletype(userroletypeanum .ADMIN));
model.addAttribute('user ',userservice。find(id));
返回"管理员/用户/编辑";
}
/**
* 编辑管理员信息表单提交处理
* @param用户
* @返回
*/
@RequestMapping(value='/edit ',method=RequestMethod .帖子)
@ResponseBody
公共结果布尔编辑(用户用户){
//用统一验证实体方法验证是否合法
CodeMsg validate=validateentityutil。验证(用户);
if(validate.getCode()!=CodeMsg .SUCCESS.getCode()){
返回结果.错误(验证);
}
如果(用户。getrole()==null | |用户。getrole().getId()==null){
返回结果.错误(代码消息. ADMIN _用户_角色_空);
}
如果(用户。getid()==null | |用户。getid().longValue()=0){
返回结果.错误(代码消息. ADMIN _ USE _ NO _ exit);
}
if(userservice。isexist用户名(用户。getusername()、user。getid()){
返回结果.错误(代码消息. ADMIN _用户名_存在);
}
//到这说明一切符合条件,进行数据库保存
用户查找byid=用户服务。查找(用户。getid());
//讲提交的管理员信息指定字段复制到已存在的用户对象中,该方法会覆盖新字段内容
BeanUtils.copyProperties(user,findById,' Id ',' createTime ',' updateTime ',' userType ');
if(userservice。保存(查找byid)==null){
返回结果.错误(代码消息. ADMIN _ USE _ EDIT _ ERROR);
}
operaterLogService.add('编辑管理员,管理员名:'用户。get username());
返回结果。成功(真);
}
/**
* 删除管理员
* @param id
* @返回
*/
@RequestMapping(value='/delete ',method=RequestMethod .帖子)
@ResponseBody
公共结果布尔删除(@RequestParam(name='id ',required=true)Long id){
尝试{
用户服务。删除(id);
} catch(异常e) {
返回结果.错误(代码消息. ADMIN _ USE _ DELETE _ ERROR);
}
operaterLogService.add('删除管理员,管理员ID:' ID);
返回结果。成功(真);
}
}
以上就是Java 语言(一种计算机语言,尤用于创建网站)语言(一种计算机语言,尤用于创建网站)实战之实现物流配送系统示例详解的详细内容,更多关于Java 语言(一种计算机语言,尤用于创建网站)语言(一种计算机语言,尤用于创建网站)物流配送系统的资料请关注我们其它相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。