package com.jt.cart.controller;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.jt.cart.service.CartService;
import com.jt.common.po.Cart;
import com.jt.common.vo.SysResult;
@Controller
@RequestMapping("/cart")
public class CartController {
@Autowired
private CartService cartService;
private static ObjectMapper objectMapper=new ObjectMapper();
//根據(jù)用戶id查詢購(gòu)物車信息
@RequestMapping("/query/{userId}")
@ResponseBody
public SysResult findCartByUserId(@PathVariable Long userId){
try {
List<Cart> cartList=cartService.findCartByUserId(userId);
return SysResult.oK(cartList);
} catch (Exception e) {
e.printStackTrace();
}
return SysResult.build(201, "購(gòu)物車信息查詢失敗");
}
@RequestMapping("/save")
//實(shí)現(xiàn)購(gòu)物車入庫(kù)
public SysResult saveCart(Cart cart){
try {
cartService.saveCart(cart);
return SysResult.oK();
} catch (Exception e) {
// TODO: handle exception
}
return SysResult.build(201, "購(gòu)物車新增失敗");
}
@RequestMapping("/update/num")
public SysResult updateCartNum(String cartJSON){
try {
Cart cart = objectMapper.readValue(cartJSON,Cart.class);
cartService.updateCartNum(cart);
return SysResult.oK();
} catch (Exception e) {
e.printStackTrace();
}
return SysResult.build(201, "商品更新失敗");
}
}
package com.jt.cart.service;
import java.util.List;
import com.jt.common.po.Cart;
public interface CartService {
List<Cart> findCartByUserId(Long userId);
void saveCart(Cart cart);
void updateCartNum(Cart cart);
}
package com.jt.cart.service;
import java.util.Date;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.jt.cart.mapper.CartMapper;
import com.jt.common.po.Cart;
@Service
public class CartServiceImpl implements CartService {
@Autowired
private CartMapper cartMapper;
@Override
public List<Cart> findCartByUserId(Long userId) {
Cart cart=new Cart();
cart.setUserId(userId);
return cartMapper.select(cart);
}
/**
* 根據(jù)userId和itemId判斷數(shù)據(jù)庫(kù)中是否有該購(gòu)物車信息
* 有
* 數(shù)據(jù)庫(kù)num+新num做更新操作
* 沒(méi)有數(shù)據(jù)
* 應(yīng)該插入數(shù)據(jù)庫(kù)
*/
/* (non-Javadoc)
* @see com.jt.cart.service.CartService#saveCart(com.jt.common.po.Cart)
*/
@Override
public void saveCart(Cart cart) {
Cart cartDB=cartMapper.findCartByUI(cart);
if(cartDB==null){
System.out.println("insert cart");
cart.setCreated(new Date());
cart.setUpdated(cart.getCreated());
cartMapper.insert(cart);
}else{
System.out.println("insert cart2");
int num=cartDB.getNum()+cart.getNum();
cartDB.setNum(num);
cartDB.setUpdated(new Date());
cartMapper.updateByPrimaryKeySelective(cartDB);
}
}
@Override
public void updateCartNum(Cart cart) {
cart.setUpdated(new Date());
cartMapper.updateCartNum(cart);
}
}
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--namespace="它是映射文件的唯一標(biāo)識(shí)"-相當(dāng)于配置文件的主鍵 mapper接口調(diào)用方式,表明mapper接口/映射文件/表映射關(guān)系胳蛮,用接口的全路徑名稱 -->
<mapper namespace="com.jt.cart.mapper.CartMapper">
<!-- 修改購(gòu)物車數(shù)量 -->
<update id="updateCartNum">
update tb_cart set num=#{num},updated=#{updated}
where item_id=#{itemId} and user_id=#{userId}
</update>
</mapper>
package com.jt.cart.mapper;
import org.apache.ibatis.annotations.Select;
import com.jt.common.mapper.SysMapper;
import com.jt.common.po.Cart;
public interface CartMapper extends SysMapper<Cart>{
@Select("select * from tb_cart where item_id=#{itemId} and user_id=#{userId}")
Cart findCartByUI(Cart cart);
void updateCartNum(Cart cart);
}