Commit dad21b04 authored by yuwenwen's avatar yuwenwen
parents 79efdbbc f1d981da
......@@ -74,7 +74,7 @@ token:
mybatis-plus:
# 不支持多包, 如有需要可在注解配置 或 提升扫包等级
# 例如 com.**.**.mapper
mapperPackage: com.**.**.mapper
mapperPackage: com.tangguo.**.mapper
# 对应的 XML 文件位置
mapper-locations: classpath*:mapper/**/*Mapper.xml
# 实体扫描,多个package用逗号或者分号分隔
......
......@@ -175,6 +175,12 @@
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>com.github.binarywang</groupId>
<artifactId>weixin-java-cp</artifactId>
<version>4.7.0</version>
</dependency>
</dependencies>
</project>
package com.tangguo.common.core.redis;
import org.apache.poi.ss.formula.functions.T;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.BoundSetOperations;
import org.springframework.data.redis.core.HashOperations;
......
package com.tangguo.controller;
import java.util.List;
import javax.annotation.Resource;
import com.tangguo.domain.BbsMomentComment;
import com.tangguo.service.IBbsMomentCommentService;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import com.tangguo.common.annotation.Log;
import com.tangguo.common.core.controller.BaseController;
import com.tangguo.common.core.domain.AjaxResult;
import com.tangguo.common.enums.BusinessType;
import com.tangguo.common.core.page.TableDataInfo;
/**
* 动态评论记录Controller
*
* @author ruoyi
* @date 2025-08-28
*/
@Api(tags="动态评论记录管理")
@RestController
@RequestMapping("/comment/comment")
public class BbsMomentCommentController extends BaseController {
@Resource
private IBbsMomentCommentService bbsMomentCommentService;
/**
* 查询动态评论记录列表
*/
@ApiOperation("查询动态评论记录列表")
@PreAuthorize("@ss.hasPermi('comment:comment:list')")
@GetMapping("/list")
public TableDataInfo list(BbsMomentComment comment) {
startPage();
List<BbsMomentComment> list = bbsMomentCommentService.selectBbsMomentCommentList(comment);
return getDataTable(list);
}
/**
* 获取动态评论记录详细信息
*/
@ApiOperation("获取动态评论记录详细信息")
@PreAuthorize("@ss.hasPermi('comment:comment:query')")
@GetMapping(value = "/{id}")
public AjaxResult getInfo(@PathVariable("id") Long id) {
return success(bbsMomentCommentService.getById(id));
}
/**
* 删除动态评论记录
*/
@ApiOperation("删除动态评论记录")
@PreAuthorize("@ss.hasPermi('comment:comment:remove')")
@Log(title = "动态评论记录", businessType = BusinessType.DELETE)
@DeleteMapping("/{id}")
public AjaxResult remove(@PathVariable Long id) {
this.bbsMomentCommentService.deleteComment(id);
return AjaxResult.success();
}
}
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.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.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
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 com.tangguo.common.annotation.Excel;
import java.util.List;
/**
* 动态评论记录对象 bbs_moment_comment
*
* @author ruoyi
* @date 2025-08-28
*/
@Data
@ToString
@NoArgsConstructor
@Accessors(chain = true)
@TableName("bbs_moment_comment")
@ApiModel(value = "BbsMomentComment", description = "动态评论记录实体")
public class BbsMomentComment extends BaseEntity {
private static final long serialVersionUID = 1L;
/** ID */
@TableId(type= IdType.AUTO)
@ApiModelProperty("ID")
private Long id;
/** 轻享内容ID */
@Excel(name = "轻享内容ID")
@ApiModelProperty("轻享内容ID")
private Long momentId;
/** 评论用户姓名 */
@Excel(name = "评论用户姓名")
@ApiModelProperty("评论用户姓名")
private String nikeName;
/** 评论用户名 */
@Excel(name = "评论用户名")
@ApiModelProperty("评论用户名")
private String userName;
/** 评论内容 */
@Excel(name = "评论内容")
@ApiModelProperty("评论内容")
private String content;
/** 评论图片地址(1-3张) */
@Excel(name = "评论图片地址", readConverterExp = "1=-3张")
@ApiModelProperty("评论图片地址(1-3张)")
private String imgsUrl;
/** 评论状态:0 删除、1 正常、2 隐藏 */
@Excel(name = "评论状态:0 删除、1 正常、2 隐藏")
@ApiModelProperty("评论状态:0 删除、1 正常、2 隐藏")
private Integer status;
/** 评论是否精选:0 否、1 是 */
@Excel(name = "评论是否精选:0 否、1 是")
@ApiModelProperty("评论是否精选:0 否、1 是")
private Integer isFeatured;
/** 父级评论ID(为空为评论,否则为回复。) */
@Excel(name = "父级评论ID", readConverterExp = "为=空为评论,否则为回复。")
@ApiModelProperty("父级评论ID(为空为评论,否则为回复。)")
private Long parentId;
/** 回复的用户姓名 */
@Excel(name = "回复的用户姓名")
@ApiModelProperty("回复的用户姓名")
private String replyNikeName;
/** 评论祖级路径(逗号分隔) */
@Excel(name = "评论祖级路径", readConverterExp = "逗=号分隔")
@ApiModelProperty("评论祖级路径(逗号分隔)")
private String ancestorPath;
/** 删除评论内容 */
@Excel(name = "删除评论内容")
@ApiModelProperty("删除评论内容")
private String deleteContent;
/**
* 动态内容
*/
@TableField(exist = false)
private String momentContent;
/**
* 子评论和回复
*/
@TableField(exist = false)
private List<BbsMomentComment> comments;
}
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-29 10:29:27 星期五
*/
@Getter
@AllArgsConstructor
public enum CommentStatus {
SC(0, "删除"), ZC(1, "正常"), YC(2, "隐藏");
private final int status;
private final String desc;
}
package com.tangguo.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* 商品上下架状态
*
* @author 谈笑
* @createTime 2025-08-28 16:32:15 星期四
*/
@Getter
@AllArgsConstructor
public enum ShowStatus {
SJ(1, "上架"), XJ(0, "下架");
private final int status;
private final String desc;
}
......@@ -4,18 +4,18 @@ import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* 是否置顶
* 话题置顶状态
*
* @author 谈笑
* @createTime 2025-08-27 16:27:34 星期三
*/
@Getter
@AllArgsConstructor
public enum IsTop {
public enum TopicTopStatus {
TOP(1, "置顶"), NOT_TOP(0, "不置顶");
ZD(1, "置顶"), BZD(0, "不置顶");
private final int isTop;
private final int value;
private final String desc;
......
package com.tangguo.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.tangguo.domain.BbsMomentComment;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* 动态评论记录Mapper接口
*
* @author ruoyi
* @date 2025-08-28
*/
public interface BbsMomentCommentMapper extends BaseMapper<BbsMomentComment> {
List<BbsMomentComment> selectBbsMomentCommentList(@Param("comment") BbsMomentComment comment);
List<BbsMomentComment> selectBbsMomentComments(@Param("commentId") Long commentId);
}
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.BbsMomentComment;
/**
* 动态评论记录Service接口
*
* @author ruoyi
* @date 2025-08-28
*/
public interface IBbsMomentCommentService extends IService<BbsMomentComment> {
/**
* 查询动态评论记录列表
*
* @param comment 动态评论记录
* @return 动态评论记录集合
*/
List<BbsMomentComment> selectBbsMomentCommentList(BbsMomentComment comment);
/**
* 查询动态评论记录详情
*
* @param commentId 动态评论记录Id
* @return 动态评论记录详情
*/
BbsMomentComment getBbsMomentComment(Long commentId);
/**
* 删除评论
*
* @param commentId 评论Id
*/
void deleteComment(Long commentId);
}
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);
}
......@@ -11,7 +11,6 @@ import com.tangguo.mapper.BbsGradeMapper;
import com.tangguo.service.IBbsGradeService;
import org.springframework.stereotype.Service;
import javax.annotation.Generated;
import javax.annotation.Resource;
import java.util.List;
import java.util.Objects;
......
package com.tangguo.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.tangguo.common.exception.ServiceException;
import com.tangguo.domain.BbsMomentComment;
import com.tangguo.enums.CommentStatus;
import com.tangguo.mapper.BbsMomentCommentMapper;
import com.tangguo.service.IBbsMomentCommentService;
import org.springframework.security.core.parameters.P;
import org.springframework.stereotype.Service;
import java.util.Collections;
import java.util.List;
import java.util.Objects;
import javax.annotation.Resource;
/**
* 动态评论记录Service业务层处理
*
* @author ruoyi
* @date 2025-08-28
*/
@Service
public class BbsMomentCommentServiceImpl extends ServiceImpl<BbsMomentCommentMapper, BbsMomentComment> implements IBbsMomentCommentService {
@Resource
private BbsMomentCommentMapper bbsMomentCommentMapper;
/**
* 查询动态评论记录列表
*
* @param comment 动态评论记录
* @return 动态评论记录
*/
@Override
public List<BbsMomentComment> selectBbsMomentCommentList(BbsMomentComment comment) {
return this.baseMapper.selectBbsMomentCommentList(comment);
}
/**
* 查询动态评论记录详情
*
* @param commentId 动态评论记录Id
* @return 动态评论记录详情
*/
@Override
public BbsMomentComment getBbsMomentComment(Long commentId) {
BbsMomentComment dbComment = this.getById(commentId);
if (Objects.nonNull(dbComment)) {
List<BbsMomentComment> comments = this.baseMapper.selectBbsMomentComments(commentId);
dbComment.setComments(comments);
}
return dbComment;
}
/**
* 删除评论
*
* @param commentId 评论Id
*/
@Override
public void deleteComment(Long commentId) {
BbsMomentComment dbComment = this.getById(commentId);
if (Objects.isNull(dbComment)) {
throw new ServiceException("删除失败,未查询到当前评论数据。");
}
BbsMomentComment updComment = new BbsMomentComment();
updComment.setId(dbComment.getId());
updComment.setStatus(CommentStatus.SC.getStatus());
updComment.setDeleteContent("该评论已被删除");
this.updateById(updComment);
}
}
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);
}
}
......@@ -14,13 +14,11 @@ import com.tangguo.mapper.BbsSensitiveWordMapper;
import com.tangguo.service.IBbsSensitiveWordService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.PostConstruct;
import javax.annotation.Resource;
import java.io.*;
import java.nio.file.Files;
import java.util.*;
/**
......
......@@ -7,7 +7,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.tangguo.common.exception.ServiceException;
import com.tangguo.common.utils.StringUtils;
import com.tangguo.domain.BbsTopic;
import com.tangguo.enums.IsTop;
import com.tangguo.enums.TopicTopStatus;
import com.tangguo.mapper.BbsTopicMapper;
import com.tangguo.service.IBbsTopicService;
import org.springframework.stereotype.Service;
......@@ -15,7 +15,6 @@ import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.Objects;
/**
......@@ -117,11 +116,11 @@ public class BbsTopicServiceImpl extends ServiceImpl<BbsTopicMapper, BbsTopic> i
if (!dbTopic.getIsTop().equals(isTop)) {
LambdaUpdateWrapper<BbsTopic> wrapper = Wrappers.lambdaUpdate(BbsTopic.class);
wrapper.eq(BbsTopic::getId, dbTopic.getId());
if (IsTop.TOP.getIsTop() == isTop) {
wrapper.set(BbsTopic::getIsTop, IsTop.TOP.getIsTop());
if (TopicTopStatus.ZD.getValue() == isTop) {
wrapper.set(BbsTopic::getIsTop, TopicTopStatus.ZD.getValue());
wrapper.set(BbsTopic::getTopTime, new Date());
} else {
wrapper.set(BbsTopic::getIsTop, IsTop.NOT_TOP.getIsTop());
wrapper.set(BbsTopic::getIsTop, TopicTopStatus.BZD.getValue());
wrapper.set(BbsTopic::getTopTime, null);
}
this.update(wrapper);
......
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.tangguo.mapper.BbsGradeMapper">
</mapper>
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.tangguo.mapper.BbsMomentCommentMapper">
<select id="selectBbsMomentCommentList" resultType="com.tangguo.domain.BbsMomentComment">
SELECT
m.content AS moment_content,
c.*
FROM
bbs_moment_comment c
LEFT JOIN
bbs_moment m ON m.id = c.moment_id
<where>
<if test="1==1">
c.parent_id IS NULL
</if>
<if test="comment.momentContent != null and comment.momentContent != ''">
AND m.content LIKE CONCAT('%', #{comment.momentContent}, '%')
</if>
</where>
ORDER BY
c.create_time DESC
</select>
<select id="selectBbsMomentComments" resultType="com.tangguo.domain.BbsMomentComment">
SELECT
c1.*
FROM
bbs_moment_comment c1
LEFT JOIN
bbs_moment_comment c2 ON c2.id = c1.parent_id
WHERE
FIND_IN_SET(#{commentId}, c1.ancestor_path)
ORDER BY
c1.create_time
</select>
</mapper>
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.tangguo.mapper.BbsPointsGoodsMapper">
</mapper>
......@@ -4,17 +4,5 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.tangguo.mapper.BbsSensitiveWordMapper">
<resultMap type="BbsSensitiveWord" id="BbsSensitiveWordResult">
<result property="id" column="id" />
<result property="createBy" column="create_by" />
<result property="createTime" column="create_time" />
<result property="updateBy" column="update_by" />
<result property="updateTime" column="update_time" />
<result property="remark" column="remark" />
<result property="name" column="name" />
<result property="sort" column="sort" />
<result property="enableStatus" column="enable_status" />
</resultMap>
</mapper>
......@@ -4,21 +4,5 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.tangguo.mapper.BbsTopicMapper">
<resultMap type="BbsTopic" id="BbsTopicResult">
<result property="id" column="id" />
<result property="createBy" column="create_by" />
<result property="createTime" column="create_time" />
<result property="updateBy" column="update_by" />
<result property="updateTime" column="update_time" />
<result property="remark" column="remark" />
<result property="name" column="name" />
<result property="sort" column="sort" />
<result property="isTop" column="is_top" />
<result property="topTime" column="top_time" />
<result property="likeCount" column="like_count" />
<result property="commentCount" column="comment_count" />
<result property="heat" column="heat" />
</resultMap>
</mapper>
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.List;
/**
* 积分商品Controller
*
* @author ruoyi
* @date 2025-08-28
*/
@Api(tags = "积分商品管理")
@RestController
@RequestMapping("/bbs/points/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 GoodsShowStatus {
SJ(1, "上架"), XJ(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 com.baomidou.mybatisplus.extension.service.IService;
import com.tangguo.domain.BbsPointsGoods;
import java.util.List;
/**
* 积分商品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);
}
}
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.tangguo.mapper.BbsPointsGoodsMapper">
</mapper>
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