Este artigo compartilhou com você o código específico para Java para implementar a função de carrinho de compras para sua referência. O conteúdo específico é o seguinte
Eu preciso ser implementado
1. Perceba a função de carrinho de compras do Taotao Mall
2 função de carrinho de compras
2.1 Descrição da função
1. Ao adicionar o produto ao carrinho de compras, não é necessário exigir login. O JD.com não precisa fazer login, o Taobao precisa fazer login. Cada um tem seus próprios benefícios.
2. Calcule o preço total das mercadorias no carrinho de compras. O recálculo é necessário quando a quantidade de mercadorias muda.
3. Os usuários podem excluir itens no carrinho de compras.
4. Depois que o usuário fizer um pedido, exclua a função do carrinho de compras.
O carrinho de compras também pode ser usado quando o usuário não estiver conectado. As informações do produto do carrinho de compras precisam ser escritas no cookie. Todas as operações em carrinhos de compras são cookies operacionais. Reduza efetivamente a pressão no banco de dados.
Desvantagens: Após a troca de um computador, as mercadorias no carrinho de compras não podem ser sincronizadas.
Projeto implementado: implemente a função de carrinho de compras no taotao-protal. Você só precisa ligar para o serviço de informações do produto e não precisa interagir com outros sistemas.
2.2 Análise funcional
1. Você também pode usar o carrinho de compras se o usuário não estiver conectado, portanto, precisará colocar as informações do carrinho de compras no cookie.
2. Você pode armazenar informações do produto em Pojo e, em seguida, serializá -las em JSON e armazená -las em cookies.
3. Para obter informações do produto, você pode extrair os dados JSON do cookie e convertê -los em um objeto Java.
4. Essa função requer apenas a operação de cookies e não requer o suporte do banco de dados; portanto, só precisa ser implementado no Taotao-portal.
5. Existem quatro tipos de carrinhos de compras
a) Adicione produtos
b) Modificar a quantidade de mercadorias
c) Exclua itens no carrinho de compras
d) Exibir lista de produtos de carrinho de compras
2.3 Adicionar produtos de carrinho de compras
Clique no botão "Adicionar ao carrinho" na página Detalhes do produto para enviar uma solicitação, o ID do produto é passado para o controlador, o controlador recebe o ID e o controlador chama o serviço para consultar as informações básicas do produto com base no ID do produto. Escreva o produto no cookie. Antes de adicionar o cookie, retire as mercadorias no carrinho de compras do biscoito para determinar se existe um produto na lista atual de produtos de carrinho de compras. Se houver uma quantidade de um, se nenhum produto for adicionado, a quantidade será 1. Mostre aos usuários uma lista de carrinhos de compras.
2.3.1 Serviço
Função: Receba um ID do produto, quantidade (o padrão é 1) e consulta as informações do produto com base no ID do produto. Chamando o serviço de Taotao-Rest. Adicione o produto ao carrinho de compras, primeiro retire a lista de produtos do carrinho de compras, determine se existe esse produto na lista e, se houver um, apenas aumente a quantidade. Se este item não for adicionado à lista de itens. Retorne para adicionar com sucesso o TaoTaoresult.
Função:
1. Receba o ID do produto entregue pelo controlador e consulte as informações do produto com base no ID do produto.
2. Retire as informações do carrinho de compras do biscoito e converta -as em uma lista de pojos de produtos.
3. Adicione as informações do produto à lista de produtos.
parâmetro:
1. ID do produto
2. Solicitação
3. Resposta
Valor de retorno:
Taotaoresult
@Service Public Class CartServiceImpl implementa o CartService {// URL de serviço @Value ("$ {REST_BASE_URL}") Private String REST_BASE_URL; // URL de serviço de produto @Value ("$ {itens_item_url}") Private String Itens_item_url; // chave correspondente a produtos de carrinho de compras em cookie @value ("$ {cart_items_list_key}") private string cart_items_list_key; // biscoito de carrinho de compras Lifetime @Value ("$ {CART_ITEMS_EXPIRE_TIME}") PRIVADO INTEGRO CART_ITEMS_EXPIRE_TIME; /** * Adicionar produto carrinho * <p> Título: addItem </p> * <p> Descrição: </p> * @param itemid * @param request * @param Response * @return * @see com.taotao.portal.service.cartService#additem (java.lang.lang, javax.service.cartSerice#additem (java.lang.lang, javax.service.CartSerice javax.servlet.http.httpServletResponse) */@Override public TaoTaoresult additem (Long ItemId, httpServletRequest Solicy, httpServleTResponse resposta) {// Consulta informações do produto com base no item de identificação do produto = getItembyid (itemid); if (item == NULL) retorna taotaoresult.build (400, "nenhuma informação do produto foi encontrada"); // Obtenha a lista de produtos do carrinho de compras na lista de cookies <THET> CARTITEMS = getItemListFromCookie (solicitação); // julga se o produto existe no carrinho de compras itemexists = false; para (Item I: CartItems) {if (i.getId (). longValue () == itemid.longValue ()) {// existe este item no carrinho de compras i.setnum (i.getnum () + 1); itemexists = true; quebrar; }} // Se o produto não existir no carrinho de compras, adicione um item à lista de produtos do carrinho de compras se (! ItemExists) {// Defina a quantidade como 1 item.setNum (1); // Adicione o produto ao carrinho de compras cartiMs.add (item); } // Escreva as informações do carrinho de compras no cookie cookieutils.setcookie (solicitação, resposta, cart_items_list_key, jsonutils.objecttojson (cartitems), cart_items_expire_time, true); retornar taotaoresult.ok (cartiMs); } item privado getItembyId (long ItemId) {// Verifique as informações do produto com base na ID do produto String Resultstr = httpClientUtil.Doget (REST_BASE_URL + itens_item_url + itemid); // converte em taotaoresult TaoTaoresult resultado = taotaoresult.formattopojo (Resultado, item.class); // Obter item de informações sobre informações do produto = nulo; if (resultado.getStatus () == 200) {item = (item) result.getData (); } retornar item; } Lista privada <tem> getItemListFromCookie (solicitação httpServLeTrequest) {// Obtenha a lista de itens do carrinho de compras na biscoito cartiMSSTR = cookieutils.getcookieValue (solicitação, cart_items_list_key, true); // Se não estiver vazio, será convertido em uma lista de objetos Java <tem> cartIms = null; if (! stringUtils.isblank (cartItemsStr)) {cartItems = jsonutils.jsontolist (cartItemsStr, item.class); } else {cartItems = new ArrayList <> (); } retornar cartItems; }}2.3.2 Pojo do produto
O POJO do produto requer o uso do item no Taotao-Portal. Este Pojo lançará exceções quando deseralizado. São necessárias as seguintes modificações:
2.3.3 Controlador
@Controller @RequestMapping ("/CART") Classe pública CartController {@Autowired Private CartService CartService; @RequestMapping ("/add/{itemid}") public string additem (@pathvariable long ItemId, httpServletRequest Solicy, httpServletResponse Resposta, modelo modelo) {// Adicione informações do produto TaoTaorsult resultado = CartService.additem (itemid, solicitação, resposta); // mensagem de erro if (resultado.getStatus ()! = 200) {model.addattribute ("message", resultado.getmsg ()); retornar "erro/exceção"; } // Passe os itens no carrinho de compras para o modelo da página.addattribute ("Cartlist", resultado.getData ()); retornar "carrinho"; }} Os usuários clicam em "meu carrinho de compras" para exibir informações do carrinho de compras
2.4 Exibir produtos de carrinho de compras
2.4.1 Serviço
/** * Obtenha a lista de carrinhos de compras * <P> * Título: getCartItemslist * </p> * <p> * Descrição: * </p> * * @return * @see com.taotao.portal.service.cartService#getcartemslist () */@Override list <tem> Lista de cookies <tem> itensList = getItemListFromCookie (solicitação); retornar itenslist; }
2.4.2 Controlador
@RequestMapping ("/CART") public String String ShowCart (solicitação httpServletRequest, modo de modelo) {// Verifique a lista de informações do carrinho de compras <tem> list = CartService.getCartItemslist (solicitação); mode.addattribute ("Cartlist", lista); retornar "carrinho"; }2.5 Modifique a quantidade de produtos
Ao clicar nos sinais "+" e "-" do item do carrinho de compras, aumente ou diminua o número de itens. Ao reduzir a quantidade de mercadorias, se a quantidade for "1", ela não continuará diminuindo.
2.5.1 Serviço
/** * Modifique a quantidade do produto especificado * <p> Título: ChangeItemnum </p> * <p> Descrição: </p> * @param itemid * @param num * @param request * @param Resposta * @return * @see com.taotao.portal.service.CartService#alteração * javax.servlet.http.httpServletRequest, javax.servlet.http.httpServletResponse) */@Override public TaoTaoresult ChangeTemnum (Long ItemID, INT NUM, httpsleTleTeLe Solicution, listão de listtPSoSponsonsonsonsend) { getItemListFromCookie (solicitação); // Encontre o produto a ser modificado na lista de produtos para (item item: list) {if (item.getId () == itemid) {// termina o produto e modifique o quantity item.setNum (num); quebrar; }} // Escreva informações do produto em cookies cookieutils.setcookie (solicitação, resposta, cart_items_list_key, jsonutils.objecttojson (list), cart_items_expire_time, true); retornar taotaoresult.ok (); } 2.5.2 Controlador
@RequestMapping ("/update/num/{itemid}/{num}") @ResponseBody public TaoTaoresult updateNUmbyId (@PathVariable Long ItemId, @PathVariable Integer NUM, HTTPSURDREQUESTENTEQUENT = Solicitação HTTPSetLeRoSPonse (TaToTeRoresSUSSUSSUSSUSCETROURSUSCE), Respond. resultado de retorno; }2.6 Exclua produtos de carrinho de compras
2.6.1 Serviço
/** * Exclua itens no carrinho de compras * <P> * Título: DeleteItem * </p> * <p> * Descrição: * </p> * * @param itemid * @param request * @param Resposta * @return * @see com.taotao.portal.service.cartService#DeLeteitem (Java.Lang.lang.Lang.portal.service.CartSerice javax.servlet.http.httpServletRequest, * javax.servlet.http.httpServletResponse) */ @Override list <tem> DeleteItem (Long ItemId, HttPServleTrequest Solicution, htttsTringSonsOnse (ListIdid, itens <temt); // Encontre o item no carrinho de compras e exclua -o para (item Item: itenslist) {if (item.getId (). LongValue () == itemid.longValue ()) {itensList.Remove (item); quebrar; }} // Atualize os dados do carrinho de compras no cookie cookieutils.setcookie (solicitação, resposta, cart_items_list_key, jsonutils.objecttojson (itenslist), cart_items_expire_time, true); retornar itenslist; } 2.6.2 Controlador
@RequestMapping ("/DELETE/{Itemid}") public String DeleteItembyId (@PathVariable Long ItemId, HttpServletRequest Solicy, httpServletResponse resposta, modelo modelo) {list <tem> list = CartService.DeleteItem (Itemid, solicitação, resposta); Model.Addattribute ("Cartlist", List); retornar "carrinho"; }Problemas com carrinho de compras
1. Os produtos do carrinho de compras não podem ser sincronizados ao substituir o equipamento
a) Produtos de carrinho de compras não podem ser salvos no banco de dados
b) Os usuários devem fazer login para sincronizar informações
c) Você pode salvar as informações do carrinho de compras para redis, a chave é o usuário e o valor é a lista de carrinhos de compras
d) Questões de mercadorias de carrinho de compras.
2. Depois de enviar o pedido, o produto do carrinho de compras precisa ser liberado.
O exposto acima é todo o conteúdo deste artigo. Espero que seja útil para o aprendizado de todos e espero que todos apoiem mais o wulin.com.