Commit 1655486e authored by yuwenwen's avatar yuwenwen
parents 80c71677 7c1c8c48
......@@ -4,7 +4,7 @@
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.ruoyi</groupId>
<groupId>com.tangguo</groupId>
<artifactId>safe-campus-bbs</artifactId>
<version>3.8.5</version>
<name>safe-campus-bbs</name>
......@@ -119,39 +119,53 @@
<!-- 定时任务-->
<dependency>
<groupId>com.ruoyi</groupId>
<groupId>com.tangguo</groupId>
<artifactId>safe-campus-quartz</artifactId>
<version>${ruoyi.version}</version>
</dependency>
<!-- 代码生成-->
<dependency>
<groupId>com.ruoyi</groupId>
<groupId>com.tangguo</groupId>
<artifactId>safe-campus-generator</artifactId>
<version>${ruoyi.version}</version>
</dependency>
<!-- 核心模块-->
<dependency>
<groupId>com.ruoyi</groupId>
<groupId>com.tangguo</groupId>
<artifactId>safe-campus-framework</artifactId>
<version>${ruoyi.version}</version>
</dependency>
<!-- 系统模块-->
<dependency>
<groupId>com.ruoyi</groupId>
<groupId>com.tangguo</groupId>
<artifactId>safe-campus-system</artifactId>
<version>${ruoyi.version}</version>
</dependency>
<!-- 通用工具-->
<dependency>
<groupId>com.ruoyi</groupId>
<groupId>com.tangguo</groupId>
<artifactId>safe-campus-common</artifactId>
<version>${ruoyi.version}</version>
</dependency>
<!-- 轻享模块-->
<dependency>
<groupId>com.tangguo</groupId>
<artifactId>safe-campus-moment</artifactId>
<version>3.8.5</version>
</dependency>
<!-- 积分模块-->
<dependency>
<groupId>com.tangguo</groupId>
<artifactId>safe-campus-points</artifactId>
<version>3.8.5</version>
</dependency>
</dependencies>
</dependencyManagement>
......@@ -162,6 +176,8 @@
<module>safe-campus-quartz</module>
<module>safe-campus-generator</module>
<module>safe-campus-common</module>
<module>safe-campus-moment</module>
<module>safe-campus-points</module>
</modules>
<packaging>pom</packaging>
......
......@@ -4,7 +4,7 @@
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>safe-campus-bbs</artifactId>
<groupId>com.ruoyi</groupId>
<groupId>com.tangguo</groupId>
<version>3.8.5</version>
</parent>
<modelVersion>4.0.0</modelVersion>
......@@ -16,21 +16,27 @@
<dependencies>
<!-- 核心模块-->
<dependency>
<groupId>com.ruoyi</groupId>
<groupId>com.tangguo</groupId>
<artifactId>safe-campus-framework</artifactId>
</dependency>
<!-- 定时任务-->
<dependency>
<groupId>com.ruoyi</groupId>
<groupId>com.tangguo</groupId>
<artifactId>safe-campus-quartz</artifactId>
</dependency>
<!-- 代码生成-->
<dependency>
<groupId>com.ruoyi</groupId>
<groupId>com.tangguo</groupId>
<artifactId>safe-campus-generator</artifactId>
</dependency>
<!-- 轻享模块 -->
<dependency>
<groupId>com.tangguo</groupId>
<artifactId>safe-campus-moment</artifactId>
</dependency>
</dependencies>
<build>
......
......@@ -74,11 +74,11 @@ token:
mybatis-plus:
# 不支持多包, 如有需要可在注解配置 或 提升扫包等级
# 例如 com.**.**.mapper
mapperPackage: com.tangguo.**.mapper
mapperPackage: com.**.**.mapper
# 对应的 XML 文件位置
mapper-locations: classpath*:mapper/**/*Mapper.xml
# 实体扫描,多个package用逗号或者分号分隔
type-aliases-package: com.tangguo.**.domain
type-aliases-package: com.**.domain
configuration:
# 自动驼峰命名规则(camel case)映射
map-underscore-to-camel-case: true
......
......@@ -179,7 +179,7 @@
<el-tooltip placement="top">
<div slot="content">
Bean调用示例:ryTask.ryParams('ry')
<br />Class类调用示例:com.ruoyi.quartz.task.RyTask.ryParams('ry')
<br />Class类调用示例:com.tangguo.quartz.task.RyTask.ryParams('ry')
<br />参数说明:支持字符串,布尔类型,长整型,浮点型,整型
</div>
<i class="el-icon-question"></i>
......
......@@ -7,7 +7,7 @@
<parent>
<artifactId>safe-campus-bbs</artifactId>
<groupId>com.ruoyi</groupId>
<groupId>com.tangguo</groupId>
<version>3.8.5</version>
</parent>
......
......@@ -51,7 +51,7 @@ public class SwaggerConfig {
// 扫描所有有注解的api,用这种方式更灵活
.apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
// 扫描指定包中的swagger注解
// .apis(RequestHandlerSelectors.basePackage("com.ruoyi.project.tool.swagger"))
// .apis(RequestHandlerSelectors.basePackage("com.tangguo.project.tool.swagger"))
// 扫描所有 .apis(RequestHandlerSelectors.any())
.paths(PathSelectors.any())
.build()
......
......@@ -131,11 +131,11 @@ public class Constants {
/**
* 定时任务白名单配置(仅允许访问的包名,如其他需要可以自行添加)
*/
public static final String[] JOB_WHITELIST_STR = {"com.ruoyi"};
public static final String[] JOB_WHITELIST_STR = {"com.tangguo"};
/**
* 定时任务违规的字符
*/
public static final String[] JOB_ERROR_STR = {"java.net.URL", "javax.naming.InitialContext", "org.yaml.snakeyaml",
"org.springframework", "org.apache", "com.ruoyi.common.utils.file", "com.ruoyi.common.config"};
"org.springframework", "org.apache", "com.tangguo.common.utils.file", "com.tangguo.common.config"};
}
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;
......@@ -154,6 +155,33 @@ public class RedisCache {
return setOperation;
}
/**
* 缓存Set
*
* @param key 缓存键值
* @param values 缓存的数据
* @return 缓存数据的对象
*/
public <T> void setAddValues(final String key, final T ...values) {
BoundSetOperations<String, T> setOperation = redisTemplate.boundSetOps(key);
setOperation.add(values);
}
/**
* 缓存Set
*
* @param key 缓存键值
* @param values 缓存的数据
* @return 缓存数据的对象
*/
public <T> void setDeleteValues(final String key, final T ...values) {
BoundSetOperations<String, T> setOperation = redisTemplate.boundSetOps(key);
setOperation.remove(values);
}
/**
* 获得缓存的set
*
......
......@@ -7,7 +7,7 @@
<parent>
<artifactId>safe-campus-bbs</artifactId>
<groupId>com.ruoyi</groupId>
<groupId>com.tangguo</groupId>
<version>3.8.5</version>
</parent>
......@@ -35,7 +35,7 @@
<!-- 系统模块-->
<dependency>
<groupId>com.ruoyi</groupId>
<groupId>com.tangguo</groupId>
<artifactId>safe-campus-system</artifactId>
</dependency>
</dependencies>
......
......@@ -4,7 +4,7 @@
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>safe-campus-bbs</artifactId>
<groupId>com.ruoyi</groupId>
<groupId>com.tangguo</groupId>
<version>3.8.5</version>
</parent>
<modelVersion>4.0.0</modelVersion>
......@@ -31,7 +31,7 @@
<!-- 通用工具-->
<dependency>
<groupId>com.ruoyi</groupId>
<groupId>com.tangguo</groupId>
<artifactId>safe-campus-common</artifactId>
</dependency>
......
......@@ -3,7 +3,7 @@ gen:
# 作者
author: ruoyi
# 默认生成包路径 system 需改成自己的模块名称 如 system monitor tool
packageName: com.ruoyi.system
packageName: com.tangguo.system
# 自动去除表前缀,默认是false
autoRemovePre: false
# 表前缀(生成类名不会包含表前缀,多个用逗号分隔)
......
......@@ -2,7 +2,7 @@
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.generator.mapper.GenTableColumnMapper">
<mapper namespace="com.tangguo.generator.mapper.GenTableColumnMapper">
<resultMap type="GenTableColumn" id="GenTableColumnResult">
<id property="columnId" column="column_id" />
......
......@@ -2,7 +2,7 @@
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.generator.mapper.GenTableMapper">
<mapper namespace="com.tangguo.generator.mapper.GenTableMapper">
<resultMap type="GenTable" id="GenTableResult">
<id property="tableId" column="table_id" />
......
......@@ -37,7 +37,7 @@ import com.tangguo.common.core.page.TableDataInfo;
@RequestMapping("/${moduleName}/${businessName}")
public class ${ClassName}Controller extends BaseController
{
@Resources
@Resource
private I${ClassName}Service ${className}Service;
/**
......
......@@ -24,7 +24,7 @@ import ${packageName}.service.I${ClassName}Service;
@Service
public class ${ClassName}ServiceImpl extends ServiceImpl<${ClassName}Mapper, ${ClassName}> implements I${ClassName}Service {
@Resources
@Resource
private ${ClassName}Mapper ${className}Mapper;
/**
......
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.tangguo</groupId>
<artifactId>safe-campus-bbs</artifactId>
<version>3.8.5</version>
</parent>
<artifactId>safe-campus-moment</artifactId>
<description>moment动态系统模块</description>
<dependencies>
<dependency>
<groupId>com.tangguo</groupId>
<artifactId>safe-campus-system</artifactId>
</dependency>
</dependencies>
</project>
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.BbsGrade;
import com.tangguo.service.IBbsGradeService;
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/grade")
public class BbsGradeController extends BaseController {
@Resource
private IBbsGradeService bbsGradeService;
/**
* 查询用户等级列表
*/
@ApiOperation("查询用户等级列表")
@PreAuthorize("@ss.hasPermi('grade:grade:list')")
@GetMapping("/list")
public TableDataInfo list(BbsGrade bbsGrade) {
startPage();
List<BbsGrade> list = bbsGradeService.selectBbsGradeList(bbsGrade);
return getDataTable(list);
}
/**
* 获取用户等级详细信息
*/
@ApiOperation("获取用户等级详细信息")
@PreAuthorize("@ss.hasPermi('grade:grade:query')")
@GetMapping(value = "/{id}")
public AjaxResult getInfo(@PathVariable("id") Long id) {
return success(bbsGradeService.getById(id));
}
/**
* 新增用户等级
*/
@ApiOperation("新增用户等级")
@PreAuthorize("@ss.hasPermi('grade:grade:add')")
@Log(title = "用户等级", businessType = BusinessType.INSERT)
@PostMapping
public AjaxResult add(@RequestBody BbsGrade grade) {
this.bbsGradeService.addGrade(grade);
return AjaxResult.success();
}
/**
* 修改用户等级
*/
@ApiOperation("修改用户等级")
@PreAuthorize("@ss.hasPermi('grade:grade:edit')")
@Log(title = "用户等级", businessType = BusinessType.UPDATE)
@PutMapping
public AjaxResult edit(@RequestBody BbsGrade grade) {
this.bbsGradeService.editGrade(grade);
return AjaxResult.success();
}
/**
* 删除用户等级
*/
@ApiOperation("删除用户等级")
@PreAuthorize("@ss.hasPermi('grade:grade:remove')")
@Log(title = "用户等级", businessType = BusinessType.DELETE)
@DeleteMapping("/{id}")
public AjaxResult remove(@PathVariable Long id) {
this.bbsGradeService.deleteGrade(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.common.utils.poi.ExcelUtil;
import com.tangguo.domain.BbsSensitiveWord;
import com.tangguo.domain.result.DataImportResult;
import com.tangguo.service.IBbsSensitiveWordService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.util.Arrays;
import java.util.List;
/**
* 敏感词库Controller
*
* @author ruoyi
* @date 2025-08-27
*/
@Api(tags = "敏感词库管理")
@RestController
@RequestMapping("/bbs/moment/sensitive/word")
public class BbsSensitiveWordController extends BaseController {
@Resource
private IBbsSensitiveWordService bbsSensitiveWordService;
/**
* 查询敏感词库列表
*/
@ApiOperation("查询敏感词库列表")
@PreAuthorize("@ss.hasPermi('word:word:list')")
@GetMapping("/list")
public TableDataInfo list(BbsSensitiveWord bbsSensitiveWord) {
startPage();
List<BbsSensitiveWord> list = bbsSensitiveWordService.selectBbsSensitiveWordList(bbsSensitiveWord);
return getDataTable(list);
}
/**
* 获取敏感词库详细信息
*/
@ApiOperation("获取敏感词库详细信息")
@PreAuthorize("@ss.hasPermi('word:word:query')")
@GetMapping(value = "/{id}")
public AjaxResult getInfo(@PathVariable("id") Long id) {
return success(bbsSensitiveWordService.getById(id));
}
/**
* 新增敏感词库
*/
@ApiOperation("新增敏感词库")
@PreAuthorize("@ss.hasPermi('word:word:add')")
@Log(title = "敏感词库", businessType = BusinessType.INSERT)
@PostMapping
public AjaxResult add(@RequestBody BbsSensitiveWord word) {
this.bbsSensitiveWordService.addWord(word);
return AjaxResult.success();
}
/**
* 修改敏感词库
*/
@ApiOperation("修改敏感词库")
@PreAuthorize("@ss.hasPermi('word:word:edit')")
@Log(title = "敏感词库", businessType = BusinessType.UPDATE)
@PutMapping
public AjaxResult edit(@RequestBody BbsSensitiveWord word) {
this.bbsSensitiveWordService.editWord(word);
return AjaxResult.success();
}
/**
* 删除敏感词库
*/
@ApiOperation("删除敏感词库")
@PreAuthorize("@ss.hasPermi('word:word:remove')")
@Log(title = "敏感词库", businessType = BusinessType.DELETE)
@DeleteMapping("/{id}")
public AjaxResult remove(@PathVariable Long id) {
this.bbsSensitiveWordService.deleteWord(id);
return AjaxResult.success();
}
/**
* 修改敏感词库
*/
@ApiOperation("修改敏感词库")
@PreAuthorize("@ss.hasPermi('word:word:edit')")
@Log(title = "敏感词库", businessType = BusinessType.IMPORT)
@PostMapping("/import")
public AjaxResult importWords(MultipartFile file) {
DataImportResult<String> result = this.bbsSensitiveWordService.importWords(file);
return AjaxResult.success(result);
}
/**
* 刷新敏感词库缓存
*/
@ApiOperation("刷新敏感词库缓存")
@PreAuthorize("@ss.hasPermi('word:word:refresh')")
@Log(title = "敏感词库", businessType = BusinessType.UPDATE)
@PutMapping("/refresh")
public AjaxResult refresh() {
this.bbsSensitiveWordService.refreshCacheWords();
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.BbsTopic;
import com.tangguo.service.IBbsTopicService;
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-27
*/
@Api(tags = "话题管理")
@RestController
@RequestMapping("/bbs/moment/topic")
public class BbsTopicController extends BaseController {
@Resource
private IBbsTopicService bbsTopicService;
/**
* 查询话题列表
*/
@ApiOperation("查询话题列表")
@PreAuthorize("@ss.hasPermi('topic:topic:list')")
@GetMapping("/list")
public TableDataInfo list(BbsTopic bbsTopic) {
startPage();
List<BbsTopic> list = bbsTopicService.selectBbsTopicList(bbsTopic);
return getDataTable(list);
}
/**
* 获取话题详细信息
*/
@ApiOperation("获取话题详细信息")
@PreAuthorize("@ss.hasPermi('topic:topic:query')")
@GetMapping(value = "/{id}")
public AjaxResult getInfo(@PathVariable("id") Long id) {
return success(bbsTopicService.getById(id));
}
/**
* 新增话题
*/
@ApiOperation("新增话题")
@PreAuthorize("@ss.hasPermi('topic:topic:add')")
@Log(title = "话题", businessType = BusinessType.INSERT)
@PostMapping
public AjaxResult add(@RequestBody BbsTopic bbsTopic) {
this.bbsTopicService.addTopic(bbsTopic);
return AjaxResult.success();
}
/**
* 修改话题
*/
@ApiOperation("修改话题")
@PreAuthorize("@ss.hasPermi('topic:topic:edit')")
@Log(title = "话题", businessType = BusinessType.UPDATE)
@PutMapping
public AjaxResult edit(@RequestBody BbsTopic bbsTopic) {
this.bbsTopicService.editeTopic(bbsTopic);
return AjaxResult.success();
}
/**
* 置顶话题
*/
@ApiOperation("置顶话题")
@PreAuthorize("@ss.hasPermi('topic:topic:top')")
@Log(title = "话题", businessType = BusinessType.UPDATE)
@PutMapping("/top")
public AjaxResult top(@RequestBody BbsTopic bbsTopic) {
this.bbsTopicService.topTopic(bbsTopic);
return AjaxResult.success();
}
/**
* 删除话题
*/
@ApiOperation("删除话题")
@PreAuthorize("@ss.hasPermi('topic:topic:remove')")
@Log(title = "话题", businessType = BusinessType.DELETE)
@DeleteMapping("/{id}")
public AjaxResult remove(@PathVariable Long id) {
this.bbsTopicService.deleteTopic(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;
/**
* 用户等级对象 bbs_grade
*
* @author ruoyi
* @date 2025-08-28
*/
@Data
@ToString
@NoArgsConstructor
@Accessors(chain = true)
@TableName("bbs_grade")
@ApiModel(value = "BbsGrade", description = "用户等级实体")
public class BbsGrade 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 Integer minPoints;
/** 最大积分 */
@Excel(name = "最大积分")
@ApiModelProperty("最大积分")
private Integer maxPoints;
/** 排序值(升序) */
@Excel(name = "排序值", readConverterExp = "升=序")
@ApiModelProperty("排序值(升序)")
private Integer sort;
}
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;
/**
* 敏感词库对象 bbs_sensitive_word
*
* @author ruoyi
* @date 2025-08-27
*/
@Data
@ToString
@NoArgsConstructor
@Accessors(chain = true)
@TableName("bbs_sensitive_word")
@ApiModel(value = "BbsSensitiveWord", description = "敏感词库实体")
public class BbsSensitiveWord 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 Integer sort;
/** 启用状态:0 禁用、1 启用 */
@Excel(name = "启用状态:0 禁用、1 启用")
@ApiModelProperty("启用状态:0 禁用、1 启用")
private Integer enableStatus;
}
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.util.Date;
/**
* 话题对象 bbs_topic
*
* @author ruoyi
* @date 2025-08-27
*/
@Data
@ToString
@NoArgsConstructor
@Accessors(chain = true)
@TableName("bbs_topic")
@ApiModel(value = "BbsTopic", description = "话题实体")
public class BbsTopic extends BaseEntity {
private static final long serialVersionUID = 1L;
/** ID */
@TableId(type = IdType.AUTO)
@ApiModelProperty("ID")
private Long id;
/** 话题来源 */
@Excel(name = "话题来源")
@ApiModelProperty("话题来源")
private String source;
/** 话题名称 */
@Excel(name = "话题名称")
@ApiModelProperty("话题名称")
private String name;
/** 排序值(升序) */
@Excel(name = "排序值", readConverterExp = "升=序")
@ApiModelProperty("排序值(升序)")
private Integer sort;
/** 是否置顶:0 否、1 是 */
@Excel(name = "是否置顶:0 否、1 是")
@ApiModelProperty("是否置顶:0 否、1 是")
private Integer isTop;
/** 置顶时间(降序) */
@Excel(name = "置顶时间", readConverterExp = "降=序")
@ApiModelProperty("置顶时间(降序)")
private Date topTime;
/** 话题动态总点赞数 */
@Excel(name = "话题动态总点赞数")
@ApiModelProperty("话题动态总点赞数")
private Integer likeCount;
/** 话题动态总评论数 */
@Excel(name = "话题动态总评论数")
@ApiModelProperty("话题动态总评论数")
private Integer commentCount;
/** 话题热度 */
@Excel(name = "话题热度")
@ApiModelProperty("话题热度")
private Integer heat;
}
package com.tangguo.domain.result;
import lombok.Data;
import org.apache.poi.ss.formula.functions.T;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
/**
* 数据导入结果
*
* @author 谈笑
* @createTime 2025-08-28 09:43:53 星期四
*/
@Data
public class DataImportResult<T> implements Serializable {
private static final long serialVersionUID = -1544586244818112713L;
/**
* 导入任务Id
*/
private String taskId;
/**
* 导入数据总条数
*/
private int totalCount;
/**
* 导入成功数据条数
*/
private int successCount;
/**
* 导入失败数据条数
*/
private int failCount;
/**
* 导入失败消息
*/
private String errorMessage;
/**
* 导入数据失败数据明细
*/
private List<Row<T>> failRows = new ArrayList<>(0);
@Data
public static class Row<T> implements Serializable {
private static final long serialVersionUID = -437773899860737658L;
/**
* 原始数据
*/
private T rowData;
/**
* 反馈消息
*/
private String message;
}
}
package com.tangguo.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* 是否置顶
*
* @author 谈笑
* @createTime 2025-08-27 16:27:34 星期三
*/
@Getter
@AllArgsConstructor
public enum IsTop {
TOP(1, "置顶"), NOT_TOP(0, "不置顶");
private final int isTop;
private final String desc;
}
package com.tangguo.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.tangguo.domain.BbsGrade;
/**
* 用户等级Mapper接口
*
* @author ruoyi
* @date 2025-08-28
*/
public interface BbsGradeMapper extends BaseMapper<BbsGrade> {
}
package com.tangguo.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.tangguo.domain.BbsSensitiveWord;
/**
* 敏感词库Mapper接口
*
* @author ruoyi
* @date 2025-08-27
*/
public interface BbsSensitiveWordMapper extends BaseMapper<BbsSensitiveWord> {
}
package com.tangguo.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.tangguo.domain.BbsTopic;
/**
* 话题Mapper接口
*
* @author ruoyi
* @date 2025-08-27
*/
public interface BbsTopicMapper extends BaseMapper<BbsTopic> {
}
package com.tangguo.service;
import java.util.List;
import com.baomidou.mybatisplus.extension.service.IService;
import com.tangguo.domain.BbsGrade;
/**
* 用户等级Service接口
*
* @author ruoyi
* @date 2025-08-28
*/
public interface IBbsGradeService extends IService<BbsGrade> {
/**
* 查询用户等级列表
*
* @param bbsGrade 用户等级
* @return 用户等级集合
*/
List<BbsGrade> selectBbsGradeList(BbsGrade bbsGrade);
/**
* 新增等级
*
* @param grade 等级
*/
void addGrade(BbsGrade grade);
/**
* 修改等级
*
* @param grade 等级
*/
void editGrade(BbsGrade grade);
/**
* 删除等级
*
* @param gradeId 等级Id
*/
void deleteGrade(Long gradeId);
}
package com.tangguo.service;
import java.util.List;
import java.util.Set;
import com.baomidou.mybatisplus.extension.service.IService;
import com.tangguo.domain.BbsSensitiveWord;
import com.tangguo.domain.result.DataImportResult;
import org.springframework.web.multipart.MultipartFile;
/**
* 敏感词库Service接口
*
* @author ruoyi
* @date 2025-08-27
*/
public interface IBbsSensitiveWordService extends IService<BbsSensitiveWord> {
/**
* 查询敏感词
*
* @return 敏感词
*/
Set<String> getDbWords();
/**
* 刷新缓存敏感词
*/
void refreshCacheWords();
/**
* 查询敏感词库列表
*
* @param bbsSensitiveWord 敏感词库
* @return 敏感词库集合
*/
List<BbsSensitiveWord> selectBbsSensitiveWordList(BbsSensitiveWord bbsSensitiveWord);
/**
* 新增敏感词
*
* @param word 敏感词
*/
void addWord(BbsSensitiveWord word);
/**
* 修改敏感词
*
* @param word 敏感词
*/
void editWord(BbsSensitiveWord word);
/**
* 删除敏感词
*
* @param wordId 敏感词Id
*/
void deleteWord(Long wordId);
/**
* 导入敏感词
*
* @param file 铭感词文件
* @return 导入结果
*/
DataImportResult<String> importWords(MultipartFile file);
}
package com.tangguo.service;
import java.util.List;
import com.baomidou.mybatisplus.extension.service.IService;
import com.tangguo.domain.BbsTopic;
/**
* 话题Service接口
*
* @author ruoyi
* @date 2025-08-27
*/
public interface IBbsTopicService extends IService<BbsTopic> {
/**
* 查询话题列表
*
* @param bbsTopic 话题
* @return 话题集合
*/
List<BbsTopic> selectBbsTopicList(BbsTopic bbsTopic);
/**
* 新增话题
*
* @param topic 话题
*/
void addTopic(BbsTopic topic);
/**
* 修改话题
*
* @param topic 话题
*/
void editeTopic(BbsTopic topic);
/**
* 置顶话题
*
* @param topic 话题
*/
void topTopic(BbsTopic topic);
/**
* 删除话题
*
* @param topicId 话题Id
*/
void deleteTopic(Long topicId);
}
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.BbsGrade;
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;
/**
* 用户等级Service业务层处理
*
* @author ruoyi
* @date 2025-08-28
*/
@Service
public class BbsGradeServiceImpl extends ServiceImpl<BbsGradeMapper, BbsGrade> implements IBbsGradeService {
@Resource
private BbsGradeMapper bbsGradeMapper;
/**
* 查询用户等级列表
*
* @param grade 用户等级
* @return 用户等级
*/
@Override
public List<BbsGrade> selectBbsGradeList(BbsGrade grade) {
LambdaQueryWrapper<BbsGrade> lqw = Wrappers.lambdaQuery();
lqw.orderByDesc(BbsGrade::getCreateTime);
lqw.like(StringUtils.isNotBlank(grade.getName()), BbsGrade::getName, grade.getName());
lqw.eq(StringUtils.isNotBlank(grade.getCode()), BbsGrade::getCode, grade.getCode());
lqw.eq(grade.getSort() != null, BbsGrade::getSort, grade.getSort());
return bbsGradeMapper.selectList(lqw);
}
/**
* 新增等级
*
* @param grade 等级
*/
@Override
public void addGrade(BbsGrade grade) {
long nameCount = this.count(
Wrappers.lambdaQuery(BbsGrade.class).eq(BbsGrade::getName, grade.getName())
);
if (nameCount > 0) {
throw new ServiceException("添加失败,当前等级名称已存在。");
}
Integer s1 = grade.getMinPoints();
Integer e1 = grade.getMaxPoints();
if (s1 < 0 || e1 < 0 || s1 >= e1) {
throw new ServiceException("添加失败,当前等级积分范围错误。");
}
List<BbsGrade> dbGrades = this.list();
for (BbsGrade g : dbGrades) {
if (!(e1 < g.getMinPoints() || s1 > g.getMaxPoints())) {
throw new ServiceException("添加失败,当前等级积分范围和等级【" + g.getName() + "】积分范围冲突。");
}
}
BbsGrade addGrade = new BbsGrade();
addGrade.setName(grade.getName());
addGrade.setCode(IdUtil.fastSimpleUUID());
addGrade.setSort(grade.getSort());
addGrade.setMinPoints(grade.getMinPoints());
addGrade.setMaxPoints(grade.getMaxPoints());
this.save(addGrade);
}
/**
* 修改等级
*
* @param grade 等级
*/
@Override
public void editGrade(BbsGrade grade) {
BbsGrade dbGrade = this.getById(grade.getId());
if (Objects.isNull(dbGrade)) {
throw new ServiceException("修改失败,未查询到当前等级数据。");
}
if (!dbGrade.getName().equals(grade.getName())) {
long nameCount = this.count(
Wrappers.lambdaQuery(BbsGrade.class).eq(BbsGrade::getName, grade.getName())
);
if (nameCount > 0) {
throw new ServiceException("修改失败,当前等级名称已存在。");
}
}
Integer s1 = grade.getMinPoints();
Integer e1 = grade.getMaxPoints();
if (s1 < 0 || e1 < 0 || s1 >= e1) {
throw new ServiceException("修改失败,当前等级积分范围错误。");
}
List<BbsGrade> dbGrades = this.list();
for (BbsGrade g : dbGrades) {
if (!(e1 < g.getMinPoints() || s1 > g.getMaxPoints())) {
throw new ServiceException("修改失败,当前等级积分范围和等级【" + g.getName() + "】积分范围冲突。");
}
}
BbsGrade updGrade = new BbsGrade();
updGrade.setId(dbGrade.getId());
updGrade.setName(grade.getName());
updGrade.setSort(grade.getSort());
updGrade.setMinPoints(grade.getMinPoints());
updGrade.setMaxPoints(grade.getMaxPoints());
this.save(updGrade);
}
/**
* 删除等级
*
* @param gradeId 等级Id
*/
@Override
public void deleteGrade(Long gradeId) {
this.removeById(gradeId);
}
}
package com.tangguo.service.impl;
import cn.hutool.core.io.IoUtil;
import cn.hutool.core.util.StrUtil;
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.core.redis.RedisCache;
import com.tangguo.common.exception.ServiceException;
import com.tangguo.common.utils.StringUtils;
import com.tangguo.domain.BbsSensitiveWord;
import com.tangguo.domain.result.DataImportResult;
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.*;
/**
* 敏感词库Service业务层处理
*
* @author ruoyi
* @date 2025-08-27
*/
@Slf4j
@Service
public class BbsSensitiveWordServiceImpl extends ServiceImpl<BbsSensitiveWordMapper, BbsSensitiveWord> implements IBbsSensitiveWordService {
private static final String WORD_CACHE_KEY = "sensitive:words";
@Resource
private BbsSensitiveWordMapper bbsSensitiveWordMapper;
@Resource
private RedisCache redisCache;
@PostConstruct
private void initCacheWords() {
Set<String> dbWords = this.getDbWords();
this.redisCache.setCacheSet(WORD_CACHE_KEY, new HashSet<>(dbWords));
log.info("=> 数据库敏感词已缓存,敏感词数量:{}", dbWords.size());
}
/**
* 查询敏感词
*
* @return 敏感词
*/
@Override
public Set<String> getDbWords() {
List<String> dbWords = this.listObjs(
Wrappers.lambdaQuery(BbsSensitiveWord.class).select(BbsSensitiveWord::getName), Objects::toString
);
return new HashSet<>(dbWords);
}
/**
* 刷新缓存敏感词
*/
@Override
public void refreshCacheWords() {
this.redisCache.deleteObject(WORD_CACHE_KEY);
log.info("=> 缓存敏感词已清空");
Set<String> dbWords = this.getDbWords();
this.redisCache.setCacheSet(WORD_CACHE_KEY, new HashSet<>(dbWords));
log.info("=> 缓存敏感词已刷新,敏感词数量:{}", dbWords.size());
}
/**
* 查询敏感词库列表
*
* @param word 敏感词库
* @return 敏感词库
*/
@Override
public List<BbsSensitiveWord> selectBbsSensitiveWordList(BbsSensitiveWord word) {
LambdaQueryWrapper<BbsSensitiveWord> lqw = Wrappers.lambdaQuery();
lqw.orderByDesc(BbsSensitiveWord::getCreateTime);
lqw.like(StringUtils.isNotBlank(word.getName()), BbsSensitiveWord::getName, word.getName());
return bbsSensitiveWordMapper.selectList(lqw);
}
/**
* 新增敏感词
*
* @param word 敏感词
*/
@Override
public void addWord(BbsSensitiveWord word) {
long wordCount = this.count(
Wrappers.lambdaQuery(BbsSensitiveWord.class).eq(BbsSensitiveWord::getName, word.getName())
);
if (wordCount > 0) {
throw new ServiceException("添加失败,当前敏感词已存在。");
}
BbsSensitiveWord addWord = new BbsSensitiveWord();
addWord.setName(word.getName());
addWord.setSort(word.getSort());
addWord.setEnableStatus(1);
this.save(addWord);
this.redisCache.setAddValues(WORD_CACHE_KEY, word.getName());
}
/**
* 修改敏感词
*
* @param word 敏感词
*/
@Override
public void editWord(BbsSensitiveWord word) {
BbsSensitiveWord dbWord = this.getById(word.getId());
if (Objects.isNull(dbWord)) {
throw new ServiceException("修改失败,未查询到当前敏感词数据。");
}
if (!dbWord.getName().equals(word.getName())) {
long wordCount = this.count(
Wrappers.lambdaQuery(BbsSensitiveWord.class).eq(BbsSensitiveWord::getName, word.getName())
);
if (wordCount > 0) {
throw new ServiceException("修改失败,当前敏感词已存在。");
}
}
BbsSensitiveWord updWord = new BbsSensitiveWord();
updWord.setId(dbWord.getId());
updWord.setName(word.getName());
updWord.setSort(word.getSort());
this.updateById(updWord);
this.redisCache.setDeleteValues(WORD_CACHE_KEY, dbWord.getName());
this.redisCache.setAddValues(WORD_CACHE_KEY, word.getName());
}
/**
* 删除敏感词
*
* @param wordId 敏感词Id
*/
@Override
public void deleteWord(Long wordId) {
BbsSensitiveWord dbWord = this.getById(wordId);
if (Objects.nonNull(dbWord)) {
this.removeById(wordId);
this.redisCache.setDeleteValues(WORD_CACHE_KEY, dbWord.getName());
}
}
/**
* 导入敏感词
*
* @param file 铭感词文件
* @return 导入结果
*/
@Override
public DataImportResult<String> importWords(MultipartFile file) {
DataImportResult<String> result = new DataImportResult<>();
BufferedReader reader = null;
try {
// 读取敏感词
reader = new BufferedReader(new InputStreamReader(file.getInputStream()));
String readWord;
Set<String> readWords = new LinkedHashSet<>(10);
while (Objects.nonNull(readWord = reader.readLine())) {
if (StrUtil.isNotBlank(readWord)) {
readWords.add(readWord);
}
}
// 校验敏感词
Set<String> cacheWords = this.redisCache.getCacheSet(WORD_CACHE_KEY);
List<BbsSensitiveWord> addWords = new ArrayList<>(readWords.size());
for (String word : readWords) {
if (!cacheWords.contains(word)) {
BbsSensitiveWord newWord = new BbsSensitiveWord();
newWord.setName(word);
addWords.add(newWord);
} else {
DataImportResult.Row<String> row = new DataImportResult.Row<>();
row.setRowData(word);
row.setMessage("当前敏感词已存在");
result.getFailRows().add(row);
}
}
super.saveBatch(addWords);
// 缓存敏感词
this.redisCache.setAddValues(WORD_CACHE_KEY, addWords.toArray());
result.setTotalCount(readWords.size());
result.setSuccessCount(addWords.size());
result.setFailCount(readWords.size() - addWords.size());
} catch (Exception e) {
log.error("=> 导入敏感词失败:", e);
} finally {
IoUtil.close(reader);
}
return result;
}
}
package com.tangguo.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
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.BbsTopic;
import com.tangguo.enums.IsTop;
import com.tangguo.mapper.BbsTopicMapper;
import com.tangguo.service.IBbsTopicService;
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;
/**
* 话题Service业务层处理
*
* @author ruoyi
* @date 2025-08-27
*/
@Service
public class BbsTopicServiceImpl extends ServiceImpl<BbsTopicMapper, BbsTopic> implements IBbsTopicService {
@Resource
private BbsTopicMapper bbsTopicMapper;
/**
* 查询话题列表
*
* @param topic 话题
* @return 话题
*/
@Override
public List<BbsTopic> selectBbsTopicList(BbsTopic topic) {
LambdaQueryWrapper<BbsTopic> lqw = Wrappers.lambdaQuery();
lqw.orderByDesc(BbsTopic::getCreateTime);
lqw.like(StringUtils.isNotBlank(topic.getSource()), BbsTopic::getSource, topic.getSource());
lqw.like(StringUtils.isNotBlank(topic.getName()), BbsTopic::getName, topic.getName());
lqw.orderByAsc(BbsTopic::getIsTop);
lqw.orderByDesc(BbsTopic::getTopTime);
lqw.orderByAsc(BbsTopic::getSort);
return bbsTopicMapper.selectList(lqw);
}
/**
* 新增话题
*
* @param topic 话题
*/
@Override
public void addTopic(BbsTopic topic) {
long nameCount = this.count(
Wrappers.lambdaQuery(BbsTopic.class).eq(BbsTopic::getName, topic.getName())
);
if (nameCount > 0) {
throw new ServiceException("新增失败,当前话题名称已存在。");
}
BbsTopic newTopic = new BbsTopic();
newTopic.setSource("后台管理");
newTopic.setName(topic.getName());
newTopic.setSort(topic.getSort());
this.save(newTopic);
}
/**
* 修改话题
*
* @param topic 话题
*/
@Override
public void editeTopic(BbsTopic topic) {
BbsTopic dbTopic = this.getById(topic.getId());
if (Objects.isNull(dbTopic)) {
throw new ServiceException("修改失败,当前话题数据不存在。");
}
if (!dbTopic.getName().equals(topic.getName())) {
long nameCount = this.count(
Wrappers.lambdaQuery(BbsTopic.class).eq(BbsTopic::getName, topic.getName())
);
if (nameCount > 0) {
throw new ServiceException("修改失败,当前话题名称已存在。");
}
}
BbsTopic updTopic = new BbsTopic();
updTopic.setId(dbTopic.getId());
updTopic.setName(topic.getName());
updTopic.setSort(topic.getSort());
this.updateById(updTopic);
}
/**
* 置顶话题
*
* @param topic 话题
*/
@Override
public void topTopic(BbsTopic topic) {
BbsTopic dbTopic = this.getById(topic.getId());
if (Objects.isNull(dbTopic)) {
throw new ServiceException("置顶失败,当前话题数据不存在。");
}
Integer isTop = topic.getIsTop();
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());
wrapper.set(BbsTopic::getTopTime, new Date());
} else {
wrapper.set(BbsTopic::getIsTop, IsTop.NOT_TOP.getIsTop());
wrapper.set(BbsTopic::getTopTime, null);
}
this.update(wrapper);
}
}
/**
* 删除话题
*
* @param topicId 话题Id
*/
@Override
public void deleteTopic(Long topicId) {
this.removeById(topicId);
}
}
<?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.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>
<?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.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>
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.tangguo</groupId>
<artifactId>safe-campus-bbs</artifactId>
<version>3.8.5</version>
</parent>
<artifactId>safe-campus-points</artifactId>
<description>points积分模块</description>
<dependencies>
<!-- 通用工具-->
<dependency>
<groupId>com.tangguo</groupId>
<artifactId>safe-campus-common</artifactId>
</dependency>
</dependencies>
</project>
......@@ -4,7 +4,7 @@
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>safe-campus-bbs</artifactId>
<groupId>com.ruoyi</groupId>
<groupId>com.tangguo</groupId>
<version>3.8.5</version>
</parent>
<modelVersion>4.0.0</modelVersion>
......@@ -30,7 +30,7 @@
<!-- 通用工具-->
<dependency>
<groupId>com.ruoyi</groupId>
<groupId>com.tangguo</groupId>
<artifactId>safe-campus-common</artifactId>
</dependency>
</dependencies>
......
//package com.ruoyi.quartz.config;
//package com.tangguo.quartz.config;
//
//import org.springframework.context.annotation.Bean;
//import org.springframework.context.annotation.Configuration;
......
......@@ -7,7 +7,7 @@
<parent>
<artifactId>safe-campus-bbs</artifactId>
<groupId>com.ruoyi</groupId>
<groupId>com.tangguo</groupId>
<version>3.8.5</version>
</parent>
......@@ -17,7 +17,7 @@
<dependencies>
<!-- 通用工具-->
<dependency>
<groupId>com.ruoyi</groupId>
<groupId>com.tangguo</groupId>
<artifactId>safe-campus-common</artifactId>
</dependency>
</dependencies>
......
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