Commit 4d5c2a29 authored by 万成波's avatar 万成波

积分商品

parent 7c1c8c48
package com.tangguo.controller;
import com.tangguo.common.annotation.Log;
import com.tangguo.common.core.controller.BaseController;
import com.tangguo.common.core.domain.AjaxResult;
import com.tangguo.common.core.page.TableDataInfo;
import com.tangguo.common.enums.BusinessType;
import com.tangguo.domain.BbsPointsGoods;
import com.tangguo.service.IBbsPointsGoodsService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.Arrays;
import java.util.List;
/**
* 积分商品Controller
*
* @author ruoyi
* @date 2025-08-28
*/
@Api(tags = "积分商品管理")
@RestController
@RequestMapping("/bbs/moment/goods")
public class BbsPointsGoodsController extends BaseController {
@Resource
private IBbsPointsGoodsService bbsPointsGoodsService;
/**
* 查询积分商品列表
*/
@ApiOperation("查询积分商品列表")
@PreAuthorize("@ss.hasPermi('goods:goods:list')")
@GetMapping("/list")
public TableDataInfo list(BbsPointsGoods bbsPointsGoods) {
startPage();
List<BbsPointsGoods> list = bbsPointsGoodsService.selectBbsPointsGoodsList(bbsPointsGoods);
return getDataTable(list);
}
/**
* 获取积分商品详细信息
*/
@ApiOperation("获取积分商品详细信息")
@PreAuthorize("@ss.hasPermi('goods:goods:query')")
@GetMapping(value = "/{id}")
public AjaxResult getInfo(@PathVariable("id") Long id) {
return success(bbsPointsGoodsService.getById(id));
}
/**
* 新增积分商品
*/
@ApiOperation("新增积分商品")
@PreAuthorize("@ss.hasPermi('goods:goods:add')")
@Log(title = "积分商品", businessType = BusinessType.INSERT)
@PostMapping
public AjaxResult add(@RequestBody BbsPointsGoods goods) {
this.bbsPointsGoodsService.addGoods(goods);
return AjaxResult.success();
}
/**
* 修改积分商品
*/
@ApiOperation("修改积分商品")
@PreAuthorize("@ss.hasPermi('goods:goods:edit')")
@Log(title = "积分商品", businessType = BusinessType.UPDATE)
@PutMapping
public AjaxResult edit(@RequestBody BbsPointsGoods goods) {
this.bbsPointsGoodsService.editGoods(goods);
return AjaxResult.success();
}
/**
* 删除积分商品
*/
@ApiOperation("删除积分商品")
@PreAuthorize("@ss.hasPermi('goods:goods:remove')")
@Log(title = "积分商品", businessType = BusinessType.DELETE)
@DeleteMapping("/{id}")
public AjaxResult remove(@PathVariable Long id) {
this.bbsPointsGoodsService.deleteGoods(id);
return AjaxResult.success();
}
}
package com.tangguo.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.tangguo.common.annotation.Excel;
import com.tangguo.common.core.domain.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;
import lombok.experimental.Accessors;
import java.math.BigDecimal;
/**
* 积分商品对象 bbs_points_goods
*
* @author ruoyi
* @date 2025-08-28
*/
@Data
@ToString
@NoArgsConstructor
@Accessors(chain = true)
@TableName("bbs_points_goods")
@ApiModel(value = "BbsPointsGoods", description = "积分商品实体")
public class BbsPointsGoods extends BaseEntity {
private static final long serialVersionUID = 1L;
/** ID */
@TableId(type = IdType.AUTO)
@ApiModelProperty("ID")
private Long id;
/** 商品名称 */
@Excel(name = "商品名称")
@ApiModelProperty("商品名称")
private String name;
/** 商品编码 */
@Excel(name = "商品编码")
@ApiModelProperty("商品编码")
private String code;
/** 商品图片地址 */
@Excel(name = "商品图片地址")
@ApiModelProperty("商品图片地址")
private String imgsUrl;
/** 销售价格 */
@Excel(name = "销售价格")
@ApiModelProperty("销售价格")
private BigDecimal salesPrice;
/** 兑换积分 */
@Excel(name = "兑换积分")
@ApiModelProperty("兑换积分")
private Integer exchangePoints;
/** 库存数量 */
@Excel(name = "库存数量")
@ApiModelProperty("库存数量")
private Integer stockNum;
/** 已兑数量 */
@Excel(name = "已兑数量")
@ApiModelProperty("已兑数量")
private Integer salesNum;
/** 上架状态:0 下架、1 上架 */
@Excel(name = "上架状态:0 下架、1 上架")
@ApiModelProperty("上架状态:0 下架、1 上架")
private Integer showStatus;
}
package com.tangguo.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* 商品上下架状态
*
* @author 谈笑
* @createTime 2025-08-28 16:32:15 星期四
*/
@Getter
@AllArgsConstructor
public enum ShowStatus {
SHOW(1, "上架"), NOT_SHOW(0, "下架");
private final int status;
private final String desc;
}
package com.tangguo.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.tangguo.domain.BbsPointsGoods;
/**
* 积分商品Mapper接口
*
* @author ruoyi
* @date 2025-08-28
*/
public interface BbsPointsGoodsMapper extends BaseMapper<BbsPointsGoods> {
}
package com.tangguo.service;
import java.util.List;
import com.baomidou.mybatisplus.extension.service.IService;
import com.tangguo.domain.BbsPointsGoods;
/**
* 积分商品Service接口
*
* @author ruoyi
* @date 2025-08-28
*/
public interface IBbsPointsGoodsService extends IService<BbsPointsGoods> {
/**
* 查询积分商品列表
*
* @param bbsPointsGoods 积分商品
* @return 积分商品集合
*/
List<BbsPointsGoods> selectBbsPointsGoodsList(BbsPointsGoods bbsPointsGoods);
/**
* 添加积分商品
*
* @param goods 积分商品
*/
void addGoods(BbsPointsGoods goods);
/**
* 修改积分商品
*
* @param goods 积分商品
*/
void editGoods(BbsPointsGoods goods);
/**
* 删除积分商品
*
* @param goodsId 积分商品Id
*/
void deleteGoods(Long goodsId);
}
package com.tangguo.service.impl;
import cn.hutool.core.util.IdUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.tangguo.common.exception.ServiceException;
import com.tangguo.common.utils.StringUtils;
import com.tangguo.domain.BbsPointsGoods;
import com.tangguo.mapper.BbsPointsGoodsMapper;
import com.tangguo.service.IBbsPointsGoodsService;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
import java.util.Objects;
/**
* 积分商品Service业务层处理
*
* @author ruoyi
* @date 2025-08-28
*/
@Service
public class BbsPointsGoodsServiceImpl extends ServiceImpl<BbsPointsGoodsMapper, BbsPointsGoods> implements IBbsPointsGoodsService {
@Resource
private BbsPointsGoodsMapper bbsPointsGoodsMapper;
/**
* 查询积分商品列表
*
* @param goods 积分商品
* @return 积分商品
*/
@Override
public List<BbsPointsGoods> selectBbsPointsGoodsList(BbsPointsGoods goods) {
LambdaQueryWrapper<BbsPointsGoods> lqw = Wrappers.lambdaQuery();
lqw.orderByDesc(BbsPointsGoods::getCreateTime);
lqw.like(StringUtils.isNotBlank(goods.getName()), BbsPointsGoods::getName, goods.getName());
lqw.eq(StringUtils.isNotBlank(goods.getCode()), BbsPointsGoods::getCode, goods.getCode());
lqw.eq(StringUtils.isNotBlank(goods.getImgsUrl()), BbsPointsGoods::getImgsUrl, goods.getImgsUrl());
lqw.eq(goods.getSalesPrice() != null, BbsPointsGoods::getSalesPrice, goods.getSalesPrice());
lqw.eq(goods.getExchangePoints() != null, BbsPointsGoods::getExchangePoints, goods.getExchangePoints());
lqw.eq(goods.getStockNum() != null, BbsPointsGoods::getStockNum, goods.getStockNum());
lqw.eq(goods.getSalesNum() != null, BbsPointsGoods::getSalesNum, goods.getSalesNum());
lqw.eq(goods.getShowStatus() != null, BbsPointsGoods::getShowStatus, goods.getShowStatus());
return bbsPointsGoodsMapper.selectList(lqw);
}
/**
* 添加积分商品
*
* @param goods 积分商品
*/
@Override
public void addGoods(BbsPointsGoods goods) {
long nameCount = this.count(
Wrappers.lambdaQuery(BbsPointsGoods.class).eq(BbsPointsGoods::getName, goods.getName())
);
if (nameCount > 0) {
throw new ServiceException("添加失败,当前商品名称已存在。");
}
BbsPointsGoods addGoods = new BbsPointsGoods();
addGoods.setName(goods.getName());
addGoods.setCode(IdUtil.fastSimpleUUID());
addGoods.setImgsUrl(goods.getImgsUrl());
addGoods.setSalesPrice(goods.getSalesPrice());
addGoods.setExchangePoints(goods.getExchangePoints());
addGoods.setStockNum(goods.getStockNum());
addGoods.setSalesNum(0);
addGoods.setShowStatus(goods.getShowStatus());
this.save(addGoods);
}
/**
* 修改积分商品
*
* @param goods 积分商品
*/
@Override
public void editGoods(BbsPointsGoods goods) {
BbsPointsGoods dbGoods = this.getById(goods.getId());
if (Objects.isNull(dbGoods)) {
throw new ServiceException("修改失败,未查询到当前商品数据。");
}
if (!dbGoods.getName().equals(goods.getName())) {
long nameCount = this.count(
Wrappers.lambdaQuery(BbsPointsGoods.class).eq(BbsPointsGoods::getName, goods.getName())
);
if (nameCount > 0) {
throw new ServiceException("修改失败,当前商品名称已存在。");
}
}
BbsPointsGoods addGoods = new BbsPointsGoods();
addGoods.setId(dbGoods.getId());
addGoods.setName(goods.getName());
addGoods.setImgsUrl(goods.getImgsUrl());
addGoods.setSalesPrice(goods.getSalesPrice());
addGoods.setExchangePoints(goods.getExchangePoints());
addGoods.setStockNum(goods.getStockNum());
addGoods.setShowStatus(goods.getShowStatus());
this.updateById(addGoods);
}
/**
* 删除积分商品
*
* @param goodsId 积分商品Id
*/
@Override
public void deleteGoods(Long goodsId) {
this.removeById(goodsId);
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment