From 2973feb37a5b5e2a165bf8073c96f83ab058cdb0 Mon Sep 17 00:00:00 2001 From: zjf <1799650030@qq.com> Date: Mon, 14 Apr 2025 16:55:22 +0800 Subject: [PATCH] =?UTF-8?q?jx=E8=AE=BF=E5=AE=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../task/constant/TaskCheckStatusEnum.java | 1 + .../controller/VisitorsController.java | 25 +- .../integrated/service/VisitorsService.java | 24 +- .../service/impl/VisitorsServiceImpl.java | 84 +++--- .../thirdparty/utils/sms/SmsHTTPSend.java | 210 +++++++++++++++ .../thirdparty/utils/sms/SmsHttpUtils.java | 248 ++++++++++++++++++ .../src/main/resources/application.yml | 11 +- 7 files changed, 563 insertions(+), 40 deletions(-) create mode 100644 pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/utils/sms/SmsHTTPSend.java create mode 100644 pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/utils/sms/SmsHttpUtils.java diff --git a/pjcloud-flow/pjcloud-flow-task/pjcloud-flow-task-api/src/main/java/com/bsd/pjcloud/flow/task/constant/TaskCheckStatusEnum.java b/pjcloud-flow/pjcloud-flow-task/pjcloud-flow-task-api/src/main/java/com/bsd/pjcloud/flow/task/constant/TaskCheckStatusEnum.java index 12808124d..0a7636349 100644 --- a/pjcloud-flow/pjcloud-flow-task/pjcloud-flow-task-api/src/main/java/com/bsd/pjcloud/flow/task/constant/TaskCheckStatusEnum.java +++ b/pjcloud-flow/pjcloud-flow-task/pjcloud-flow-task-api/src/main/java/com/bsd/pjcloud/flow/task/constant/TaskCheckStatusEnum.java @@ -13,6 +13,7 @@ public enum TaskCheckStatusEnum { PADDING("1", "审核中"), RESULT("2", "审核通过"), REJECT("3", "审核拒绝"), + CANCEL("4", "取消"), ; private final String code; diff --git a/pjcloud-integrated/pjcloud-integrated-biz/src/main/java/com/bsd/pjcloud/integrated/controller/VisitorsController.java b/pjcloud-integrated/pjcloud-integrated-biz/src/main/java/com/bsd/pjcloud/integrated/controller/VisitorsController.java index bd69132c5..a06b6ed03 100644 --- a/pjcloud-integrated/pjcloud-integrated-biz/src/main/java/com/bsd/pjcloud/integrated/controller/VisitorsController.java +++ b/pjcloud-integrated/pjcloud-integrated-biz/src/main/java/com/bsd/pjcloud/integrated/controller/VisitorsController.java @@ -137,7 +137,6 @@ public class VisitorsController { @SysLog("新增访客" ) @PostMapping("/app/save") @Idempotent(key = "#mobile", expireTime = 10, info = "请勿重复提交") - @Inner(value = false) public R saveFK(@RequestBody VisitorsAppDTO visitors) { return R.ok(visitorsService.vistorsSave(visitors)); } @@ -190,17 +189,31 @@ public class VisitorsController { */ @Operation(summary = "app新增邀约" , description = "app新增拜访" ) @SysLog("新增邀约" ) - @PostMapping("/app/saveBF") + @PostMapping("/app/saveYY") @Idempotent(key = "#mobile", expireTime = 10, info = "请勿重复提交") - public R saveBF(@RequestBody VisitorsAppDTO visitors) { + public R saveYY(@RequestBody VisitorsAppDTO visitors) { - return R.ok(visitorsService.vistorsBFSave(visitors)); + return R.ok(visitorsService.vistorsYYSave(visitors)); } - @GetMapping("/app/pageBF") + @GetMapping("/app/sq/page") + @SysLog("获取我的新增记录" ) + public R getPage(@ParameterObject Page page, @ParameterObject VisitorsEntity visitors) { + return R.ok( visitorsService.getPageSQ(page, visitors)); + } + @GetMapping("/app/yy/page") @SysLog("获取我的邀约记录" ) public R getPageBF(@ParameterObject Page page, @ParameterObject VisitorsEntity visitors) { - return R.ok( visitorsService.getPageBF(page, visitors)); + return R.ok( visitorsService.getPageYY(page, visitors)); } + + @GetMapping("/app/updateCheckStatus") + @SysLog("更新状态" ) + public R updateCheckStatus(@RequestParam("id")Long id,@RequestParam("checkStatus")String checkStatus) { + return R.ok( visitorsService.updateCheckStatus(id,checkStatus)); + } + + + } \ No newline at end of file diff --git a/pjcloud-integrated/pjcloud-integrated-biz/src/main/java/com/bsd/pjcloud/integrated/service/VisitorsService.java b/pjcloud-integrated/pjcloud-integrated-biz/src/main/java/com/bsd/pjcloud/integrated/service/VisitorsService.java index 7a7277a9c..a57db89a8 100644 --- a/pjcloud-integrated/pjcloud-integrated-biz/src/main/java/com/bsd/pjcloud/integrated/service/VisitorsService.java +++ b/pjcloud-integrated/pjcloud-integrated-biz/src/main/java/com/bsd/pjcloud/integrated/service/VisitorsService.java @@ -26,13 +26,31 @@ public interface VisitorsService extends IService { /** - * 移动端发起拜访 + * 移动端发起邀约 * @param visitors * @return */ - Object vistorsBFSave(VisitorsAppDTO visitors); + Object vistorsYYSave(VisitorsAppDTO visitors); - Object getPageBF(Page page, VisitorsEntity visitors); + Object getPageYY(Page page, VisitorsEntity visitors); + + + /** + * 直接更新预约状态 + * @param id + * @param checkStatus + * @return + */ + Object updateCheckStatus(Long id, String checkStatus); + + + /** + * 获取我的新增的访客记录 + * @param page + * @param visitors + * @return + */ + Object getPageSQ(Page page, VisitorsEntity visitors); } \ No newline at end of file diff --git a/pjcloud-integrated/pjcloud-integrated-biz/src/main/java/com/bsd/pjcloud/integrated/service/impl/VisitorsServiceImpl.java b/pjcloud-integrated/pjcloud-integrated-biz/src/main/java/com/bsd/pjcloud/integrated/service/impl/VisitorsServiceImpl.java index 19618eed3..8e1eecde8 100644 --- a/pjcloud-integrated/pjcloud-integrated-biz/src/main/java/com/bsd/pjcloud/integrated/service/impl/VisitorsServiceImpl.java +++ b/pjcloud-integrated/pjcloud-integrated-biz/src/main/java/com/bsd/pjcloud/integrated/service/impl/VisitorsServiceImpl.java @@ -60,23 +60,23 @@ public class VisitorsServiceImpl extends ServiceImpl processR = remoteFlowApiFlowService.getProcessByBusinessKey(IntegratedFlowConstant.INTEGRATED_VISITOR); - if (!processR.isOk() || processR.getData() == null) { - throw new ServiceException("流程配置获取失败: " + processR.getMsg()); - } - String flowId = processR.getData().getFlowId(); - ProcessInstanceParamDto processInstanceParamDto = new ProcessInstanceParamDto(); - processInstanceParamDto.setFlowId(flowId); - R stringR = remoteFlowApiFlowService.startProcessInstance(processInstanceParamDto); - if (!stringR.isOk() || stringR.getData() == null) { - throw new ServiceException("流程实例启动失败: " + stringR.getMsg()); - } - String processInstanceId = stringR.getData(); +// //发起流程 +// R processR = remoteFlowApiFlowService.getProcessByBusinessKey(IntegratedFlowConstant.INTEGRATED_VISITOR); +// if (!processR.isOk() || processR.getData() == null) { +// throw new ServiceException("流程配置获取失败: " + processR.getMsg()); +// } +// String flowId = processR.getData().getFlowId(); +// ProcessInstanceParamDto processInstanceParamDto = new ProcessInstanceParamDto(); +// processInstanceParamDto.setFlowId(flowId); +// R stringR = remoteFlowApiFlowService.startProcessInstance(processInstanceParamDto); +// if (!stringR.isOk() || stringR.getData() == null) { +// throw new ServiceException("流程实例启动失败: " + stringR.getMsg()); +// } +// String processInstanceId = stringR.getData(); VisitorsEntity bean = BeanUtils.toBean(visitors, VisitorsEntity.class); bean.setType(VisitorTypeEnum.FKSQ.getType()); - bean.setProcessInstanceId(processInstanceId); +// bean.setProcessInstanceId(processInstanceId); bean.setCheckStatus(TaskCheckStatusEnum.PADDING.getCode()); String uniqueToken = UUID.randomUUID().toString(); @@ -118,24 +118,24 @@ public class VisitorsServiceImpl extends ServiceImpl processR = remoteFlowApiFlowService.getProcessByBusinessKey(IntegratedFlowConstant.INTEGRATED_VISITOR); - if (!processR.isOk() || processR.getData() == null) { - throw new ServiceException("流程配置获取失败: " + processR.getMsg()); - } - String flowId = processR.getData().getFlowId(); - ProcessInstanceParamDto processInstanceParamDto = new ProcessInstanceParamDto(); - processInstanceParamDto.setFlowId(flowId); - R stringR = remoteFlowApiFlowService.startProcessInstance(processInstanceParamDto); - if (!stringR.isOk() || stringR.getData() == null) { - throw new ServiceException("流程实例启动失败: " + stringR.getMsg()); - } - String processInstanceId = stringR.getData(); +// R processR = remoteFlowApiFlowService.getProcessByBusinessKey(IntegratedFlowConstant.INTEGRATED_VISITOR); +// if (!processR.isOk() || processR.getData() == null) { +// throw new ServiceException("流程配置获取失败: " + processR.getMsg()); +// } +// String flowId = processR.getData().getFlowId(); +// ProcessInstanceParamDto processInstanceParamDto = new ProcessInstanceParamDto(); +// processInstanceParamDto.setFlowId(flowId); +// R stringR = remoteFlowApiFlowService.startProcessInstance(processInstanceParamDto); +// if (!stringR.isOk() || stringR.getData() == null) { +// throw new ServiceException("流程实例启动失败: " + stringR.getMsg()); +// } +// String processInstanceId = stringR.getData(); Long deptId = SecurityUtils.getUser().getDeptId(); VisitorsEntity bean = BeanUtils.toBean(visitors, VisitorsEntity.class); bean.setType(VisitorTypeEnum.ZDYQ.getType()); - bean.setProcessInstanceId(processInstanceId); +// bean.setProcessInstanceId(processInstanceId); bean.setDeptId(deptId); bean.setCheckStatus(TaskCheckStatusEnum.PADDING.getCode()); @@ -163,11 +163,11 @@ public class VisitorsServiceImpl extends ServiceImpl wrapper = new LambdaQueryWrapper<>(); wrapper.eq(VisitorsEntity::getUserId, userId); + wrapper.eq(VisitorsEntity::getType, VisitorTypeEnum.ZDYQ.getType()); Page pageData = baseMapper.selectPageByScope(page, wrapper, DataScope.of()); List records = pageData.getRecords(); @@ -176,7 +176,31 @@ public class VisitorsServiceImpl extends ServiceImpl visitorsAppPageVos = BeanUtils.toBean(records, VisitorsAppPageVo.class); resultPage.setRecords(visitorsAppPageVos); + return resultPage; + } + @Override + public Object updateCheckStatus(Long id, String checkStatus) { + VisitorsEntity visitors = new VisitorsEntity(); + visitors.setId(id); + visitors.setCheckStatus(checkStatus); + return baseMapper.updateById(visitors); + } + + @Override + public Object getPageSQ(Page page, VisitorsEntity visitors) { + Long userId = SecurityUtils.getUser().getId(); + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(VisitorsEntity::getUserId, userId); + wrapper.eq(VisitorsEntity::getType, VisitorTypeEnum.FKSQ.getType()); + Page pageData = baseMapper.selectPageByScope(page, wrapper, DataScope.of()); + List records = pageData.getRecords(); + + Page resultPage = new Page<>(); + org.springframework.beans.BeanUtils.copyProperties(pageData, resultPage, "records"); // 复制分页参数 + + List visitorsAppPageVos = BeanUtils.toBean(records, VisitorsAppPageVo.class); + resultPage.setRecords(visitorsAppPageVos); return resultPage; } diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/utils/sms/SmsHTTPSend.java b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/utils/sms/SmsHTTPSend.java new file mode 100644 index 000000000..1fde77488 --- /dev/null +++ b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/utils/sms/SmsHTTPSend.java @@ -0,0 +1,210 @@ +package com.bsd.pjcloud.thirdparty.utils.sms; + +import com.alibaba.fastjson.JSON; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Component; + +import java.io.IOException; +import java.io.UnsupportedEncodingException; +import java.net.URLEncoder; +import java.text.SimpleDateFormat; +import java.util.*; + +/** + * 类说明:短信HTTP API示例 + * 类名称: SmsSendDemo.java + * + * @author zjf + * @version v1.0.0 + * @date 2019/3/22 21:55 + */ +@Component +public class SmsHTTPSend { + + private static final Logger logger = LoggerFactory.getLogger(SmsHTTPSend.class); + + /** + * 企业编号 + */ + @Value("${LianTongSMS.SP_CODE}") + private String SP_CODE; + /** + * 登录用户名 + */ + @Value("${LianTongSMS.LOGIN_NAME}") + private String LOGIN_NAME; + /** + * 登录用户密码 + */ + @Value("${LianTongSMS.PASSWORD}") + private String PASSWORD; + + /** + * 签名id + */ + @Value("${LianTongSMS.AUTOGRAPH_ID}") + private String AUTOGRAPH_ID; +/* //单条 + String sendUrl = "http://ytx.zj165.com:9098/api/send"; + //群发 + String sendUrlBatch = "http://ytx.zj165.com:9098/api/batchSend";*/ + + String sendUrl = "http://ytx.i5gmsg.com:9098/api/send"; + + String sendUrlBatch="http://ytx.i5gmsg.com:9098/api/batchSend"; + + /** + * 功能描述:短信发送,POST请求 + * + * @param content 短信内容,type短信类型 + * @return void + */ + public Boolean smsSendByPost(String content, String phone) { + try { + // 初始化参数 + Map params = initSmsParams(content, phone); + String result = SmsHttpUtils.doPost(sendUrl, params); + logger.debug("请求url地址={}", sendUrl); + logger.debug("请求参数体={}", params); + logger.info("POST短信发送的响应报文【{}】", result); + return true; + } catch (IOException e) { + logger.error("POST短信发送发生异常", e); + return false; + } + } + + /** + * 功能描述:获取短信回执,POST请求 + * + * @param url 短信url地址 + * @return void + */ + private void smsReportByPost(String url) { + try { + Map params = new HashMap<>(); + params.put("SpCode", SP_CODE); + params.put("LoginName", LOGIN_NAME); + params.put("Password", PASSWORD); + logger.debug("请求url地址={}", url); + logger.debug("请求参数体={}", params); + String result = SmsHttpUtils.doPost(url, params); + logger.info("POST短信回执的响应报文【{}】", result); + } catch (IOException e) { + logger.error("POST短信回执发生异常", e); + } + } + + /** + * 功能描述:初始化短信参数 + * + * @param + * @return java.util.Map + */ + private Map initSmsParams(String content, String phone) throws UnsupportedEncodingException { + Date date = Calendar.getInstance().getTime(); + + String messageContent = encodeStr(content); + String scheduleTime = new SimpleDateFormat("yyyyMMddHHmmss").format(date); + String serialNumber = new SimpleDateFormat("yyyyMMddHHmmssSSS").format(date) + this.getThreeRandomNumbers(); + + Map params = new HashMap<>(9); + params.put("SpCode", SP_CODE); + params.put("LoginName", LOGIN_NAME); + params.put("Password", PASSWORD); + //短信内容, 最大480个字(短信内容要求的编码为gbk) + params.put("MessageContent", messageContent); + //短信类型,1=验证码、2=通知、3=广告 (没传或者非1、2、3系统会默认为4=其他) + params.put("MessageType", "2"); + //手机号码(多个号码用”,”分隔),最多1000个号码 + params.put("UserNumber", phone); + //流水号,20位数字,唯一 (规则自定义,建议时间格式精确到毫秒) + params.put("SerialNumber", serialNumber); + //预约发送时间,格式:yyyyMMddhhmmss,如‘20090901010101’ + params.put("ScheduleTime", scheduleTime); + //接入号扩展号(默认不填,扩展号为数字,扩展位数由当前所配的接入号长度决定,整个接入号最长4位) + params.put("ExtendAccessNum", ""); + + /* + * 提交时检测方式 + * 为1时,提交号码中有效的号码仍正常发出短信,无效的号码在返回参数faillist中列出 + * 不为1或不传时,提交号码中只要有无效的号码,所有的号码都不发短信,所有的号码在返回参数faillist中列出 + */ + params.put("f", ""); + params.put("AutographId", AUTOGRAPH_ID); + return params; + } + + public void smsBatchSend(String content, String[] phone) { + try { + // 初始化参数 + String params = initBatchSend(content, phone); + logger.debug("请求url地址={}", sendUrlBatch); + logger.debug("请求参数体={}", params); + String result = SmsHttpUtils.doPostBody(sendUrlBatch, params); + logger.info("POST短信发送的响应报文 {}", result); + } catch (IOException e) { + logger.error("POST短信发送发生异常", e); + } + } + + private String initBatchSend(String content, String[] phone) { + Date date = Calendar.getInstance().getTime(); + String scheduleTime = new SimpleDateFormat("yyyyMMddHHmmss").format(date); + String serialNumber = new SimpleDateFormat("yyyyMMddHHmmssSSS").format(date) + this.getThreeRandomNumbers(); + + Map params = new HashMap<>(); + params.put("SpCode", SP_CODE); + params.put("LoginName", LOGIN_NAME); + params.put("Password", PASSWORD); + //短信类型,1=验证码、2=通知、3=广告 (没传或者非1、2、3系统会默认为4=其他) + params.put("MessageType", 2); + //流水号,20位数字,唯一 (规则自定义,建议时间格式精确到毫秒) + params.put("SerialNumber", serialNumber); + //预约发送时间,格式:yyyyMMddhhmmss,如‘20090901010101’ + params.put("ScheduleTime", scheduleTime); + /* + * 提交时检测方式 + * 为1时,提交号码中有效的号码仍正常发出短信,无效的号码在返回参数faillist中列出 + * 不为1或不传时,提交号码中只要有无效的号码,所有的号码都不发短信,所有的号码在返回参数faillist中列出 + */ + params.put("f", "1"); + /* + * 签名ID,可选参数,如果不传则使用默认签名发送 + */ + params.put("AutographId", AUTOGRAPH_ID); + + List> memberList = new ArrayList<>(); + for (int i = 0; i < phone.length; i++) { + Map member = new HashMap<>(); + member.put("UserNumber", phone[i]); + member.put("MessageContent", content); + memberList.add(member); + } + params.put("MemberList", memberList); + return JSON.toJSONString(params); + } + + + /** + * 功能描述:编码 + * + * @param str 编码字符串 + * @return void + */ + public String encodeStr(String str) throws UnsupportedEncodingException { + return URLEncoder.encode(str, "GBK"); + } + + /** + * 功能描述:获得3位随机数 + * + * @param + * @return int + */ + private int getThreeRandomNumbers() { + return new Random().nextInt(900) + 100; + } +} diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/utils/sms/SmsHttpUtils.java b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/utils/sms/SmsHttpUtils.java new file mode 100644 index 000000000..5af87c9ab --- /dev/null +++ b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/utils/sms/SmsHttpUtils.java @@ -0,0 +1,248 @@ +package com.bsd.pjcloud.thirdparty.utils.sms; + +import org.apache.http.HttpEntity; +import org.apache.http.HttpResponse; +import org.apache.http.NameValuePair; +import org.apache.http.client.HttpClient; +import org.apache.http.client.config.RequestConfig; +import org.apache.http.client.entity.UrlEncodedFormEntity; +import org.apache.http.client.methods.CloseableHttpResponse; +import org.apache.http.client.methods.HttpGet; +import org.apache.http.client.methods.HttpPost; +import org.apache.http.entity.StringEntity; +import org.apache.http.impl.client.CloseableHttpClient; +import org.apache.http.impl.client.HttpClients; +import org.apache.http.message.BasicNameValuePair; +import org.apache.http.util.EntityUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.nio.charset.Charset; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * 类说明:Http请求工具 + * 类名称: HttpUtils.java + * @version v1.0.0 + * @author uccp + * @date 2019/3/22 22:37 + */ +public class SmsHttpUtils { + + private static final Logger logger = LoggerFactory.getLogger(SmsHttpUtils.class); + + private static RequestConfig requestConfig; + private static final int MAX_TIMEOUT = 10000; + + static { + RequestConfig.Builder configBuilder = RequestConfig.custom(); + // 设置连接超时 + configBuilder.setConnectTimeout(MAX_TIMEOUT); + // 设置读取超时 + configBuilder.setSocketTimeout(MAX_TIMEOUT); + requestConfig = configBuilder.build(); + } + + /** + * 功能描述:发送 GET 请求(HTTP),不带参数 + * + * @param url 请求地址 + * @return java.lang.String + */ + public static String doGet(String url) throws IOException { + return doGet(url, new HashMap<>(16)); + } + + /** + * 功能描述:发送 GET 请求(HTTP),带参数Key-Value形式 + * + * @param url 请求地址 + * @param params 请求参数对象 + * @return java.lang.String + */ + public static String doGet(String url, Map params) throws IOException { + String apiUrl = url; + StringBuffer param = new StringBuffer(); + int i = 0; + for (String key : params.keySet()) { + if (i == 0) { + param.append("?"); + } else { + param.append("&"); + } + param.append(key).append("=").append(params.get(key)); + i++; + } + apiUrl += param; + String result = null; + HttpClient httpClient = HttpClients.createDefault(); + try { + HttpGet httpGet = new HttpGet(apiUrl); + HttpResponse response = httpClient.execute(httpGet); + HttpEntity entity = response.getEntity(); + if (entity != null) { + InputStream instream = entity.getContent(); + result = readInputStreamToString(instream, "UTF-8"); + } + } catch (IOException e) { + logger.error("doGet请求异常", e); + throw e; + } + return result; + } + + /** + * 功能描述:发送 POST 请求(HTTP),不带参数 + * + * @param url 请求地址 + * @return java.lang.String + */ + public static String doPost(String url) throws IOException { + return doPost(url, new HashMap<>(16)); + } + + /** + * 功能描述:发送 POST 请求(HTTP),带参数Key-Value形式 + * + * @param url 请求地址 + * @param params 请求参数对象 + * @return java.lang.String + */ + public static String doPost(String url, Map params) throws IOException { + CloseableHttpClient httpClient = HttpClients.createDefault(); + String httpStr; + HttpPost httpPost = new HttpPost(url); + //这里要提前设置好Content-type请求头 + httpPost.setHeader("Content-type", "application/x-www-form-urlencoded"); + CloseableHttpResponse response = null; + try { + httpPost.setConfig(requestConfig); + List pairList = new ArrayList<>(params.size()); + for (Map.Entry entry : params.entrySet()) { + NameValuePair pair = new BasicNameValuePair(entry.getKey(), entry.getValue().toString()); + pairList.add(pair); + } + httpPost.setEntity(new UrlEncodedFormEntity(pairList, Charset.forName("UTF-8"))); + response = httpClient.execute(httpPost); + HttpEntity entity = response.getEntity(); + httpStr = EntityUtils.toString(entity, "UTF-8"); + } catch (IOException e) { + logger.error("doPost请求异常", e); + throw e; + } finally { + if (response != null) { + try { + EntityUtils.consume(response.getEntity()); + } catch (IOException e) { + throw e; + } + } + } + return httpStr; + } + + /** + * 功能描述:发送 POST 请求(HTTP),带参数Key-Value形式 + * + * @param url 请求地址 + * @param soapParams webservice请求参数 + * @return java.lang.String + */ + public static String doPost(String url, String soapParams) throws IOException { + CloseableHttpClient httpClient = HttpClients.createDefault(); + String httpStr; + HttpPost httpPost = new HttpPost(url); + //这里要提前设置好Content-type请求头 + httpPost.setHeader("Content-type", "text/xml;charset=UTF-8"); + CloseableHttpResponse response = null; + try { + httpPost.setConfig(requestConfig); + httpPost.setEntity(new StringEntity(soapParams, Charset.forName("UTF-8"))); + response = httpClient.execute(httpPost); + HttpEntity entity = response.getEntity(); + httpStr = EntityUtils.toString(entity, "UTF-8"); + } catch (IOException e) { + logger.error("doPost请求异常", e); + throw e; + } finally { + if (response != null) { + try { + EntityUtils.consume(response.getEntity()); + } catch (IOException e) { + throw e; + } + } + } + return httpStr; + } + + public static String doPostBody(String url, String bodyPrams) throws IOException { + CloseableHttpClient httpClient = HttpClients.createDefault(); + String httpStr; + HttpPost httpPost = new HttpPost(url); + //这里要提前设置好Content-type请求头 + httpPost.setHeader("Content-type", "application/json"); + CloseableHttpResponse response = null; + try { + httpPost.setConfig(requestConfig); + + httpPost.setEntity(new StringEntity(bodyPrams, Charset.forName("UTF-8"))); + response = httpClient.execute(httpPost); + HttpEntity entity = response.getEntity(); + httpStr = EntityUtils.toString(entity, "UTF-8"); + } catch (IOException e) { + logger.error("doPost请求异常", e); + throw e; + } finally { + if (response != null) { + try { + EntityUtils.consume(response.getEntity()); + } catch (IOException e) { + throw e; + } + } + } + return httpStr; + } + + + /** + * 功能描述:读取流的数据 + * + * @param inputStream 输入流对象 + * @param charsetName 字符集名称 + * @return java.lang.String + */ + private static String readInputStreamToString(InputStream inputStream, String charsetName) throws IOException { + StringBuffer sb = new StringBuffer(); + // 定义BufferedReader输入流来读取URL的响应 + BufferedReader in; + try { + in = new BufferedReader(new InputStreamReader(inputStream, charsetName)); + String line; + while ((line = in.readLine()) != null) { + sb.append(line); + } + } catch (IOException e) { + logger.error("readInputStreamToString读取异常", e); + throw e; + } finally { + try { + if (inputStream != null) { + inputStream.close(); + } + } catch (IOException e2) { + logger.error("流关闭异常", e2); + throw e2; + } + } + return sb.toString(); + } +} diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/resources/application.yml b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/resources/application.yml index ed59fc894..0c6b0710c 100644 --- a/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/resources/application.yml +++ b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/resources/application.yml @@ -108,4 +108,13 @@ sms: default-ext-code: "123" timeout-seconds: 300 - +#联通短信配置 +LianTongSMS: + #企业编号 + SP_CODE: '11122' + #登录用户名 + LOGIN_NAME: '' + #登录用户密码 + PASSWORD: 'Aa123456' + #签名id + AUTOGRAPH_ID: ''