@Service
공공 클래스 CartServiceImpl는 구현 CartService {
개인 정적 최종 문자열 쇼핑 카트에 담기 = "Cart_을" ;
@Autowired
개인 RedisTemplate의 redisTemplate을;
@Autowired
개인 SkuFeign skuFeign;
@Autowired
개인 SpuFeign spuFeign;
/ **
*添加购物车
* @param skuId
* 파라미터 : NUM
* /
@Override
공공 무효 추가 (NUM 문자열 skuId, 정수, 문자열 이름) {
/ **
* 1)查询레디 스中的数据
* 레디 스 이미있는 경우 2), 추가로, 계산 금액 수가
없는 경우 * 3), 상기 버퍼에 제품을 추가
* /
OrderItem에 OrderItem에 =합니다 (OrderItem에) redisTemplate.boundHashOps (손수레 자명 +) 갔지 (skuId); 레디 스로부터 // 값
IF (! = OrderItem에 널 ) {
// 카트 갱신
orderItem.setNum (orderItem.getNum () + NUM)
orderItem.setMoney (orderItem.getNum () * orderItem.getPrice ()를 )
orderItem.setPayMoney (orderItem.getNum () * orderItem.getPrice ());
} 다른 {
// 존재하지 않는 새로운 카트
결과 <SKU> = skuResultskuFeign.findById (skuId)
SKU SKU = skuResult.getData ();
SPU SPU = spuFeign.findByspuId (sku.getSpuId ());
// OrderItem에 SKU로 변환
OrderItem에가 = 이 본 .sku2OrderItem (SKU, SPU, NUM)를;
}
// 저장 레디 스의
redisTemplate.boundHashOps합니다 (카트 + 이름) .put (skuId, OrderItem에) 저장된 값을 // 레디 스
}
// SKU OrderItem에 변환
개인 OrderItem에 sku2OrderItem (SKU SKU, SPU SPU, 정수 NUM) {
OrderItem에 OrderItem에 = 새로운 새 OrderItem에 ();
orderItem.setSpuId (sku.getSpuId ());
orderItem.setSkuId (sku.getId ());
orderItem.setName (sku.getName ());
orderItem.setPrice (sku.getPrice ());
orderItem.setNum (NUM)
orderItem.setMoney (NUM의 *의 orderItem.getPrice ( )); // 가격 * 수량
orderItem.setPayMoney (NUM * orderItem.getPrice ()); // 실제로 지불 한 금액
orderItem.setImage (sku.getImage ());
orderItem.setWeight (sku.getWeight () ) * NUM; // 개별 중량의 수 = *
// 설정하는 분류 ID
orderItem.setCategoryId1 (spu.getCategory1Id ());
orderItem.setCategoryId2 (spu.getCategory2Id ());
orderItem.setCategoryId3 (spu.getCategory3Id ());
반환 OrderItem에를;
}
}
redisTemplate.boundHashOps합니다 (카트 + 이름) .put (skuId, OrderItem에); // 레디 스에 값을 저장
redisTemplate.boundHashOps (CART + 자명) 갔지 ( skuId) // 레디 스의 값이
주목 해시 유형에 저장된 값은 상기 키 필드는 복수의 복수에 해당 할 수있다이 방법에 레디 스를 boundHashOps, 값에 대응하는 필드. 객체의 해시 혜택의 한 종류로 저장 : 각 필드에 비교 문자열 유형이 더 많은 메모리를 저장, 따로 저장합니다.