package com.ruoyi.web.controller.smartor; import com.alibaba.fastjson2.JSON; import com.google.gson.Gson; import com.ruoyi.common.annotation.Log; import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.common.enums.BusinessType; import com.ruoyi.common.exception.base.BaseException; import com.ruoyi.common.utils.poi.ExcelUtil; import com.smartor.config.PhoneUtils; import com.smartor.config.RabbitMqConfig; import com.smartor.domain.IvrLibaTemplate; import com.smartor.domain.IvrLibaTemplateVO; import com.smartor.domain.Test1Vo; import com.smartor.service.IIvrLibaTemplateService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.ObjectUtils; import org.springframework.amqp.AmqpException; import org.springframework.amqp.core.Message; import org.springframework.amqp.core.MessageBuilder; import org.springframework.amqp.core.MessagePostProcessor; import org.springframework.amqp.rabbit.core.RabbitTemplate; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; import java.util.HashMap; import java.util.List; import java.util.Map; /** * 随访模板库Controller * * @author ruoyi * @date 2023-12-23 */ @Slf4j @Api(description = "随访模板库") @RestController @RequestMapping("/smartor/template") public class IvrLibaTemplateController extends BaseController { @Autowired private IIvrLibaTemplateService ivrLibaTemplateService; @Autowired private RabbitTemplate rabbitTemplate; @Autowired private PhoneUtils phoneUtils; /** * 查询模板库列表 */ @ApiOperation("查询随访模板库列表") @PreAuthorize("@ss.hasPermi('smartor:template:list')") @PostMapping("/list") public TableDataInfo list(@RequestBody IvrLibaTemplate ivrLibaTemplate) { startPage(); List list = ivrLibaTemplateService.selectIvrLibaTemplateList(ivrLibaTemplate); return getDataTable(list); } /** * 导出模板库列表 */ @ApiOperation("导出随访模板库列表") @PreAuthorize("@ss.hasPermi('smartor:template:export')") @Log(title = "模板库", businessType = BusinessType.EXPORT) @PostMapping("/export") public void export(HttpServletResponse response, IvrLibaTemplate ivrLibaTemplate) { List list = ivrLibaTemplateService.selectIvrLibaTemplateList(ivrLibaTemplate); ExcelUtil util = new ExcelUtil(IvrLibaTemplate.class); util.exportExcel(response, list, "模板库数据"); } /** * 获取模板库详细信息 */ @ApiOperation("获取随访模板库详细信息") @PreAuthorize("@ss.hasPermi('smartor:template:query')") @GetMapping(value = "/{ID}") public AjaxResult getInfo(@PathVariable("ID") Long ID) { return success(ivrLibaTemplateService.selectIvrLibaTemplateByID(ID)); } /** * 新增模板库 */ @ApiOperation("新增随访模板库") @PreAuthorize("@ss.hasPermi('smartor:template:add')") @Log(title = "模板库", businessType = BusinessType.INSERT) @PostMapping("/add") public AjaxResult add(@RequestBody IvrLibaTemplate ivrLibaTemplate) { return toAjax(ivrLibaTemplateService.insertIvrLibaTemplate(ivrLibaTemplate)); } /** * 修改模板库 */ @ApiOperation("修改随访模板库") @PreAuthorize("@ss.hasPermi('smartor:template:edit')") @Log(title = "模板库", businessType = BusinessType.UPDATE) @PostMapping("/edit") public AjaxResult edit(@RequestBody IvrLibaTemplate ivrLibaTemplate) { return toAjax(ivrLibaTemplateService.updateIvrLibaTemplate(ivrLibaTemplate)); } /** * 删除模板库 */ @ApiOperation("删除随访模板库") @PreAuthorize("@ss.hasPermi('smartor:template:remove')") @Log(title = "模板库", businessType = BusinessType.DELETE) @GetMapping("/remove/{IDs}") public AjaxResult remove(@PathVariable Long[] IDs) { return toAjax(ivrLibaTemplateService.deleteIvrLibaTemplateByIDs(IDs)); } /** * 新增或修改随访模板库详情 */ @ApiOperation("新增或修改随访模板库详情") @PostMapping("/saveOrUpdateScript") public AjaxResult saveOrUpdateScript(@RequestBody IvrLibaTemplateVO ivrLibaTemplateVO) { if (ObjectUtils.isEmpty(ivrLibaTemplateVO)) { throw new BaseException("入参为空,请检查入参"); } return success(ivrLibaTemplateService.saveOrUpdateTemplate(ivrLibaTemplateVO)); } /** * 查询模板详情根据条件 */ @ApiOperation("查询模板详情根据条件") @PostMapping("/selectInfoByCondition") public AjaxResult selectInfoByCondition(@RequestBody IvrLibaTemplateVO ivrLibaTemplateVO) { if (ObjectUtils.isEmpty(ivrLibaTemplateVO)) { throw new BaseException("查询模板详情入参为空,请检查入参"); } return success(ivrLibaTemplateService.selectInfoByCondition(ivrLibaTemplateVO)); } /** * 开始执行(测试用) */ @PostMapping("/queryRabbitmq") public AjaxResult queryRabbitmq(@RequestBody Test1Vo test1Vo) { // rabbitTemplate.convertAndSend(RabbitMqConfig.EXCHANGE_NAME, "phone.001", "测试数据001"); // rabbitTemplate.convertAndSend(RabbitMqConfig.EXCHANGE_NAME, "phone.002", "测试数据002"); // rabbitTemplate.convertAndSend(RabbitMqConfig.EXCHANGE_NAME, "phone.003", "测试数据003"); // rabbitTemplate.convertAndSend(RabbitMqConfig.EXCHANGE_NAME, routintKey, message, new MessagePostProcessor() { // @Override // public Message postProcessMessage(Message message) throws AmqpException { //// message.getMessageProperties().setDelay(times); // message.getMessageProperties().getHeaders().put("x-delay", times); ////message.getMessageProperties().setExpiration(); // return message; // } // }); log.info("-------------启动咨询应答超时提醒延迟队列-------------"); String data = JSON.toJSONString(test1Vo.getTestVo()); String substring = data.substring(1, data.length() - 1); this.rabbitTemplate.convertAndSend(RabbitMqConfig.phone_exchange, RabbitMqConfig.routing_key, substring, message -> { //注意这里时间可以使long,而且是设置header message.getMessageProperties().setHeader("x-delay", test1Vo.getTimes()); return message; }); log.info("-------------延迟队列{}ms后执行.-------------", test1Vo.getTimes()); return success(); } /** * 开始执行(测试用) */ @GetMapping("/addUser2") public AjaxResult addUser2() { String s = phoneUtils.ob("","","","","","","","3001","",true); return AjaxResult.success(s); } }