购物车的添加功能实现

134 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第10天,点击查看活动详情

每日英语:

Welcome to the real world.It sucks.You're gonna love it.

翻译:欢迎来到现实世界,它糟透了,但你会爱上它的。 ——《老友记》

添加购物车总体思路

加入购物车,需要根据ID查询Sku信息,再将Sku信息转成Cart。

根据ID查询Sku

修改mall-goods-servicecom.xz.mall.goods.controller.SkuController,添加根据ID查询Sku详情方法,代码如下:

/****
 * 根据ID获取Sku
 */
@GetMapping(value = "/{id}")
public RespResult<Sku> one(@PathVariable(value = "id") String id){
    Sku sku = skuService.getById(id);
    return RespResult.ok(sku);
}

修改mall-goods-apicom.xz.mall.goods.feign.SkuFeign添加根据ID查询Sku详情的Feign接口方法:

/****
 * 根据ID获取Sku
 */
@GetMapping(value = "/sku/{id}")
public RespResult<Sku> one(@PathVariable(value = "id") String id);

添加购物车功能的具体代码

1)dao:mall-cart-service中操作

创建com.xz.mall.cart.mapper.CartMapper继承MongoRepository

public interface CartMapper extends MongoRepository<Cart,String>{
}

2)Service:mall-cart-service中操作

接口:com.xz.mall.cart.service.CartService

public interface CartService {
    /**
     * 加入购物车
     * @param id :skuid
     * @param userName:用户名
     * @param num : 加入购物车数量
     */
    void add(String id,String userName,Integer num);
}

实现类:com.xz.mall.cart.service.impl.CartServiceImpl代码如下:

@Service
public class CartServiceImpl implements CartService {
​
    @Autowired
    private CartMapper cartMapper;
​
    @Autowired
    private SkuFeign skuFeign;
​
    //加入购物车
    @Override
    public void add(String id,String userName,Integer num) {
        //删除购物车中当前商品
        cartMapper.deleteById(userName+id);
​
        if(num>0){
            //查询Sku
            RespResult<Sku> skuResp = skuFeign.one(id);
            //将Sku转换成Cart
            Cart cart = new Cart();
            cart.setUserName(userName);
            cart.setSkuId(id);
            cart.setNum(num);
            sku2cart(skuResp.getData(),cart);
            //批量增加
            cartMapper.save(cart);
        }
    }
​
    /***
     * Sku转Cart
     * @param sku
     * @param cart
     */
    public void sku2cart(Sku sku,Cart cart){
        cart.setImage(sku.getImage());
        cart.set_id(cart.getUserName()+cart.getSkuId());
        cart.setName(sku.getName());
        cart.setPrice(sku.getPrice());
        cart.setSkuId(sku.getId());
    }
}

3)Controller:mall-cart-service中操作

创建com.xz.mall.cart.controller.CartController

@RestController
@RequestMapping(value = "/cart")
@CrossOrigin
public class CartController {
​
    @Autowired
    private CartService cartService;
​
    /***
     * 添加购物车
     * id: skuid
     */
    @GetMapping(value = "/{id}/{num}")
    public RespResult add(@PathVariable(value = "id")String id,@PathVariable(value = "num")Integer num){
        //用户名字
        String userName="gp";
        //加入购物车
        cartService.add(id,userName,num);
        return RespResult.ok();
    }
}

4)Feign接口配置

修改启动类,在启动类上添加@EnableFeignClients(basePackages = "com.xz.mall.goods.feign")注解,代码如下:

@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)
@EnableFeignClients(basePackages = "com.xz.mall.goods.feign")
public class MallCartApplication {
​
    public static void main(String[] args) {
        SpringApplication.run(MallCartApplication.class,args);
    }
}

请求http://localhost:8087/cart/1318596430360813570/1测试。

总结

本篇主要介绍了一下添加购物车的功能。