En la sección anterior, completamos la página detallada del producto y utilizamos el caché secundario de Hibernate para cargar la página detallada para mejorar el rendimiento del sistema. Haga clic en el artículo para ver:. En esta sección comenzamos a hacer la parte del carrito de compras.
1. Agregue una nueva mesa
Primero, agregamos varias tablas a la base de datos: tabla de usuario, tabla de estado de pedido, tabla de pedidos (tabla de carritos de compras) y tabla de artículos de compras. La información básica del usuario se almacena en la tabla de usuarios. La tabla de estado del pedido almacena principalmente el estado del pedido, como enviado. La tabla de pedidos almacena principalmente la información del usuario y el estado del pedido, por lo que está relacionada con la tabla del usuario y la tabla de estado de pedido. La tabla de artículos de compras almacena un determinado producto y el pedido al que pertenece, por lo que está relacionado con la tabla de productos y la tabla de pedidos. Para obtener información específica de la tabla, consulte la siguiente declaración SQL:
/*=================================================================================================================================== ===================================================================================/// Create Tabla User ( /* Número de usuario, crecimiento automático* / ID int Prime Key no Null Auto_incement, /* Nombre de inicio de sesión de usuario* / Login Varchar (20), /* Nombre real del usuario* / Name varchar (20), /* contraseña de inicio de sesión de usuario* / pase varchar (20), /* usuarios de género* / sexo varchar (20), /* phone de usuario* / marcar varar (20), /* usuarios de usuario* / correo electrónico* / correo electrónico 20); /*=========================================================== =============================================================/ /* Mesa: carrito de compras (pedido) Estructura de la tabla* / /*===================================================================================================================== ======================================================================================================================== ======================================================================================================================== =========================================================================== Crear tabla Forder ( /* Número de pedido, crecimiento automático* / id int Primario Clave no nulo Auto_incement, /* Nombre del destinatario* / Name varchar (20), /* Número de teléfono del destinatario* / Phone Varchar (20), /* Información de entrega* / Varchar (20), /* Fecha de pedido* / Fecha Timestamp Current_Timestamp, /* Cantidad total* / total decimal (8,2), /* Orden Código de Timestamp predeterminado. Varchar (20), /* Código postal del destinatario* / Dirección Varchar (200), /* Estado de orden* / SID int Default 1, /* número de miembro* / uid int, restricción SID_FK Clave exterior (SID) Estado de referencias (ID), restricción UID_FK Clave exterior (UID) Referencias (ID)); /*================================================================================== S =========================================================================================================================================================================================== S =========================================================================================================================================================================================== S ==================================================================================================================== Precio del producto en el momento de la compra*/ Price Decimal (8,2),/*Cantidad comprada*/ Number no NULL,/*Número de producto*/ Pid int,/*Esta línea de línea, el número de pedido*/ FID int, restricción PID_FK Clave extranjera (PID) Referencias Producto (ID), restricción FID_FK Clave extranjera (FID) Fuera (ID));
Luego convertimos estas tablas en POJO a través de la ingeniería inversa, por lo que no entraremos en detalles.
2. Lógica de backstage del carrito de compras
2.1 Lógica de la capa de servicio
Cuando un usuario agrega un producto al carrito de compras, primero debemos obtener la información del producto a través de la ID del producto y luego agregar el producto al carrito de compras. Antes de agregar, primero debemos determinar si hay un carrito de compras en la sesión actual. Si no, primero debemos crear un carrito de compras. Si es así, agregaremos el artículo de compra actual al carrito de compras. Antes de agregar, debemos determinar si el artículo de compra ya existe en el carrito de compras. Si existe, solo aumente la cantidad de compras correspondiente. Si no existe, agréguelo, calcule el precio de compra total y finalmente guarde el carrito de compras en la sesión. Vea el diagrama a continuación para todo el proceso:
A continuación, implementemos la lógica específica, primero cree dos nuevas interfaces de servicio: SorderService y ForderService. Hay dos métodos definidos principalmente en SorderService: convertir los artículos agregados por el usuario en artículos de compras y luego agregar los artículos de compras al carrito de compras; ForderService define principalmente el método para calcular el precio total del carrito de compras, de la siguiente manera:
// Interfaz de SorderService Interface Public SorderService extiende BasesService <Sorder> {// Agregar elemento de compra y devolver un nuevo carrito de compras Public Fosder AddSorder (Forder Forder, producto de producto); // convertir los datos del producto en el elemento de compra Sorder ProductToSorder (producto del producto); } // Interfaz de ForderService Interfaz pública ForderService extiende BaseService <foster> {// Calcule el precio total de compra Público Double Clutotal (Forra Forder); } Luego implementamos estas dos interfaces en detalle:
// clase de implementación de SorderserviceImpl @Service ("Sorderservice") clase pública SorderserviceImpl extiende BaseServiceImpl <Sorder> implementa Sorderservice {@Override public Fosder AddSorder (Fosher Fosder, producto de producto) {boolean ishave = false; // se usa para marcar si hay artículos de compras duplicados // Obtener el artículo de compra actual Sorder Soorder = ProductToSorder (producto); // juzga si el artículo de compra actual es duplicado. Si está duplicado, agregue la cantidad para (Sorder Old: Forder.getSorders ()) {if (Old.getProduct (). GetId (). Equals (Sorder.getProduct (). GetId ())) {// Hay duplicados para elementos de compra, agregue la cantidad Old.setNumber (Old.getNumber () + soorder.getNumber ()); ishave = verdadero; romper; }} // El artículo de compra actual no existe en el carrito de compras, solo agréguelo si (! Ishave) {fosder.getSorders (). Add (Sorder); } return fazer; } @Override public Sorder ProductToSorder (producto Producto) {Sorder soorder = new Sorder (); soorder.setName (producto.getName ()); soorder.setNumber (1); soorder.setPrice (producto.getPrice ()); soorder.setProduct (producto); regresar SOORDER; }} // implementaciones de ForderServiceImpl @Service ("Forderservice") clase pública ForderserviceImpl extiende BaseServiceImpl <fosder> Implementa ForderService {@Override public Double Clutotal (Forder Forder) {doble total = 0.0; para (Sorder Soorder: Forder.getSorders ()) {Total += Soorder.getNumber () * soorder.getPrice (); } retorno total; }} Luego necesitamos inyectar estos dos frijoles en Baseaction para su uso por Sorderaction:
@Controller ("BASEACTION") @Scope ("Prototype") Public Class Baseaction <T> Extiende ActionSupport implementa request AWare, SessionAWare, ApplicationAWare, ModelDipniven <T> {// omitir otro código irrelevante ... @Resource protegido ForderService ForderService; @Resource protegido Sorderservice Sorderservice; } Ok, la lógica de la capa de servicio está terminada, y luego vamos a hacer la parte de acción:
2.2 Lógica de acción
Creamos una nueva SorderAction y seguimos el proceso que se muestra en el diagrama lógico anterior para completar la lógica de agregar carros de compras. El código es el siguiente:
@Controller @Scope ("Prototype") Public Class SorderAction extiende Baseaction <Sorder> {public String addSorder () {// 1. Obtenga los datos del producto correspondientes de acuerdo con Product.id Product Product = Productservice.get (Model.getProduct (). GetId ()); // 2. Determine si hay un carrito de compras en la sesión actual. Si no, cree if (session.get ("fazer") == null) {// Cree un nuevo carrito de compras y guárdelo en la sesión Session.put ("Forder", nuevo Poste (nuevo Hashset <Sorder> ())); } // 3. Convierta la información del producto en SOORDER y agrégala al carrito de compras (juzgando si el artículo de compra está duplicado) Forder Forder = (Forder) Session.get ("Forder"); forder = SOORDERSERVICE.AddsOrder (forder, producto); // 4. Calcule el precio total de la orilla de compras. // 5. Almacene el nuevo carrito de compras en sesión Session.put ("Forra", Forra); regresar "showcart"; }} Configurar el archivo Struts.xml:
<Action name = "Sorder_*" Method = "{1}"> <resultado name = "showcart">/showcart.jsp </resultado> </action>Luego salte a la página de pantalla del carrito de compras showcart.jsp. El programa front-end sobre la parte del carrito de compras en showcart.jsp es el siguiente:
3. Enlace de salto de recepción
Todas las partes de fondo están hechas. A continuación, agregue el detalle de recepción.
Esto saltará correctamente. Echemos un vistazo al efecto específico de la página de pantalla del carrito de compras:
De esta manera, las funciones básicas de nuestro carrito de compras se completarán, y haremos algunas mejoras más tarde.
Dirección original: http://blog.csdn.net/eson_15/article/details/51418350
Lo anterior es todo el contenido de este artículo. Espero que sea útil para el aprendizaje de todos y espero que todos apoyen más a Wulin.com.