package com.ruoyi.other.controller;
|
|
|
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.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.redis.annotation.DistributedLock;
|
import com.ruoyi.other.api.domain.Goods;
|
import com.ruoyi.other.service.GoodsService;
|
import com.ruoyi.other.vo.GoodsVO;
|
import io.swagger.annotations.*;
|
import org.springframework.web.bind.annotation.*;
|
|
import javax.annotation.Resource;
|
import java.util.List;
|
|
/**
|
* <p>
|
* 前端控制器
|
* </p>
|
*
|
* @author luodangjia
|
* @since 2024-11-20
|
*/
|
@RestController
|
@RequestMapping("/goods")
|
@Api("商品")
|
public class GoodsController extends BaseController {
|
@Resource
|
private GoodsService goodsService;
|
|
/**
|
* 添加商品
|
*/
|
@PostMapping("/addGoods")
|
@ApiOperation(value = "发布商品", tags = {"管理后台-商品管理"})
|
public R<Void> addGoods(@RequestBody Goods goods) {
|
if(goods.getPurchaseLimit()==null){
|
goods.setPurchaseLimit(-1);
|
}
|
goodsService.addGoods(goods);
|
return R.ok();
|
}
|
|
/**
|
* 商品克隆
|
*/
|
@GetMapping("/cloneGoods")
|
@ApiOperation(value = "商品克隆", tags = {"管理后台-商品管理"})
|
public R<Void> cloneGoods(@RequestParam Long goodsId,@RequestParam String goodsName) {
|
Goods goods = goodsService.getManageGoodsDetail(goodsId);
|
goods.setId(null);
|
goods.setName(goodsName);
|
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){
|
if(goods.getPurchaseLimit()==null){
|
goods.setPurchaseLimit(-1);
|
}
|
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){
|
Goods goods = goodsService.getById(goodsId);
|
goods.setDelFlag(1);
|
goodsService.updateById(goods);
|
return R.ok();
|
}
|
|
|
|
|
|
/**
|
* 商品列表
|
*/
|
@GetMapping("/goodsList")
|
@ApiOperation(value = "热门商品列表", tags = {"小程序-商城-首页", "小程序-首页"})
|
public R<PageInfo<GoodsVO>> goodsList(Goods goods){
|
return R.ok(goodsService.goodsList(goods));
|
}
|
|
|
/**
|
* 指定门店商品
|
*/
|
@GetMapping("/getGoodsListByShopId")
|
@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));
|
}
|
|
|
/**
|
* 商品详情
|
*/
|
@GetMapping("/goodsDetail/{goodsId}")
|
@ApiOperation(value = "商品详情", tags = {"小程序-商城-首页"})
|
public R<GoodsVO> goodsDetail(@PathVariable("goodsId") Long goodsId,
|
Integer shopId,
|
String longitude,
|
String latitude) {
|
return R.ok(goodsService.goodsDetail(goodsId, shopId, longitude, latitude));
|
}
|
|
|
/**
|
* 根据类型(1=服务商品,2=单品商品)获取商品数据
|
* @param type
|
* @return
|
*/
|
@ResponseBody
|
@PostMapping("/getGoodsByType")
|
public R<List<Goods>> getGoodsByType(@RequestParam("type") Integer type){
|
List<Goods> list = goodsService.list(new LambdaQueryWrapper<Goods>().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<Goods> getGoodsById(@RequestParam("id") Integer id){
|
Goods goods = goodsService.getById(id);
|
return R.ok(goods);
|
}
|
|
@ResponseBody
|
@PostMapping("/getGoodsByIds")
|
public R<List<Goods>> getGoodsByIds(@RequestParam("ids") String [] ids){
|
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();
|
}
|
|
|
/**
|
* 商品销量增加
|
*/
|
@PutMapping("/editGoodsNum")
|
@DistributedLock(lockNamePre = "#goods_lock", lockNamePost = "#goodsId")
|
public R<Void> editGoodsNum(@RequestParam("goodsId") Integer goodsId, @RequestParam("num") Integer num){
|
Goods goods = goodsService.getById(goodsId);
|
goods.setSaleNum(goods.getSaleNum() + num);
|
goodsService.updateById(goods);
|
return R.ok();
|
}
|
|
|
/**
|
* 获取所有商品
|
* @return
|
*/
|
@PostMapping("/getAllGoods")
|
public R<List<Goods>> getAllGoods(){
|
List<Goods> list = goodsService.list(new LambdaQueryWrapper<Goods>().eq(Goods::getDelFlag, 0).eq(Goods::getStatus, 2));
|
return R.ok(list);
|
}
|
}
|