package com.mindskip.xzs.controller.admin;
|
|
|
import com.mindskip.xzs.base.BaseApiController;
|
import com.mindskip.xzs.base.RestResponse;
|
import com.mindskip.xzs.domain.Message;
|
import com.mindskip.xzs.domain.MessageUser;
|
import com.mindskip.xzs.domain.User;
|
import com.mindskip.xzs.service.MessageService;
|
import com.mindskip.xzs.service.UserService;
|
import com.mindskip.xzs.utility.DateTimeUtil;
|
import com.mindskip.xzs.utility.PageInfoHelper;
|
import com.mindskip.xzs.viewmodel.admin.message.MessagePageRequestVM;
|
import com.mindskip.xzs.viewmodel.admin.message.MessageResponseVM;
|
import com.mindskip.xzs.viewmodel.admin.message.MessageSendVM;
|
import com.github.pagehelper.PageInfo;
|
import lombok.AllArgsConstructor;
|
import org.springframework.web.bind.annotation.RequestBody;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestMethod;
|
import org.springframework.web.bind.annotation.RestController;
|
|
import javax.validation.Valid;
|
import java.util.Date;
|
import java.util.List;
|
import java.util.stream.Collectors;
|
|
/**
|
* @version 2.2.0
|
* @description: 消息
|
* Copyright (C), 2020-2021, 武汉思维跳跃科技有限公司
|
* @date 2021 /9/7 9:45
|
*/
|
@RestController("AdminMessageController")
|
@RequestMapping(value = "/api/admin/message")
|
@AllArgsConstructor
|
public class MessageController extends BaseApiController {
|
|
private final MessageService messageService;
|
private final UserService userService;
|
|
/**
|
* 消息分页
|
*
|
* @param model the model
|
* @return the rest response
|
*/
|
@RequestMapping(value = "/page", method = RequestMethod.POST)
|
public RestResponse<PageInfo<MessageResponseVM>> pageList(@RequestBody MessagePageRequestVM model) {
|
PageInfo<Message> pageInfo = messageService.page(model);
|
List<Integer> ids = pageInfo.getList().stream().map(d -> d.getId()).collect(Collectors.toList());
|
List<MessageUser> messageUsers = ids.size() == 0 ? null : messageService.selectByMessageIds(ids);
|
PageInfo<MessageResponseVM> page = PageInfoHelper.copyMap(pageInfo, m -> {
|
MessageResponseVM vm = modelMapper.map(m, MessageResponseVM.class);
|
String receives = messageUsers.stream().filter(d -> d.getMessageId().equals(m.getId())).map(d -> d.getReceiveUserName())
|
.collect(Collectors.joining(","));
|
vm.setReceives(receives);
|
vm.setCreateTime(DateTimeUtil.dateFormat(m.getCreateTime()));
|
return vm;
|
});
|
return RestResponse.ok(page);
|
}
|
|
|
/**
|
* 消息发送
|
*
|
* @param model the model
|
* @return the rest response
|
*/
|
@RequestMapping(value = "/send", method = RequestMethod.POST)
|
public RestResponse send(@RequestBody @Valid MessageSendVM model) {
|
User user = getCurrentUser();
|
List<User> receiveUser = userService.selectByIds(model.getReceiveUserIds());
|
Date now = new Date();
|
Message message = new Message();
|
message.setTitle(model.getTitle());
|
message.setContent(model.getContent());
|
message.setCreateTime(now);
|
message.setReadCount(0);
|
message.setReceiveUserCount(receiveUser.size());
|
message.setSendUserId(user.getId());
|
message.setSendUserName(user.getUserName());
|
message.setSendRealName(user.getRealName());
|
List<MessageUser> messageUsers = receiveUser.stream().map(d -> {
|
MessageUser messageUser = new MessageUser();
|
messageUser.setCreateTime(now);
|
messageUser.setReaded(false);
|
messageUser.setReceiveRealName(d.getRealName());
|
messageUser.setReceiveUserId(d.getId());
|
messageUser.setReceiveUserName(d.getUserName());
|
return messageUser;
|
}).collect(Collectors.toList());
|
messageService.sendMessage(message, messageUsers);
|
return RestResponse.ok();
|
}
|
|
}
|