持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第10天,点击查看活动详情
每日英语:
Welcome to the real world.It sucks.You're gonna love it.
翻译:欢迎来到现实世界,它糟透了,但你会爱上它的。 ——《老友记》
添加购物车总体思路
加入购物车,需要根据ID查询Sku信息,再将Sku信息转成Cart。
根据ID查询Sku
修改mall-goods-service的com.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-api的com.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测试。
总结
本篇主要介绍了一下添加购物车的功能。