,,Java实战之实现物流配送系统示例详解

,,Java实战之实现物流配送系统示例详解

这篇文章主要介绍了一个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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: