• Java项目:零食超市商城系统(java+SSM+JSP+jQuery+Mysql)


    源码获取:俺的博客首页 "资源" 里下载!

    项目介绍

    本项目分为前后台,前台普通用户登录,后台管理员登录;

    用户角色包含以下功能:
    提交订单,支付页面(模拟的),查看个人订单详情,查看购物车,查看零食详情,注册用户,登录,首页等功能。

    管理员角色包含以下功能:
    员工管理,商品管理,添加商品,用户管理,管理员登录,订单管理,销售统计等功能。

    环境需要

    1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。
    2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA;
    3.tomcat环境:Tomcat 7.x,8.x,9.x版本均可
    4.硬件环境:windows 7/8/10 1G内存以上;或者 Mac OS; 
    5.数据库:MySql 5.7/8.0版本均可;
    6.是否Maven项目:是;

    技术栈

    1. 后端:Spring+SpringMVC+Mybatis
    2. 前端:JSP+CSS+JavaScript+jQuery

    使用说明

    1. 使用Navicat或者其它工具,在mysql中创建对应名称的数据库,并导入项目的sql文件;
    2. 使用IDEA/Eclipse/MyEclipse导入项目,Eclipse/MyEclipse导入时,若为maven项目请选择maven;
    若为maven项目,导入成功后请执行maven clean;maven install命令,然后运行;
    3. 将项目中jdbc.properties配置文件中的数据库配置改为自己的配置;
    4. 运行项目,前台地址:http://localhost:8080/snack/shop/index  注:tomcat中配置的路径必须为snack 
    后台地址:http://localhost:8080/snack/admin/login/adminLogin

     

     

     

    商城首页管理控制层:

    1. @Controller
    2. @RequestMapping("/shop/")
    3. public class ShopControll {
    4. @Autowired
    5. public shopService shopService=null;
    6. //主页
    7. @RequestMapping("index")
    8. public String gotoIndex(HttpServletRequest request){
    9. List<Snackinfo> HotSnackList = shopService.getHotSnack();
    10. List<Snackinfo> newSnackList = shopService.getNewSnack();
    11. request.setAttribute("HotSnackList",HotSnackList);
    12. request.setAttribute("newSnackList",newSnackList);
    13. System.out.println("00");
    14. return "user/index";
    15. }
    16. //登录
    17. @RequestMapping("userLoginGet")
    18. public String gotoUserLogin(){
    19. return "user/userLogin";
    20. }
    21. @RequestMapping("userLoginPost")
    22. public String gotoUserLogin(Userinfo userinfo,HttpServletRequest request){
    23. Userinfo exituser = shopService.userLogin(userinfo);
    24. if(exituser ==null){
    25. request.setAttribute("msg","用户名或密码错误");
    26. return "user/userLogin";
    27. }
    28. request.getSession().setAttribute("exituser", exituser);
    29. request.getSession().setAttribute("frontuser", exituser.getuUsername());
    30. request.getSession().setAttribute("frontuserId", exituser.getuId());
    31. request.getSession().setAttribute("money", exituser.getuMoney());
    32. return "redirect:index";
    33. }
    34. //退出登录
    35. @RequestMapping("userlogout")
    36. public String showlogin(HttpServletRequest request){
    37. HttpSession session = request.getSession();
    38. session.removeAttribute("frontuser");
    39. session.removeAttribute("frontuserId");
    40. return "redirect:userLoginGet";
    41. }
    42. //商品详情
    43. @RequestMapping("proDatail")
    44. public String gotoProDatail(HttpServletRequest request,Snackinfo snack){
    45. Snackinfo sck = shopService.selectById(snack);
    46. request.setAttribute("sck", sck);
    47. return "product/proDetail";
    48. }
    49. //查询订单
    50. @RequestMapping("selectOrderSnack")
    51. @ResponseBody
    52. public DataTables selectOrderSnack(String oId,int start,int length){
    53. Map<Object,Object> map=new HashMap<Object, Object>();
    54. map.put("oId", oId);
    55. map.put("pageStart",start);
    56. map.put("pageSize",length);
    57. PageHelp<DoSnack> pageHelp = shopService.selectOrderSnack(map);
    58. DataTables datatable=new DataTables();
    59. datatable.setData(pageHelp.getList());
    60. datatable.setRecordsFiltered(pageHelp.getRecord());
    61. datatable.setRecordsTotal(pageHelp.getRecord());
    62. return datatable;
    63. }
    64. //type页面
    65. @RequestMapping("puffingType")
    66. public String puffing(HttpServletRequest request,DoSnackType doSnackType){
    67. List<Snackinfo> TypeSnackList=shopService.selectPuffing(doSnackType.getType(),doSnackType.getSnackName());
    68. if(doSnackType.getType()==1){
    69. request.setAttribute("TypeSnackTitle","膨化类");
    70. }else if(doSnackType.getType()==2){
    71. request.setAttribute("TypeSnackTitle","肉制类");
    72. }else if(doSnackType.getType()==3){
    73. request.setAttribute("TypeSnackTitle","饮料类");
    74. }else if(doSnackType.getType()==4){
    75. request.setAttribute("TypeSnackTitle","其他");
    76. }else if(doSnackType.getType()==5){
    77. request.setAttribute("TypeSnackTitle","搜索结果");
    78. }else if(doSnackType.getType()==6){
    79. request.setAttribute("TypeSnackTitle","进口类");
    80. }
    81. request.setAttribute("TypeNum",doSnackType.getType());
    82. request.setAttribute("TypeSnackList",TypeSnackList);
    83. return "user/typePage";
    84. }
    85. }

    管理员登录管理控制层:

    1. @Controller
    2. @RequestMapping("/admin/login/")
    3. public class AdminLogin {
    4. @Autowired
    5. private adminLoginService adminLoginService;
    6. @Autowired
    7. private AccountMapper accountMapper;
    8. //登录login
    9. @RequestMapping("adminLogin")
    10. public String adminLogin(){
    11. System.out.println("存储过程相加:"+accountMapper.selectNum(4, 6));
    12. return "admin/adminLogin";
    13. }
    14. //登录
    15. @RequestMapping("adminGoLogin")
    16. public String adminGoLogin(HttpServletRequest request,Admin admin){
    17. List<Admin> adminSelect = adminLoginService.adminLogin(admin);
    18. if(adminSelect.size()==1){
    19. request.getSession().setAttribute("adminName", adminSelect.get(0).getAdUsername());
    20. request.getSession().setAttribute("adminId", adminSelect.get(0).getAdId());
    21. List<Permission> allPer = adminLoginService.selectAllPermission();
    22. List<Permission> userPer = adminLoginService.selectRolePermission(adminSelect.get(0).getRoleId());
    23. request.getSession().setAttribute("allPer", allPer);
    24. request.getSession().setAttribute("userPer", userPer);
    25. return "redirect:adminGoMain";
    26. }
    27. request.setAttribute("msg","用户名或密码错误");
    28. return "admin/adminLogin";
    29. }
    30. //登录Main
    31. @RequestMapping("adminGoMain")
    32. public String adminLogin(HttpServletRequest request){
    33. request.setAttribute("adminMenu",adminLoginService.selectAllAdminMenu());
    34. request.setAttribute("adminMenuChild",adminLoginService.selectAllAdminMenuChild());
    35. return "admin/adminMain";
    36. }
    37. //退出
    38. @RequestMapping("adminMainToLoginOut")
    39. @ResponseBody
    40. public String adminMainToLoginOut(HttpServletRequest request){
    41. request.getSession().removeAttribute("adminName");
    42. return ResponseUtil.successToClient();
    43. }
    44. }

    订单管理控制层:

    1. @Controller
    2. @RequestMapping("/admin/order/")
    3. public class AdminOrderControll {
    4. @Autowired
    5. private adminOrderService adminOrderService;
    6. @Autowired
    7. private userService userService;
    8. @RequestMapping("mainToAdminOrder")
    9. public String mainToAdminOrder(){
    10. return "admin/order/adminOrder";
    11. }
    12. //订单
    13. @RequestMapping("adminOrderLimit")
    14. @ResponseBody
    15. public DataTables adminOrderLimit(int start,int length,
    16. String oId,String oTimeStart,String oTimeEnd,String adUserName){
    17. Map<Object,Object> map=new HashMap<Object, Object>();
    18. map.put("pageStart",start);
    19. map.put("pageSize",length);
    20. map.put("oId",oId);
    21. map.put("oTimeStart",oTimeStart);
    22. map.put("oTimeEnd",oTimeEnd);
    23. map.put("adUserName",adUserName);
    24. PageHelp<DoAdminOrder> pageHelp= adminOrderService.selectAdminOrderLimit(map);
    25. DataTables datatable=new DataTables();
    26. datatable.setData(pageHelp.getList());
    27. datatable.setRecordsFiltered(pageHelp.getRecord());
    28. datatable.setRecordsTotal(pageHelp.getRecord());
    29. return datatable;
    30. }
    31. //删除订单
    32. @RequestMapping("deleteAdminOrder")
    33. @ResponseBody
    34. public String deleteAdminOrder(String oId){
    35. return ResponseUtil.successToClient(adminOrderService.deleteAdminOrder(oId));
    36. }
    37. //update加载订单
    38. @RequestMapping("updateSelectAdminOrder")
    39. @ResponseBody
    40. public String updateSelectAdminOrder(int rId){
    41. return ResponseUtil.successToClient(adminOrderService.updateSelectAdminOrder(rId));
    42. }
    43. //update订单
    44. @RequestMapping("updateAdminOrder")
    45. @ResponseBody
    46. public String updateAdminOrder(Receiptinfo receiptinfo){
    47. return ResponseUtil.successToClient(adminOrderService.updateAdminOrder(receiptinfo));
    48. }
    49. //updateOrderDetial加载订单
    50. @RequestMapping("updateSelectAdminOrderDetial")
    51. @ResponseBody
    52. public String updateSelectAdminOrderDetial(int dId){
    53. return ResponseUtil.successToClient(adminOrderService.updateSelectAdminOrderDetial(dId));
    54. }
    55. //updateOrderDetial订单
    56. @RequestMapping("updateOrderdetail")
    57. @ResponseBody
    58. public String updateOrderdetail(Orderdetail orderdetail){
    59. return ResponseUtil.successToClient(adminOrderService.updateOrderdetail(orderdetail));
    60. }
    61. //删除OrderDetial
    62. @RequestMapping("deleteOrderdetail")
    63. @ResponseBody
    64. public String deleteOrderdetail(int dId,String oId){
    65. List<Orderdetail> orderdetailList = adminOrderService.selectOrderdetailByoId(oId);
    66. if(orderdetailList.size()>=2){
    67. adminOrderService.deleteOrderdetailBydId(dId);
    68. return ResponseUtil.successToClient(1);
    69. }else{
    70. adminOrderService.deleteAdminOrder(oId);
    71. return ResponseUtil.successToClient(2);
    72. }
    73. }
    74. //导出订单详情
    75. @RequestMapping("outExcelOrder")
    76. @ResponseBody
    77. public void outExcelOrder(HttpServletResponse response,String oId){
    78. SXSSFWorkbook workbook = new SXSSFWorkbook();
    79. reportSheet(workbook,oId);
    80. outputExcel(response, workbook, "订单详情");
    81. }
    82. private void reportSheet(SXSSFWorkbook workbook,String oId) {
    83. List<DoExcelOrder> outExcelOrderDetail = adminOrderService.outExcelOrderDetail(oId);
    84. for (int i = 0; i < outExcelOrderDetail.size(); i++) {
    85. if(i!=0){
    86. outExcelOrderDetail.get(i).setOId("");
    87. outExcelOrderDetail.get(i).setOName("");
    88. outExcelOrderDetail.get(i).setOPhone("");
    89. outExcelOrderDetail.get(i).setOAddress("");
    90. }
    91. outExcelOrderDetail.get(i).setMoney(outExcelOrderDetail.get(i).getMoney()+"元");
    92. }
    93. ExcelUtil2 excelUtil=new ExcelUtil2();
    94. List<JSONObject> columns = new ArrayList<>();
    95. columns.add(excelUtil.defaultGetColumn("订单号", "oId", 15 * 256, false, false));
    96. columns.add(excelUtil.defaultGetColumn("收货人", "oName", 15 * 256, false, false));
    97. columns.add(excelUtil.defaultGetColumn("电话", "oPhone", 15 * 256, false, false));
    98. columns.add(excelUtil.defaultGetColumn("地址", "oAddress", 26 * 256, false, false));
    99. columns.add(excelUtil.defaultGetColumn("商品名", "sName", 15 * 256, false, false));
    100. columns.add(excelUtil.defaultGetColumn("数量", "num", 12 * 256, false, false));
    101. columns.add(excelUtil.defaultGetColumn("单价", "money", 12 * 256, false, false));
    102. excelUtil.createSheet(workbook, outExcelOrderDetail, columns, "订单详情");
    103. }
    104. private void outputExcel(HttpServletResponse response, SXSSFWorkbook workbook, String excelName) {
    105. response.setContentType("application/vnd.ms-excel");
    106. try {
    107. // 进行转码,使其支持中文文件名
    108. response.setHeader("content-disposition", "attachment;filename=" + new String(excelName.getBytes("GB2312"), "ISO-8859-1") + ".xlsx");
    109. workbook.write(response.getOutputStream());
    110. } catch (IOException e) {
    111. e.printStackTrace();
    112. }
    113. }
    114. //请确认收货
    115. @RequestMapping("userOrderConfirm")
    116. @ResponseBody
    117. public String userOrderConfirm(HttpServletRequest request,int id,int typeNum){
    118. int eId;
    119. if(typeNum==0){
    120. eId = (int)request.getSession().getAttribute("adminId");
    121. }else{
    122. eId=0;
    123. }
    124. return ResponseUtil.successToClient(userService.upDateByorderConfirm(id,typeNum,eId));
    125. }
    126. }

    源码获取:俺的博客首页 "资源" 里下载!

  • 相关阅读:
    基于左逆的三点法测距,MATLAB函数
    LeetCode 面试题 04.02. 最小高度树
    彻底解决Microsoft store闪退问题
    构建工具Webpack简介
    “比特币市场风起云涌:第三季度报告揭示表现和未来趋势“
    QT--多线程与MySQL数据库
    【马蹄集】—— 百度之星 2023
    C语言理论--笔试面试基础稳固
    说话人识别声纹识别CAM++,ECAPA-TDNN等算法
    BERT: 面向语言理解的深度双向Transformer预训练
  • 原文地址:https://blog.csdn.net/m0_66863468/article/details/125568779