package com.xinquan.meditation.controller.client;
|
|
|
import cn.afterturn.easypoi.excel.ExcelExportUtil;
|
import cn.afterturn.easypoi.excel.entity.ExportParams;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.xinquan.common.core.domain.R;
|
import com.xinquan.common.core.utils.WebUtils;
|
import com.xinquan.common.core.utils.page.CollUtils;
|
import com.xinquan.common.core.utils.page.PageDTO;
|
import com.xinquan.common.security.service.TokenService;
|
import com.xinquan.common.security.utils.SecurityUtils;
|
import com.xinquan.meditation.api.domain.Meditation;
|
import com.xinquan.meditation.api.domain.dto.MeditationQuestionDTO;
|
import com.xinquan.meditation.domain.MeditationCategory;
|
import com.xinquan.meditation.domain.export.QuestionExport;
|
import com.xinquan.meditation.service.MeditationCategoryService;
|
import com.xinquan.meditation.service.MeditationQuestionService;
|
import com.xinquan.meditation.service.MeditationService;
|
import com.xinquan.system.api.domain.AppUser;
|
import com.xinquan.meditation.api.domain.MeditationQuestion;
|
import com.xinquan.meditation.api.domain.vo.NoticeDetailVO;
|
import com.xinquan.system.api.domain.NoticeRecord;
|
import com.xinquan.system.api.model.LoginUser;
|
import com.xinquan.user.api.feign.RemoteAppUserService;
|
import io.swagger.annotations.ApiOperation;
|
import org.apache.poi.ss.usermodel.Workbook;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.util.StringUtils;
|
import org.springframework.web.bind.annotation.*;
|
|
import javax.annotation.Resource;
|
import javax.servlet.ServletOutputStream;
|
import javax.servlet.http.HttpServletResponse;
|
import java.io.IOException;
|
import java.net.URLEncoder;
|
import java.time.LocalDateTime;
|
import java.time.format.DateTimeFormatter;
|
import java.util.*;
|
import java.util.stream.Collectors;
|
|
/**
|
* <p>
|
* 冥想音频用户操作表 前端控制器
|
* </p>
|
*
|
* @author mitao
|
* @since 2024-08-21
|
*/
|
@RestController
|
@RequestMapping("/client/meditation/meditation-question")
|
public class ClientMeditationQuestionController {
|
@Resource
|
private MeditationQuestionService meditationQuestionService;
|
@Resource
|
private MeditationService meditationService;
|
@Resource
|
private MeditationCategoryService meditationCategoryService;
|
@Resource
|
private RemoteAppUserService remoteAppUserService;
|
|
@Autowired
|
private TokenService tokenService;
|
@GetMapping("/getMeditationQuestion/{id}")
|
public R<MeditationQuestion> getMeditationQuestion(@PathVariable("id") String id){
|
MeditationQuestion byId = meditationQuestionService.getById(id);
|
return R.ok(byId);
|
}
|
|
/**
|
* 远程调用 查询待回复内容数量
|
* @return
|
*/
|
@PostMapping("/getQuestionCount")
|
public R<String> getQuestionCount() {
|
List<MeditationQuestion> list = meditationQuestionService.lambdaQuery()
|
.isNull(MeditationQuestion::getReplyContent).list();
|
return R.ok(list.size()+"");
|
}
|
/**
|
* 远程调用 查询回复通知消息内容
|
* @return
|
*/
|
@PostMapping("/noticeDetail")
|
public R<NoticeDetailVO> noticeDetail(NoticeDetailVO req) {
|
LoginUser loginUser = tokenService.getLoginUser();
|
if (loginUser==null){
|
return R.tokenError("登录失效");
|
}
|
Long userId = loginUser.getUserid();
|
MeditationQuestion byId = meditationQuestionService.getById(req.getMeditationQuestionId());
|
if (byId!=null){
|
Meditation byId1 = meditationService.getById(byId.getMeditationId());
|
req.setMeditationTitle(byId1.getMeditationTitle());
|
req.setCoverDescription(byId1.getCoverDescription());
|
req.setIconUrl(byId1.getIconUrl());
|
req.setContent(byId.getContent());
|
req.setReplyContent(byId.getReplyContent());
|
}
|
return R.ok(req);
|
}
|
|
@ApiOperation(value = "提问列表管理导出", tags = {"管理后台-提问管理"})
|
@PutMapping("/export")
|
public void export(@RequestBody MeditationQuestionDTO dto)
|
{
|
LambdaQueryWrapper<MeditationQuestion> meditationLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
if (StringUtils.hasLength(dto.getIds())){
|
meditationLambdaQueryWrapper.in(MeditationQuestion::getId, Arrays.asList(dto.getIds().split(",")));
|
}
|
meditationLambdaQueryWrapper.eq(dto.getShowFlag()!=null,MeditationQuestion::getShowFlag, dto.getShowFlag());
|
if (dto.getIsReplay()!=null){
|
if (dto.getIsReplay() == 1){
|
meditationLambdaQueryWrapper.isNotNull(MeditationQuestion::getReplyTime);
|
}else{
|
meditationLambdaQueryWrapper.isNull(MeditationQuestion::getReplyTime);
|
}
|
}
|
if (StringUtils.hasLength(dto.getUserName())){
|
List<Long> data = remoteAppUserService.getAppUserByName(dto.getUserName()).getData();
|
if (data.isEmpty()){
|
data.add(-1L);
|
}
|
meditationLambdaQueryWrapper.in(MeditationQuestion::getAppUserId,data);
|
}
|
if (StringUtils.hasLength(dto.getMeditationName())){
|
List<Long> collect = meditationService.lambdaQuery()
|
.like(Meditation::getMeditationTitle, dto.getMeditationName())
|
.list().stream().map(Meditation::getId).collect(Collectors.toList());
|
if (collect.isEmpty()){
|
collect.add(-1L);
|
}
|
meditationLambdaQueryWrapper.in(MeditationQuestion::getMeditationId,collect);
|
}
|
meditationLambdaQueryWrapper.orderByDesc(MeditationQuestion::getCreateTime);
|
List<MeditationQuestion> page = meditationQuestionService.list(meditationLambdaQueryWrapper);
|
List<QuestionExport> questionExports = new ArrayList<>();
|
for (MeditationQuestion record : page) {
|
record.setUid(record.getId()+"");
|
AppUser data = remoteAppUserService.getAppUserById(record.getAppUserId().toString()).getData();
|
|
Meditation byId = meditationService.getById(record.getMeditationId());
|
|
QuestionExport questionExport = new QuestionExport();
|
if (byId!=null){
|
record.setMeditationName(byId.getMeditationTitle());
|
questionExport.setName(byId.getMeditationTitle());
|
}
|
if (data!=null){
|
record.setUserName(data.getNickname());
|
record.setAvatar(data.getAvatar());
|
record.setCellPhone(data.getCellPhone());
|
questionExport.setUserName(data.getNickname());
|
questionExport.setCellphone(data.getCellPhone());
|
}
|
questionExport.setContent(record.getContent());
|
DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
|
String format = df.format(record.getCreateTime());
|
if (record.getReplyTime()!=null){
|
String format1 = df.format(record.getReplyTime());
|
questionExport.setReplayTime(format1);
|
}
|
questionExport.setCreateTime(format);
|
questionExport.setReplayContent(record.getReplyContent());
|
|
questionExport.setLikeCount(record.getLikeCount()+"");
|
questionExport.setShowFlag(record.getShowFlag()+"");
|
questionExports.add(questionExport);
|
}
|
Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams(), QuestionExport.class, questionExports);
|
HttpServletResponse response = WebUtils.response();
|
response.setContentType("application/vnd.ms-excel");
|
response.setCharacterEncoding("utf-8");
|
ServletOutputStream outputStream = null;
|
try {
|
String fileName = URLEncoder.encode("提问管理管理导出.xls", "utf-8");
|
response.setHeader("Content-Disposition", "attachment;filename=" + fileName);
|
response.setContentType("application/vnd.ms-excel;charset=UTF-8");
|
response.setHeader("Pragma", "no-cache");
|
response.setHeader("Cache-Control", "no-cache");
|
outputStream = response.getOutputStream();
|
workbook.write(outputStream);
|
} catch (IOException e) {
|
e.printStackTrace();
|
} finally {
|
try {
|
outputStream.close();
|
} catch (IOException e) {
|
e.printStackTrace();
|
}
|
}
|
}
|
@PostMapping("/meditationQuestionManagementList")
|
@ApiOperation(value = "提问列表-分页", tags = {"管理后台-提问管理"})
|
public R<PageDTO<MeditationQuestion>> meditationQuestionManagementList(@RequestBody MeditationQuestionDTO dto) {
|
LambdaQueryWrapper<MeditationQuestion> meditationLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
meditationLambdaQueryWrapper.eq(dto.getShowFlag()!=null,MeditationQuestion::getShowFlag, dto.getShowFlag());
|
if (dto.getIsReplay()!=null){
|
if (dto.getIsReplay() == 1){
|
meditationLambdaQueryWrapper.isNotNull(MeditationQuestion::getReplyContent);
|
}else{
|
meditationLambdaQueryWrapper.isNull(MeditationQuestion::getReplyContent);
|
}
|
}
|
if (StringUtils.hasLength(dto.getUserName())){
|
List<Long> data = remoteAppUserService.getAppUserByName(dto.getUserName()).getData();
|
if (data.isEmpty()){
|
data.add(-1L);
|
}
|
meditationLambdaQueryWrapper.in(MeditationQuestion::getAppUserId,data);
|
}
|
if (StringUtils.hasLength(dto.getMeditationName())){
|
List<Long> collect = meditationService.lambdaQuery()
|
.like(Meditation::getMeditationTitle, dto.getMeditationName())
|
.list().stream().map(Meditation::getId).collect(Collectors.toList());
|
if (collect.isEmpty()){
|
collect.add(-1L);
|
}
|
meditationLambdaQueryWrapper.in(MeditationQuestion::getMeditationId,collect);
|
}
|
if (dto.getIsReplay()==null ){
|
meditationLambdaQueryWrapper.orderBy(true, true, MeditationQuestion::getReplyContent); // "reply_content IS NULL" 确保 null 排前面
|
}
|
if (dto.getIsReplay()!=null && dto.getIsReplay()==2){
|
meditationLambdaQueryWrapper.orderBy(true, true, MeditationQuestion::getReplyContent); // "reply_content IS NULL" 确保 null 排前面
|
}
|
|
meditationLambdaQueryWrapper.orderByDesc(MeditationQuestion::getCreateTime);
|
Page<MeditationQuestion> page = meditationQuestionService.page(new Page<>(dto.getPageCurr(), dto.getPageSize()), meditationLambdaQueryWrapper);
|
if (CollUtils.isEmpty(page.getRecords())) {
|
return R.ok(PageDTO.empty(page));
|
}
|
for (MeditationQuestion record : page.getRecords()) {
|
record.setUid(record.getId()+"");
|
AppUser data = remoteAppUserService.getAppUserById(record.getAppUserId().toString()).getData();
|
if (data!=null){
|
record.setUserName(data.getNickname());
|
record.setAvatar(data.getAvatar());
|
record.setCellPhone(data.getCellPhone());
|
}
|
Meditation byId = meditationService.getById(record.getMeditationId());
|
|
if (byId!=null){
|
record.setChargeType(byId.getChargeType());
|
MeditationCategory byId1 = meditationCategoryService.getById(byId.getCateId());
|
if (byId1!=null){
|
record.setMeditationCategoryName(byId1.getCategoryName());
|
}
|
record.setMeditationName(byId.getMeditationTitle());
|
if (byId.getChargeType()!=null &&byId.getChargeType() == 3){
|
record.setMoney(byId.getGeneralPrice());
|
}
|
}
|
}
|
// List<MeditationQuestion> records = page.getRecords();
|
// page.setRecords(records);
|
return R.ok(PageDTO.of(page, MeditationQuestion.class));
|
}
|
@PostMapping("/addMeditationQuestion")
|
@ApiOperation(value = "新增提问管理", tags = "管理后台-提问管理")
|
public R addMeditationQuestion(@RequestBody MeditationQuestion homeBackgroundMusic) {
|
homeBackgroundMusic.setCreateBy(SecurityUtils.getUsername());
|
homeBackgroundMusic.setCreateTime(LocalDateTime.now());
|
return R.ok(meditationQuestionService.save(homeBackgroundMusic));
|
}
|
@GetMapping("/updateState")
|
@ApiOperation(value = "修改提问显示状态", tags = "管理后台-提问管理")
|
public R updateState(String uid) {
|
MeditationQuestion byId = meditationQuestionService.getById(uid);
|
if (byId.getShowFlag() == 1){
|
byId.setShowFlag(2);
|
}else {
|
byId.setShowFlag(1);
|
}
|
meditationQuestionService.updateById(byId);
|
return R.ok();
|
}
|
@GetMapping("/detailMeditationQuestion")
|
@ApiOperation(value = "查看详情提问管理", tags = "管理后台-提问管理")
|
public R<MeditationQuestion> detailMeditationQuestion(String uid) {
|
MeditationQuestion byId = meditationQuestionService.getById(uid);
|
AppUser data = remoteAppUserService.getAppUserById(byId.getAppUserId().toString()).getData();
|
if (data!=null){
|
byId.setUserName(data.getNickname());
|
byId.setAvatar(data.getAvatar());
|
byId.setCellPhone(data.getCellPhone());
|
}
|
Meditation byId1 = meditationService.getById(byId.getMeditationId());
|
if (byId1!=null){
|
byId.setMeditationName(byId1.getMeditationTitle());
|
byId.setChargeType(byId1.getChargeType());
|
byId.setCoverUrl(byId1.getCoverUrl().split(",")[0]);
|
}
|
MeditationCategory byId2 = meditationCategoryService.getById(byId1.getCateId());
|
if (byId2!=null){
|
byId.setMeditationCategoryName(byId2.getCategoryName());
|
|
}
|
return R.ok(byId);
|
}
|
@PostMapping("/updateMeditationQuestion")
|
@ApiOperation(value = "修改提问管理", tags = "管理后台-提问管理")
|
public R updateMeditationQuestion(@RequestBody MeditationQuestion homeBackgroundMusic) {
|
Long id = homeBackgroundMusic.getId();
|
MeditationQuestion byId = meditationQuestionService.getById(id);
|
homeBackgroundMusic.setUpdateBy(SecurityUtils.getUsername());
|
homeBackgroundMusic.setUpdateTime(LocalDateTime.now());
|
if (homeBackgroundMusic.getType() == 2){
|
homeBackgroundMusic.setReplyTime(LocalDateTime.now());
|
// 给用户添加一条系统消息
|
NoticeRecord noticeRecord = new NoticeRecord();
|
noticeRecord.setAppUserId(byId.getAppUserId());
|
noticeRecord.setMeditationQuestionId(homeBackgroundMusic.getId());
|
noticeRecord.setReadStatus(1);
|
noticeRecord.setNoticeType(2);
|
noticeRecord.setMeditationId(byId.getMeditationId());
|
noticeRecord.setTitle("平台回复通知");
|
noticeRecord.setContent(homeBackgroundMusic.getReplyContent());
|
remoteAppUserService.addNoticeReplay(noticeRecord);
|
}
|
return R.ok(meditationQuestionService.updateById(homeBackgroundMusic));
|
}
|
@PostMapping("/deleteMeditationQuestion")
|
@ApiOperation(value = "批量删除", tags = "管理后台-提问管理")
|
public R deleteMeditationQuestion(String ids) {
|
return R.ok(meditationQuestionService.removeBatchByIds(Arrays.asList(ids.split(",")).stream().map(Long::valueOf).collect(Collectors.toList())));
|
}
|
}
|