puzhibing
2025-01-13 acccff9860b271d55c55dc87486f7c20b9896e6c
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/GoodsController.java
@@ -2,15 +2,21 @@
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.plugins.pagination.PageDTO;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.web.controller.BaseController;
import com.ruoyi.common.core.web.page.PageInfo;
import com.ruoyi.common.core.web.page.TableDataInfo;
import com.ruoyi.other.api.domain.Goods;
import com.ruoyi.other.api.domain.VipSetting;
import com.ruoyi.other.api.feignClient.VipSettingClient;
import com.ruoyi.other.service.GoodsService;
import com.ruoyi.other.service.VipSettingService;
import com.ruoyi.other.vo.GoodsVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import io.swagger.annotations.*;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
@@ -26,18 +32,115 @@
 */
@RestController
@RequestMapping("/goods")
@Api(tags = "商品")
@Api("商品")
public class GoodsController extends BaseController {
    @Resource
    private GoodsService goodsService;
    @Resource
    private VipSettingClient settingClient;
    @Resource
    private VipSettingService vipSettingService;
    /**
     * 添加商品
     */
    @PostMapping("/addGoods")
    @ApiOperation(value = "添加商品", tags = {"管理后台-发布商品"})
    @ApiOperation(value = "发布商品", tags = {"管理后台-商品管理"})
    public R<Void> addGoods(@RequestBody Goods goods) {
        goodsService.addGoods(goods);
        return R.ok();
    }
    /**
     * 管理后台商品列表
     */
    @GetMapping("/manageGoodsList")
    @ApiOperation(value = "商品列表", tags = {"管理后台-商品管理"})
    public R<IPage<Goods>> manageGoodsList(@ApiParam("页码") @RequestParam Integer pageNum,
                                           @ApiParam("每一页数据大小") Integer pageSize,
                                           Goods goods){
        return R.ok(goodsService.getManageGoodsList(new Page<>(pageNum, pageSize), goods));
    }
    /**
     * 后台商品详情
     */
    @GetMapping("/manageGoodsDetail/{goodsId}")
    @ApiOperation(value = "商品详情", tags = {"管理后台-商品管理"})
    public R<Goods> manageGoodsDetail(@PathVariable("goodsId") Long goodsId){
        return R.ok(goodsService.getManageGoodsDetail(goodsId));
    }
    /**
     * 后台商品修改
     */
    @PutMapping("/manageGoodsUpdate")
    @ApiOperation(value = "商品修改", tags = {"管理后台-商品管理"})
    public R<Void> manageGoodsUpdate(@RequestBody Goods goods){
        goodsService.updateManageGoods(goods);
        if (goods.getType()==2){
            goods.setAppointStore(2);
            goodsService.updateById(goods);
        }
        if (goods.getType()==1){
            LambdaUpdateWrapper<Goods> goodsLambdaUpdateWrapper = new LambdaUpdateWrapper<>();
            goodsLambdaUpdateWrapper.set(Goods::getDistributionMode,null);
            goodsLambdaUpdateWrapper.eq(Goods::getId, goods.getId());
            goodsService.update(goodsLambdaUpdateWrapper);
        }
        return R.ok();
    }
    @PutMapping("/editGoodsSort")
    @ApiOperation(value = "商品修改排序", tags = {"管理后台-商品管理"})
    @ApiImplicitParams({
            @ApiImplicitParam(value = "商品id", name = "id", dataType = "int", required = true),
            @ApiImplicitParam(value = "排序", name = "sort", dataType = "int", required = true),
    })
    public R editGoodsSort(@RequestParam("id") Integer id, @RequestParam("sort") Integer sort){
        Goods goods = goodsService.getById(id);
        goods.setSort(sort);
        goodsService.updateById(goods);
        return R.ok();
    }
    /**
     * 更新上/下架状态
     */
    @PutMapping("/manageGoodsStatus/{goodsId}/{status}")
    @ApiOperation(value = "商品上/下架", tags = {"管理后台-商品管理"})
    public R<Void> manageGoodsStatus(@PathVariable("goodsId") Long goodsId,
                                     @PathVariable("status") Integer status){
        goodsService.lambdaUpdate().eq(Goods::getId, goodsId).set(Goods::getStatus, status).update();
        return R.ok();
    }
    /**
     * 后台商品删除
     */
    @DeleteMapping("/manageGoodsDelete/{goodsId}")
    @ApiOperation(value = "商品删除", tags = {"管理后台-商品管理"})
    public R<Void> manageGoodsDelete(@PathVariable("goodsId") Long goodsId){
        long count = vipSettingService.count(new LambdaQueryWrapper<VipSetting>().last(" where FIND_IN_SET(" + goodsId + ", good_ids)"));
        if(0 < count){
            return R.fail("商品已被会员配置使用,不能删除");
        }
        goodsService.removeById(goodsId);
        return R.ok();
    }
    /**
     * 获取会员等级信息
     */
    @GetMapping("/getVipSetting")
    @ApiOperation(value = "会员等级信息", tags = {"管理后台-商品管理"})
    public R<List<VipSetting>> getVipSetting(){
        return settingClient.info();
    }
@@ -46,10 +149,9 @@
     * 商品列表
     */
    @GetMapping("/goodsList")
    @ApiOperation(value = "商品列表", tags = {"小程序-商城-首页-热门商品列表", "首页热门商品-小程序"})
    public R<TableDataInfo> goodsList(Goods goods){
        startPage();
        return R.ok(getDataTable(goodsService.goodsList(goods)));
    @ApiOperation(value = "热门商品列表", tags = {"小程序-商城-首页", "小程序-首页"})
    public R<PageInfo<GoodsVO>> goodsList(Goods goods){
        return R.ok(goodsService.goodsList(goods));
    }
@@ -57,10 +159,11 @@
     * 指定门店商品
     */
    @GetMapping("/getGoodsListByShopId")
    @ApiOperation(value = "商品列表", tags = {"小程序-首页-门店详情-商品购买列表"})
    public R<TableDataInfo> getGoodsListByShopId(@ApiParam("门店id") @RequestParam Integer shopId) {
        startPage();
        return R.ok(getDataTable(goodsService.getGoodsListByShopId(shopId)));
    @ApiOperation(value = "商品购买列表", tags = {"小程序-首页-门店详情"})
    public R<PageInfo<Goods>> getGoodsListByShopId(@ApiParam("门店id") Integer shopId, Integer pageCurr, Integer pageSize) {
        PageInfo<Goods> pageInfo = new PageInfo(pageCurr, pageSize);
        List<Goods> goodsList = goodsService.getGoodsListByShopId(pageInfo, shopId);
        return R.ok(pageInfo.setRecords(goodsList));
    }
@@ -68,9 +171,9 @@
     * 商品详情
     */
    @GetMapping("/goodsDetail/{goodsId}")
    @ApiOperation(value = "商品详情", tags = {"小程序-商城-首页-商品详情"})
    public R<GoodsVO> goodsDetail(@PathVariable("goodsId") Long goodsId){
        return R.ok(goodsService.goodsDetail(goodsId));
    @ApiOperation(value = "商品详情", tags = {"小程序-商城-首页"})
    public R<GoodsVO> goodsDetail(@PathVariable("goodsId") Long goodsId, String longitude, String latitude){
        return R.ok(goodsService.goodsDetail(goodsId, longitude, latitude));
    }
    
    
@@ -102,9 +205,20 @@
    @ResponseBody
    @PostMapping("/getGoodsByIds")
    public R<List<Goods>> getGoodsByIds(@RequestParam("ids") String [] ids){
        List<Goods> goods = goodsService.lambdaQuery().in(Goods::getId, ids).eq(Goods::getStatus, 0).list();
        List<Goods> goods = goodsService.lambdaQuery().in(Goods::getId, ids).list();
        return R.ok(goods);
    }
    /**
     * 编辑商品
     * @param goods
     * @return
     */
    @PostMapping("/editGoodsList")
    public R editGoodsList(@RequestBody List<Goods> goods){
        goodsService.updateBatchById(goods);
        return R.ok();
    }
}