0
点赞
收藏
分享

微信扫一扫

快递物流管理系统(java+SpringBoot+shiro+Bootstrap+ssm+maven+mysql)

梅梅的时光 2022-04-19 阅读 59

项目技术:

使用 spring boot,基于 ssm 框架和 shiro 安全框架,开发的一个物流管理系统。前端使用的是 H-ui 开源框架,运用了 Bootstrap table、zTree、PageHelper、jQuery validate 等插件。

特点

1. 基于 spring boot、maven 构建;
2. 运用了 spring、spring mvc、mybatis 和 shiro 框架;
3. 采用了 RBAC 的思路设计系统,采用了 Mysql 作为数据库支持;
4. 不同的角色登录系统会有不同的菜单列表,且会根据角色返回特定的数据;
5. 拥有基础数据管理模块,管理员管理模块,角色管理模块,权限管理模块,客户管理模块,订单管理模块和业务处理模块;

6. 能够实现完整的业务流程:添加客户、添加订单、订单处理、财务报表。

细节介绍

1. 业务员访问时,只能访问客户管理、订单管理、业务处理菜单,且只有添加的权力,没有修改和删除的权力;
2. 业务员添加订单时,只能基于自己拥有的客户添加;
3. 业务经理拥有客户管理、订单管理、业务处理的所有功能,可以查看所有业务员的客户和订单;
4. 总经理角色可以查看所有数据,但是没有修改的权力;
5. 仓管员只有业务处理中,测量物品信息和入库的功能,其他数据不可修改;

6. 财务可以查看审核订单价格详情并导出为 excel 表格。

运行环境:

1. JDK 1.8;
2. Maven;
3. Tomcat 8;
4. Mysql 8.0/Mysql 5.7均可。
 

使用前修改 application.properties 里的数据库的连接信息即可。可以通过 dataBase 目录下的 sql 文件创建所需要的表,数据库名字为 logistic_system。

测试账号

> username:admin

> password:123456

 

 

 

 

后台管理员管理控制器:


 
  1. /**

  2. * 后台管理员管理控制器

  3. * @author yy

  4. *

  5. */

  6. @RequestMapping("/admin/user")

  7. @Controller

  8. public class UserController {

  9. @Autowired

  10. private UserService userService;

  11. @Autowired

  12. private RoleService roleService;

  13. @Autowired

  14. private OperaterLogService operaterLogService;

  15. /**

  16. * 管理员列表页面

  17. * @param model

  18. * @param user

  19. * @param pageBean

  20. * @return

  21. */

  22. @RequestMapping(value="/list")

  23. public String list(Model model,User user,PageBean<User> pageBean){

  24. model.addAttribute( "title", "管理员列表");

  25. model.addAttribute( "username", user.getUsername());

  26. model.addAttribute( "pageBean", userService.findList(pageBean,user.getUsername(), UserRoleTypeEnum.ADMIN));

  27. return "admin/user/list";

  28. }

  29. /**

  30. * 新增管理员页面

  31. * @param model

  32. * @return

  33. */

  34. @RequestMapping(value="/add",method=RequestMethod.GET)

  35. public String add(Model model){

  36. model.addAttribute( "roles", roleService.findAllByRoleType(UserRoleTypeEnum.ADMIN));

  37. return "admin/user/add";

  38. }

  39. /**

  40. * 管理员添加表单提交处理

  41. * @param user

  42. * @return

  43. */

  44. @RequestMapping(value="/add",method=RequestMethod.POST)

  45. @ResponseBody

  46. public Result< Boolean> add(User user){

  47. //用统一验证实体方法验证是否合法

  48. CodeMsg validate = ValidateEntityUtil.validate(user);

  49. if(validate.getCode() != CodeMsg.SUCCESS.getCode()){

  50. return Result.error(validate);

  51. }

  52. if(user.getRole() == null || user.getRole().getId() == null){

  53. return Result.error(CodeMsg.ADMIN_USER_ROLE_EMPTY);

  54. }

  55. //判断管理员名是否存在

  56. if(userService.isExistUsername(user.getUsername(), 0L)){

  57. return Result.error(CodeMsg.ADMIN_USERNAME_EXIST);

  58. }

  59. user.setUserType(UserRoleTypeEnum.ADMIN);

  60. //到这说明一切符合条件,进行数据库新增

  61. if(userService.save(user) == null){

  62. return Result.error(CodeMsg.ADMIN_USE_ADD_ERROR);

  63. }

  64. operaterLogService.add( "添加管理员,管理员名:" + user.getUsername());

  65. return Result.success( true);

  66. }

  67. /**

  68. * 管理员编辑页面

  69. * @param model

  70. * @return

  71. */

  72. @RequestMapping(value="/edit",method=RequestMethod.GET)

  73. public String edit(Model model, @RequestParam(name="id",required=true) Long id){

  74. model.addAttribute( "roles", roleService.findAllByRoleType(UserRoleTypeEnum.ADMIN));

  75. model.addAttribute( "user", userService.find(id));

  76. return "admin/user/edit";

  77. }

  78. /**

  79. * 编辑管理员信息表单提交处理

  80. * @param user

  81. * @return

  82. */

  83. @RequestMapping(value="/edit",method=RequestMethod.POST)

  84. @ResponseBody

  85. public Result< Boolean> edit(User user){

  86. //用统一验证实体方法验证是否合法

  87. CodeMsg validate = ValidateEntityUtil.validate(user);

  88. if(validate.getCode() != CodeMsg.SUCCESS.getCode()){

  89. return Result.error(validate);

  90. }

  91. if(user.getRole() == null || user.getRole().getId() == null){

  92. return Result.error(CodeMsg.ADMIN_USER_ROLE_EMPTY);

  93. }

  94. if(user.getId() == null || user.getId().longValue() <= 0){

  95. return Result.error(CodeMsg.ADMIN_USE_NO_EXIST);

  96. }

  97. if(userService.isExistUsername(user.getUsername(), user.getId())){

  98. return Result.error(CodeMsg.ADMIN_USERNAME_EXIST);

  99. }

  100. //到这说明一切符合条件,进行数据库保存

  101. User findById = userService.find(user.getId());

  102. //讲提交的管理员信息指定字段复制到已存在的user对象中,该方法会覆盖新字段内容

  103. BeanUtils.copyProperties(user, findById, "id", "createTime", "updateTime", "userType");

  104. if(userService.save(findById) == null){

  105. return Result.error(CodeMsg.ADMIN_USE_EDIT_ERROR);

  106. }

  107. operaterLogService.add( "编辑管理员,管理员名:" + user.getUsername());

  108. return Result.success( true);

  109. }

  110. /**

  111. * 删除管理员

  112. * @param id

  113. * @return

  114. */

  115. @RequestMapping(value="/delete",method=RequestMethod.POST)

  116. @ResponseBody

  117. public Result< Boolean> delete( @RequestParam(name="id",required=true) Long id){

  118. try {

  119. userService.delete(id);

  120. } catch (Exception e) {

  121. return Result.error(CodeMsg.ADMIN_USE_DELETE_ERROR);

  122. }

  123. operaterLogService.add( "删除管理员,管理员ID:" + id);

  124. return Result.success( true);

  125. }

  126. }

后台角色管理控制器 :


 
  1. /**

  2. * 后台角色管理控制器

  3. * @author yy

  4. *

  5. */

  6. @RequestMapping("/admin/role")

  7. @Controller

  8. public class RoleController {

  9. private Logger log = LoggerFactory.getLogger(RoleController. class);

  10. @Autowired

  11. private MenuService menuService;

  12. @Autowired

  13. private OperaterLogService operaterLogService;

  14. @Autowired

  15. private RoleService roleService;

  16. /**

  17. * 分页搜索角色列表

  18. * @param model

  19. * @param role

  20. * @param pageBean

  21. * @return

  22. */

  23. @RequestMapping(value="/list")

  24. public String list(Model model,Role role,PageBean<Role> pageBean){

  25. model.addAttribute( "title", "角色列表");

  26. model.addAttribute( "name", role.getName());

  27. model.addAttribute( "pageBean", roleService.findByName(role, pageBean));

  28. return "admin/role/list";

  29. }

  30. /**

  31. * 角色添加页面

  32. * @param model

  33. * @return

  34. */

  35. @RequestMapping(value="/add",method=RequestMethod.GET)

  36. public String add(Model model){

  37. List<Menu> findAll = menuService.findAll();

  38. model.addAttribute( "roleTypes", UserRoleTypeEnum.values());

  39. model.addAttribute( "topMenus",MenuUtil.getTopMenus(findAll));

  40. model.addAttribute( "secondMenus",MenuUtil.getSecondMenus(findAll));

  41. model.addAttribute( "thirdMenus",MenuUtil.getThirdMenus(findAll));

  42. return "admin/role/add";

  43. }

  44. /**

  45. * 角色添加表单提交处理

  46. * @param role

  47. * @return

  48. */

  49. @RequestMapping(value="/add",method=RequestMethod.POST)

  50. @ResponseBody

  51. public Result< Boolean> add(Role role){

  52. Role top1ByRoleType = roleService.findTop1ByRoleTypeAndRoleTypeNot(role.getRoleType());

  53. if (top1ByRoleType != null){

  54. return Result.error(CodeMsg.ADMIN_ROLE_EXIST);

  55. }

  56. //用统一验证实体方法验证是否合法

  57. CodeMsg validate = ValidateEntityUtil.validate(role);

  58. if(validate.getCode() != CodeMsg.SUCCESS.getCode()){

  59. return Result.error(validate);

  60. }

  61. if(roleService.save(role) == null){

  62. return Result.error(CodeMsg.ADMIN_ROLE_ADD_ERROR);

  63. }

  64. log.info( "添加角色【"+role+ "】");

  65. operaterLogService.add( "添加角色【"+role.getName()+ "】");

  66. return Result.success( true);

  67. }

  68. /**

  69. * 角色编辑页面

  70. * @param id

  71. * @param model

  72. * @return

  73. */

  74. @RequestMapping(value="/edit",method=RequestMethod.GET)

  75. public String edit( @RequestParam(name="id",required=true) Long id,Model model){

  76. List<Menu> findAll = menuService.findAll();

  77. model.addAttribute( "topMenus",MenuUtil.getTopMenus(findAll));

  78. model.addAttribute( "secondMenus",MenuUtil.getSecondMenus(findAll));

  79. model.addAttribute( "thirdMenus",MenuUtil.getThirdMenus(findAll));

  80. Role role = roleService.find(id);

  81. model.addAttribute( "role", role);

  82. model.addAttribute( "authorities",JSONArray.toJSON(role.getAuthorities()).toString());

  83. model.addAttribute( "roleTypes", UserRoleTypeEnum.values());

  84. return "admin/role/edit";

  85. }

  86. /**

  87. * 角色修改表单提交处理

  88. * @param request

  89. * @param role

  90. * @return

  91. */

  92. @RequestMapping(value="/edit",method=RequestMethod.POST)

  93. @ResponseBody

  94. public Result< Boolean> edit(Role role){

  95. //用统一验证实体方法验证是否合法

  96. CodeMsg validate = ValidateEntityUtil.validate(role);

  97. if(validate.getCode() != CodeMsg.SUCCESS.getCode()){

  98. return Result.error(validate);

  99. }

  100. Role existRole = roleService.find(role.getId());

  101. if(existRole == null){

  102. return Result.error(CodeMsg.ADMIN_ROLE_NO_EXIST);

  103. }

  104. existRole.setName(role.getName());

  105. existRole.setRemark(role.getRemark());

  106. existRole.setStatus(role.getStatus());

  107. existRole.setAuthorities(role.getAuthorities());

  108. if(roleService.save(existRole) == null){

  109. return Result.error(CodeMsg.ADMIN_ROLE_EDIT_ERROR);

  110. }

  111. log.info( "编辑角色【"+role+ "】");

  112. operaterLogService.add( "编辑角色【"+role.getName()+ "】");

  113. return Result.success( true);

  114. }

  115. /**

  116. * 删除角色

  117. * @param request

  118. * @param id

  119. * @return

  120. */

  121. @RequestMapping(value="delete",method=RequestMethod.POST)

  122. @ResponseBody

  123. public Result< Boolean> delete( @RequestParam(name="id",required=true) Long id){

  124. try {

  125. roleService.delete(id);

  126. } catch (Exception e) {

  127. // TODO: handle exception

  128. return Result.error(CodeMsg.ADMIN_ROLE_DELETE_ERROR);

  129. }

  130. log.info( "编辑角色ID【"+id+ "】");

  131. operaterLogService.add( "删除角色ID【"+id+ "】");

  132. return Result.success( true);

  133. }

  134. }

记录控制层:


 
  1. @Controller

  2. @RequestMapping("/admin/processRecords")

  3. public class ProcessRecordsController {

  4. @Autowired

  5. private ProcessRecordsService processRecordsService;

  6. @Autowired

  7. private UserService userService;

  8. /**

  9. * 进入运输收货列表根据订单编号查询

  10. * @param pageBean

  11. * @param waybillNumber

  12. * @param model

  13. * @return

  14. */

  15. @RequestMapping("/list")

  16. public String list(PageBean<ProcessRecords> pageBean, String waybillNumber, Model model) {

  17. User loginedUser = SessionUtil.getLoginedUser();

  18. model.addAttribute( "title", "运输收货列表");

  19. model.addAttribute( "waybillNumber", waybillNumber);

  20. model.addAttribute( "UserRoleTypeEnum",loginedUser.getUserType().getCode());

  21. model.addAttribute( "pageBean", processRecordsService.findList(pageBean, waybillNumber));

  22. return "admin/process_records/list";

  23. }

  24. /**

  25. * 进入执行运输列表根据订单编号查询

  26. * @param pageBean

  27. * @param waybillNumber

  28. * @param model

  29. * @return

  30. */

  31. @RequestMapping("/receiveList")

  32. public String receiveList(PageBean<ProcessRecords> pageBean, String waybillNumber, Model model) {

  33. model.addAttribute( "title", "运输列表");

  34. model.addAttribute( "waybillNumber", waybillNumber);

  35. model.addAttribute( "users",userService.findByUserTypeNot());

  36. model.addAttribute( "pageBean", processRecordsService.findListByWaybillNumber(pageBean, waybillNumber));

  37. return "admin/process_records/receive_list";

  38. }

  39. /**

  40. * 网点拾取快递并添加流程记录

  41. * @param id

  42. * @return

  43. */

  44. @RequestMapping("/takeDeliveryOfGoods")

  45. @ResponseBody

  46. public Result< Boolean> takeDeliveryOfGoods( @RequestParam(name="id",required=true) Long id){

  47. if ( null == id){

  48. return Result.error(CodeMsg.ADMIN_EXPRESSMAILORDER1_RECEIVING_EDIT_ERROR);

  49. }

  50. ProcessRecords processRecords = processRecordsService.find(id);

  51. processRecords.setOperation(ProcessRecords.HAVE_HANDLED);

  52. //讲提交的管理员信息指定字段复制到已存在的user对象中,该方法会覆盖新字段内容

  53. ProcessRecords newProcessRecords = new ProcessRecords();

  54. BeanUtils.copyProperties(processRecords, newProcessRecords, "id", "createTime", "updateTime");

  55. newProcessRecords.setTravelPosition(ExpressMailOrderStatus.INTRANSIT);

  56. newProcessRecords.setId( null);

  57. newProcessRecords.setOperation(ProcessRecords.NO_OPERATIONS);

  58. ProcessRecords saveNew = processRecordsService.save(newProcessRecords);

  59. if ( null == saveNew){

  60. return Result.error(CodeMsg.ADMIN_EXPRESSMAILORDER1_RECEIVING_EDIT_ERROR);

  61. }

  62. ProcessRecords save = processRecordsService.save(processRecords);

  63. if ( null == save){

  64. return Result.error(CodeMsg.ADMIN_EXPRESSMAILORDER1_RECEIVING_EDIT_ERROR);

  65. }

  66. return Result.success( true);

  67. }

  68. /**

  69. * 设置快递继续运输完成

  70. * @param id

  71. * @param userId

  72. * @return

  73. */

  74. @RequestMapping("/transportation")

  75. @ResponseBody

  76. public Result< Boolean> transportation( @RequestParam(name="id",required=true) Long id,

  77. @RequestParam(name="userId",required=true) Long userId){

  78. if ( null == id){

  79. return Result.error(CodeMsg.ADMIN_EXPRESSMAILORDER_SENDTHECARGO_ADD_EDIT_ERROR);

  80. }

  81. if ( null == userId){

  82. return Result.error(CodeMsg.ADMIN_EXPRESSMAILORDER_USER_NULL);

  83. }

  84. Integer integer = processRecordsService.transportation(id,userId);

  85. if(integer == 1){

  86. return Result.error(CodeMsg.ADMIN_EXPRESSMAILORDER_SENDTHECARGO_ADD_EDIT_ERROR);

  87. }

  88. return Result.success( true);

  89. }

  90. /**

  91. * 指定快递员

  92. * @param id

  93. * @return

  94. */

  95. @RequestMapping("/delivery")

  96. @ResponseBody

  97. public Result< Boolean> delivery( @RequestParam(name="id",required=true) Long id){

  98. if ( null == id){

  99. return Result.error(CodeMsg.ADMIN_EXPRESSMAILORDER_SENDTHECARGO_ADD_EDIT_ERROR);

  100. }

  101. Integer integer = processRecordsService.delivery(id);

  102. if(integer == 1){

  103. return Result.error(CodeMsg.ADMIN_EXPRESSMAILORDER_SENDTHECARGO_ADD_EDIT_ERROR);

  104. }

  105. return Result.success( true);

  106. }

详情咨询作者Q2663633304

举报

相关推荐

0 条评论