ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/SysUserFallbackFactory.java
@@ -83,6 +83,11 @@ public R<CustomConfig> getconfig(String configId) { return R.fail("获取系统配置失败:" + cause.getMessage()); } @Override public R<List<SysUser>> getUserListByName(SysUser sysUser, String source) { return R.fail("获取系统用户失败:" + cause.getMessage()); } }; } } ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/feignClient/SysUserClient.java
@@ -3,7 +3,10 @@ import com.ruoyi.common.core.constant.SecurityConstants; import com.ruoyi.common.core.constant.ServiceNameConstants; import com.ruoyi.common.core.domain.R; import com.ruoyi.system.api.domain.*; import com.ruoyi.system.api.domain.CustomConfig; import com.ruoyi.system.api.domain.DelayTask; import com.ruoyi.system.api.domain.SysRole; import com.ruoyi.system.api.domain.SysUser; import com.ruoyi.system.api.factory.SysUserFallbackFactory; import java.util.List; import org.springframework.cloud.openfeign.FeignClient; @@ -89,4 +92,8 @@ @GetMapping("/custom-config/{configId}") R<CustomConfig> getconfig(@PathVariable("configId") String configId); @GetMapping("/user/list-by-name") R<List<SysUser>> getUserListByName(@RequestBody SysUser sysUser, @RequestHeader(SecurityConstants.FROM_SOURCE) String source); } ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/enums/AuditStatusEnum.java
@@ -14,7 +14,8 @@ TO_BE_REVIEWED(1, "待审核"), PASSED(2, "已通过"), REJECTED(3, "已拒绝"); REJECTED(3, "已拒绝"), REPORTED(4, "被举报"); @EnumValue private final int code; @JsonValue ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/controller/management/MgtArticleController.java
New file @@ -0,0 +1,47 @@ package com.ruoyi.article.controller.management; import com.ruoyi.article.controller.management.dto.MgtArticleQuery; import com.ruoyi.article.controller.management.vo.MgtArticleVO; import com.ruoyi.article.service.IArticleService; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.utils.page.PageDTO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; /** * <p> * 资讯表 前端控制器 * </p> * * @author mitao * @since 2024-05-16 */ @RestController @RequestMapping("/mgt/article") @RequiredArgsConstructor @Api(value = "管理后台-资讯管理相关接口", tags = "管理后台-资讯管理相关接口") public class MgtArticleController { private final IArticleService articleService; /** * 获取资讯列表的分页数据 * * @param query 资讯管理查询条件 * @return PageDTO<ArticleVO> */ @ApiOperation(value = "获取资讯列表的分页数据", notes = "获取资讯列表的分页数据") @PostMapping("/page") public R<PageDTO<MgtArticleVO>> getArticlePage(@Validated @RequestBody MgtArticleQuery query) { return R.ok(articleService.getArticlePage(query)); } } ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/controller/management/MgtSensitiveWordsController.java
New file @@ -0,0 +1,27 @@ package com.ruoyi.article.controller.management; import com.ruoyi.article.service.ISensitiveWordsService; import io.swagger.annotations.Api; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; /** * <p> * 敏感词管理 前端控制器 * </p> * * @author mitao * @since 2024-05-16 */ @RestController @RequestMapping("/sensitive-words") @RequiredArgsConstructor @Api(value = "管理后台-敏感词管理相关接口", tags = "管理后台-敏感词管理相关接口") public class MgtSensitiveWordsController { private final ISensitiveWordsService sensitiveWordsService; } ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/controller/management/dto/MgtArticleQuery.java
New file @@ -0,0 +1,37 @@ package com.ruoyi.article.controller.management.dto; import com.ruoyi.common.core.enums.ArticleTypeEnum; import com.ruoyi.common.core.enums.ListingStatusEnum; import com.ruoyi.common.core.web.page.BasePage; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.EqualsAndHashCode; /** * @author mitao * @date 2024/6/11 */ @Data @EqualsAndHashCode(callSuper = true) @ApiModel(value = "资讯管理查询条件") public class MgtArticleQuery extends BasePage { private static final long serialVersionUID = 2287510627683906596L; @ApiModelProperty(value = "资讯标题") private String title; @ApiModelProperty(value = "发布人") private String createBy; @ApiModelProperty(value = "资讯类型 1=平台发布 2=用户发布") private ArticleTypeEnum articleType; @ApiModelProperty(value = "联系电话") private String phone; @ApiModelProperty(value = "上架状态 上架中 已下架") private ListingStatusEnum listingStatus; } ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/controller/management/vo/MgtArticleVO.java
New file @@ -0,0 +1,76 @@ package com.ruoyi.article.controller.management.vo; import com.ruoyi.common.core.enums.ArticleTypeEnum; import com.ruoyi.common.core.enums.AuditStatusEnum; import com.ruoyi.common.core.enums.ListingStatusEnum; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import java.io.Serializable; import java.time.LocalDateTime; import lombok.Data; /** * @author mitao * @date 2024/6/11 */ @Data @ApiModel(value = "资讯管理视图对象", description = "资讯管理视图对象") public class MgtArticleVO implements Serializable { private static final long serialVersionUID = -7968138995698584864L; @ApiModelProperty(value = "资讯id") private Long id; @ApiModelProperty(value = "资讯类型 1=平台发布 2=用户发布") private ArticleTypeEnum articleType; @ApiModelProperty(value = "资讯标题") private String title; @ApiModelProperty(value = "资讯内容") private String content; @ApiModelProperty(value = "资讯图片 ['a','b','c','d','e']") private String images; @ApiModelProperty(value = "资讯视频") private String videoUrl; @ApiModelProperty(value = "状态 1=待审核 2=已通过 3=已拒绝 4被举报") private AuditStatusEnum status; @ApiModelProperty(value = "举报用户") private String reportBy; @ApiModelProperty(value = "举报时间") private LocalDateTime reportedTime; @ApiModelProperty(value = "点赞数") private Integer likeCount; @ApiModelProperty(value = "发布人") private String createBy; @ApiModelProperty(value = "创建时间") private LocalDateTime createTime; @ApiModelProperty(value = "联系电话") private String phone; @ApiModelProperty(value = "收藏数") private Integer collectCount; @ApiModelProperty(value = "评论数") private Integer commentCount; @ApiModelProperty(value = "会员id") private Long memberId; @ApiModelProperty(value = "拒绝原因") private String refuseComment; @ApiModelProperty(value = "上架状态 上架中 已下架") private ListingStatusEnum listingStatus; } ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/domain/Article.java
@@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.annotation.TableName; import com.ruoyi.common.core.enums.ArticleTypeEnum; import com.ruoyi.common.core.enums.AuditStatusEnum; import com.ruoyi.common.core.enums.ListingStatusEnum; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import java.io.Serializable; @@ -96,5 +97,9 @@ @ApiModelProperty(value = "拒绝原因") private String refuseComment; @ApiModelProperty(value = "上架状态 上架中 已下架") private ListingStatusEnum listingStatus; @ApiModelProperty(value = "举报状态") private Boolean reportStatus; } ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/handler/MyMetaObjectHandler.java
@@ -20,16 +20,16 @@ @Override public void insertFill(MetaObject metaObject) { // 获取当前登录用户 String userName = SecurityUtils.getUsername(); fillValue("createBy", userName, metaObject); Long userId = SecurityUtils.getUserId(); fillValue("createBy", userId, metaObject); fillValue("createTime", LocalDateTime.now(), metaObject); } @Override public void updateFill(MetaObject metaObject) { // 获取当前登录用户 String userName = SecurityUtils.getUsername(); fillValue("updateBy", userName, metaObject); Long userId = SecurityUtils.getUserId(); fillValue("updateBy", userId, metaObject); fillValue("updateTime", LocalDateTime.now(), metaObject); } ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/service/IArticleService.java
@@ -1,10 +1,12 @@ package com.ruoyi.article.service; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.article.domain.Article; import com.ruoyi.article.controller.forepart.dto.ArticleDTO; import com.ruoyi.article.controller.forepart.vo.ArticleCommentsVO; import com.ruoyi.article.controller.forepart.vo.ArticleVO; import com.ruoyi.article.controller.management.dto.MgtArticleQuery; import com.ruoyi.article.controller.management.vo.MgtArticleVO; import com.ruoyi.article.domain.Article; import com.ruoyi.common.core.utils.page.PageDTO; /** @@ -30,5 +32,5 @@ PageDTO<ArticleCommentsVO> getArticleCommentsList(ArticleDTO articleDTO); void getReport(ArticleDTO articleDTO); PageDTO<MgtArticleVO> getArticlePage(MgtArticleQuery query); } ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/service/impl/ArticleServiceImpl.java
@@ -4,34 +4,42 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.google.common.collect.Lists; import com.ruoyi.article.controller.forepart.dto.ArticleDTO; import com.ruoyi.article.controller.forepart.vo.ArticleCommentsVO; import com.ruoyi.article.controller.forepart.vo.ArticleVO; import com.ruoyi.article.controller.management.dto.MgtArticleQuery; import com.ruoyi.article.controller.management.vo.MgtArticleVO; import com.ruoyi.article.domain.Article; import com.ruoyi.article.domain.ArticleComments; import com.ruoyi.article.domain.MemberArticleCollection; import com.ruoyi.article.domain.MemberLike; import com.ruoyi.article.controller.forepart.dto.ArticleDTO; import com.ruoyi.article.mapper.ArticleMapper; import com.ruoyi.article.service.IArticleCommentsService; import com.ruoyi.article.service.IArticleService; import com.ruoyi.article.service.IMemberArticleCollectionService; import com.ruoyi.article.service.IMemberLikeService; import com.ruoyi.article.controller.forepart.vo.ArticleCommentsVO; import com.ruoyi.article.controller.forepart.vo.ArticleVO; import com.ruoyi.common.core.constant.SecurityConstants; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.enums.ArticleTypeEnum; import com.ruoyi.common.core.enums.AuditStatusEnum; import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.common.core.utils.bean.BeanUtils; import com.ruoyi.common.core.utils.page.PageDTO; import com.ruoyi.system.api.domain.Member; import com.ruoyi.system.api.domain.SysUser; import com.ruoyi.system.api.domain.dto.MemberDTO; import com.ruoyi.system.api.feignClient.MemberClient; import com.ruoyi.system.api.util.HuaWeiOBSUtil; import java.io.IOException; import com.ruoyi.system.api.feignClient.SysUserClient; import java.time.LocalDateTime; import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.Set; import java.util.function.Function; import java.util.stream.Collectors; import javax.annotation.Resource; import org.springframework.stereotype.Service; import org.springframework.web.multipart.MultipartFile; /** * <p> @@ -56,6 +64,9 @@ @Resource private IMemberArticleCollectionService memberArticleCollectionService; @Resource private SysUserClient sysUserClient; @Override public PageDTO<ArticleVO> getArticleList(ArticleDTO articleDTO) { @@ -271,4 +282,94 @@ article.setReportedTime(LocalDateTime.now()); this.saveOrUpdate(article); } @Override public PageDTO<MgtArticleVO> getArticlePage(MgtArticleQuery query) { // 构建查询条件 Set<Long> sysUserIdSet = null; Set<Long> memberIdSet = null; if (StringUtils.isNotBlank(query.getCreateBy()) || StringUtils.isNotBlank( query.getPhone())) { SysUser user = new SysUser(); user.setNickName(query.getCreateBy()); user.setPhonenumber(query.getPhone()); List<SysUser> sysUserList = sysUserClient.getUserListByName(user, SecurityConstants.INNER).getData(); sysUserIdSet = sysUserList.stream().map(SysUser::getUserId) .collect(Collectors.toSet()); MemberDTO memberDTO = new MemberDTO(); memberDTO.setNickname(query.getCreateBy()); memberDTO.setPhone(query.getPhone()); List<Member> memberlist = memberClient.getMemberListByCondition(memberDTO, SecurityConstants.INNER).getData(); memberIdSet = memberlist.stream().map(Member::getId) .collect(Collectors.toSet()); } // 分页查询 Page<Article> page = this.lambdaQuery() .in(StringUtils.isNotEmpty(sysUserIdSet), Article::getCreateBy, sysUserIdSet) .in(StringUtils.isNotEmpty(memberIdSet), Article::getMemberId, memberIdSet) .eq(StringUtils.isNotNull(query.getListingStatus()), Article::getListingStatus, query.getListingStatus()) .like(StringUtils.isNotBlank(query.getTitle()), Article::getTitle, query.getTitle()) .orderByDesc(Article::getStatus) .page(new Page<>(query.getPageCurr(), query.getPageSize())); // 若为空直接返回 if (StringUtils.isNotEmpty(page.getRecords())) { return PageDTO.empty(page); } /*根据资讯的发布类型分别从系统用户表和会员表中查询发布人信息并封装VO*/ PageDTO<MgtArticleVO> pageVO = PageDTO.of(page, MgtArticleVO.class); List<MgtArticleVO> voList = pageVO.getList(); Set<Integer> sysUserIds = voList.stream().filter(articleVO -> articleVO.getArticleType() .equals(ArticleTypeEnum.PLATFORM_RELEASE)).map(MgtArticleVO::getCreateBy) .map(Integer::valueOf).collect( Collectors.toSet()); Map<Long, SysUser> userMap; Map<Long, Member> memberMap; if (StringUtils.isNotEmpty(sysUserIds)) { List<SysUser> userList = sysUserClient.getUserList(Lists.newArrayList(sysUserIds)) .getData(); userMap = userList.stream().collect( Collectors.toMap(SysUser::getUserId, Function.identity())); } else { userMap = null; } Set<Long> memIds = voList.stream().filter(articleVO -> articleVO.getArticleType() .equals(ArticleTypeEnum.USER_POSTING)).map(MgtArticleVO::getMemberId).collect( Collectors.toSet()); if (StringUtils.isNotEmpty(memIds)) { List<Member> memberList = memberClient.getMemberListByIds(memIds, SecurityConstants.INNER) .getData(); memberMap = memberList.stream().collect( Collectors.toMap(Member::getId, Function.identity())); } else { memberMap = null; } if (StringUtils.isNotNull(userMap)) { voList.stream().filter(articleVO -> articleVO.getArticleType() .equals(ArticleTypeEnum.PLATFORM_RELEASE)).forEach(articleVO -> { SysUser sysUser = userMap.get(Long.valueOf(articleVO.getCreateBy())); if (StringUtils.isNotNull(sysUser)) { articleVO.setCreateBy(sysUser.getNickName()); articleVO.setPhone(sysUser.getPhonenumber()); } }); } if (StringUtils.isNotNull(memberMap)) { voList.stream().filter(articleVO -> articleVO.getArticleType() .equals(ArticleTypeEnum.USER_POSTING)).forEach(articleVO -> { Member member = memberMap.get(articleVO.getMemberId()); if (StringUtils.isNotNull(member)) { articleVO.setCreateBy(member.getNickname()); articleVO.setPhone(member.getPhone()); } }); } return pageVO; } } ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/handler/MyMetaObjectHandler.java
@@ -20,16 +20,16 @@ @Override public void insertFill(MetaObject metaObject) { // 获取当前登录用户 String userName = SecurityUtils.getUsername(); fillValue("createBy", userName, metaObject); Long userId = SecurityUtils.getUserId(); fillValue("createBy", userId, metaObject); fillValue("createTime", LocalDateTime.now(), metaObject); } @Override public void updateFill(MetaObject metaObject) { // 获取当前登录用户 String userName = SecurityUtils.getUsername(); fillValue("updateBy", userName, metaObject); Long userId = SecurityUtils.getUserId(); fillValue("updateBy", userId, metaObject); fillValue("updateTime", LocalDateTime.now(), metaObject); } ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/handler/MyMetaObjectHandler.java
@@ -20,16 +20,16 @@ @Override public void insertFill(MetaObject metaObject) { // 获取当前登录用户 String userName = SecurityUtils.getUsername(); fillValue("createBy", userName, metaObject); Long userId = SecurityUtils.getUserId(); fillValue("createBy", userId, metaObject); fillValue("createTime", LocalDateTime.now(), metaObject); } @Override public void updateFill(MetaObject metaObject) { // 获取当前登录用户 String userName = SecurityUtils.getUsername(); fillValue("updateBy", userName, metaObject); Long userId = SecurityUtils.getUserId(); fillValue("updateBy", userId, metaObject); fillValue("updateTime", LocalDateTime.now(), metaObject); } ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/handler/MyMetaObjectHandler.java
@@ -20,16 +20,16 @@ @Override public void insertFill(MetaObject metaObject) { // 获取当前登录用户 String userName = SecurityUtils.getUsername(); fillValue("createBy", userName, metaObject); Long userId = SecurityUtils.getUserId(); fillValue("createBy", userId, metaObject); fillValue("createTime", LocalDateTime.now(), metaObject); } @Override public void updateFill(MetaObject metaObject) { // 获取当前登录用户 String userName = SecurityUtils.getUsername(); fillValue("updateBy", userName, metaObject); Long userId = SecurityUtils.getUserId(); fillValue("updateBy", userId, metaObject); fillValue("updateTime", LocalDateTime.now(), metaObject); } ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/handler/MyMetaObjectHandler.java
@@ -20,16 +20,16 @@ @Override public void insertFill(MetaObject metaObject) { // 获取当前登录用户 String userName = SecurityUtils.getUsername(); fillValue("createBy", userName, metaObject); Long userId = SecurityUtils.getUserId(); fillValue("createBy", userId, metaObject); fillValue("createTime", LocalDateTime.now(), metaObject); } @Override public void updateFill(MetaObject metaObject) { // 获取当前登录用户 String userName = SecurityUtils.getUsername(); fillValue("updateBy", userName, metaObject); Long userId = SecurityUtils.getUserId(); fillValue("updateBy", userId, metaObject); fillValue("updateTime", LocalDateTime.now(), metaObject); } ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/handler/MyMetaObjectHandler.java
@@ -20,16 +20,16 @@ @Override public void insertFill(MetaObject metaObject) { // 获取当前登录用户 String userName = SecurityUtils.getUsername(); fillValue("createBy", userName, metaObject); Long userId = SecurityUtils.getUserId(); fillValue("createBy", userId, metaObject); fillValue("createTime", LocalDateTime.now(), metaObject); } @Override public void updateFill(MetaObject metaObject) { // 获取当前登录用户 String userName = SecurityUtils.getUsername(); fillValue("updateBy", userName, metaObject); Long userId = SecurityUtils.getUserId(); fillValue("updateBy", userId, metaObject); fillValue("updateTime", LocalDateTime.now(), metaObject); } ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysUserController.java
@@ -537,5 +537,17 @@ userService.deleteSupplier(id); return R.ok(); } @InnerAuth @GetMapping("/list-by-name") R<List<SysUser>> getUserListByName(@RequestBody SysUser sysUser) { List<SysUser> list = userService.lambdaQuery() .like(StringUtils.isNotBlank(sysUser.getNickName()), SysUser::getNickName, sysUser.getNickName()) .like(StringUtils.isNotBlank(sysUser.getPhonenumber()), SysUser::getPhonenumber, sysUser.getPhonenumber()) .eq(SysUser::getUserType, "00") .eq(SysUser::getDelFlag, 0).list(); return R.ok(list); } }