package com.ym.mec.teacher.controller; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import java.io.IOException; import java.util.Map; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import com.ym.mec.auth.api.client.SysUserFeignService; import com.ym.mec.auth.api.entity.SysUser; import com.ym.mec.biz.dal.entity.SysMessage; import com.ym.mec.biz.dal.enums.MessageSendMode; import com.ym.mec.biz.dal.page.SysMessageQueryInfo; import com.ym.mec.biz.service.SysMessageService; import com.ym.mec.common.controller.BaseController; import com.ym.mec.common.exception.BizException; import com.ym.mec.common.page.PageInfo; import com.ym.mec.thirdparty.message.MessageSenderPluginContext.MessageSender; import com.ym.mec.util.validator.CommonValidator; @RestController @Api(tags = "消息服务") @RequestMapping("sysMessage") public class SysMessageController extends BaseController { @Autowired private SysMessageService sysMessageService; @Autowired private SysUserFeignService sysUserFeignService; @ApiOperation("获取所有消息列表") @GetMapping(value = "list") public Object list(SysMessageQueryInfo queryInfo) throws IOException { SysUser sysUser = sysUserFeignService.queryUserInfo(); if (sysUser == null) { return failed(HttpStatus.FORBIDDEN, "请登录"); } queryInfo.setUserId(sysUser.getId()); queryInfo.setType(3); PageInfo pageInfo = sysMessageService.queryPage(queryInfo); return succeed(pageInfo); } @ApiOperation("一键已读") @PostMapping("batchSetRead") public Object batchSetRead() { int status = 1; SysUser sysUser = sysUserFeignService.queryUserInfo(); if (sysUser == null) { return failed(HttpStatus.FORBIDDEN, "请登录"); } return sysMessageService.updateStatus(sysUser.getId(), status) > 0 ? succeed() : failed(); } @ApiOperation("设置已读") @PostMapping("setRead") public Object setRead(Long id) { int status = 1; SysUser sysUser = sysUserFeignService.queryUserInfo(); if (sysUser == null) { return failed(HttpStatus.FORBIDDEN, "请登录"); } return sysMessageService.updateOneStatus(id, status) > 0 ? succeed() : failed(); } @ApiOperation(value = "查询用户未读消息条数") @GetMapping("/queryCountOfUnread") public Object queryCountOfUnread() { SysUser sysUser = sysUserFeignService.queryUserInfo(); if (sysUser == null) { return failed("请重新登录"); } Map map = sysMessageService.queryCountOfUnread(MessageSendMode.PUSH, sysUser.getId()); if (map == null || map.size() == 0) { return succeed(); } return succeed(map); } /* @ApiOperation(value = "发送短信验证码") @PostMapping("/sendSmsCode") public Object sendSmsCode(String sendCodeType, String mobileNo) { SysUser sysUser; if (StringUtils.isBlank(mobileNo)) { sysUser = sysUserFeignService.queryUserInfo(); } else { sysUser = sysUserFeignService.queryUserByMobile(mobileNo); } if (sysUser == null) { return failed(HttpStatus.FORBIDDEN, "请登录"); } Integer userId = sysUser.getId(); mobileNo = sysUser.getPhone(); MessageType messageType = MessageType.getMessageType(sendCodeType); if (messageType == null) { throw new BizException("消息类型参数错误"); } if (StringUtils.isBlank(mobileNo) || !CommonValidator.isMobileNo(mobileNo)) { throw new BizException("请输入正确的手机号"); } sysMessageService.sendSecurityCode(MessageSender.YIMEI, userId, MessageSendMode.SMS, messageType, mobileNo); return succeed(); } @ApiOperation(value = "发送短信验证码") @PostMapping("/noAuth/sendSmsCode") public Object noAuthSendSmsCode(String sendCodeType, String mobileNo) { MessageType messageType = MessageType.getMessageType(sendCodeType); if (messageType == null) { throw new BizException("消息类型参数错误"); } if (StringUtils.isBlank(mobileNo) || !CommonValidator.isMobileNo(mobileNo)) { throw new BizException("请输入正确的手机号"); } // sysMessageService.sendSecurityCode(MessageSender.YIMEI, userId, MessageSendMode.SMS, messageType, mobileNo); return succeed(); }*/ @ApiOperation(value = "发送消息") @PostMapping("/sendMessage") public Object sendMessage(MessageSender messageSender, String content, String receiver, int readStatus, String url, String group) { SysUser sysUser = sysUserFeignService.queryUserInfo(); if (sysUser == null) { return failed(HttpStatus.FORBIDDEN, "请登录"); } Integer userId = sysUser.getId(); String mobileNo = sysUser.getPhone(); if (StringUtils.isBlank(mobileNo) || !CommonValidator.isMobileNo(mobileNo)) { throw new BizException("请输入正确的手机号"); } sysMessageService.sendMessage(messageSender, userId, "", content, receiver, null, readStatus, url, group); return succeed(); } }