Explorar el Código

积分购物车/河山IM/蒙牛im

三七 hace 2 semanas
padre
commit
313e0275e2

+ 11 - 0
fs-service/src/main/java/com/fs/his/domain/FsIntegralCart.java

@@ -4,13 +4,20 @@ import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
 import lombok.Data;
+import lombok.NoArgsConstructor;
 
 import java.math.BigDecimal;
 import java.time.LocalDateTime;
 
 @TableName("fs_integral_cart")
 @Data
+@Builder
+@NoArgsConstructor      // 无参构造
+@AllArgsConstructor
 public class FsIntegralCart {
     /**
      * 主键ID
@@ -51,4 +58,8 @@ public class FsIntegralCart {
      */
     @TableField(exist = false)
     private Boolean addToExist;
+
+    @ApiModelProperty("是否选中:1是,0否")
+    @TableField("is_selected")
+    private Boolean isSelected;
 }

+ 6 - 0
fs-service/src/main/java/com/fs/his/mapper/FsIntegralCartMapper.java

@@ -2,7 +2,9 @@ package com.fs.his.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.fs.his.domain.FsIntegralCart;
+import com.fs.his.param.GetFsIntegralCartListParam;
 import com.fs.his.vo.FsIntegralCartVO;
+import com.fs.his.vo.GetFsIntegralCartListVo;
 import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Update;
 
@@ -39,4 +41,8 @@ public interface FsIntegralCartMapper extends BaseMapper<FsIntegralCart> {
 
     @Update("update fs_integral_cart set integral = #{integral} where goods_id = #{goodsId}")
     void updateIntegralByGoodsId(@Param("goodsId")Long goodsId,@Param("integral") Long integral);
+
+    List<GetFsIntegralCartListVo> getFsIntegralCartList(@Param("param") GetFsIntegralCartListParam param, @Param("aLong") Long aLong, @Param("cartId") List<Long> cartId);
+
+    int updateQuantityAtomically(@Param("userId") Long userId, @Param("goodsId") Long goodsId, @Param("addQuantity") Integer addQuantity, @Param("maxQuantity") int maxQuantity);
 }

+ 26 - 0
fs-service/src/main/java/com/fs/his/param/AddGoodsIntoCartParam.java

@@ -0,0 +1,26 @@
+package com.fs.his.param;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.Max;
+import javax.validation.constraints.Min;
+import javax.validation.constraints.NotNull;
+
+@Data
+public class AddGoodsIntoCartParam {
+
+    @NotNull(message = "积分商品ID不能为空")
+    @ApiModelProperty("积分商品ID")
+    private Long goodsId;
+
+    @Max(value = 99, message = "单商品最多添加99件")
+    @Min(value = 1, message = "商品数量至少为1")
+    @NotNull(message = "商品数量不能为空")
+    @ApiModelProperty("商品数量")
+    private Integer quantity;
+
+    @NotNull(message = "是否选中:1是,0否,不能为空")
+    @ApiModelProperty("是否选中:1是,0否")
+    private Boolean isSelected;
+}

+ 17 - 0
fs-service/src/main/java/com/fs/his/param/GetFsIntegralCartDetailsParm.java

@@ -0,0 +1,17 @@
+package com.fs.his.param;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+import java.util.List;
+
+@Data
+public class GetFsIntegralCartDetailsParm {
+    @ApiModelProperty("收货地址ID")
+    private Long addressId;
+
+    @NotNull(message = "购物车ID不能为空")
+    @ApiModelProperty("购物车ID")
+    private List<Long> cartId;
+}

+ 14 - 0
fs-service/src/main/java/com/fs/his/param/GetFsIntegralCartListParam.java

@@ -0,0 +1,14 @@
+package com.fs.his.param;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class GetFsIntegralCartListParam {
+    @ApiModelProperty("商品名称")
+    private String goodsName;
+    @ApiModelProperty(value = "当前页,默认为1")
+    private Integer pageNum = 1;
+    @ApiModelProperty(value = "页容量,默认为10")
+    private Integer pageSize = 10;
+}

+ 12 - 0
fs-service/src/main/java/com/fs/his/service/IFsIntegralCartService.java

@@ -2,7 +2,12 @@ package com.fs.his.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.fs.his.domain.FsIntegralCart;
+import com.fs.his.param.AddGoodsIntoCartParam;
+import com.fs.his.param.GetFsIntegralCartDetailsParm;
+import com.fs.his.param.GetFsIntegralCartListParam;
 import com.fs.his.vo.FsIntegralCartVO;
+import com.fs.his.vo.GetFsIntegralCartDetailsVo;
+import com.fs.his.vo.GetFsIntegralCartListVo;
 
 import javax.validation.constraints.NotNull;
 import java.util.List;
@@ -48,4 +53,11 @@ public interface IFsIntegralCartService extends IService<FsIntegralCart> {
      * @return  list
      */
     List<FsIntegralCartVO> getCartByIds(Long userId, List<Long> ids);
+
+    List<GetFsIntegralCartListVo> getFsIntegralCartList(GetFsIntegralCartListParam param, Long aLong);
+
+    GetFsIntegralCartDetailsVo getFsIntegralCartDetails(GetFsIntegralCartDetailsParm param, Long userId);
+
+    Boolean addGoodsIntoCart(AddGoodsIntoCartParam param, Long userId);
+
 }

+ 106 - 4
fs-service/src/main/java/com/fs/his/service/impl/FsIntegralCartServiceImpl.java

@@ -5,25 +5,35 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.fs.common.core.domain.R;
 import com.fs.common.exception.CustomException;
+import com.fs.common.exception.ServiceException;
 import com.fs.his.domain.FsIntegralCart;
 import com.fs.his.domain.FsIntegralGoods;
 import com.fs.his.domain.FsUser;
+import com.fs.his.domain.FsUserAddress;
 import com.fs.his.mapper.FsIntegralCartMapper;
 import com.fs.his.mapper.FsIntegralGoodsMapper;
+import com.fs.his.mapper.FsUserAddressMapper;
 import com.fs.his.mapper.FsUserMapper;
+import com.fs.his.param.AddGoodsIntoCartParam;
+import com.fs.his.param.GetFsIntegralCartDetailsParm;
+import com.fs.his.param.GetFsIntegralCartListParam;
 import com.fs.his.service.IFsIntegralCartService;
 import com.fs.his.vo.FsIntegralCartVO;
+import com.fs.his.vo.GetCartGoodsDetailsVo;
+import com.fs.his.vo.GetFsIntegralCartDetailsVo;
+import com.fs.his.vo.GetFsIntegralCartListVo;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.ObjectUtils;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.dao.DuplicateKeyException;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
 import javax.validation.constraints.NotNull;
 import java.time.LocalDateTime;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
+import java.util.*;
 
 @Slf4j
 @Service
@@ -34,6 +44,12 @@ public class FsIntegralCartServiceImpl extends ServiceImpl<FsIntegralCartMapper,
     @Resource
     private FsUserMapper userMapper;
 
+    @Autowired
+    private FsUserAddressMapper fsUserAddressMapper;
+
+    @Autowired
+    private FsIntegralGoodsMapper fsIntegralGoodsMapper;
+
     /**
      * 添加或修改购物车
      *
@@ -128,4 +144,90 @@ public class FsIntegralCartServiceImpl extends ServiceImpl<FsIntegralCartMapper,
         params.put("ids", ids);
         return baseMapper.getCartsByMap(params);
     }
+
+    @Override
+    public List<GetFsIntegralCartListVo> getFsIntegralCartList(GetFsIntegralCartListParam param, Long aLong) {
+        return baseMapper.getFsIntegralCartList(param, aLong, null);
+    }
+
+    /**
+     * 获取用户购物车详情页
+     *
+     * @param param
+     * @param userId
+     * @return
+     */
+    @Override
+    public GetFsIntegralCartDetailsVo getFsIntegralCartDetails(GetFsIntegralCartDetailsParm param, Long userId) {
+        List<GetFsIntegralCartListVo> cartListVoList = baseMapper.getFsIntegralCartList(new GetFsIntegralCartListParam(), userId, param.getCartId());
+        GetFsIntegralCartDetailsVo vos = new GetFsIntegralCartDetailsVo();
+        ArrayList<GetCartGoodsDetailsVo> goodsDetailsVos = new ArrayList<>();
+        for (GetFsIntegralCartListVo listVo : cartListVoList) {
+            GetCartGoodsDetailsVo cartListVo = new GetCartGoodsDetailsVo();
+            BeanUtils.copyProperties(listVo, cartListVo);
+            cartListVo.setGoodsIntegralTotal(listVo.getGoodsIntegral() * listVo.getQuantity());
+            goodsDetailsVos.add(cartListVo);
+        }
+        if (ObjectUtils.isNotEmpty(param.getAddressId())) {
+            FsUserAddress address = fsUserAddressMapper.selectFsUserAddressByAddressId(param.getAddressId());
+            vos.setUserName(address.getRealName());
+            vos.setUserAddress(address.getProvince() + address.getCity() + address.getDistrict() + address.getDetail());
+            vos.setUserPhone(address.getPhone());
+            vos.setAddressId(address.getAddressId());
+        }
+        vos.setUserId(cartListVoList.get(0).getUserId());
+        vos.setUserIntegral(cartListVoList.get(0).getUserIntegral());
+        vos.setGoodsIntegralTotal(goodsDetailsVos.stream().filter(n -> ObjectUtils.isNotEmpty(n.getGoodsIntegralTotal())).mapToLong(GetCartGoodsDetailsVo::getGoodsIntegralTotal).sum());
+        vos.setGoodsDetailsVoList(goodsDetailsVos);
+        return vos;
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Boolean addGoodsIntoCart(AddGoodsIntoCartParam param, Long userId) {
+        // 查询现有购物车项
+        FsIntegralCart existingCart = baseMapper.selectOne(Wrappers.<FsIntegralCart>lambdaQuery().eq(FsIntegralCart::getUserId, userId).eq(FsIntegralCart::getGoodsId, param.getGoodsId()));
+        int finalQuantity;
+        // 查询商品最新状态
+        FsIntegralGoods freshGoods = fsIntegralGoodsMapper.selectFsIntegralGoodsByGoodsId(param.getGoodsId());
+        if (freshGoods == null || freshGoods.getStatus() != 1) {
+            try {
+                int deleteCount = baseMapper.delete(Wrappers.<FsIntegralCart>lambdaQuery().eq(FsIntegralCart::getUserId, userId).eq(FsIntegralCart::getGoodsId, param.getGoodsId()));
+                log.info("清除下架商品,userId:{}, goodsId:{},清除数量:{}", userId, param.getGoodsId(), deleteCount);
+            } catch (Exception e) {
+                log.error("清除下架商品失败,userId:{}, goodsId:{}", userId, param.getGoodsId(), e);
+            }
+            throw new ServiceException(String.format("商品[名称:%d]不存在或已下架", freshGoods.getGoodsName()));
+        }
+        int maxAllowed = Math.min((int) freshGoods.getStock().longValue(), 99);
+        if (existingCart != null) {
+            // 先做校验
+            finalQuantity = existingCart.getCartNum() + param.getQuantity();
+            if (finalQuantity > maxAllowed) {
+                if (existingCart.getCartNum() >= maxAllowed) {
+                    throw new ServiceException(String.format("商品已达最大购买数量%d件", maxAllowed));
+                }
+                int canAdd = maxAllowed - existingCart.getCartNum();
+                throw new ServiceException(String.format("最多还能购买%d件", canAdd));
+            }
+            int affectedRows = baseMapper.updateQuantityAtomically(userId, param.getGoodsId(), param.getQuantity(), maxAllowed);
+            if (affectedRows == 0) {
+                throw new ServiceException("添加失败,请重试");
+            }
+            return true;
+        } else {
+            // 新增购物车
+            if (param.getQuantity() > maxAllowed && param.getQuantity() > freshGoods.getStock()) {
+                throw new ServiceException(String.format("最多可购买%d件", freshGoods.getStock()));
+            }
+            try {
+                FsIntegralCart newCart = FsIntegralCart.builder().userId(userId).goodsId(param.getGoodsId()).cartNum(param.getQuantity()).isSelected(param.getIsSelected()).build();
+                return this.save(newCart);
+            } catch (DuplicateKeyException e) {
+                log.info("购物车并发插入,转为更新,userId:{}, goodsId:{}", userId, param.getGoodsId());
+                int affectedRows = baseMapper.updateQuantityAtomically(userId, param.getGoodsId(), param.getQuantity(), maxAllowed);
+                return affectedRows > 0;
+            }
+        }
+    }
 }

+ 43 - 0
fs-service/src/main/java/com/fs/his/vo/GetCartGoodsDetailsVo.java

@@ -0,0 +1,43 @@
+package com.fs.his.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class GetCartGoodsDetailsVo {
+    @ApiModelProperty("购物车ID")
+    private Long cartId;
+
+    @ApiModelProperty("商品id")
+    private Long goodsId;
+
+    @ApiModelProperty("封面图")
+    private String imgUrl;
+
+    @ApiModelProperty("组图")
+    private String images;
+
+    @ApiModelProperty("商品名称")
+    private String goodsName;
+
+    @ApiModelProperty("状态")
+    private Long status;
+
+    @ApiModelProperty("商品所需积分")
+    private Long goodsIntegral;
+
+    @ApiModelProperty("详情")
+    private String descs;
+
+    @ApiModelProperty("商品数量")
+    private Integer quantity;
+
+    @ApiModelProperty("是否选中:1是,0否")
+    private Integer isSelected;
+
+    @ApiModelProperty("创建时间(加入购物车时间)")
+    private String createTime;
+
+    @ApiModelProperty("商品所需积分之和")
+    private Long goodsIntegralTotal;
+}

+ 37 - 0
fs-service/src/main/java/com/fs/his/vo/GetFsIntegralCartDetailsVo.java

@@ -0,0 +1,37 @@
+package com.fs.his.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+@Data
+public class GetFsIntegralCartDetailsVo {
+
+    @ApiModelProperty("地址id")
+    private Long addressId;
+
+    @ApiModelProperty("用户id")
+    private Long userId;
+
+    @ApiModelProperty("用户名称")
+    private String userName;
+
+    @ApiModelProperty("用户电话")
+    private String userPhone;
+
+    @ApiModelProperty("用户地址")
+    private String userAddress;
+
+    @ApiModelProperty("所有商品所需积分之和")
+    private Long goodsIntegralTotal;
+
+    @ApiModelProperty("用户的芳华币总数")
+    private BigDecimal userIntegral;
+
+    @ApiModelProperty("商品信息")
+    private List<GetCartGoodsDetailsVo> goodsDetailsVoList;
+
+
+}

+ 63 - 0
fs-service/src/main/java/com/fs/his/vo/GetFsIntegralCartListVo.java

@@ -0,0 +1,63 @@
+package com.fs.his.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+public class GetFsIntegralCartListVo {
+    @ApiModelProperty("主键ID")
+    private Long cartId;
+
+    @ApiModelProperty("用户ID")
+    private Long userId;
+
+    @ApiModelProperty("积分商品ID")
+    private Long goodsId;
+
+    @ApiModelProperty("封面图")
+    private String imgUrl;
+
+    @ApiModelProperty("组图")
+    private String images;
+
+    @ApiModelProperty("商品名称")
+    private String goodsName;
+
+    @ApiModelProperty("原价")
+    private BigDecimal otPrice;
+
+    @ApiModelProperty("商品分类")
+    private Long goodsType;
+
+    @ApiModelProperty("状态")
+    private Long status;
+
+    @ApiModelProperty("商品所需积分")
+    private Long goodsIntegral;
+
+    @ApiModelProperty("库存")
+    private Long stock;
+
+    @ApiModelProperty("详情")
+    private String descs;
+
+    @ApiModelProperty("产品编码")
+    private String barCode;
+
+    @ApiModelProperty("商品数量")
+    private Integer quantity;
+
+    @ApiModelProperty("用户的芳华币总数")
+    private BigDecimal userIntegral;
+
+    @ApiModelProperty("是否选中:1是,0否")
+    private Integer isSelected;
+
+    @ApiModelProperty("创建时间(加入购物车时间)")
+    private String createTime;
+
+    @ApiModelProperty("更新时间")
+    private String updateTime;
+}

+ 27 - 0
fs-service/src/main/resources/mapper/his/FsIntegralCartMapper.xml

@@ -81,6 +81,33 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         </where>
     </select>
 
+    <select id="getFsIntegralCartList" resultType="com.fs.his.vo.GetFsIntegralCartListVo">
+        select fc.*,fg.*,fg.integral as goodsIntegral,fu.integral as userIntegral
+        from fs_integral_cart fc
+        left join fs_integral_goods fg on fc.goods_id = fg.goods_id
+        left join fs_user fu on fu.user_id = fc.user_id
+        <where>
+            <if test="aLong != null">
+                fc.user_id = #{aLong}
+            </if>
+            <if test="param.goodsName != null and param.goodsName != ''">
+                and fg.goods_name like concat('%', #{param.goodsName}, '%')
+            </if>
+            <if test="cartId != null and cartId.size() > 0">
+                and fc.cart_id in
+                <foreach collection="cartId" item="cartId" open="(" close=")" separator=",">#{cartId}</foreach>
+            </if>
+        </where>
+    </select>
+
+
+    <update id="updateQuantityAtomically">
+        UPDATE fs_integral_cart
+        SET quantity = LEAST(quantity + #{addQuantity}, #{maxQuantity}),
+            is_selected = 1,
+            update_time = NOW()
+        WHERE user_id = #{userId} AND goods_id = #{goodsId} AND quantity <![CDATA[<]]> #{maxQuantity}
+    </update>
     <delete id="deleteCartByGoodsId">
         delete from fs_integral_cart where goods_id = #{goodsId}
     </delete>

+ 8 - 8
fs-user-app/src/main/java/com/fs/app/controller/AppLoginController.java

@@ -759,14 +759,14 @@ public class AppLoginController extends AppBaseController{
     @PostMapping("/sendCode")
     public R sendCode(@RequestBody Map<String, String> body){
         String phone = body.get("phone");
-        String encryptPhone = encryptPhone(phone);
-        List<FsUser> user = userService.selectFsUserListByPhone(encryptPhone);
-        if(CollectionUtil.isEmpty(user)){
-            user = userService.selectFsUserListByPhone(encryptPhoneOldKey(phone));
-        }
-        if (CollectionUtil.isEmpty(user)){
-            return R.error("此电话号码未绑定用户");
-        }
+//        String encryptPhone = encryptPhone(phone);
+//        List<FsUser> user = userService.selectFsUserListByPhone(encryptPhone);
+//        if(CollectionUtil.isEmpty(user)){
+//            user = userService.selectFsUserListByPhone(encryptPhoneOldKey(phone));
+//        }
+//        if (CollectionUtil.isEmpty(user)){
+//            return R.error("此电话号码未绑定用户");
+//        }
 
         // 验证码 key(3分钟有效)
         String smsCodeKey = "sms:code:" + phone;

+ 87 - 0
fs-user-app/src/main/java/com/fs/app/controller/FsIntegralCartController.java

@@ -0,0 +1,87 @@
+package com.fs.app.controller;
+
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.fs.app.annotation.Login;
+import com.fs.common.core.domain.R;
+import com.fs.his.domain.FsIntegralCart;
+import com.fs.his.param.AddGoodsIntoCartParam;
+import com.fs.his.param.GetFsIntegralCartDetailsParm;
+import com.fs.his.param.GetFsIntegralCartListParam;
+import com.fs.his.service.IFsIntegralCartService;
+import com.fs.his.vo.GetFsIntegralCartDetailsVo;
+import com.fs.his.vo.GetFsIntegralCartListVo;
+import com.github.pagehelper.PageHelper;
+import com.github.pagehelper.PageInfo;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 积分购物车表 前端控制器
+ * </p>
+ *
+ * @author chenshiyi
+ * @since 2026-01-13
+ */
+@RestController
+@RequestMapping("/app/integralCart")
+public class FsIntegralCartController extends AppBaseController {
+
+    @Autowired
+    private IFsIntegralCartService fsIntegralCartService;
+
+
+    @Login
+    @ApiOperation("获取用户购物车列表")
+    @PostMapping("/getFsIntegralCartList")
+    public R getFsIntegralCartList(@RequestBody GetFsIntegralCartListParam param) {
+        PageHelper.startPage(param.getPageNum(), param.getPageSize());
+        Long aLong = Long.valueOf(getUserId());
+        List<GetFsIntegralCartListVo> list = fsIntegralCartService.getFsIntegralCartList(param, aLong);
+        PageInfo<GetFsIntegralCartListVo> listPageInfo = new PageInfo<>(list);
+        return R.ok().put("data", listPageInfo);
+    }
+
+    @Login
+    @ApiOperation("获取用户购物车详情页")
+    @PostMapping("/getFsIntegralCartDetails")
+    public R getFsIntegralCartDetails(@RequestBody GetFsIntegralCartDetailsParm param) {
+        Long userId = Long.valueOf(getUserId());
+        GetFsIntegralCartDetailsVo list = fsIntegralCartService.getFsIntegralCartDetails(param, userId);
+        return R.ok().put("data", list);
+    }
+
+    @Login
+    @ApiOperation("添加商品到购物车")
+    @PostMapping("/addGoodsIntoCart")
+    public R addGoodsIntoCart(@RequestBody AddGoodsIntoCartParam param) {
+        Long aLong = Long.valueOf(getUserId());
+        Boolean b = fsIntegralCartService.addGoodsIntoCart(param, aLong);
+        return b ? R.ok("添加商品成功") : R.error("添加商品失败");
+    }
+
+
+    @Login
+    @ApiOperation("修改购物车商品数量")
+    @PutMapping("/putGoodsQuantityFromCart")
+    public R putGoodsQuantityFromCart(@RequestParam Integer quantity, @RequestParam Long cartId) {
+        Long aLong = Long.valueOf(getUserId());
+        FsIntegralCart cart = FsIntegralCart.builder().id(cartId).cartNum(quantity).build();
+        Boolean b = fsIntegralCartService.update(cart, Wrappers.<FsIntegralCart>lambdaQuery().eq(FsIntegralCart::getUserId, aLong).eq(FsIntegralCart::getId, cartId));
+        return b ? R.ok("修改商品成功") : R.error("修改商品失败");
+    }
+
+
+    @Login
+    @ApiOperation("删除购物车商品")
+    @DeleteMapping("/deleteGoodsFromCart/{cartIds}")
+    public R deleteGoodsFromCart(@PathVariable List<Long> cartIds) {
+        Long aLong = Long.valueOf(getUserId());
+        Boolean b = fsIntegralCartService.remove(Wrappers.<FsIntegralCart>lambdaQuery().eq(FsIntegralCart::getUserId, aLong).in(FsIntegralCart::getId, cartIds));
+        return b ? R.ok("删除商品成功") : R.error("删除商品失败");
+    }
+
+}