diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/constant/ServiceConstant.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/constant/ServiceConstant.java index 50faadb87f..c136164acc 100644 --- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/constant/ServiceConstant.java +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/constant/ServiceConstant.java @@ -63,4 +63,9 @@ public interface ServiceConstant { * 党员认证、热心居民申请端访问权限控制 */ String RESI_PARTYMEMBER_SERVER = "resi-partymember-server"; + + /** + * 消息服务 + */ + String EPMET_MESSAGE_SERVER = "epmet-message-server"; } diff --git a/epmet-module/epmet-message/epmet-message-client/src/main/java/com/epmet/dto/SysSmsDTO.java b/epmet-module/epmet-message/epmet-message-client/src/main/java/com/epmet/dto/SysSmsDTO.java index 3340d12ff4..91eff10e8b 100644 --- a/epmet-module/epmet-message/epmet-message-client/src/main/java/com/epmet/dto/SysSmsDTO.java +++ b/epmet-module/epmet-message/epmet-message-client/src/main/java/com/epmet/dto/SysSmsDTO.java @@ -52,4 +52,7 @@ public class SysSmsDTO implements Serializable { @ApiModelProperty(value = "创建时间") private Date createDate; + @ApiModelProperty(value = "参数列表") + private String params; + } diff --git a/epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/controller/SmsController.java b/epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/controller/SmsController.java index 4a109c5482..ea698fa6e5 100644 --- a/epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/controller/SmsController.java +++ b/epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/controller/SmsController.java @@ -31,6 +31,7 @@ import org.springframework.web.bind.annotation.*; import springfox.documentation.annotations.ApiIgnore; import java.util.Arrays; +import java.util.HashMap; import java.util.Map; /** @@ -100,9 +101,8 @@ public class SmsController { @ApiImplicitParam(name = "mobile", value = "手机好号", paramType = "query", required = true, dataType="String"), @ApiImplicitParam(name = "params", value = "参数", paramType = "query", required = true, dataType="String") }) - public Result send(String mobile, String params){ - sysSmsService.send(mobile, params); - + public Result send(@RequestBody SysSmsDTO sysSmsDTO){ + sysSmsService.send(sysSmsDTO.getMobile(), sysSmsDTO.getParams()); return new Result(); } @@ -115,4 +115,21 @@ public class SmsController { return new Result(); } + /** + * 发送短信验证码 + * @return + */ + @PostMapping("captcha") + @ApiOperation("发送短信验证码") + //@LogOperation("发送短信验证码") + @ApiImplicitParams({ + @ApiImplicitParam(name = "mobile", value = "手机号", paramType = "query", required = true, dataType="String") + }) + public Result sendSmsCaptcha(@RequestBody SysSmsDTO sysSmsDTO) { + String mobile = sysSmsDTO.getMobile(); + String captcha = sysSmsService.sendSmsCaptcha(mobile); + HashMap map = new HashMap<>(); + map.put("code", captcha); + return new Result().ok(map); + } } diff --git a/epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/feign/MessageFeignClient.java b/epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/feign/MessageFeignClient.java new file mode 100644 index 0000000000..82a9516e7a --- /dev/null +++ b/epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/feign/MessageFeignClient.java @@ -0,0 +1,24 @@ +package com.epmet.feign; + +import com.epmet.commons.tools.constant.ServiceConstant; +import com.epmet.commons.tools.utils.Result; +import com.epmet.dto.SysSmsDTO; +import com.epmet.feign.fallback.MessageFeignClientFallback; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; + +@FeignClient(name = ServiceConstant.EPMET_MESSAGE_SERVER, fallback = MessageFeignClientFallback.class, url = "http://localhost:8085") +public interface MessageFeignClient { + + /** + * 发送短信 + * @return + */ + @PostMapping(value = "message/sms/send") + Result send(@RequestBody SysSmsDTO smsDTO); + + //@PostMapping(value = "message/sms/send", consumes = "application/x-www-form-urlencoded") + //Result send(Map entityBody); + +} \ No newline at end of file diff --git a/epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/feign/fallback/MessageFeignClientFallback.java b/epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/feign/fallback/MessageFeignClientFallback.java new file mode 100644 index 0000000000..3010195b34 --- /dev/null +++ b/epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/feign/fallback/MessageFeignClientFallback.java @@ -0,0 +1,21 @@ +package com.epmet.feign.fallback; + +import com.epmet.commons.tools.constant.ServiceConstant; +import com.epmet.commons.tools.utils.ModuleUtils; +import com.epmet.commons.tools.utils.Result; +import com.epmet.dto.SysSmsDTO; +import com.epmet.feign.MessageFeignClient; +import org.springframework.stereotype.Component; + +/** + * 消息服务降级 + */ +@Component +public class MessageFeignClientFallback implements MessageFeignClient { + + + @Override + public Result send(SysSmsDTO smsDTO) { + return ModuleUtils.feignConError(ServiceConstant.EPMET_MESSAGE_SERVER, "send", smsDTO); + } +} diff --git a/epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/service/SysSmsService.java b/epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/service/SysSmsService.java index 5e4d887f56..dedc0afb6c 100644 --- a/epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/service/SysSmsService.java +++ b/epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/service/SysSmsService.java @@ -40,5 +40,12 @@ public interface SysSmsService extends BaseService { * @param status 发送状态 */ void save(Integer platform, String mobile, LinkedHashMap params, Integer status); + + /** + * 发送短信验证码 + * @param mobile + * @return + */ + String sendSmsCaptcha(String mobile); } diff --git a/epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/service/impl/SysSmsServiceImpl.java b/epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/service/impl/SysSmsServiceImpl.java index 6b9c9314d9..82e3369020 100644 --- a/epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/service/impl/SysSmsServiceImpl.java +++ b/epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/service/impl/SysSmsServiceImpl.java @@ -16,23 +16,29 @@ import com.epmet.commons.tools.constant.Constant; import com.epmet.commons.tools.exception.ErrorCode; import com.epmet.commons.tools.exception.RenException; import com.epmet.commons.tools.page.PageData; +import com.epmet.commons.tools.utils.Result; import com.epmet.dao.SysSmsDao; import com.epmet.dto.SysSmsDTO; import com.epmet.entity.SysSmsEntity; import com.epmet.exception.ModuleErrorCode; +import com.epmet.feign.MessageFeignClient; import com.epmet.service.SysSmsService; import com.epmet.sms.AbstractSmsService; import com.epmet.sms.SmsFactory; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import java.util.Date; -import java.util.LinkedHashMap; -import java.util.Map; +import java.util.*; @Service public class SysSmsServiceImpl extends BaseServiceImpl implements SysSmsService { + @Autowired + private MessageFeignClient messageFeignClient; + @Override public PageData page(Map params) { IPage page = baseDao.selectPage( @@ -99,4 +105,26 @@ public class SysSmsServiceImpl extends BaseServiceImpl //sms.setCreateDate(new Date()); baseDao.insert(sms); } + + @Override + public String sendSmsCaptcha(String mobile) { + Integer code = (int) ((Math.random() * 9 + 1) * 100000); + String codeStr = String.valueOf(code); + HashMap map = new HashMap<>(); + map.put("code", codeStr); + + try { + String paramJson = new ObjectMapper().writeValueAsString(map); + + SysSmsDTO sysSmsDTO = new SysSmsDTO(); + sysSmsDTO.setMobile(mobile); + sysSmsDTO.setParams(paramJson); + + Result result = messageFeignClient.send(sysSmsDTO); + System.out.println(result); + } catch (JsonProcessingException e) { + e.printStackTrace(); + } + return codeStr; + } }