修改商品数量

master
DongZeLiang 2024-04-09 17:26:51 +08:00
parent aa1b9f7979
commit d57a082384
5 changed files with 92 additions and 11 deletions

View File

@ -30,5 +30,5 @@ public class CartInfoEditNumReq {
/** /**
* *
*/ */
private String num; private Long num;
} }

View File

@ -0,0 +1,33 @@
package com.muyu.shop.cart.domain.req;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @author DongZl
* @description:
* @Date 2024/4/9 11:52
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class RemoveCartProjectReq {
/**
* ID
*/
private Long cartInfoId;
/**
* ID
*/
private Long projectId;
/**
* SKU
*/
private String projectSku;
}

View File

@ -7,14 +7,7 @@ import com.muyu.shop.cart.domain.req.*;
import com.muyu.shop.cart.domain.resp.CartDetailResp; import com.muyu.shop.cart.domain.resp.CartDetailResp;
import io.swagger.annotations.*; import io.swagger.annotations.*;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.muyu.common.core.domain.Result; import com.muyu.common.core.domain.Result;
import com.muyu.common.core.utils.poi.ExcelUtil; import com.muyu.common.core.utils.poi.ExcelUtil;
import com.muyu.common.core.web.controller.BaseController; import com.muyu.common.core.web.controller.BaseController;
@ -119,7 +112,7 @@ public class CartInfoController extends BaseController {
* @return * @return
*/ */
@PostMapping("/num") @PostMapping("/num")
public Result<String> CartInfoEditNum(@RequestBody CartInfoEditNumReq cartInfoEditNumReq){ public Result<String> cartInfoEditNum(@RequestBody CartInfoEditNumReq cartInfoEditNumReq){
cartInfoService.CartInfoEditNum(cartInfoEditNumReq); cartInfoService.CartInfoEditNum(cartInfoEditNumReq);
return Result.success(); return Result.success();
} }
@ -132,7 +125,18 @@ public class CartInfoController extends BaseController {
@DeleteMapping("/{ids}") @DeleteMapping("/{ids}")
@ApiOperation("删除购物车") @ApiOperation("删除购物车")
@ApiImplicitParam(name = "id", value = "id", required = true, dataType = "Long", paramType = "path", dataTypeClass = String.class, example = "1,2,3,4") @ApiImplicitParam(name = "id", value = "id", required = true, dataType = "Long", paramType = "path", dataTypeClass = String.class, example = "1,2,3,4")
public Result<String> remove(@PathVariable List<Long> ids) { public Result<String> removeByIds(@PathVariable List<Long> ids) {
return toAjax(cartInfoService.removeBatchByIds(ids)); return toAjax(cartInfoService.removeBatchByIds(ids));
} }
/**
*
*/
@RequiresPermissions("shopCart:Info:remove")
@DeleteMapping("/remove")
@ApiOperation("删除购物车")
public Result<String> remove(@RequestBody List<RemoveCartProjectReq> removeCartProjectReqList) {
cartInfoService.removeByRemoveCartProjectList(removeCartProjectReqList);
return Result.success();
}
} }

View File

@ -5,6 +5,7 @@ import com.muyu.shop.cart.domain.CartInfo;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.muyu.shop.cart.domain.req.CartInfoEditNumReq; import com.muyu.shop.cart.domain.req.CartInfoEditNumReq;
import com.muyu.shop.cart.domain.req.CartInfoIsSelectedUpdReq; import com.muyu.shop.cart.domain.req.CartInfoIsSelectedUpdReq;
import com.muyu.shop.cart.domain.req.RemoveCartProjectReq;
import com.muyu.shop.cart.domain.resp.CartDetailResp; import com.muyu.shop.cart.domain.resp.CartDetailResp;
/** /**
@ -43,4 +44,10 @@ public interface CartInfoService extends IService<CartInfo> {
void CartInfoEditNum (CartInfoEditNumReq cartInfoEditNumReq); void CartInfoEditNum (CartInfoEditNumReq cartInfoEditNumReq);
/**
*
* @param removeCartProjectReqList
* @return
*/
void removeByRemoveCartProjectList (List<RemoveCartProjectReq> removeCartProjectReqList);
} }

View File

@ -26,6 +26,7 @@ import com.muyu.shop.cart.domain.model.SkuRuleModel;
import com.muyu.shop.cart.domain.model.StatisticsCartModel; import com.muyu.shop.cart.domain.model.StatisticsCartModel;
import com.muyu.shop.cart.domain.req.CartInfoEditNumReq; import com.muyu.shop.cart.domain.req.CartInfoEditNumReq;
import com.muyu.shop.cart.domain.req.CartInfoIsSelectedUpdReq; import com.muyu.shop.cart.domain.req.CartInfoIsSelectedUpdReq;
import com.muyu.shop.cart.domain.req.RemoveCartProjectReq;
import com.muyu.shop.cart.domain.resp.CartDetailResp; import com.muyu.shop.cart.domain.resp.CartDetailResp;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@ -256,7 +257,43 @@ public class CartInfoServiceImpl extends ServiceImpl<CartInfoMapper, CartInfo>
@Override @Override
public void CartInfoEditNum (CartInfoEditNumReq cartInfoEditNumReq) { public void CartInfoEditNum (CartInfoEditNumReq cartInfoEditNumReq) {
LambdaUpdateWrapper<CartInfo> updateWrapper = new LambdaUpdateWrapper<>();
updateWrapper.set(CartInfo::getIsSelected, cartInfoEditNumReq.getNum());
updateWrapper.eq(CartInfo::getProjectId, cartInfoEditNumReq.getProjectId());
updateWrapper.eq(CartInfo::getProjectSku, cartInfoEditNumReq.getProjectSku());
this.update(updateWrapper);
Long userId = SecurityUtils.getUserId();
CartHashKey cartHashKey = CartHashKey.builder()
.projectId(cartInfoEditNumReq.getProjectId())
.projectSku(cartInfoEditNumReq.getProjectSku())
.build();
CartInfo cartInfo = this.cartCache.get(userId, cartHashKey);
cartInfo.setNum(cartInfoEditNumReq.getNum());
this.cartCache.put(userId, cartHashKey, cartInfo);
}
/**
*
*
* @param removeCartProjectReqList
*
* @return
*/
@Override
@Transactional(rollbackFor = Exception.class)
public void removeByRemoveCartProjectList (List<RemoveCartProjectReq> removeCartProjectReqList) {
this.removeByIds(
removeCartProjectReqList.stream()
.map(RemoveCartProjectReq::getCartInfoId)
.toList()
);
Long userId = SecurityUtils.getUserId();
removeCartProjectReqList.stream()
.map(removeCartProjectReq -> CartHashKey.builder()
.projectId(removeCartProjectReq.getProjectId())
.projectSku(removeCartProjectReq.getProjectSku())
.build()
).forEach(hk -> this.cartCache.remove(userId, hk));
} }
} }