package com.ruoyi.other.controller;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.web.controller.BaseController;
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.vo.GoodsVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.List;
/**
*
* 前端控制器
*
*
* @author luodangjia
* @since 2024-11-20
*/
@RestController
@RequestMapping("/goods")
@Api("商品")
public class GoodsController extends BaseController {
@Resource
private GoodsService goodsService;
@Resource
private VipSettingClient settingClient;
/**
* 添加商品
*/
@PostMapping("/addGoods")
@ApiOperation(value = "发布商品", tags = {"管理后台-商品管理"})
public R addGoods(@RequestBody Goods goods) {
goodsService.addGoods(goods);
return R.ok();
}
/**
* 管理后台商品列表
*/
@GetMapping("/manageGoodsList")
@ApiOperation(value = "商品列表", tags = {"管理后台-商品管理"})
public R> 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 manageGoodsDetail(@PathVariable("goodsId") Long goodsId){
return R.ok(goodsService.getManageGoodsDetail(goodsId));
}
/**
* 后台商品修改
*/
@PutMapping("/manageGoodsUpdate")
@ApiOperation(value = "商品修改", tags = {"管理后台-商品管理"})
public R manageGoodsUpdate(@RequestBody Goods goods){
goodsService.updateManageGoods(goods);
return R.ok();
}
/**
* 更新上/下架状态
*/
@PutMapping("/manageGoodsStatus/{goodsId}/{status}")
@ApiOperation(value = "商品上/下架", tags = {"管理后台-商品管理"})
public R 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 manageGoodsDelete(@PathVariable("goodsId") Long goodsId){
goodsService.removeById(goodsId);
return R.ok();
}
/**
* 获取会员等级信息
*/
@GetMapping("/getVipSetting")
@ApiOperation(value = "会员等级信息", tags = {"管理后台-商品管理"})
public R> getVipSetting(){
return settingClient.info();
}
/**
* 商品列表
*/
@GetMapping("/goodsList")
@ApiOperation(value = "热门商品列表", tags = {"小程序-商城-首页", "小程序-首页"})
public R goodsList(Goods goods){
startPage();
return R.ok(getDataTable(goodsService.goodsList(goods)));
}
/**
* 指定门店商品
*/
@GetMapping("/getGoodsListByShopId")
@ApiOperation(value = "商品购买列表", tags = {"小程序-首页-门店详情"})
public R getGoodsListByShopId(@ApiParam("门店id") @RequestParam Integer shopId) {
startPage();
return R.ok(getDataTable(goodsService.getGoodsListByShopId(shopId)));
}
/**
* 商品详情
*/
@GetMapping("/goodsDetail/{goodsId}")
@ApiOperation(value = "商品详情", tags = {"小程序-商城-首页"})
public R goodsDetail(@PathVariable("goodsId") Long goodsId){
return R.ok(goodsService.goodsDetail(goodsId));
}
/**
* 根据类型(1=服务商品,2=单品商品)获取商品数据
* @param type
* @return
*/
@ResponseBody
@PostMapping("/getGoodsByType")
public R> getGoodsByType(@RequestParam("type") Integer type){
List list = goodsService.list(new LambdaQueryWrapper().eq(Goods::getType, type).eq(Goods::getDelFlag, 0).eq(Goods::getStatus, 2));
return R.ok(list);
}
/**
* 根据id获取商品信息
* @param id
* @return
*/
@ResponseBody
@PostMapping("/getGoodsById")
public R getGoodsById(@RequestParam("id") Integer id){
Goods goods = goodsService.getById(id);
return R.ok(goods);
}
@ResponseBody
@PostMapping("/getGoodsByIds")
public R> getGoodsByIds(@RequestParam("ids") String [] ids){
List goods = goodsService.lambdaQuery().in(Goods::getId, ids).list();
return R.ok(goods);
}
}