From e7f3e1dde9b223303cb546da068bd97c2fba2df5 Mon Sep 17 00:00:00 2001 From: zhangsan <646228430@qq.com> Date: Fri, 19 Apr 2024 13:45:29 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B4=AD=E7=89=A9=E8=BD=A6=E7=9B=B8=E5=85=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/sky/config/WebMvcConfiguration.java | 2 +- .../user/ShoppingCartController.java | 52 ++++++++++ .../interceptor/JwtTokenUserInterceptor.java | 6 +- .../com/sky/mapper/ShoppingCartMapper.java | 21 ++++ .../com/sky/service/ShoppingCartService.java | 16 +++ .../service/impl/ShoppingCartServiceImpl.java | 98 +++++++++++++++++++ .../resources/mapper/ShoppingCartMapper.xml | 23 +++++ 7 files changed, 214 insertions(+), 4 deletions(-) create mode 100644 sky-server/src/main/java/com/sky/controller/user/ShoppingCartController.java create mode 100644 sky-server/src/main/java/com/sky/mapper/ShoppingCartMapper.java create mode 100644 sky-server/src/main/java/com/sky/service/ShoppingCartService.java create mode 100644 sky-server/src/main/java/com/sky/service/impl/ShoppingCartServiceImpl.java create mode 100644 sky-server/src/main/resources/mapper/ShoppingCartMapper.xml diff --git a/sky-server/src/main/java/com/sky/config/WebMvcConfiguration.java b/sky-server/src/main/java/com/sky/config/WebMvcConfiguration.java index 1ad3b15..4657bed 100644 --- a/sky-server/src/main/java/com/sky/config/WebMvcConfiguration.java +++ b/sky-server/src/main/java/com/sky/config/WebMvcConfiguration.java @@ -45,7 +45,7 @@ public class WebMvcConfiguration extends WebMvcConfigurationSupport { .excludePathPatterns("/admin/employee/login"); registry.addInterceptor(jwtTokenUserInterceptor) - .addPathPatterns("user/**") + .addPathPatterns("/user/**") .excludePathPatterns("/user/user/login") .excludePathPatterns("/user/shop/status"); } diff --git a/sky-server/src/main/java/com/sky/controller/user/ShoppingCartController.java b/sky-server/src/main/java/com/sky/controller/user/ShoppingCartController.java new file mode 100644 index 0000000..6be5a36 --- /dev/null +++ b/sky-server/src/main/java/com/sky/controller/user/ShoppingCartController.java @@ -0,0 +1,52 @@ +package com.sky.controller.user; + +import com.sky.dto.ShoppingCartDTO; +import com.sky.entity.ShoppingCart; +import com.sky.result.Result; +import com.sky.service.ShoppingCartService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +@RestController +@RequestMapping("/user/shoppingCart") +@Slf4j +@Api(tags = "C端-购物车相关接口") +public class ShoppingCartController { + @Autowired + private ShoppingCartService shoppingCartService; + @PostMapping("/add") + @ApiOperation("添加购物车") + public Result addCart(@RequestBody ShoppingCartDTO shoppingCartDTO){ + log.info("添加购物车:{}", shoppingCartDTO); + shoppingCartService.addCart(shoppingCartDTO); + return Result.success(); + } + @GetMapping("/list") + @ApiOperation("查看购物车") + public Result> list(){ + return Result.success(shoppingCartService.showShoppingCart()); + } + /** + * 清空购物车商品 + * @return + */ + @DeleteMapping("/clean") + @ApiOperation("清空购物车商品") + public Result clean(){ + log.info("清空购物车"); + shoppingCartService.cleanShoppingCart(); + return Result.success(); + } + @PostMapping("/sub") + @ApiOperation("减少购物车商品") + public Result subCart(@RequestBody ShoppingCartDTO shoppingCartDTO){ + log.info("减少购物车:{}",shoppingCartDTO); + shoppingCartService.subCart(shoppingCartDTO); + return Result.success(); + } +} diff --git a/sky-server/src/main/java/com/sky/interceptor/JwtTokenUserInterceptor.java b/sky-server/src/main/java/com/sky/interceptor/JwtTokenUserInterceptor.java index aa0bc1f..f4933a7 100644 --- a/sky-server/src/main/java/com/sky/interceptor/JwtTokenUserInterceptor.java +++ b/sky-server/src/main/java/com/sky/interceptor/JwtTokenUserInterceptor.java @@ -41,14 +41,14 @@ public class JwtTokenUserInterceptor implements HandlerInterceptor { } //1、从请求头中获取令牌 - String token = request.getHeader(jwtProperties.getAdminTokenName()); + String token = request.getHeader(jwtProperties.getUserTokenName()); //2、校验令牌 try { log.info("jwt校验:{}", token); - Claims claims = JwtUtil.parseJWT(jwtProperties.getAdminSecretKey(), token); + Claims claims = JwtUtil.parseJWT(jwtProperties.getUserSecretKey(), token); Long userId = Long.valueOf(claims.get(JwtClaimsConstant.USER_ID).toString()); - log.info("当前员工id:", userId); + log.info("当前用户id:", userId); BaseContext.setCurrentId(userId); //3、通过,放行 return true; diff --git a/sky-server/src/main/java/com/sky/mapper/ShoppingCartMapper.java b/sky-server/src/main/java/com/sky/mapper/ShoppingCartMapper.java new file mode 100644 index 0000000..4367c38 --- /dev/null +++ b/sky-server/src/main/java/com/sky/mapper/ShoppingCartMapper.java @@ -0,0 +1,21 @@ +package com.sky.mapper; + +import com.sky.entity.ShoppingCart; +import org.apache.ibatis.annotations.Delete; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +@Mapper +public interface ShoppingCartMapper { + + List list(ShoppingCart shoppingCart); + + void updateNumberById(ShoppingCart shoppingCart); + + void insert(ShoppingCart shoppingCart); + @Delete("delete from shopping_cart where user_id = #{userId}") + void deleteByUserId(Long currentId); + @Delete("delete from shopping_cart where id = #{id}") + void deleteById(Long id); +} diff --git a/sky-server/src/main/java/com/sky/service/ShoppingCartService.java b/sky-server/src/main/java/com/sky/service/ShoppingCartService.java new file mode 100644 index 0000000..e3d4376 --- /dev/null +++ b/sky-server/src/main/java/com/sky/service/ShoppingCartService.java @@ -0,0 +1,16 @@ +package com.sky.service; + +import com.sky.dto.ShoppingCartDTO; +import com.sky.entity.ShoppingCart; + +import java.util.List; + +public interface ShoppingCartService { + void addCart(ShoppingCartDTO shoppingCartDTO); + + List showShoppingCart(); + + void cleanShoppingCart(); + + void subCart(ShoppingCartDTO shoppingCartDTO); +} diff --git a/sky-server/src/main/java/com/sky/service/impl/ShoppingCartServiceImpl.java b/sky-server/src/main/java/com/sky/service/impl/ShoppingCartServiceImpl.java new file mode 100644 index 0000000..21f6815 --- /dev/null +++ b/sky-server/src/main/java/com/sky/service/impl/ShoppingCartServiceImpl.java @@ -0,0 +1,98 @@ +package com.sky.service.impl; + +import com.sky.context.BaseContext; +import com.sky.dto.ShoppingCartDTO; +import com.sky.entity.Dish; +import com.sky.entity.Setmeal; +import com.sky.entity.ShoppingCart; +import com.sky.mapper.DishMapper; +import com.sky.mapper.SetmealMapper; +import com.sky.mapper.ShoppingCartMapper; +import com.sky.service.ShoppingCartService; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.time.LocalDateTime; +import java.util.List; + +@Service +public class ShoppingCartServiceImpl implements ShoppingCartService { + @Autowired + private ShoppingCartMapper shoppingCartMapper; + @Autowired + private DishMapper dishMapper; + @Autowired + private SetmealMapper setmealMapper; + + @Override + public void addCart(ShoppingCartDTO shoppingCartDTO) { + ShoppingCart shoppingCart=new ShoppingCart(); + BeanUtils.copyProperties(shoppingCartDTO,shoppingCart); + shoppingCart.setUserId(BaseContext.getCurrentId()); + List shoppingCartList = shoppingCartMapper.list(shoppingCart); + if (shoppingCartList != null && shoppingCartList.size() == 1) { + //如果已经存在,就更新数量,数量加1 + shoppingCart = shoppingCartList.get(0); + shoppingCart.setNumber(shoppingCart.getNumber() + 1); + shoppingCartMapper.updateNumberById(shoppingCart); + } else { + //如果不存在,插入数据,数量就是1 + + //判断当前添加到购物车的是菜品还是套餐 + Long dishId = shoppingCartDTO.getDishId(); + if (dishId != null) { + //添加到购物车的是菜品 + Dish dish = dishMapper.queryById(dishId); + shoppingCart.setName(dish.getName()); + shoppingCart.setImage(dish.getImage()); + shoppingCart.setAmount(dish.getPrice()); + } else { + //添加到购物车的是套餐 + Setmeal setmeal = setmealMapper.getById(shoppingCartDTO.getSetmealId()); + shoppingCart.setName(setmeal.getName()); + shoppingCart.setImage(setmeal.getImage()); + shoppingCart.setAmount(setmeal.getPrice()); + } + shoppingCart.setNumber(1); + shoppingCart.setCreateTime(LocalDateTime.now()); + shoppingCartMapper.insert(shoppingCart); + } + } + + @Override + /** + * 查看购物车 + * @return + */ + public List showShoppingCart() { + return shoppingCartMapper.list(ShoppingCart. + builder(). + userId(BaseContext.getCurrentId()). + build()); + } + + @Override + public void cleanShoppingCart() { + shoppingCartMapper.deleteByUserId(BaseContext.getCurrentId()); + } + + @Override + public void subCart(ShoppingCartDTO shoppingCartDTO) { + ShoppingCart shoppingCart=new ShoppingCart(); + BeanUtils.copyProperties(shoppingCartDTO,shoppingCart); + shoppingCart.setUserId(BaseContext.getCurrentId()); + List shoppingCartList = shoppingCartMapper.list(shoppingCart); + if (shoppingCartList != null && shoppingCartList.size() == 1) { + //如果已经存在,就更新数量 + shoppingCart = shoppingCartList.get(0); + if(shoppingCart.getNumber() -1==0) + //删除某一项 + shoppingCartMapper.deleteById(shoppingCart.getId()); + else { + shoppingCart.setNumber(shoppingCart.getNumber() - 1); + shoppingCartMapper.updateNumberById(shoppingCart); + } + } + } +} diff --git a/sky-server/src/main/resources/mapper/ShoppingCartMapper.xml b/sky-server/src/main/resources/mapper/ShoppingCartMapper.xml new file mode 100644 index 0000000..1d4d1ab --- /dev/null +++ b/sky-server/src/main/resources/mapper/ShoppingCartMapper.xml @@ -0,0 +1,23 @@ + + + + + insert into shopping_cart (name, user_id, dish_id, setmeal_id, dish_flavor, number, amount, image, create_time) + values (#{name},#{userId},#{dishId},#{setmealId},#{dishFlavor},#{number},#{amount},#{image},#{createTime}) + + + update shopping_cart set number = #{number} where id = #{id} + + + + \ No newline at end of file