ruoyi-admin/pom.xml
@@ -80,6 +80,11 @@ <artifactId>core</artifactId> <version>2.0</version> </dependency> <dependency> <groupId>org.json</groupId> <artifactId>json</artifactId> <version>20210307</version> </dependency> </dependencies> <build> @@ -99,15 +104,15 @@ </execution> </executions> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <version>3.1.0</version> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <version>3.1.0</version> <configuration> <failOnMissingWebXml>false</failOnMissingWebXml> <warName>${project.artifactId}</warName> </configuration> </plugin> </configuration> </plugin> </plugins> <finalName>${project.artifactId}</finalName> </build> ruoyi-admin/src/main/java/com/ruoyi/web/controller/hanler/ChatWebSocketHandler.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,90 @@ package com.ruoyi.web.controller.hanler; import com.fasterxml.jackson.databind.ObjectMapper; import com.smartor.domain.SocketMessage; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; import org.springframework.web.socket.BinaryMessage; import org.springframework.web.socket.CloseStatus; import org.springframework.web.socket.TextMessage; import org.springframework.web.socket.WebSocketSession; import org.springframework.web.socket.handler.AbstractWebSocketHandler; import java.io.IOException; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; @Slf4j @Component public class ChatWebSocketHandler extends AbstractWebSocketHandler { // ç¨äºåå¨ç¨æ·IDåWebSocketSessionçæ å°å ³ç³» private static Map<String, WebSocketSession> sessions = new ConcurrentHashMap<>(); @Override public void afterConnectionEstablished(WebSocketSession session) throws Exception { // è·åç¨æ·IDï¼å¯ä»¥ä»sessionä¸è·åæè éè¿å ¶ä»æ¹å¼è·å String userId = extractUserId(session); // å°ç¨æ·IDåWebSocketSessionåå¨å°æ å°è¡¨ä¸ sessions.put(userId, session); } @Override protected void handleTextMessage(WebSocketSession session, TextMessage message) throws Exception { // å¤çæ¶å°çæ¶æ¯ String userId = extractUserId(session); String payload = message.getPayload().toString(); log.info("-----------------ï¼{}", payload); // è§£ææ¶æ¯ç±»å ObjectMapper mapper = new ObjectMapper(); SocketMessage parsedMessage = mapper.readValue(payload, SocketMessage.class); if (parsedMessage != null) { sendMessageToUser(parsedMessage.getUserId(), parsedMessage.getContent()); } } @Override protected void handleBinaryMessage(WebSocketSession session, BinaryMessage message) throws Exception { log.info("åéäºè¿å¶"); } @Override public void afterConnectionClosed(WebSocketSession session, CloseStatus status) throws Exception { // å ³éè¿æ¥æ¶ï¼ä»æ å°è¡¨ä¸ç§»é¤å¯¹åºçç¨æ·IDåWebSocketSession String userId = extractUserId(session); sessions.remove(userId); } @Override public void handleTransportError(WebSocketSession session, Throwable exception) throws Exception { // å¤çä¼ è¾é误ï¼ä¾å¦è¿æ¥æå¼æåçå¼å¸¸ String userId = extractUserId(session); sessions.remove(userId); } @Override public boolean supportsPartialMessages() { // æ¯æé¨åæ¶æ¯å¤ç return false; } private String extractUserId(WebSocketSession session) { // å¨å®é æ åµä¸ï¼ä½ å¯ä»¥æ ¹æ®éè¦ä»session䏿åç¨æ·IDï¼å¯ä»¥ç´æ¥æ¿å½åç»é 人çuserId String userId = session.getUri().getQuery().split("=")[1]; // return session.getAttributes().get("userId").toString(); return userId; } private void sendMessageToUser(String userId, String message) throws IOException { WebSocketSession session = sessions.get(userId); if (session != null && session.isOpen()) { session.sendMessage(new TextMessage(message)); } } } ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/BaseSmsaccountController.java
@@ -1,36 +1,36 @@ package com.smartor.controller; package com.ruoyi.web.controller.smartor; import java.util.List; import javax.servlet.http.HttpServletResponse; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PutMapping; import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import com.ruoyi.common.annotation.Log; import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.enums.BusinessType; import com.smartor.domain.BaseSmsaccount; import com.smartor.service.IBaseSmsaccountService; import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.common.enums.BusinessType; import com.ruoyi.common.utils.poi.ExcelUtil; import com.smartor.domain.BaseSmsRequest; import com.smartor.domain.BaseSmsaccount; import com.smartor.domain.BatchBaseSmsRequest; import com.smartor.domain.TemplateSmsRequest; import com.smartor.service.IBaseSmsaccountService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; 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.List; /** * çä¿¡è´¦å·Controller * * * @author smartor * @date 2023-03-06 */ @Api(description = "çä¿¡") @RestController @RequestMapping("/smartor/smsaccount") public class BaseSmsaccountController extends BaseController { public class BaseSmsaccountController extends BaseController { @Autowired private IBaseSmsaccountService baseSmsaccountService; @@ -39,8 +39,7 @@ */ @PreAuthorize("@ss.hasPermi('smartor:smsaccount:list')") @GetMapping("/list") public TableDataInfo list(BaseSmsaccount baseSmsaccount) { public TableDataInfo list(BaseSmsaccount baseSmsaccount) { startPage(); List<BaseSmsaccount> list = baseSmsaccountService.selectBaseSmsaccountList(baseSmsaccount); return getDataTable(list); @@ -52,8 +51,7 @@ @PreAuthorize("@ss.hasPermi('smartor:smsaccount:export')") @Log(title = "çä¿¡è´¦å·", businessType = BusinessType.EXPORT) @PostMapping("/export") public void export(HttpServletResponse response, BaseSmsaccount baseSmsaccount) { public void export(HttpServletResponse response, BaseSmsaccount baseSmsaccount) { List<BaseSmsaccount> list = baseSmsaccountService.selectBaseSmsaccountList(baseSmsaccount); ExcelUtil<BaseSmsaccount> util = new ExcelUtil<BaseSmsaccount>(BaseSmsaccount.class); util.exportExcel(response, list, "çä¿¡è´¦å·æ°æ®"); @@ -64,8 +62,7 @@ */ @PreAuthorize("@ss.hasPermi('smartor:smsaccount:query')") @GetMapping(value = "/{smsacountid}") public AjaxResult getInfo(@PathVariable("smsacountid") Long smsacountid) { public AjaxResult getInfo(@PathVariable("smsacountid") Long smsacountid) { return success(baseSmsaccountService.selectBaseSmsaccountBySmsacountid(smsacountid)); } @@ -75,8 +72,7 @@ @PreAuthorize("@ss.hasPermi('smartor:smsaccount:add')") @Log(title = "çä¿¡è´¦å·", businessType = BusinessType.INSERT) @PostMapping public AjaxResult add(@RequestBody BaseSmsaccount baseSmsaccount) { public AjaxResult add(@RequestBody BaseSmsaccount baseSmsaccount) { return toAjax(baseSmsaccountService.insertBaseSmsaccount(baseSmsaccount)); } @@ -86,8 +82,7 @@ @PreAuthorize("@ss.hasPermi('smartor:smsaccount:edit')") @Log(title = "çä¿¡è´¦å·", businessType = BusinessType.UPDATE) @PutMapping public AjaxResult edit(@RequestBody BaseSmsaccount baseSmsaccount) { public AjaxResult edit(@RequestBody BaseSmsaccount baseSmsaccount) { return toAjax(baseSmsaccountService.updateBaseSmsaccount(baseSmsaccount)); } @@ -96,9 +91,105 @@ */ @PreAuthorize("@ss.hasPermi('smartor:smsaccount:remove')") @Log(title = "çä¿¡è´¦å·", businessType = BusinessType.DELETE) @DeleteMapping("/{smsacountids}") public AjaxResult remove(@PathVariable Long[] smsacountids) { @DeleteMapping("/{smsacountids}") public AjaxResult remove(@PathVariable Long[] smsacountids) { return toAjax(baseSmsaccountService.deleteBaseSmsaccountBySmsacountids(smsacountids)); } /** * çä¿¡åé */ @ApiOperation("çä¿¡åé") @PostMapping("/sendMsg") public AjaxResult sendMsg(@RequestBody BaseSmsRequest baseSmsRequest) { if (baseSmsaccountService.sendMsg(baseSmsRequest) == null) { return error(); } return success(baseSmsaccountService.sendMsg(baseSmsRequest)); } /** * æ¹éçä¿¡åé */ @ApiOperation("æ¹éçä¿¡åé") @PostMapping("/batchSendMsg") public AjaxResult batchSendMsg(@RequestBody BatchBaseSmsRequest batchBaseSmsRequest) { if (baseSmsaccountService.batchSendMsg(batchBaseSmsRequest) == null) { return error(); } return success(baseSmsaccountService.batchSendMsg(batchBaseSmsRequest)); } /** * æ°å¢çä¿¡æ¨¡æ¿ * * @param templateSmsRequest * @return */ @PostMapping("/addSmsTemplate") public AjaxResult addSmsTemplate(@RequestBody TemplateSmsRequest templateSmsRequest) { if (baseSmsaccountService.addSmsTemplate(templateSmsRequest) == null) { return error(); } return success(baseSmsaccountService.addSmsTemplate(templateSmsRequest)); } /** * å é¤çä¿¡æ¨¡æ¿ * * @param templateCode * @return */ @GetMapping("/delSmsTemplate") public AjaxResult delSmsTemplate(@ApiParam("templateCode") String templateCode) { if (baseSmsaccountService.delSmsTemplate(templateCode) == null) { return error(); } return success(baseSmsaccountService.delSmsTemplate(templateCode)); } /** * ä¿®æ¹å®¡æ ¸æªéè¿çæ¨¡æ¿ * * @param templateSmsRequest * @return */ @PostMapping("/updateSmsTemplate") public AjaxResult updateSmsTemplate(@RequestBody TemplateSmsRequest templateSmsRequest) { if (baseSmsaccountService.updateSmsTemplate(templateSmsRequest) == null) { return error(); } return success(baseSmsaccountService.updateSmsTemplate(templateSmsRequest)); } /** * æ¥è¯¢ç信模æ¿å表 * * @param pageIndex pageSize * @return */ @ApiOperation("æ¥è¯¢ç信模æ¿") @GetMapping("/querySmsTemplate") public AjaxResult querySmsTemplateList(@ApiParam("pageIndex") Integer pageIndex, @ApiParam("pageSize") Integer pageSize) { if (baseSmsaccountService.querySmsTemplate(pageIndex, pageSize) == null) { return error(); } return success(baseSmsaccountService.querySmsTemplate(pageIndex, pageSize)); } /** * æ¥è¯¢ç信模æ¿å®¡æ ¸ç¶æ * * @param templateCode * @return */ @GetMapping("/querySmsTemplateStatus") public AjaxResult querySmsTemplateStatus(@ApiParam("templateCode") String templateCode) { if (baseSmsaccountService.querySmsTemplateStatus(templateCode) == null) { return error(); } return success(baseSmsaccountService.querySmsTemplateStatus(templateCode)); } } ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/DingTalkController.java
@@ -1,34 +1,26 @@ package com.ruoyi.web.controller.smartor; import com.alibaba.fastjson2.JSONArray; import com.alibaba.fastjson2.JSONObject; import com.dingtalk.api.DefaultDingTalkClient; import com.dingtalk.api.DingTalkClient; import com.dingtalk.api.request.OapiGettokenRequest; import com.dingtalk.api.request.OapiMessageCorpconversationAsyncsendV2Request; import com.dingtalk.api.request.OapiUserListidRequest; import com.dingtalk.api.response.OapiGettokenResponse; import com.dingtalk.api.response.OapiMessageCorpconversationAsyncsendV2Response; import com.dingtalk.api.response.OapiUserListidResponse; import com.ruoyi.common.core.controller.BaseController; import com.smartor.domain.DingTalkReqVo; import com.smartor.service.DingTalkService; import com.taobao.api.ApiException; import org.apache.commons.lang3.StringUtils; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.PropertySource; import org.springframework.web.bind.annotation.*; import java.util.ArrayList; import java.util.List; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; /** * 微信æ¥å£ * ééæ¥å£ * * @author liusheng * @date 2023-05-15 */ @Api(description = "é鿥å£") @RestController @RequestMapping("/smartor/dingtalk") @PropertySource(value = {"classpath:application-druid.yml"}) @@ -49,6 +41,7 @@ * @param dingTalkReqVo åéå 容 * @throws ApiException */ @ApiOperation("åéééæ¶æ¯") @PostMapping("/sendNotification") public void sendNotification(@RequestBody DingTalkReqVo dingTalkReqVo) throws ApiException { dingTalkService.sendNotification(dingTalkReqVo); ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/MinioFileController.java
@@ -106,7 +106,7 @@ @ResponseBody @ApiOperation(value = "ä¸ä¼ æä»¶å°æä»¶ç®¡ç,æ¯ææ¹éä¸ä¼ ") @ApiImplicitParam(name = "files", value = "æä»¶å¯¹è±¡", dataType = "File") public AjaxResult commonUploadFile(@RequestParam("path") String path, @RequestParam("files") List<MultipartFile> files) { public AjaxResult commonUploadFile(@RequestParam(value = "path",required = false) String path, @RequestParam("files") List<MultipartFile> files) { if (CollectionUtils.isEmpty(files)) { return error("æªéæ©æä»¶ï¼"); } ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/SvyLibTitleController.java
@@ -1,5 +1,8 @@ package com.ruoyi.web.controller.smartor; import com.aliyun.dysmsapi20170525.models.SendSmsResponse; import com.aliyun.dysmsapi20170525.models.SendSmsRequest; import com.aliyun.teaopenapi.models.Config; import com.ruoyi.common.annotation.Log; import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.domain.AjaxResult; @@ -33,26 +36,13 @@ * æ¥è¯¢é®å·å表 */ @ApiOperation("æ¥è¯¢é®å·å表") @PreAuthorize("@ss.hasPermi('smartor:svytitle:list')") @GetMapping("/selectSvyLibTitlelist") public TableDataInfo selectSvyLibTitlelist(SvyLibTitleReq svyLibTitleReq) { @PostMapping("/selectSvyLibTitlelist") public TableDataInfo selectSvyLibTitlelist(@RequestBody SvyLibTitleReq svyLibTitleReq) { startPage(); List<SvyLibTitle> list = svyLibTitleService.selectSvyLibTitleList(svyLibTitleReq); return getDataTable(list); } // /** // * 导åºé®å·å表 // */ // @PreAuthorize("@ss.hasPermi('smartor:svytitle:export')") // @Log(title = "é®å·", businessType = BusinessType.EXPORT) // @PostMapping("/export") // public void export(HttpServletResponse response, SvyLibTitle svyLibTitle) // { // List<SvyLibTitle> list = svyLibTitleService.selectSvyLibTitleList(svyLibTitle); // ExcelUtil<SvyLibTitle> util = new ExcelUtil<SvyLibTitle>(SvyLibTitle.class); // util.exportExcel(response, list, "é®å·æ°æ®"); // } /** * è·åé®å·è¯¦ç»ä¿¡æ¯ @@ -67,7 +57,6 @@ * æ°å¢é®å· */ @ApiOperation("æ°å¢é®å·") @PreAuthorize("@ss.hasPermi('smartor:svytitle:add')") @PostMapping("/addSvyLibTitle") public AjaxResult addSvyLibTitle(@RequestBody SvyLibTitle svyLibTitle) { return toAjax(svyLibTitleService.insertSvyLibTitle(svyLibTitle)); @@ -93,6 +82,38 @@ return toAjax(svyLibTitleService.deleteSvyLibTitleBySvyids(svyids)); } /** * åéçä¿¡ */ @PreAuthorize("@ss.hasPermi('smartor:svytitle:remove')") @Log(title = "é®å·", businessType = BusinessType.DELETE) @PostMapping("/sendMessage") public AjaxResult sendMessage(@PathVariable Long[] svyids) { String accessKeyId = "your_access_key_id"; String accessKeySecret = "your_access_key_secret"; // å建Config对象ï¼é ç½®é¿éäºSDK Config config = new Config() .setAccessKeyId(accessKeyId) .setAccessKeySecret(accessKeySecret); // å建SendSmsRequest对象ï¼è®¾ç½®çä¿¡ç¸å ³åæ° SendSmsRequest request = new SendSmsRequest() .setPhoneNumbers("ææºå·ç ") .setSignName("çä¿¡ç¾å") .setTemplateCode("ç信模æ¿Code") .setTemplateParam("{\"code\":\"123456\"}"); // 设置ç信模æ¿ä¸çåæ°å¼ // try { // // è°ç¨é¿éäºSDKåéçä¿¡ // SendSmsResponse response = SendSms.getResponse(config, request); // System.out.println("åéçä¿¡æåï¼RequestId: " + response.getRequestId()); // } catch (Exception e) { // System.err.println("åéç信失败ï¼" + e.getMessage()); // } return toAjax(svyLibTitleService.deleteSvyLibTitleBySvyids(svyids)); } } ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/WeChatController.java
@@ -4,6 +4,8 @@ import com.alibaba.fastjson2.JSONObject; import com.ruoyi.common.core.controller.BaseController; import com.smartor.domain.WeChatSendVo; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import me.chanjar.weixin.common.exception.WxErrorException; import me.chanjar.weixin.mp.api.WxMpInMemoryConfigStorage; import me.chanjar.weixin.mp.api.WxMpService; @@ -28,9 +30,10 @@ * @author liusheng * @date 2023-05-15 */ @Api(description = "微信æ¥å£") @RestController @RequestMapping("/smartor/wechat") @PropertySource(value = { "classpath:application-druid.yml" }) @PropertySource(value = {"classpath:application-druid.yml"}) public class WeChatController extends BaseController { @Value("${appid}") @@ -45,6 +48,7 @@ * * @return */ @ApiOperation("è·å模æ¿ä¿¡æ¯") @GetMapping("/getTemplateList") public JSONArray getTemplateList() { String url = "https://api.weixin.qq.com/cgi-bin/template/get_all_private_template?access_token=" + getAccessToken(); @@ -67,6 +71,7 @@ * @param weChatSendVo * @return */ @ApiOperation("å¾®ä¿¡å ¬ä¼å·ä¿¡æ¯åé") @PostMapping("/sendMessageToFollowers") public Boolean sendMessageToFollowers(@RequestBody WeChatSendVo weChatSendVo) { WxMpService wxMpService; @@ -91,7 +96,6 @@ } /** * è·å access_token */ @@ -108,7 +112,6 @@ return null; } } // } } ruoyi-admin/src/main/java/com/ruoyi/web/core/config/WebSocketConfig.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,24 @@ package com.ruoyi.web.core.config; import com.ruoyi.web.controller.hanler.ChatWebSocketHandler; import org.springframework.context.annotation.Configuration; import org.springframework.web.socket.config.annotation.EnableWebSocket; import org.springframework.web.socket.config.annotation.WebSocketConfigurer; import org.springframework.web.socket.config.annotation.WebSocketHandlerRegistry; @Configuration @EnableWebSocket public class WebSocketConfig implements WebSocketConfigurer { private final ChatWebSocketHandler chatWebSocketHandler; public WebSocketConfig(ChatWebSocketHandler chatWebSocketHandler) { this.chatWebSocketHandler = chatWebSocketHandler; } @Override public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) { registry.addHandler(new ChatWebSocketHandler(), "/chat").setAllowedOrigins("*"); } } ruoyi-admin/src/main/resources/application-druid.yml
@@ -63,4 +63,14 @@ #ééçå¯é¥ dingAppid: dingn8iip5ubj7clrrsv dingAppSecret: qlEK8D3oOVwGPOTiBQIBYTqQVlAfy9S_qQizEQFjJdSScwemWFryg4gbneu-NqWD dingAppSecret: qlEK8D3oOVwGPOTiBQIBYTqQVlAfy9S_qQizEQFjJdSScwemWFryg4gbneu-NqWD # websocketè¶ æ¶æ¶é´ server: websocket: timeout=60000: accessKeyId: LTAI4G5zjJRkun2eRdzU8GhR accessKeySecret: 6EIRr9uZeRobvHBRqskyGwjTLKpHYv signName: æå·å©æ¹ç§æ ruoyi-common/src/main/java/com/ruoyi/common/utils/MinioClientUtils.java
@@ -22,6 +22,7 @@ import java.security.NoSuchAlgorithmException; import java.util.ArrayList; import java.util.List; import java.util.concurrent.TimeUnit; @Component @Slf4j @@ -319,7 +320,7 @@ throw new InvalidExpiresRangeException(expires, "expires must be in range of 1 to " + DEFAULT_EXPIRY_TIME); } try { url = minioClient.getPresignedObjectUrl(GetPresignedObjectUrlArgs.builder().method(Method.GET).bucket(bucketName).object(objectName).expiry(expires)//卿忰 url = minioClient.getPresignedObjectUrl(GetPresignedObjectUrlArgs.builder().method(Method.GET).bucket(bucketName).object(objectName).expiry(expires, TimeUnit.SECONDS)//卿忰 // .expiry(24 * 60 * 60)//ç¨ç§æ¥è®¡ç®ä¸å¤©æ¶é´æææ // .expiry(1, TimeUnit.DAYS)//æå¤©ä¼ å // .expiry(1, TimeUnit.HOURS)//æå°æ¶ä¼ åæ° ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java
@@ -111,7 +111,7 @@ // è¿æ»¤è¯·æ± .authorizeRequests() // 对äºç»å½login 注åregister éªè¯ç captchaImage å 许å¿åè®¿é® .antMatchers("/login", "/register", "/captchaImage","/qrcode/generateStaticHtml","/qrcode/getQRcode","/qrcode/getFormDate").permitAll() .antMatchers("/login", "/register", "/captchaImage","/qrcode/generateStaticHtml","/qrcode/getQRcode","/qrcode/getFormDate","/chat","/system/file/admin/uploadFile").permitAll() // éæèµæºï¼å¯å¿åè®¿é® .antMatchers(HttpMethod.GET, "/", "/*.html", "/**/*.html", "/**/*.css", "/**/*.js", "/profile/**").permitAll() .antMatchers("/swagger-ui.html", "/swagger-resources/**", "/webjars/**", "/*/api-docs", "/druid/**").permitAll() ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysConfigMapper.java
@@ -2,12 +2,14 @@ import java.util.List; import com.ruoyi.system.domain.SysConfig; import org.apache.ibatis.annotations.Mapper; /** * åæ°é ç½® æ°æ®å± * * @author ruoyi */ @Mapper public interface SysConfigMapper { /** smartor/pom.xml
@@ -16,8 +16,28 @@ </description> <dependencies> <dependency> <groupId>com.aliyun</groupId> <artifactId>ecs20140526</artifactId> <version>3.1.12</version> </dependency> <dependency> <groupId>com.aliyun</groupId> <artifactId>dysmsapi20170525</artifactId> <version>2.0.24</version> </dependency> <!-- V1.0 SDK --> <dependency> <groupId>com.aliyun</groupId> <artifactId>aliyun-java-sdk-core</artifactId> <version>4.6.3</version> </dependency> <dependency> <groupId>com.aliyun</groupId> <artifactId>aliyun-java-sdk-ecs</artifactId> <version>4.24.59</version> </dependency> <!-- éç¨å·¥å ·--> <dependency> <groupId>com.ruoyi</groupId> smartor/src/main/java/com/smartor/domain/BaseSmsRequest.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,45 @@ package com.smartor.domain; import com.fasterxml.jackson.annotation.JsonFormat; import com.ruoyi.common.annotation.Excel; import com.ruoyi.common.core.domain.BaseEntity; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.commons.lang3.builder.ToStringStyle; import java.util.Date; /** * çä¿¡è´¦å·å¯¹è±¡ base_smsaccount * * @author smartor * @date 2023-03-06 */ @Data @ApiModel(value = "BaseSmsRequest", description = "ç信请æ±ä¿¡æ¯") public class BaseSmsRequest extends BaseEntity { /** * æ ç¾åç§° */ @ApiModelProperty(value = "ææºå·(æ¥æ¶æ¹)") private String phoneNumber; /** * ç信模æ¿CODE */ @ApiModelProperty(value = "模æ¿ID") private String templateCode; /** * ç信模æ¿åé对åºçå®é å¼ * æ¯æä¼ å ¥å¤ä¸ªåæ°ï¼ç¤ºä¾ï¼{"name":"å¼ ä¸","number":"1390000****"} * 妿JSONä¸éè¦å¸¦æ¢è¡ç¬¦ï¼è¯·åç §æ åçJSONåè®®å¤çã */ @ApiModelProperty(value = "ç信模æ¿åé对åºçå®é å¼ï¼ç¤ºä¾ï¼{\"name\":\"å¼ ä¸\",\"number\":\"1390000****\"}") private String templateParam; } smartor/src/main/java/com/smartor/domain/BatchBaseSmsRequest.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,41 @@ package com.smartor.domain; import com.ruoyi.common.core.domain.BaseEntity; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.util.List; /** * çä¿¡æ¹é请æ±ä¿¡æ¯ base_smsaccount * * @author smartor * @date 2023-03-06 */ @Data @ApiModel(value = "BatchBaseSmsRequest", description = "çä¿¡æ¹é请æ±ä¿¡æ¯") public class BatchBaseSmsRequest extends BaseEntity { /** * æ ç¾åç§° */ @ApiModelProperty(value = "ææºå·éå(æ¥æ¶æ¹)") private List<String> phoneNumber; /** * ç信模æ¿CODE */ @ApiModelProperty(value = "模æ¿ID") private String templateCode; /** * ç信模æ¿åé对åºçå®é å¼ * æ¯æä¼ å ¥å¤ä¸ªåæ°ï¼ç¤ºä¾ï¼{"name":"å¼ ä¸","number":"1390000****"} * 妿JSONä¸éè¦å¸¦æ¢è¡ç¬¦ï¼è¯·åç §æ åçJSONåè®®å¤çã */ @ApiModelProperty(value = "ç信模æ¿åé对åºçå®é å¼ï¼ç¤ºä¾ï¼{\"name\":\"å¼ ä¸\",\"number\":\"1390000****\"}") private String templateParam; } smartor/src/main/java/com/smartor/domain/DingTalkReqVo.java
@@ -3,6 +3,8 @@ import com.fasterxml.jackson.annotation.JsonFormat; import com.ruoyi.common.annotation.Excel; import com.ruoyi.common.core.domain.BaseEntity; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.commons.lang3.builder.ToStringStyle; @@ -17,20 +19,24 @@ * @date 2023-05-25 */ @Data @ApiModel(value = "DingTalkReqVo", description = "ééæ¶æ¯åé") public class DingTalkReqVo extends BaseEntity { /** * åéå 容 */ @ApiModelProperty(value = "åéå 容") private List<String> contents; /** * ç¨æ·ééå· */ @ApiModelProperty(value = "ç¨æ·ééå·") private String userId; /** * é¨é¨ID */ @ApiModelProperty(value = "é¨é¨ID") private String deptId; } smartor/src/main/java/com/smartor/domain/SocketMessage.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,25 @@ package com.smartor.domain; import lombok.Data; @Data public class SocketMessage { //åéå 空çç±»åï¼text,imageï¼ private String type; //å 容ï¼åéçææ¬å å®¹ï¼ private String content; //ç¨æ·IDï¼æ¥æ¶æ¾ï¼ private String userId; //å¾ç private String image; //å¾çï¼é³ãè§é¢çåèå¤§å° private Integer fileSize; public SocketMessage(String type, String content) { this.type = type; this.content = content; } public SocketMessage() { } } smartor/src/main/java/com/smartor/domain/SvyLibTitle.java
@@ -20,9 +20,8 @@ * @date 2023-03-02 */ @Data @ApiModel(value = "MinioResponseDTO", description = "æ ç¾å类对象") @ApiModel(value = "SvyLibTitle", description = "é®å·å¯¹è±¡") public class SvyLibTitle extends BaseEntity { private static final long serialVersionUID = 1L; /** * èªå¢ID @@ -33,7 +32,7 @@ /** * é®å·åç±»ID */ @ApiModelProperty(value = "é®å·åç±»ID") @ApiModelProperty(value = "é®å·åç±»ID", required = true) @Excel(name = " é®å·åç±»ID ") private Long categoryid; @@ -47,14 +46,14 @@ /** * é®å·åç§° */ @ApiModelProperty(value = "é®å·åç§°") @ApiModelProperty(value = "é®å·åç§°", required = true) @Excel(name = " é®å·åç§° ") private String svyname; /** * æè¿° */ @ApiModelProperty(value = "æè¿°") @ApiModelProperty(value = "æè¿°", required = true) @Excel(name = " æè¿° ") private String description; @@ -162,6 +161,8 @@ private List<SvyLibTopic> svyLibTopics; public SvyLibTitle() { } public SvyLibTitle(Long svyid, String icdname) { this.svyid = svyid; smartor/src/main/java/com/smartor/domain/SvyLibTopic.java
@@ -1,6 +1,7 @@ package com.smartor.domain; import java.util.Date; import java.util.List; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModel; @@ -113,8 +114,13 @@ private Date uploadTime; @Override public String toString() { return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE).append("topicid", getTopicid()).append("oldid", getOldid()).append("svyid", getSvyid()).append("topictype", getTopictype()).append("topiccode", getTopiccode()).append("topic", getTopic()).append("sort", getSort()).append("ismandatory", getIsmandatory()).append("ishide", getIshide()).append("delFlag", getDelFlag()).append("orgid", getOrgid()).append("createBy", getCreateBy()).append("createTime", getCreateTime()).append("updateBy", getUpdateBy()).append("updateTime", getUpdateTime()).append("isupload", getIsupload()).append("uploadTime", getUploadTime()).toString(); } /** * svy_topicé¢ç®è¡¨ç主é®ID */ @ApiModelProperty("é¢ç®è¡¨ç主é®ID") private Long svyTopicId; @ApiModelProperty("é®é¢é项") private List<SvyTopicoption> svyTopicoptions; } smartor/src/main/java/com/smartor/domain/TemplateSmsRequest.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,59 @@ package com.smartor.domain; import com.ruoyi.common.core.domain.BaseEntity; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.util.List; /** * TemplateSmsRequest base_smsaccount * * @author smartor * @date 2023-03-06 */ @Data @ApiModel(value = "TemplateSmsRequest", description = "ç信模æ¿è¯·æ±ä¿¡æ¯") public class TemplateSmsRequest extends BaseEntity { /** * * æè¿°ï¼ çä¿¡ç±»åãåå¼ï¼ * * 0ï¼éªè¯ç ã * 1ï¼çä¿¡éç¥ã * 2ï¼æ¨å¹¿çä¿¡ã * 3ï¼å½é /æ¸¯æ¾³å°æ¶æ¯ã */ @ApiModelProperty(value = "模æ¿ç±»å 0ï¼éªè¯ç 1ï¼çä¿¡éç¥ 2ï¼æ¨å¹¿çä¿¡ 3ï¼å½é /æ¸¯æ¾³å°æ¶æ¯") private Integer templateType; /** * * æè¿°: 模æ¿åç§°ï¼é¿åº¦ä¸è¶ è¿30个å符ã * * 示ä¾å¼: é¿éäºçä¿¡æµè¯æ¨¡æ¿ */ @ApiModelProperty(value = "模æ¿åç§°ï¼é¿åº¦ä¸è¶ è¿30个å符") private String templateName; /** * * æè¿°: 模æ¿å 容ï¼é¿åº¦ä¸è¶ è¿500个åç¬¦ãæ´å¤è§èï¼è¯·åè§æ¨¡æ¿å 容è§èã * * 示ä¾å¼:æ¨æ£å¨ç³è¯·ææºæ³¨åï¼éªè¯ç 为ï¼${code}ï¼5åéå ææ */ @ApiModelProperty(value = "模æ¿å 容ï¼é¿åº¦ä¸è¶ è¿500个åç¬¦ãæ´å¤è§èï¼è¯·åè§æ¨¡æ¿å 容è§è") private String templateContent; /** * æè¿°: ç信模æ¿ç³è¯·è¯´æï¼æ¯æ¨¡æ¿å®¡æ ¸çåèä¿¡æ¯ä¹ä¸ãé¿åº¦ä¸è¶ è¿100个å符ã * * 示ä¾å¼: æ¿äº§éå® */ @ApiModelProperty(value = "ç信模æ¿ç³è¯·è¯´æï¼æ¯æ¨¡æ¿å®¡æ ¸çåèä¿¡æ¯ä¹ä¸ãé¿åº¦ä¸è¶ è¿100个å符") private String remark; } smartor/src/main/java/com/smartor/domain/WeChatSendVo.java
@@ -1,17 +1,20 @@ package com.smartor.domain; import com.ruoyi.common.annotation.Excel; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.util.Map; @Data @ApiModel(value = "WeChatSendVo", description = "å¾®ä¿¡æ¶æ¯åé") public class WeChatSendVo { /** * 模æ¿ID */ @Excel(name = " 模æ¿ID ") @ApiModelProperty(value = "模æ¿ID") String templateId; /** @@ -21,13 +24,13 @@ * âkeyword1âï¼â......â * }] */ @Excel(name = " åéå 容 ") @ApiModelProperty(value = "åéå 容") Map<String, Object> content; /** * 跳转URL */ @Excel(name = " 跳转URL ") @ApiModelProperty(value = "跳转URL") String url; } smartor/src/main/java/com/smartor/mapper/BaseSmsaccountMapper.java
@@ -1,19 +1,21 @@ package com.smartor.mapper; import java.util.List; import com.smartor.domain.BaseSmsaccount; import org.apache.ibatis.annotations.Mapper; /** * çä¿¡è´¦å·Mapperæ¥å£ * * * @author smartor * @date 2023-03-06 */ public interface BaseSmsaccountMapper { @Mapper public interface BaseSmsaccountMapper { /** * æ¥è¯¢çä¿¡è´¦å· * * * @param smsacountid çä¿¡è´¦å·ä¸»é® * @return çä¿¡è´¦å· */ @@ -21,7 +23,7 @@ /** * æ¥è¯¢çä¿¡è´¦å·å表 * * * @param baseSmsaccount çä¿¡è´¦å· * @return çä¿¡è´¦å·éå */ @@ -29,7 +31,7 @@ /** * æ°å¢çä¿¡è´¦å· * * * @param baseSmsaccount çä¿¡è´¦å· * @return ç»æ */ @@ -37,7 +39,7 @@ /** * ä¿®æ¹çä¿¡è´¦å· * * * @param baseSmsaccount çä¿¡è´¦å· * @return ç»æ */ @@ -45,7 +47,7 @@ /** * å é¤çä¿¡è´¦å· * * * @param smsacountid çä¿¡è´¦å·ä¸»é® * @return ç»æ */ @@ -53,7 +55,7 @@ /** * æ¹éå é¤çä¿¡è´¦å· * * * @param smsacountids éè¦å é¤çæ°æ®ä¸»é®éå * @return ç»æ */ smartor/src/main/java/com/smartor/mapper/SvyLibTitleMapper.java
@@ -25,7 +25,7 @@ /** * æ¥è¯¢é®å·å表 * * @param svyLibTitle é®å· * @param svyLibTitleReq é®å· * @return é®å·éå */ public List<SvyLibTitle> selectSvyLibTitleList(SvyLibTitleReq svyLibTitleReq); smartor/src/main/java/com/smartor/service/IBaseSmsaccountService.java
@@ -1,19 +1,26 @@ package com.smartor.service; import java.util.List; import java.util.Map; import com.aliyun.dysmsapi20170525.models.*; import com.ruoyi.common.core.domain.AjaxResult; import com.smartor.domain.BaseSmsRequest; import com.smartor.domain.BaseSmsaccount; import com.smartor.domain.BatchBaseSmsRequest; import com.smartor.domain.TemplateSmsRequest; import org.springframework.web.bind.annotation.PathVariable; /** * çä¿¡è´¦å·Serviceæ¥å£ * * * @author smartor * @date 2023-03-06 */ public interface IBaseSmsaccountService { public interface IBaseSmsaccountService { /** * æ¥è¯¢çä¿¡è´¦å· * * * @param smsacountid çä¿¡è´¦å·ä¸»é® * @return çä¿¡è´¦å· */ @@ -21,7 +28,7 @@ /** * æ¥è¯¢çä¿¡è´¦å·å表 * * * @param baseSmsaccount çä¿¡è´¦å· * @return çä¿¡è´¦å·éå */ @@ -29,7 +36,7 @@ /** * æ°å¢çä¿¡è´¦å· * * * @param baseSmsaccount çä¿¡è´¦å· * @return ç»æ */ @@ -37,7 +44,7 @@ /** * ä¿®æ¹çä¿¡è´¦å· * * * @param baseSmsaccount çä¿¡è´¦å· * @return ç»æ */ @@ -45,7 +52,7 @@ /** * æ¹éå é¤çä¿¡è´¦å· * * * @param smsacountids éè¦å é¤ççä¿¡è´¦å·ä¸»é®éå * @return ç»æ */ @@ -53,9 +60,67 @@ /** * å é¤çä¿¡è´¦å·ä¿¡æ¯ * * * @param smsacountid çä¿¡è´¦å·ä¸»é® * @return ç»æ */ public int deleteBaseSmsaccountBySmsacountid(Long smsacountid); /** * çä¿¡åé * * @param baseSmsRequest * @return */ public SendSmsResponseBody sendMsg(BaseSmsRequest baseSmsRequest); /** * æ¹éçä¿¡åé * * @param batchBaseSmsRequest * @return */ public SendBatchSmsResponseBody batchSendMsg(BatchBaseSmsRequest batchBaseSmsRequest); /** * æ°å¢çä¿¡æ¨¡æ¿ * * @param templateSmsRequest * @return */ public AddSmsTemplateResponseBody addSmsTemplate(TemplateSmsRequest templateSmsRequest); /** * å é¤çä¿¡æ¨¡æ¿ * * @param templateCode * @return */ public ModifySmsTemplateResponseBody delSmsTemplate(String templateCode); /** * ä¿®æ¹å®¡æ ¸æªéè¿çæ¨¡æ¿ * * @param templateSmsRequest * @return */ public ModifySmsTemplateResponseBody updateSmsTemplate(TemplateSmsRequest templateSmsRequest); /** * æ¥è¯¢æ¨¡æ¿å表 * * @param pageIndex , pageSize * @return */ public QuerySmsTemplateListResponseBody querySmsTemplate(Integer pageIndex, Integer pageSize); /** * æ¥è¯¢ç信模æ¿å®¡æ ¸ç¶æ * * @param templateCode * @return */ public QuerySmsTemplateResponseBody querySmsTemplateStatus(String templateCode); } smartor/src/main/java/com/smartor/service/IMinioFileService.java
@@ -6,7 +6,6 @@ import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; import java.io.InputStream; import java.util.List; /** smartor/src/main/java/com/smartor/service/impl/BaseSmsaccountServiceImpl.java
@@ -1,96 +1,285 @@ package com.smartor.service.impl; import java.util.List; import com.aliyun.dysmsapi20170525.Client; import com.aliyun.dysmsapi20170525.models.*; import com.aliyun.tea.TeaException; import com.aliyun.teaopenapi.models.Config; import com.aliyun.teautil.Common; import com.aliyun.teautil.models.RuntimeOptions; import com.ruoyi.common.utils.DateUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.smartor.mapper.BaseSmsaccountMapper; import com.smartor.domain.BaseSmsRequest; import com.smartor.domain.BaseSmsaccount; import com.smartor.domain.BatchBaseSmsRequest; import com.smartor.domain.TemplateSmsRequest; import com.smartor.mapper.BaseSmsaccountMapper; import com.smartor.service.IBaseSmsaccountService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.List; /** * çä¿¡è´¦å·Serviceä¸å¡å±å¤ç * * * @author smartor * @date 2023-03-06 */ @Service public class BaseSmsaccountServiceImpl implements IBaseSmsaccountService { public class BaseSmsaccountServiceImpl implements IBaseSmsaccountService { @Autowired private BaseSmsaccountMapper baseSmsaccountMapper; @Value("${accessKeyId}") private String accessKeyId; @Value("${accessKeySecret}") private String accessKeySecret; @Value("${signName}") private String signName; /** * æ¥è¯¢çä¿¡è´¦å· * * * @param smsacountid çä¿¡è´¦å·ä¸»é® * @return çä¿¡è´¦å· */ @Override public BaseSmsaccount selectBaseSmsaccountBySmsacountid(Long smsacountid) { public BaseSmsaccount selectBaseSmsaccountBySmsacountid(Long smsacountid) { return baseSmsaccountMapper.selectBaseSmsaccountBySmsacountid(smsacountid); } /** * æ¥è¯¢çä¿¡è´¦å·å表 * * * @param baseSmsaccount çä¿¡è´¦å· * @return çä¿¡è´¦å· */ @Override public List<BaseSmsaccount> selectBaseSmsaccountList(BaseSmsaccount baseSmsaccount) { public List<BaseSmsaccount> selectBaseSmsaccountList(BaseSmsaccount baseSmsaccount) { return baseSmsaccountMapper.selectBaseSmsaccountList(baseSmsaccount); } /** * æ°å¢çä¿¡è´¦å· * * * @param baseSmsaccount çä¿¡è´¦å· * @return ç»æ */ @Override public int insertBaseSmsaccount(BaseSmsaccount baseSmsaccount) { public int insertBaseSmsaccount(BaseSmsaccount baseSmsaccount) { baseSmsaccount.setCreateTime(DateUtils.getNowDate()); return baseSmsaccountMapper.insertBaseSmsaccount(baseSmsaccount); } /** * ä¿®æ¹çä¿¡è´¦å· * * * @param baseSmsaccount çä¿¡è´¦å· * @return ç»æ */ @Override public int updateBaseSmsaccount(BaseSmsaccount baseSmsaccount) { public int updateBaseSmsaccount(BaseSmsaccount baseSmsaccount) { baseSmsaccount.setUpdateTime(DateUtils.getNowDate()); return baseSmsaccountMapper.updateBaseSmsaccount(baseSmsaccount); } /** * æ¹éå é¤çä¿¡è´¦å· * * * @param smsacountids éè¦å é¤ççä¿¡è´¦å·ä¸»é® * @return ç»æ */ @Override public int deleteBaseSmsaccountBySmsacountids(Long[] smsacountids) { public int deleteBaseSmsaccountBySmsacountids(Long[] smsacountids) { return baseSmsaccountMapper.deleteBaseSmsaccountBySmsacountids(smsacountids); } /** * å é¤çä¿¡è´¦å·ä¿¡æ¯ * * * @param smsacountid çä¿¡è´¦å·ä¸»é® * @return ç»æ */ @Override public int deleteBaseSmsaccountBySmsacountid(Long smsacountid) { public int deleteBaseSmsaccountBySmsacountid(Long smsacountid) { return baseSmsaccountMapper.deleteBaseSmsaccountBySmsacountid(smsacountid); } /** * çä¿¡åé * * @param baseSmsRequest * @return */ @Override public SendSmsResponseBody sendMsg(BaseSmsRequest baseSmsRequest) { Client client = null; try { client = this.createClient(); SendSmsRequest sendSmsRequest = new SendSmsRequest().setPhoneNumbers(baseSmsRequest.getPhoneNumber()).setSignName(this.signName).setTemplateCode(baseSmsRequest.getTemplateCode()).setTemplateParam(baseSmsRequest.getTemplateParam()); // å¤å¶ä»£ç è¿è¡è¯·èªè¡æå° API çè¿åå¼ SendSmsResponse sendSmsResponse = client.sendSmsWithOptions(sendSmsRequest, new RuntimeOptions()); return sendSmsResponse.getBody(); } catch (Exception e) { e.printStackTrace(); } return null; } /** * æ¹éåéçä¿¡ * * @param batchBaseSmsRequest * @return */ public SendBatchSmsResponseBody batchSendMsg(BatchBaseSmsRequest batchBaseSmsRequest) { Client client = null; try { client = this.createClient(); List<String> signNameJson = new ArrayList<>(); for (int i = 0; i < batchBaseSmsRequest.getPhoneNumber().size(); i++) { signNameJson.add("\"" + this.signName + "\""); } SendBatchSmsRequest sendBatchSmsRequest = new SendBatchSmsRequest().setSignNameJson(signNameJson.toString()).setPhoneNumberJson(batchBaseSmsRequest.getPhoneNumber().toString()).setTemplateCode(batchBaseSmsRequest.getTemplateCode()); RuntimeOptions runtime = new RuntimeOptions(); try { // å¤å¶ä»£ç è¿è¡è¯·èªè¡æå° API çè¿åå¼ SendBatchSmsResponse sendBatchSmsResponse = client.sendBatchSmsWithOptions(sendBatchSmsRequest, runtime); return sendBatchSmsResponse.getBody(); } catch (TeaException error) { // 妿éè¦ï¼è¯·æå° error com.aliyun.teautil.Common.assertAsString(error.message); } catch (Exception _error) { TeaException error = new TeaException(_error.getMessage(), _error); // 妿éè¦ï¼è¯·æå° error Common.assertAsString(error.message); } } catch (Exception e) { e.printStackTrace(); } return null; } @Override public AddSmsTemplateResponseBody addSmsTemplate(TemplateSmsRequest templateSmsRequest) { Client client = null; try { client = this.createClient(); AddSmsTemplateRequest addSmsTemplateRequest = new AddSmsTemplateRequest().setTemplateType(templateSmsRequest.getTemplateType()).setTemplateName(templateSmsRequest.getTemplateName()).setTemplateContent(templateSmsRequest.getTemplateContent()).setRemark(templateSmsRequest.getRemark()); RuntimeOptions runtime = new RuntimeOptions(); // å¤å¶ä»£ç è¿è¡è¯·èªè¡æå° API çè¿åå¼ AddSmsTemplateResponse addSmsTemplateResponse = client.addSmsTemplateWithOptions(addSmsTemplateRequest, runtime); return addSmsTemplateResponse.getBody(); } catch (TeaException error) { // 妿éè¦ï¼è¯·æå° error Common.assertAsString(error.message); } catch (Exception _error) { TeaException error = new TeaException(_error.getMessage(), _error); // 妿éè¦ï¼è¯·æå° error Common.assertAsString(error.message); } return null; } @Override public ModifySmsTemplateResponseBody delSmsTemplate(String templateCode) { Client client = null; try { client = this.createClient(); ModifySmsTemplateRequest modifySmsTemplateRequest = new ModifySmsTemplateRequest(); modifySmsTemplateRequest.setTemplateCode(templateCode); RuntimeOptions runtime = new RuntimeOptions(); // å¤å¶ä»£ç è¿è¡è¯·èªè¡æå° API çè¿åå¼ ModifySmsTemplateResponse modifySmsTemplateResponse = client.modifySmsTemplateWithOptions(modifySmsTemplateRequest, runtime); return modifySmsTemplateResponse.getBody(); } catch (TeaException error) { // 妿éè¦ï¼è¯·æå° error com.aliyun.teautil.Common.assertAsString(error.message); } catch (Exception _error) { TeaException error = new TeaException(_error.getMessage(), _error); // 妿éè¦ï¼è¯·æå° error com.aliyun.teautil.Common.assertAsString(error.message); } return null; } @Override public ModifySmsTemplateResponseBody updateSmsTemplate(TemplateSmsRequest templateSmsRequest) { Client client = null; try { client = this.createClient(); ModifySmsTemplateRequest modifySmsTemplateRequest = new ModifySmsTemplateRequest().setTemplateType(1).setTemplateName("AAA").setTemplateCode("SMS_279456451").setTemplateContent("ASD").setRemark("ASFD"); RuntimeOptions runtime = new RuntimeOptions(); // å¤å¶ä»£ç è¿è¡è¯·èªè¡æå° API çè¿åå¼ ModifySmsTemplateResponse modifySmsTemplateResponse = client.modifySmsTemplateWithOptions(modifySmsTemplateRequest, runtime); return modifySmsTemplateResponse.getBody(); } catch (TeaException error) { // 妿éè¦ï¼è¯·æå° error Common.assertAsString(error.message); } catch (Exception _error) { TeaException error = new TeaException(_error.getMessage(), _error); // 妿éè¦ï¼è¯·æå° error Common.assertAsString(error.message); } return null; } @Override public QuerySmsTemplateListResponseBody querySmsTemplate(Integer pageIndex, Integer pageSize) { Client client = null; try { client = this.createClient(); QuerySmsTemplateListRequest querySmsTemplateListRequest = new QuerySmsTemplateListRequest().setPageIndex(pageIndex).setPageSize(pageSize); RuntimeOptions runtime = new RuntimeOptions(); // å¤å¶ä»£ç è¿è¡è¯·èªè¡æå° API çè¿åå¼ QuerySmsTemplateListResponse querySmsTemplateListResponse = client.querySmsTemplateListWithOptions(querySmsTemplateListRequest, runtime); return querySmsTemplateListResponse.getBody(); } catch (TeaException error) { // 妿éè¦ï¼è¯·æå° error Common.assertAsString(error.message); } catch (Exception _error) { TeaException error = new TeaException(_error.getMessage(), _error); // 妿éè¦ï¼è¯·æå° error Common.assertAsString(error.message); } return null; } @Override public QuerySmsTemplateResponseBody querySmsTemplateStatus(String templateCode) { Client client = null; try { client = this.createClient(); QuerySmsTemplateRequest querySmsTemplateRequest = new QuerySmsTemplateRequest().setTemplateCode(templateCode); RuntimeOptions runtime = new RuntimeOptions(); // å¤å¶ä»£ç è¿è¡è¯·èªè¡æå° API çè¿åå¼ QuerySmsTemplateResponse querySmsTemplateResponse = client.querySmsTemplateWithOptions(querySmsTemplateRequest, runtime); return querySmsTemplateResponse.getBody(); } catch (TeaException error) { // 妿éè¦ï¼è¯·æå° error Common.assertAsString(error.message); } catch (Exception _error) { TeaException error = new TeaException(_error.getMessage(), _error); // 妿éè¦ï¼è¯·æå° error Common.assertAsString(error.message); } return null; } public Client createClient() throws Exception { Config config = new Config() // å¿ å¡«ï¼æ¨ç AccessKey ID .setAccessKeyId(this.accessKeyId) // å¿ å¡«ï¼æ¨ç AccessKey Secret .setAccessKeySecret(this.accessKeySecret); // 访é®çåå config.endpoint = "dysmsapi.aliyuncs.com"; return new Client(config); } } smartor/src/main/java/com/smartor/service/impl/DingTalkServiceImpl.java
@@ -14,6 +14,7 @@ import com.smartor.service.DingTalkService; import com.smartor.service.IntelligenceCenterService; import com.taobao.api.ApiException; import lombok.extern.log4j.Log4j; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; @@ -27,6 +28,7 @@ * @date 2023-05-23 */ @Service @Log4j public class DingTalkServiceImpl implements DingTalkService { @@ -39,7 +41,7 @@ @Override public Boolean sendNotification(DingTalkReqVo dingTalkReqVo) { Boolean result = false; // Log.info("åééééç¥"); log.info("åééééç¥"); String accessToken = null; try { accessToken = getAccessToken(); @@ -85,8 +87,8 @@ OapiMessageCorpconversationAsyncsendV2Request.Msg msg = new OapiMessageCorpconversationAsyncsendV2Request.Msg(); msg.setOa(new OapiMessageCorpconversationAsyncsendV2Request.OA()); msg.getOa().setMessageUrl("www.baidu.com"); msg.getOa().setPcMessageUrl("www.baidu.com"); msg.getOa().setMessageUrl("https://www.baidu.com"); msg.getOa().setPcMessageUrl("https://www.baidu.com"); msg.getOa().setHead(new OapiMessageCorpconversationAsyncsendV2Request.Head()); msg.getOa().getHead().setText("å¾ åäºå®"); msg.getOa().getHead().setBgcolor("00409eff"); smartor/src/main/java/com/smartor/service/impl/MinioFileServiceImpl.java
@@ -23,6 +23,7 @@ import java.io.InputStream; import java.io.OutputStream; import java.time.Instant; import java.time.Year; import java.util.ArrayList; import java.util.List; @@ -116,6 +117,8 @@ log.info(files.toString()); if (StringUtils.isNotEmpty(path) && !path.endsWith("/")) { path = path + "/"; } else { path = Year.now().getValue() + "å ¶å®/"; } List<MinioResponseDTO> MinioResponseDTOList = new ArrayList<>(); @@ -136,7 +139,9 @@ String bucketName = minioConfig.getBucketName(); minioClientUtils.putObject(bucketName, file, path + originalFilename); // String fileUrl = minioClientUtils.getObjectUrl(bucketName, path + originalFilename); String fileUrl = path + originalFilename; // String fileUrl = path + originalFilename; //urlå¯ä»¥ä½¿ç¨ä¸å¨ String fileUrl = getFileUrl(path + originalFilename, 6); MinioFile minioFile = new MinioFile(); minioFile.setOriginalFileName(originalFilename); minioFile.setFileExtName(extName); smartor/src/main/java/com/smartor/service/impl/SvyLibTitleServiceImpl.java
@@ -5,17 +5,15 @@ import com.ruoyi.common.utils.DateUtils; import com.ruoyi.common.utils.DtoConversionUtils; import com.smartor.domain.Icd10Association; import com.smartor.domain.SvyLibTitleReq; import com.smartor.domain.SvyLibTopic; import com.smartor.domain.*; import com.smartor.mapper.Icd10AssociationMapper; import com.smartor.mapper.SvyLibTopicMapper; import com.smartor.mapper.SvyTopicoptionMapper; import org.apache.commons.lang3.ObjectUtils; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.smartor.mapper.SvyLibTitleMapper; import com.smartor.domain.SvyLibTitle; import com.smartor.service.ISvyLibTitleService; import org.springframework.transaction.annotation.Transactional; @@ -33,6 +31,8 @@ private Icd10AssociationMapper icd10AssociationMapper; @Autowired private SvyLibTopicMapper svyLibTopicMapper; @Autowired private SvyTopicoptionMapper svyTopicoptionMapper; /** * æ¥è¯¢é®å· @@ -54,6 +54,29 @@ @Override public List<SvyLibTitle> selectSvyLibTitleList(SvyLibTitleReq svyLibTitleReq) { List<SvyLibTitle> svyLibTitles = svyLibTitleMapper.selectSvyLibTitleList(svyLibTitleReq); //æ·»å é¢ç® for (int i = 0; i < svyLibTitles.size(); i++) { SvyLibTopic svyLibTopic = new SvyLibTopic(); svyLibTopic.setSvyid(svyLibTitles.get(i).getSvyid()); List<SvyLibTopic> svyLibTopics = svyLibTopicMapper.selectSvyLibTopicList(svyLibTopic); //è·åé¢ç®é项 a: for (int j = 0; j < svyLibTopics.size(); j++) { if (svyLibTopics.get(j).getTopictype() == 3) { //ä½çé¢ï¼ä¸éè¦é项 continue a; } else { SvyTopicoption svyTopicoption = new SvyTopicoption(); svyTopicoption.setTopicid(svyLibTopics.get(j).getSvyTopicId()); List<SvyTopicoption> svyTopicoptions = svyTopicoptionMapper.selectSvyTopicoptionList(svyTopicoption); //å°æ¥è¯¢åºçéé¡¹ç®æ¾å°é¢ç®ä¸ svyLibTopics.get(j).setSvyTopicoptions(svyTopicoptions); } } //å°é¢ç®æ¾å°é®å·åè¡¨ä¸ svyLibTitles.get(i).setSvyLibTopics(svyLibTopics); } //å å°ç¸åçidçicdname,æ´çå°ä¸å List<SvyLibTitle> libTitles = svyLibTitles.stream().collect(Collectors.groupingBy(SvyLibTitle::getSvyid, Collectors.mapping(SvyLibTitle::getIcdname, Collectors.joining(", ")))).entrySet().stream().map(entry -> new SvyLibTitle(entry.getKey(), entry.getValue())).collect(Collectors.toList()); //临æ¶åéï¼ç¨æ¥ä¿åç¾ç åç§° @@ -93,6 +116,8 @@ //æ°å¢é®é¢é¢ç® for (int i = 0; i < svyLibTitle.getSvyLibTopics().size(); i++) { SvyLibTopic svyLibTopic = svyLibTitle.getSvyLibTopics().get(i); svyLibTopic.setSvyid(svyLibTitle.getSvyid()); //é¢ç®çé项ç®ï¼ç´æ¥ç¨svy_topicoption表ï¼ç¨svyTopicidfå»å ³è svyLibTopicMapper.insertSvyLibTopic(svyLibTopic); } return 1; smartor/src/main/resources/mapper/smartor/SvyLibTopicMapper.xml
@@ -1,51 +1,72 @@ <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.smartor.mapper.SvyLibTopicMapper"> <resultMap type="com.smartor.domain.SvyLibTopic" id="SvyLibTopicResult"> <result property="topicid" column="topicid" /> <result property="oldid" column="oldid" /> <result property="svyid" column="svyid" /> <result property="topictype" column="topictype" /> <result property="topiccode" column="topiccode" /> <result property="topic" column="topic" /> <result property="sort" column="sort" /> <result property="ismandatory" column="ismandatory" /> <result property="ishide" column="ishide" /> <result property="delFlag" column="del_flag" /> <result property="orgid" column="orgid" /> <result property="createBy" column="create_by" /> <result property="createTime" column="create_time" /> <result property="updateBy" column="update_by" /> <result property="updateTime" column="update_time" /> <result property="isupload" column="isupload" /> <result property="uploadTime" column="upload_time" /> <result property="tag" column="tag" /> <result property="topicid" column="topicid"/> <result property="oldid" column="oldid"/> <result property="svyid" column="svyid"/> <result property="topictype" column="topictype"/> <result property="topiccode" column="topiccode"/> <result property="topic" column="topic"/> <result property="sort" column="sort"/> <result property="ismandatory" column="ismandatory"/> <result property="ishide" column="ishide"/> <result property="delFlag" column="del_flag"/> <result property="orgid" column="orgid"/> <result property="createBy" column="create_by"/> <result property="createTime" column="create_time"/> <result property="updateBy" column="update_by"/> <result property="updateTime" column="update_time"/> <result property="isupload" column="isupload"/> <result property="uploadTime" column="upload_time"/> <result property="tag" column="tag"/> </resultMap> <sql id="selectSvyLibTopicVo"> select topicid, oldid, svyid, topictype, topiccode, topic, sort, ismandatory, ishide, del_flag, orgid, create_by, create_time, update_by, update_time, isupload, upload_time,tag from svy_lib_topic select topicid, oldid, svyid, topictype, topiccode, topic, sort, ismandatory, ishide, del_flag, orgid, create_by, create_time, update_by, update_time, isupload, upload_time, tag, svy_topicid as svyTopicId from svy_lib_topic </sql> <select id="selectSvyLibTopicList" parameterType="com.smartor.domain.SvyLibTopic" resultMap="SvyLibTopicResult"> <include refid="selectSvyLibTopicVo"/> <where> <if test="oldid != null "> and oldid = #{oldid}</if> <if test="topictype != null "> and topictype = #{topictype}</if> <if test="topic != null and topic != ''"> and topic = #{topic}</if> <if test="ishide != null "> and ishide = #{ishide}</if> <if test="orgid != null and orgid != ''"> and orgid = #{orgid}</if> <where> <if test="oldid != null ">and oldid = #{oldid}</if> <if test="topictype != null ">and topictype = #{topictype}</if> <if test="topic != null and topic != ''">and topic = #{topic}</if> <if test="ishide != null ">and ishide = #{ishide}</if> <if test="orgid != null and orgid != ''">and orgid = #{orgid}</if> <if test="svyid != null and svyid != ''">and svyid = #{svyid}</if> </where> </select> <select id="selectSvyLibTopicByTopicid" parameterType="Long" resultMap="SvyLibTopicResult"> <include refid="selectSvyLibTopicVo"/> where topicid = #{topicid} </select> <insert id="insertSvyLibTopic" parameterType="com.smartor.domain.SvyLibTopic" useGeneratedKeys="true" keyProperty="topicid"> <insert id="insertSvyLibTopic" parameterType="com.smartor.domain.SvyLibTopic" useGeneratedKeys="true" keyProperty="topicid"> insert into svy_lib_topic <trim prefix="(" suffix=")" suffixOverrides=","> <if test="oldid != null">oldid,</if> @@ -65,7 +86,8 @@ <if test="isupload != null">isupload,</if> <if test="uploadTime != null">upload_time,</if> <if test="tag != null">tag,</if> </trim> <if test="svyTopicId != null">svy_topicid,</if> </trim> <trim prefix="values (" suffix=")" suffixOverrides=","> <if test="oldid != null">#{oldid},</if> <if test="svyid != null">#{svyid},</if> @@ -84,7 +106,8 @@ <if test="isupload != null">#{isupload},</if> <if test="uploadTime != null">#{uploadTime},</if> <if test="tag != null">#{tag},</if> </trim> <if test="svyTopicId != null">#{svyTopicId},</if> </trim> </insert> <update id="updateSvyLibTopic" parameterType="com.smartor.domain.SvyLibTopic"> @@ -111,11 +134,13 @@ </update> <delete id="deleteSvyLibTopicByTopicid" parameterType="Long"> delete from svy_lib_topic where topicid = #{topicid} delete from svy_lib_topic where topicid = #{topicid} </delete> <delete id="deleteSvyLibTopicByTopicids" parameterType="String"> delete from svy_lib_topic where topicid in delete from svy_lib_topic where topicid in <foreach item="topicid" collection="array" open="(" separator="," close=")"> #{topicid} </foreach>