khy-three #131

Open
root wants to merge 2 commits from khy-three into master
5 changed files with 188 additions and 2 deletions

View File

@ -8,7 +8,9 @@ import cn.iocoder.yudao.module.member.api.user.MemberUserApi;
import cn.iocoder.yudao.module.promotion.controller.admin.circle.vo.CirclePageReqVO; import cn.iocoder.yudao.module.promotion.controller.admin.circle.vo.CirclePageReqVO;
import cn.iocoder.yudao.module.promotion.controller.admin.circle.vo.CircleRespVO; import cn.iocoder.yudao.module.promotion.controller.admin.circle.vo.CircleRespVO;
import cn.iocoder.yudao.module.promotion.controller.admin.circle.vo.CircleSaveReqVO; import cn.iocoder.yudao.module.promotion.controller.admin.circle.vo.CircleSaveReqVO;
import cn.iocoder.yudao.module.promotion.controller.admin.circlereview.vo.CircleReviewPageReqVO;
import cn.iocoder.yudao.module.promotion.controller.admin.circlereview.vo.CircleReviewSaveReqVO; import cn.iocoder.yudao.module.promotion.controller.admin.circlereview.vo.CircleReviewSaveReqVO;
import cn.iocoder.yudao.module.promotion.controller.app.circle.vo.AppCircleReviewRespVO;
import cn.iocoder.yudao.module.promotion.dal.dataobject.circle.CircleDO; import cn.iocoder.yudao.module.promotion.dal.dataobject.circle.CircleDO;
import cn.iocoder.yudao.module.promotion.dal.dataobject.circlelike.CircleLikeDO; import cn.iocoder.yudao.module.promotion.dal.dataobject.circlelike.CircleLikeDO;
import cn.iocoder.yudao.module.promotion.dal.dataobject.circlereview.CircleReviewDO; import cn.iocoder.yudao.module.promotion.dal.dataobject.circlereview.CircleReviewDO;
@ -157,4 +159,12 @@ public class AppCircleController {
return success(true); return success(true);
} }
@GetMapping("/getCircleReviewList")
@Operation(summary = "获得动态评论列表")
@PreAuthenticated
public CommonResult<PageResult<AppCircleReviewRespVO>> getCircleReviewList(@Valid CircleReviewPageReqVO circleReviewPageReqVO) {
PageResult<AppCircleReviewRespVO> pageResult = circleReviewService.getAppCircleReviewPage(circleReviewPageReqVO);
return success(pageResult);
}
} }

View File

@ -0,0 +1,75 @@
package cn.iocoder.yudao.module.promotion.controller.app.circle.vo;
import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat;
import cn.iocoder.yudao.framework.excel.core.convert.DictConvert;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.time.LocalDateTime;
import java.util.List;
@Schema(description = "管理后台 - 动态的评论 Response VO")
@Data
@ExcelIgnoreUnannotated
public class AppCircleReviewRespVO {
@Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "12446")
@ExcelProperty("编号")
private Long id;
@Schema(description = "用户id", example = "10725")
@ExcelProperty("用户id")
private Long userId;
@Schema(description = "动态id", example = "17391")
@ExcelProperty("动态id")
private Long circleId;
@Schema(description = "评论类型", example = "2")
@ExcelProperty(value = "评论类型", converter = DictConvert.class)
@DictFormat("circle_review_type") // TODO 代码优化建议设置到对应的 DictTypeConstants 枚举类中
private Integer type;
@Schema(description = "评论内容")
@ExcelProperty("评论内容")
private String content;
@Schema(description = "图片地址", example = "https://www.iocoder.cn")
@ExcelProperty("图片地址")
private String picUrl;
@Schema(description = "点赞量", example = "10166")
@ExcelProperty("点赞量")
private Long likeCount;
@Schema(description = "被回复的评论ID", example = "8913")
@ExcelProperty("被回复的评论ID")
private Long replyId;
@Schema(description = "被回复的用户ID", example = "32646")
@ExcelProperty("被回复的用户ID")
private Long replyUserId;
@Schema(description = "版本号")
@ExcelProperty("版本号")
private Integer version;
@Schema(description = "创建时间")
@ExcelProperty("创建时间")
private LocalDateTime createTime;
@Schema(description = "备注")
private String remark;
@Schema(description = "子评论")
private List<AppCircleReviewRespVO> children;
@Schema(description = "用户昵称")
private String nickname;
@Schema(description = "用户头像")
private String avatar;
}

View File

@ -0,0 +1,49 @@
package cn.iocoder.yudao.module.promotion.controller.app.supportstaff;
import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
import cn.iocoder.yudao.framework.security.core.annotations.PreAuthenticated;
import cn.iocoder.yudao.module.promotion.controller.admin.supportstaff.vo.SupportStaffPageReqVO;
import cn.iocoder.yudao.module.promotion.controller.admin.supportstaff.vo.SupportStaffRespVO;
import cn.iocoder.yudao.module.promotion.controller.admin.supportstaff.vo.SupportStaffSaveReqVO;
import cn.iocoder.yudao.module.promotion.dal.dataobject.supportstaff.SupportStaffDO;
import cn.iocoder.yudao.module.promotion.service.supportstaff.SupportStaffService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
import java.io.IOException;
import java.util.List;
import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId;
@Tag(name = "app - 客服人员")
@RestController
@RequestMapping("/promotion/support-staff")
@Validated
public class AppSupportStaffController {
@Resource
private SupportStaffService supportStaffService;
@GetMapping("/updateLineStatus")
@PreAuthenticated
public CommonResult<Boolean> updateLineStatus (Integer lineStatus){
SupportStaffDO supportStaffDO = supportStaffService.getSupportStaffByUserId(getLoginUserId());
if (supportStaffDO != null){
supportStaffService.updateLineStatus(String.valueOf(supportStaffDO.getId()), lineStatus);
}
return success(true);
}
}

View File

@ -3,6 +3,7 @@ package cn.iocoder.yudao.module.promotion.service.circlereview;
import java.util.*; import java.util.*;
import javax.validation.*; import javax.validation.*;
import cn.iocoder.yudao.module.promotion.controller.admin.circlereview.vo.*; import cn.iocoder.yudao.module.promotion.controller.admin.circlereview.vo.*;
import cn.iocoder.yudao.module.promotion.controller.app.circle.vo.AppCircleReviewRespVO;
import cn.iocoder.yudao.module.promotion.dal.dataobject.circlereview.CircleReviewDO; import cn.iocoder.yudao.module.promotion.dal.dataobject.circlereview.CircleReviewDO;
import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.pojo.PageParam; import cn.iocoder.yudao.framework.common.pojo.PageParam;
@ -54,4 +55,5 @@ public interface CircleReviewService {
*/ */
PageResult<CircleReviewDO> getCircleReviewPage(CircleReviewPageReqVO pageReqVO); PageResult<CircleReviewDO> getCircleReviewPage(CircleReviewPageReqVO pageReqVO);
PageResult<AppCircleReviewRespVO> getAppCircleReviewPage(CircleReviewPageReqVO circleReviewPageReqVO);
} }

View File

@ -1,11 +1,18 @@
package cn.iocoder.yudao.module.promotion.service.circlereview; package cn.iocoder.yudao.module.promotion.service.circlereview;
import cn.hutool.core.collection.CollUtil;
import cn.iocoder.yudao.module.member.api.user.MemberUserApi;
import cn.iocoder.yudao.module.member.api.user.dto.MemberUserRespDTO;
import cn.iocoder.yudao.module.promotion.controller.app.circle.vo.AppCircleReviewRespVO;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.annotation.Resource; import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.util.*; import java.util.*;
import java.util.stream.Collectors;
import cn.iocoder.yudao.module.promotion.controller.admin.circlereview.vo.*; import cn.iocoder.yudao.module.promotion.controller.admin.circlereview.vo.*;
import cn.iocoder.yudao.module.promotion.dal.dataobject.circlereview.CircleReviewDO; import cn.iocoder.yudao.module.promotion.dal.dataobject.circlereview.CircleReviewDO;
import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.pojo.PageResult;
@ -15,6 +22,7 @@ import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.module.promotion.dal.mysql.circlereview.CircleReviewMapper; import cn.iocoder.yudao.module.promotion.dal.mysql.circlereview.CircleReviewMapper;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
import static cn.iocoder.yudao.module.member.enums.ErrorCodeConstants.USER_NOT_EXISTS;
import static cn.iocoder.yudao.module.promotion.enums.ErrorCodeConstants.*; import static cn.iocoder.yudao.module.promotion.enums.ErrorCodeConstants.*;
/** /**
@ -29,6 +37,9 @@ public class CircleReviewServiceImpl implements CircleReviewService {
@Resource @Resource
private CircleReviewMapper circleReviewMapper; private CircleReviewMapper circleReviewMapper;
@Resource
private MemberUserApi memberUserApi;
@Override @Override
public Long createCircleReview(CircleReviewSaveReqVO createReqVO) { public Long createCircleReview(CircleReviewSaveReqVO createReqVO) {
// 插入 // 插入
@ -76,4 +87,43 @@ public class CircleReviewServiceImpl implements CircleReviewService {
return circleReviewMapper.selectPage(pageReqVO); return circleReviewMapper.selectPage(pageReqVO);
} }
@Override
public PageResult<AppCircleReviewRespVO> getAppCircleReviewPage(CircleReviewPageReqVO circleReviewPageReqVO) {
circleReviewPageReqVO.setType(0);
PageResult<CircleReviewDO> page = circleReviewMapper.selectPage(circleReviewPageReqVO);
List<CircleReviewDO> list = page.getList();
if (list.isEmpty()){
return PageResult.empty();
}
List<AppCircleReviewRespVO> result = list.stream().map(item -> {
AppCircleReviewRespVO appCircleReviewRespVO = new AppCircleReviewRespVO();
BeanUtils.copyProperties(item, appCircleReviewRespVO);
MemberUserRespDTO member = memberUserApi.getUser(item.getUserId());
if (member == null) {
throw exception(USER_NOT_EXISTS);
}
appCircleReviewRespVO.setNickname(member.getNickname());
appCircleReviewRespVO.setAvatar(member.getAvatar());
List<CircleReviewDO> children = circleReviewMapper.selectList("reply_id", item.getId());
if (CollUtil.isNotEmpty(children)){
List<AppCircleReviewRespVO> childs = children.stream().map(child -> {
AppCircleReviewRespVO appCircleReviewRespVOChild = new AppCircleReviewRespVO();
BeanUtils.copyProperties(child, appCircleReviewRespVOChild);
MemberUserRespDTO memberUserRespDTO = memberUserApi.getUser(child.getUserId());
if (memberUserRespDTO == null) {
throw exception(USER_NOT_EXISTS);
}
appCircleReviewRespVOChild.setNickname(memberUserRespDTO.getNickname());
appCircleReviewRespVOChild.setAvatar(memberUserRespDTO.getAvatar());
return appCircleReviewRespVOChild;
}).collect(Collectors.toList());
appCircleReviewRespVO.setChildren(childs);
}
return appCircleReviewRespVO;
}).collect(Collectors.toList());
PageResult<AppCircleReviewRespVO> appPage = new PageResult<>(result, page.getTotal());
return appPage;
}
} }