Este artículo ha compartido con usted el código específico para Java para implementar la función del carrito de compras para su referencia. El contenido específico es el siguiente
1 Necesito ser implementado
1. Date cuenta de la función del carrito de compras de Taotao Mall
2 función de carrito de compras
2.1 Descripción de la función
1. Al agregar el producto al carrito de compras, no es necesario requerir inicio de sesión. JD.com no necesita iniciar sesión, Taobao necesita iniciar sesión. Cada uno tiene sus propios beneficios.
2. Calcule el precio total de los productos en el carrito de compras. Se requiere recalculación cuando cambia la cantidad de bienes.
3. Los usuarios pueden eliminar artículos en el carrito de compras.
4. Después de que el usuario realice un pedido, elimine la función del carrito de compras.
El carrito de compras también se puede usar cuando el usuario no se inicia. La información del producto del carrito de compras debe escribirse en la cookie. Todas las operaciones en los carritos de compras son cookies operativas. Reduzca efectivamente la presión en la base de datos.
Desventajas: después de cambiar una computadora, los productos en el carrito de compras no se pueden sincronizar.
Proyecto implementado: Implementar la función del carrito de compras en Taotao-Protal. Solo necesita llamar al servicio de información del producto y no necesita interactuar con otros sistemas.
2.2 Análisis funcional
1. También puede usar el carrito de compras si el usuario no ha iniciado sesión, por lo que debe poner la información del carrito de compras en la cookie.
2. Puede almacenar información del producto en POJO, y luego serializarla en JSON y almacenarla en cookies.
3. Para obtener información del producto, puede extraer los datos JSON de la cookie y convertirlos en un objeto Java.
4. Esta función solo requiere el funcionamiento de las cookies y no requiere el soporte de la base de datos, por lo que solo debe implementarse en Taotao-Portal.
5. Hay cuatro tipos de carritos de compras
a) Agregar productos
b) Modificar la cantidad de bienes
c) Eliminar artículos en el carrito de compras
d) Mostrar lista de productos de carrito de compras
2.3 Agregar productos de carrito de compras
Haga clic en el botón "Agregar al carrito" en la página Detalles del producto para enviar una solicitud, la ID del producto se pasa al controlador, el controlador recibe la ID y el controlador llama al servicio para consultar la información básica del producto en función de la ID del producto. Escribe el producto en la cookie. Antes de agregar la cookie, elimine los productos en el carrito de compras de la galleta para determinar si hay un producto en la lista actual de productos de carreras de compras. Si hay una cantidad de uno, si no se agrega ningún producto, la cantidad es 1. Muestre a los usuarios una lista de carritos de compras.
2.3.1 Servicio
Función: Reciba una ID de producto, la cantidad (predeterminada es 1) y consulta información del producto basada en la ID del producto. Llamando al servicio de Taotao-Rest. Agregue el producto al carrito de compras, primero elimine la lista de productos del carrito de compras, determine si hay dicho producto en la lista y si hay uno, solo aumente la cantidad. Si este elemento no se agrega a la lista de elementos. Regrese para agregar con éxito Taotaoresult.
Función:
1. Reciba la ID del producto entregada por el controlador y consulte la información del producto según la ID del producto.
2. Saque la información del carrito de compras de la cookie y conviértala en una lista de POJO POJO.
3. Agregue información del producto a la lista de productos.
parámetro:
1. ID de producto
2. Solicitar
3. Respuesta
Valor de retorno:
Taotaoresult
@Service public class CARTServiceImpl implementa CARTService {// URL de servicio @Value ("$ {REST_BASE_URL}") String privado REST_BASE_URL; // Servicio de producto URL @Value ("$ {elementos_item_url}") Private String items_item_url; // clave correspondiente a los productos de carrito de compras en cookie @Value ("$ {CART_ITEMS_LIST_KEY}") String privado CART_ITEMS_LIST_KEY; // Compre Cart Cookie Lifetime @Value ("$ {CART_ITEMS_EXPIRE_TIME}") privado entero CART_ITEMS_EXPIRE_TIME; /** * Add cart product* <p>Title: addItem</p> * <p>Description: </p> * @param itemId * @param request * @param response * @return * @see com.taotao.portal.service.CartService#addItem(java.lang.Long, javax.servlet.http.HttpServletRequest, javax.servlet.http.httpservletResponse) */@Override public Taotaoresult AddItem (Long itemId, httpservletRequest Solicitud, respuesta httpservletResponse) {// consulta información del producto basada en el elemento de identificación del producto = getItEmById (itemId); if (item == null) return taotaoresult.build (400, "no se encontró información del producto"); // Obtenga la lista de productos del carrito de compras en la lista de cookies <emem> Cartitems = getItemListFromCookie (solicitud); // juzga si el producto existe en el carrito de compras boolean itemExists = false; for (elemento I: Cartitems) {if (i.getId (). longValue () == itemID.longValue ()) {// Hay este elemento en el carrito de compras I.SetNum (i.getNum () + 1); itemExists = true; romper; }} // Si el producto no existe en el carrito de compras, agregue un artículo a la lista de productos del carrito de compras si (! ItemExists) {// Establezca la cantidad en 1 item.setNum (1); // Agregar el producto a los cartitem del carrito de compras. Add (artículo); } // Escribe la información del carrito de compras en Cookie CookieUtils.setcookie (solicitud, respuesta, CART_ITEMS_LIST_KEY, JSONUTILLS.OBJECTTOJSON (Cartitems), CART_ITEMS_EXPIRE_TIME, verdadero); devolver taotaoresult.ok (cartitems); } Elemento privado getitembyid (long itemID) {// verifique la información del producto basada en la cadena de identificación del producto resultados de resultados = httpClientUtil.doget (REST_BASE_URL + items_item_url + itemId); // Convertir a Taotaoresult Taotaoresult Result = Taotaoresult.Formattopojo (Resultstr, item.class); // Obtener información de información del producto elemento de elemento = nulo; if (result.getStatus () == 200) {item = (item) result.getData (); } elemento de retorno; } Lista privada <emem> getItemListFromcookie (HttpservletRequest solicitud) {// Obtenga la lista de artículos del carrito de compras en la cadena de cookies CartitemSstr = CookieUtils.getCookievalue (request, CART_ITEMS_LIST_KEY, true); // Si no está vacío, se convertirá en una lista de objetos Java <emem> Cartitems = null; if (! StringUtils.isblank (CartitemSstr)) {Cartitems = jsonutils.jsonTolist (CartitemSstr, item.class); } else {Cartitems = new ArrayList <> (); } return Cartitems; }}2.3.2 Producto POJO
POJO POJO requiere el uso del artículo en Taotao-Portal. Este pojo arrojará excepciones cuando se deserialice. Se requieren las siguientes modificaciones:
2.3.3 Controlador
@Controller @RequestMapping ("/CART") Public Class CartController {@aUtoWired private CartService CartService; @RequestMapping ("/add/{itemId}") public String addItem (@PathVariable Long itemID, httpservletRequest solicitud, respuesta httpservletreSponse, modelo modelo) {// agregar información de producto Taotaoresult result = CartService.additem (itemId, solicitud, respuesta); // Mensaje de error if (result.getStatus ()! = 200) {model.addattribute ("mensaje", resultado.getMsg ()); devolver "error/excepción"; } // Pase los artículos en el carrito de compras al modelo de página.addattribute ("CartList", resultado.getData ()); regresar "carrito"; }} Los usuarios hacen clic en "mi carrito de compras" para mostrar la información del carrito de compras
2.4 Productos de carritos de compras para exhibir
2.4.1 Servicio
/** * Obtenga la lista del carrito de compras * <p> * Título: getCartitEmslist * </p> * * <p> * Descripción: * </p> * * @return * @see com.taotao.portal.service.cartService#getCartitemsList () */@Override public List. Lista de cookies <emem> itemsList = getItemListFromCookie (solicitud); devolver elementos list; }
2.4.2 Controlador
@RequestMapping ("/CART") Public String showCart (httpservletRequest solicitud, modo de modelo) {// verifique la lista de información del carrito de compras <emem> list = CartService.getCartitEmslist (solicitud); mode.addattribute ("CartList", List); regresar "carrito"; }2.5 Modificar la cantidad de productos
Al hacer clic en los signos "+" y "-" del artículo del carrito de compras, aumente o disminuya el número de artículos. Al reducir la cantidad de bienes, si la cantidad es "1", no continuará disminuyendo.
2.5.1 Servicio
/** * Modify the quantity of the specified product* <p>Title: changeItemNum</p> * <p>Description: </p> * @param itemId * @param num * @param request * @param response * @return * @see com.taotao.portal.service.CartService#changeItemNum(long, int, javax.servlet.http.httpservletRequest, javax.servlet.http.httpservletResponse) */@Override public Taotaoresult ChangeItemnum (Long itemId, int num, httpservletrequest solicitud, respuesta httpServletRetReSonse) {// Obtener lista de productos de la lista <ítems> LIT> LIST. getItemListFromcookie (solicitud); // Encuentre el producto que se modificará desde la lista de productos para (elemento elemento: list) {if (item.getId () == itemID) {// finaliza el producto y modifica la cantidad elemento.setnum (num); romper; }} // Escribir información del producto en Cookie CookieUtils.setcookie (solicitud, respuesta, CART_ITEMS_LIST_KEY, JSONUTILLS.OBJECTOJSON (LIST), CART_ITEMS_EXPIRE_TIME, true); return taotaoresult.ok (); } 2.5.2 Controlador
@RequestMapping("/update/num/{itemId}/{num}") @ResponseBody public TaotaoResult updateNumById(@PathVariable Long itemId, @PathVariable Integer num, HttpServletRequest request, HttpServletResponse response) { TaotaoResult result = cartService.changeItemNum(itemId, num, request, response); resultado de retorno; }2.6 Eliminar productos de carrito de compras
2.6.1 Servicio
/** * Eliminar elementos en el carrito de compras * <p> * Título: DeleteItem * </p> * * <p> * Descripción: * </p> * * @param itemid * @param request * @param Response * @return * @see com.taotao.portal.service.cartservice#deleteitem (java.lang.lang.long, * * javax.servlet.http.httpservletRequest, * javax.servlet.http.httpservletResponse) */ @Override public List <emitem> deleteitem (long itemId, httpservletRequest request, htttpServletResponse respuesta) {list <emitem> itemsList = getCartitemslist (Solicitud de solicitud); // Encuentre el elemento en el carrito de compras y elimínelo para (Elemento Elemento: ElementSlist) {if (item.getId (). LongValue () == itemID.longValue ()) {itemslist.remove (item); romper; }} // Actualiza los datos del carrito de compras en Cookie CookieUtilss.setcookie (solicitud, respuesta, CART_ITEMS_LIST_KEY, JSONUTILLS.OBJECTOJSON (Elemslist), CART_ITEMS_EXPIRE_TIME, verdadero); devolver elementos list; } 2.6.2 controlador
@RequestMapping ("/delete/{itemID}") public String deleteitembyid (@PathVariable Long itemID, httpservletRequest solicitud, respuesta httpServletResponse, modelo modelo) {list <emitem> list = CartService.DeleteItem (itemId, solicitud, respuesta); model.addattribute ("CartList", List); regresar "carrito"; }Problemas con el carrito de compras
1. Los productos del carrito de compras no se pueden sincronizar al reemplazar el equipo
a) Los artículos del carrito de compras no se pueden guardar en la base de datos
b) Los usuarios deben iniciar sesión para sincronizar la información
c) Puede guardar la información del carrito de compras en Redis, la clave es el usuario, y el valor es la lista de carritos de compras
d) problemas de la mercancía del carrito de compras.
2. Después de enviar el pedido, el producto del carrito de compras debe limpiarse.
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.