package cn.lili.controller.setting; import cn.lili.common.enums.ResultCode; import cn.lili.common.enums.ResultUtil; import cn.lili.common.enums.SwitchEnum; import cn.lili.common.exception.ServiceException; import cn.lili.common.utils.BeanUtil; import cn.lili.common.vo.PageVO; import cn.lili.common.vo.ResultMessage; import cn.lili.modules.message.entity.dos.NoticeMessage; import cn.lili.modules.message.entity.dto.NoticeMessageDetailDTO; import cn.lili.modules.message.entity.enums.NoticeMessageParameterEnum; import cn.lili.modules.message.service.NoticeMessageService; import com.baomidou.mybatisplus.core.metadata.IPage; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.EnumUtils; import org.elasticsearch.ResourceNotFoundException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.util.ArrayList; import java.util.List; /** * 管理端,会员站内信管理接口 * * @author Chopper * @since 2020/11/17 4:31 下午 */ @Slf4j @RestController @Api(tags = "管理端,会员站内信管理接口") @RequestMapping("/manager/setting/noticeMessage") public class NoticeMessageManagerController { @Autowired private NoticeMessageService noticeMessageService; @ApiOperation(value = "消息模板分页") @GetMapping @ApiImplicitParams({ @ApiImplicitParam(name = "type", value = "消息类型", dataType = "String", paramType = "query", allowableValues = "MEMBER,OTHER,STORE,WECHAT", allowMultiple = true) }) public ResultMessage> getPage(PageVO pageVO, String type) { return ResultUtil.data(noticeMessageService.getMessageTemplate(pageVO, type)); } @ApiOperation(value = "根据id获取通知详情") @ApiImplicitParam(name = "id", value = "模板id", dataType = "String", paramType = "path") @GetMapping("/{id}") public ResultMessage get(@PathVariable String id) { //根据id获取当前消息模板 NoticeMessage noticeMessage = noticeMessageService.getById(id); if (noticeMessage != null) { NoticeMessageDetailDTO noticeMessageDetailDTO = new NoticeMessageDetailDTO(); BeanUtil.copyProperties(noticeMessage, noticeMessageDetailDTO); //组织消息变量 String[] variableNames = noticeMessage.getVariable().split(","); //定义返回参数中变量列表 List variableValues = new ArrayList<>(); //循环消息变量赋值 if (variableNames.length > 0) { for (String variableName : variableNames) { if (NoticeMessageParameterEnum.getValueByType(variableName) != null) { variableValues.add(NoticeMessageParameterEnum.getValueByType(variableName)); } } noticeMessageDetailDTO.setVariables(variableValues); } return ResultUtil.data(noticeMessageDetailDTO); } throw new ResourceNotFoundException(ResultCode.NOTICE_NOT_EXIST.message()); } @ApiOperation(value = "修改站内信模板") @ApiImplicitParams({ @ApiImplicitParam(name = "noticeContent", value = "站内信内容", dataType = "String", paramType = "query"), @ApiImplicitParam(name = "noticeTitle", value = "站内信模板标题", dataType = "String", paramType = "query"), @ApiImplicitParam(name = "id", value = "模板id", dataType = "String", paramType = "path") }) @PutMapping("/{id}") public ResultMessage updateNoticeTemplate(@RequestParam String noticeContent, @RequestParam String noticeTitle, @PathVariable String id) { //根据id获取当前消息模板 NoticeMessage noticeMessage = noticeMessageService.getById(id); if (noticeMessage != null) { noticeMessage.setNoticeContent(noticeContent); noticeMessage.setNoticeTitle(noticeTitle); noticeMessageService.updateById(noticeMessage); return ResultUtil.data(noticeMessage); } throw new ResourceNotFoundException(ResultCode.NOTICE_NOT_EXIST.message()); } @ApiOperation(value = "修改站内信状态") @ApiImplicitParams({ @ApiImplicitParam(name = "id", value = "站内信状态", dataType = "String", paramType = "path"), @ApiImplicitParam(name = "status", value = "站内信状态", dataType = "String", paramType = "path") }) @PutMapping("/{id}/{status}") public ResultMessage status(@PathVariable String id, @PathVariable String status) { //根据id获取当前消息模板 NoticeMessage messageTemplate = noticeMessageService.getById(id); if (messageTemplate != null) { //校验传递站内信是否符合规范 Boolean b = EnumUtils.isValidEnum(SwitchEnum.class, status); if (b) { //赋值执行修改操作 messageTemplate.setNoticeStatus(status); noticeMessageService.updateById(messageTemplate); return ResultUtil.data(messageTemplate); } throw new ServiceException(ResultCode.NOTICE_ERROR); } throw new ResourceNotFoundException(ResultCode.NOTICE_NOT_EXIST.message()); } }