自学实践前后端项目4 MMall商城 7

article/2025/10/31 5:09:46

一。地址管理

1.前端改为

userAddress

 2.

OrderController增加两个需要的元素

 3.接口 服务也加上去

 4.

在OrderServiceImpl实现层判断是否为新地址再进行保存
//先判断新老地址
if (orders.getUserAddress().equals("newAddress")){//存入数据库UserAddress userAddress = new UserAddress();userAddress.setAddress(address);userAddress.setRemark(remark);userAddress.setIsdefault(1);userAddress.setUserId(user.getId());QueryWrapper wrapper = new QueryWrapper();wrapper.eq("isdefault",1);UserAddress oldDefault = userAddressMapper.selectOne(wrapper);oldDefault.setIsdefault(0);userAddressMapper.updateById(oldDefault);userAddressMapper.insert(userAddress);orders.setUserAddress(address);
}

5.测试保存

 

 二。订单详情的保存

1.OrderServiceImpl实现层增加订单详情保存

package com.redhat.mmall002.service.impl;import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.redhat.mmall002.entity.*;
import com.redhat.mmall002.mapper.CartMapper;
import com.redhat.mmall002.mapper.OrderDetailMapper;
import com.redhat.mmall002.mapper.OrderMapper;
import com.redhat.mmall002.mapper.UserAddressMapper;
import com.redhat.mmall002.service.OrderService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;import java.util.ArrayList;
import java.util.List;
import java.util.Random;/*** <p>*  服务实现类* </p>** @author 红帽* @since 2021-11-24*/
@Service
public class OrderServiceImpl extends ServiceImpl<OrderMapper, Orders> implements OrderService {@Autowiredprivate UserAddressMapper userAddressMapper;@Autowiredprivate CartMapper cartMapper;@Autowiredprivate OrderMapper orderMapper;@Autowiredprivate OrderDetailMapper orderDetailMapper;@Overridepublic boolean save(Orders orders, User user,  String address, String remark) {//先判断新老地址if (orders.getUserAddress().equals("newAddress")){//存入数据库UserAddress userAddress = new UserAddress();userAddress.setAddress(address);userAddress.setRemark(remark);userAddress.setIsdefault(1);userAddress.setUserId(user.getId());QueryWrapper wrapper = new QueryWrapper();wrapper.eq("isdefault",1);UserAddress oldDefault = userAddressMapper.selectOne(wrapper);oldDefault.setIsdefault(0);userAddressMapper.updateById(oldDefault);userAddressMapper.insert(userAddress);orders.setUserAddress(address);}orders.setUserId(user.getId());orders.setLoginName(user.getLoginName());//生成订单号码String seriaNumber = null;try{StringBuffer result = new StringBuffer();for (int i = 0;i<32;i++){result.append(Integer.toHexString(new Random().nextInt(16)));}seriaNumber =result.toString().toUpperCase();}catch (Exception e){e.printStackTrace();}orders.setSerialnumber(seriaNumber);orderMapper.insert(orders);//保存订单详情QueryWrapper wrapper = new QueryWrapper();wrapper.eq("user_id",user.getId());List<Cart> cartList =cartMapper.selectList(wrapper);List<OrderDetail> orderDetailList = new ArrayList<>();for (Cart cart : cartList){OrderDetail orderDetail = new OrderDetail();BeanUtils.copyProperties(cart,orderDetail);orderDetail.setId(null);orderDetail.setOrderId(orders.getId());orderDetailMapper.insert(orderDetail);}return true;}
}
打开页面测试提交

 保存到数据库订单详情表

 保存到订单表

三。前端页面的跳转与映射

1.设置跳转路径

测试流程点击提交后跳转页面

 2.设置购物车判断当没有物品时候进行提示

【1】settlement1前端页面里面设置判断方法

【2】 settlement.js中实现方法

//判断购物车是否有商品
function settlement2() {var totalCost = $("#totalprice").text();if (totalCost=="¥0"){alert("购物车为空,不能结算!!!")return false;}window.location.href="/cart/settlement2"
}

 【3】添加订单存储数据访问

【4】 settlement3前端映射

 提交测试

 四。用户信息管理

1. 

UserController类里面编写对应页面跳转路径
@GetMapping("/userInfo")
public ModelAndView userInfo(HttpSession session){User user = (User) session.getAttribute("user");ModelAndView modelAndView = new ModelAndView();modelAndView.setViewName("userInfo");modelAndView.addObject("cartList",cartService.findAllCartVOByUserId(user.getId()));return modelAndView;
}

2.修改前端页面跳转路径

 3.测试页面跳转

 4.对用户前端进行正常显示

【1】前端页面的路径改写

 【2】设置未登录访问用户信息的过滤器

 【3】设置性别枚举

package com.redhat.mmall002.enums;import com.baomidou.mybatisplus.annotation.EnumValue;
import lombok.Getter;@Getter
public enum GenderEnum {WOMAN(0,"女"),MAN(1,"男");@EnumValueprivate Integer  code;private String value;GenderEnum(Integer code, String value) {this.code = code;this.value = value;}
}

 【4】配置枚举文件扫描

 【5】最后测试正常显示

 


http://chatgpt.dhexx.cn/article/qunZcdXK.shtml

相关文章

自学实前后端践项目4 MMall商城 1

一.开发环境 1.JDK8以上Spring Boot 2.3.0ThymeleafMyBatis Plus3.3.1MySQL8.0 2.部署&#xff1a;Linux,&#xff0c;&#xff08;阿里云 腾讯云&#xff09;JDK8&#xff0c;MySQL8.0 3.部署方式&#xff1a;jar包部署&#xff0c;不需要Tomcat 二.新建工程 1&#xff0…

mmall电商项目学习笔记之mybatis三剑客

一.Mybatis plugin IDEA 2017.3版本下Mybatis plugin 3.53安装使用 插件下载地址 http://www.awei.org/download/iMybatis-3.21.jar 二.MyBatis-Generate 反向生成 【转】mybatis自动生成实体代码的插件 【method2】逆向生成 2.1 在pom.xml中做两处配置 2.1.1配置depen…

自学实践前后端项目4 MMall商城 4

一。实现商品详情展示 1.测试获取后台当个商品的信息 2.实现通过点击商品名称和商品图片进入商品详情页面 1&#xff09;查找出商品信息 2&#xff09;在前端进行映射 3&#xff09;设置库存选择限制 判断逻辑 $(function(){//给type绑定点击事件$(".type").click…

mmall 项目实战(一)项目初始化

1.创建 数据库 及 表 数据脚本&#xff1a; /* Navicat Premium Data Transfer Source Server : 182.92.82.103 Source Server Type : MySQL Source Server Version : 50173 Source Host : 182.92.82.103 Source Database : mmall Target Se…

B2C购物商城---MMALL商城概览

注意&#xff1a; 商品小图原图缺失后续上传到图片服务器。不影响使用支付宝二维码是支付宝沙箱开发环境生成&#xff0c;不会产生真实交易&#xff0c;若需体验&#xff0c;请下载支付宝沙箱版扫描体验项目仍需优化 本项目的完成参考了慕课网happymmall的设计 项目源码在&…

MMall项目完整分析总结

Linux服务器 线上环境&#xff1a; 1.jdk 2.vsftpd 3.nginx 4.mysql 5.tomcat 6.git 7.maven 8.Redis 项目采用Tomcat集群方式: 在此架构图中&#xff0c;nginx使用的是轮询的负载均衡策略。session不交给tomcat自己管理&#xff0c;已经交由左侧的redis分布式…

python flask-sqlalchemy flask-marshmallow基本使用

首先安装 pip install marshmallow-sqlalchemy pip install flask-sqlalchemy pip install flask-marshmallow 参考 sqlalchemy query 官网 app.py文件内容 from flask import Flask,jsonify import config from flask_sqlalchemy import SQLAlchemy from flask_marshmallow i…

Flask_使用flask_marshmallow序列化数据

代码如下&#xff1a; from flask import Flask from flask_marshmallow import Marshmallow from flask_sqlalchemy import SQLAlchemy from marshmallow import fieldsapp Flask(__name__) app.config["SQLALCHEMY_DATABASE_URI"] "mysqlpymysql://root:12…

【Python】Marshmallow:Python中的“棉花糖”

博主&#xff1a;&#x1f44d;不许代码码上红 欢迎&#xff1a;&#x1f40b;点赞、收藏、关注、评论。 文章目录 一、Marshmallow简介1.1、基础概念 二、序列化2.1、User类2.2、UserSchema类2.3、Serializing(序列化)2.4、运行2.5、过滤输出 三、反序列化四、验证数据4.1、V…

marshmallow——简介

一、marshmallow简介 在marshmallow诞生之前,已经有很多优秀的模块来用于数据的格式化和数据校验中。 因此书写mashmallow这个库的作者受这些库的启发,例如Django REST Framework, Flask-RESTful, 和colander这些。他同样从这些库中大量借用了设计和实现序列化、反序列化以及…

flask---》Marshmallow介绍及基础使用

0. Marshmallow背景介绍 介绍 Marshmallow&#xff0c;中文译作&#xff1a;棉花糖。是一个轻量级的数据格式转换的模块&#xff0c;也叫序列化和反序列化模块&#xff0c;常用于将复杂的orm模型对象与python原生数据类型之间相互转换。一般用于flaskmarshmallow提供了丰富的…

YApi接口平台-接口挡板

YApi是一个开源的平台&#xff0c;官方平台链接&#xff0c;如下https://hellosean1025.github.io/yapi/index.html,目前很多大公司在使用&#xff0c;主要优势我认为有2个&#xff0c;第一该平台开源&#xff0c;搭建方便&#xff1b;第二该平台解决了前后端分离开发的痛点&am…

open source HTML 5移动应用 -Exlive 人员定位客户端(BlackBerry 10, Android, iPhone)

下图是exlive人员定位系统的宣传页&#xff0c;其官方主站在这里 www.exlive.cn 下图是BlackBerry OS 7.0上面的运行效果&#xff0c;更多截图见这里 http://blog.csdn.net/berryreload/article/details/8099674 Update: Remove BlackBerry OS 7.0支持 升级到PhoneGap 3.0&…

My BlackBerry

什么是黑莓 RIM公司成立于1984年。 黑莓手机&#xff08;Blackberry&#xff09;&#xff0c;是指由加拿大Reserach In Motion&#xff08;RIM&#xff09;公司推出的一种无线手持邮件解决终端设备&#xff0c;也就是我们平时称的手机。 2013年1月30日&#xff0c;RIM公司今…

解决联网下载服务端返回405问题

最近遇到了一个问题&#xff0c;在项目中有一个启动页广告图片下载的功能&#xff0c;之前能够正常下载&#xff0c;由于这个版本遇到了运营商DNS劫持的问题&#xff0c;服务端要调整图片的下载路径&#xff0c;也就是改变了图片的链接地址。修改地址之后下载就出现异常了&…

IIS 405 Method Not Allowed

今天将项目发布到IIS上后&#xff0c;发现Delete方法用不了&#xff0c;可进行如下设置&#xff1a; 打开处理程序映射 找到WebDAV点击请求限制&#xff0c;勾选全部谓词 这个方法如果无效的话 方法二&#xff1a;因为是WebDAVModule限制的请求&#xff0c;所以直接将WebDAV…

前端请求接口时报405错误

他说方法不存在 他的问题所在就是没有找到后端对应的接口 意思就是说没有找到我后端put这个对应的接口 我记得写了不知道为啥没了纳闷

IIS put请求 报HTTP Error 405 - Method Not Allowed

在新的服务器上部署了一个.net core的项目&#xff0c;部分请求地址使用了put、delete方式&#xff0c;导致无法正常请求&#xff0c;报Error 405 - Method Not Allowed。 由于配置IIS时把“WebDAV 发布”给勾选了&#xff0c;所以会导致拦截。 服务器和IIS 10配置如下图&…

405 Method Not Allowed 解决方案

背景描述 前端发送请求到后端&#xff0c;可是经过swagger测试&#xff0c;后端接口是没问题的 可是一旦调用就发生405报错 解决方案 一般这种情况发生是因为前后端请求方式不一致 写在前端的接口声明方式是post 我们来看后端 很明显了&#xff0c;后端是get&#xff0c;因…