Selaa lähdekoodia

催缴功能开发完成

wuxw 5 vuotta sitten
vanhempi
commit
4c66411285

+ 1 - 0
java110-bean/src/main/java/com/java110/dto/feeCollectionOrder/FeeCollectionOrderDto.java

@@ -19,6 +19,7 @@ public class FeeCollectionOrderDto extends PageDto implements Serializable {
     public static final String STATE_WAIT = "W";
     public static final String STATE_DOING = "D";
     public static final String STATE_FINISH = "F";
+    public static final String STATE_ERROR = "E";
 
     //催缴方式,001 仅短信方式  002 短信微信方式 003 仅微信方式
     public static final String COLLECTION_WAY_SMS = "001";

+ 62 - 34
java110-bean/src/main/java/com/java110/dto/smsConfig/SmsConfigDto.java

@@ -1,6 +1,7 @@
 package com.java110.dto.smsConfig;
 
 import com.java110.dto.PageDto;
+
 import java.io.Serializable;
 import java.util.Date;
 
@@ -14,18 +15,22 @@ import java.util.Date;
  **/
 public class SmsConfigDto extends PageDto implements Serializable {
 
+    //短信业务 1001 欠费催缴 2002 工单通知
+    public static final String SMS_BUSI_OWE = "1001";
+    public static final String SMS_BUSI_ORDER_NOTICE = "2002";
+
     private String accessKeyId;
-private String smsBusi;
-private String signName;
-private String templateCode;
-private String storeId;
-private String accessSecret;
-private String smsId;
-private String objId;
-private String smsType;
-private String logSwitch;
-private String region;
-private String remarks;
+    private String smsBusi;
+    private String signName;
+    private String templateCode;
+    private String storeId;
+    private String accessSecret;
+    private String smsId;
+    private String objId;
+    private String smsType;
+    private String logSwitch;
+    private String region;
+    private String remarks;
 
 
     private Date createTime;
@@ -36,73 +41,96 @@ private String remarks;
     public String getAccessKeyId() {
         return accessKeyId;
     }
-public void setAccessKeyId(String accessKeyId) {
+
+    public void setAccessKeyId(String accessKeyId) {
         this.accessKeyId = accessKeyId;
     }
-public String getSmsBusi() {
+
+    public String getSmsBusi() {
         return smsBusi;
     }
-public void setSmsBusi(String smsBusi) {
+
+    public void setSmsBusi(String smsBusi) {
         this.smsBusi = smsBusi;
     }
-public String getSignName() {
+
+    public String getSignName() {
         return signName;
     }
-public void setSignName(String signName) {
+
+    public void setSignName(String signName) {
         this.signName = signName;
     }
-public String getTemplateCode() {
+
+    public String getTemplateCode() {
         return templateCode;
     }
-public void setTemplateCode(String templateCode) {
+
+    public void setTemplateCode(String templateCode) {
         this.templateCode = templateCode;
     }
-public String getStoreId() {
+
+    public String getStoreId() {
         return storeId;
     }
-public void setStoreId(String storeId) {
+
+    public void setStoreId(String storeId) {
         this.storeId = storeId;
     }
-public String getAccessSecret() {
+
+    public String getAccessSecret() {
         return accessSecret;
     }
-public void setAccessSecret(String accessSecret) {
+
+    public void setAccessSecret(String accessSecret) {
         this.accessSecret = accessSecret;
     }
-public String getSmsId() {
+
+    public String getSmsId() {
         return smsId;
     }
-public void setSmsId(String smsId) {
+
+    public void setSmsId(String smsId) {
         this.smsId = smsId;
     }
-public String getObjId() {
+
+    public String getObjId() {
         return objId;
     }
-public void setObjId(String objId) {
+
+    public void setObjId(String objId) {
         this.objId = objId;
     }
-public String getSmsType() {
+
+    public String getSmsType() {
         return smsType;
     }
-public void setSmsType(String smsType) {
+
+    public void setSmsType(String smsType) {
         this.smsType = smsType;
     }
-public String getLogSwitch() {
+
+    public String getLogSwitch() {
         return logSwitch;
     }
-public void setLogSwitch(String logSwitch) {
+
+    public void setLogSwitch(String logSwitch) {
         this.logSwitch = logSwitch;
     }
-public String getRegion() {
+
+    public String getRegion() {
         return region;
     }
-public void setRegion(String region) {
+
+    public void setRegion(String region) {
         this.region = region;
     }
-public String getRemarks() {
+
+    public String getRemarks() {
         return remarks;
     }
-public void setRemarks(String remarks) {
+
+    public void setRemarks(String remarks) {
         this.remarks = remarks;
     }
 

+ 32 - 0
java110-core/src/main/java/com/java110/core/factory/AliSendMessageFactory.java

@@ -8,7 +8,9 @@ import com.aliyuncs.exceptions.ClientException;
 import com.aliyuncs.exceptions.ServerException;
 import com.aliyuncs.http.MethodType;
 import com.aliyuncs.profile.DefaultProfile;
+import com.java110.dto.smsConfig.SmsConfigDto;
 import com.java110.utils.cache.MappingCache;
+import com.java110.vo.ResultVo;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -89,4 +91,34 @@ public class AliSendMessageFactory {
             e.printStackTrace();
         }
     }
+
+    public static ResultVo sendOweFeeSms(String tel, Object param, SmsConfigDto smsConfigDto) {
+        //开始发送验证码
+        DefaultProfile profile = DefaultProfile.getProfile(smsConfigDto.getRegion().trim(),
+                smsConfigDto.getAccessKeyId().trim(),
+                smsConfigDto.getAccessSecret().trim());
+        IAcsClient client = new DefaultAcsClient(profile);
+
+        CommonRequest request = new CommonRequest();
+        request.setSysMethod(MethodType.POST);
+        request.setSysDomain("dysmsapi.aliyuncs.com");
+        request.setSysVersion("2017-05-25");
+        request.setSysAction("SendSms");
+        request.putQueryParameter("RegionId", smsConfigDto.getRegion().trim());
+        request.putQueryParameter("PhoneNumbers", tel);
+        request.putQueryParameter("SignName", smsConfigDto.getSignName().trim());
+        request.putQueryParameter("TemplateCode", smsConfigDto.getTemplateCode().trim());
+        request.putQueryParameter("TemplateParam", param.toString());
+
+        try {
+            CommonResponse response = client.getCommonResponse(request);
+            logger.debug("发送欠费信息:{}", response.getData());
+        } catch (ServerException e) {
+            e.printStackTrace();
+        } catch (ClientException e) {
+            e.printStackTrace();
+        }
+
+        return new ResultVo(ResultVo.CODE_OK,ResultVo.MSG_OK);
+    }
 }

+ 16 - 0
java110-core/src/main/java/com/java110/core/factory/SendSmsFactory.java

@@ -1,6 +1,8 @@
 package com.java110.core.factory;
 
+import com.java110.dto.smsConfig.SmsConfigDto;
 import com.java110.utils.cache.MappingCache;
+import com.java110.vo.ResultVo;
 import org.apache.commons.lang3.StringUtils;
 
 import java.util.Random;
@@ -37,6 +39,20 @@ public class SendSmsFactory {
         }
     }
 
+    public static ResultVo sendOweFeeSms(String tel, SmsConfigDto smsConfigDto, Object param){
+
+        ResultVo resultVo = null;
+        if (SMS_COMPANY_ALI.equals(smsConfigDto.getSmsType().trim())) {
+            resultVo = AliSendMessageFactory.sendOweFeeSms(tel, param,smsConfigDto);
+        } else {
+            resultVo = TencentSendMessageFactory.sendOweFeeSms(tel, param,smsConfigDto);
+        }
+
+        return resultVo;
+    }
+
+
+
     /**
      * 生成验证码
      *

+ 31 - 8
java110-core/src/main/java/com/java110/core/factory/TencentSendMessageFactory.java

@@ -9,8 +9,10 @@ import com.aliyuncs.exceptions.ClientException;
 import com.aliyuncs.exceptions.ServerException;
 import com.aliyuncs.http.MethodType;
 import com.aliyuncs.profile.DefaultProfile;
+import com.java110.dto.smsConfig.SmsConfigDto;
 import com.java110.utils.cache.MappingCache;
 import com.java110.utils.factory.ApplicationContextFactory;
+import com.java110.vo.ResultVo;
 import com.tencentcloudapi.common.Credential;
 import com.tencentcloudapi.common.exception.TencentCloudSDKException;
 import com.tencentcloudapi.common.profile.ClientProfile;
@@ -77,14 +79,6 @@ public class TencentSendMessageFactory {
 
         //开始发送验证码
         logger.debug("发送号码为{},短信码为{}", tel, code);
-//        String url = "https://sms.tencentcloudapi.com/?Action=SendSms" +
-//                "&PhoneNumberSet.0=+86" + tel +
-//                "&TemplateID=" + MappingCache.getValue(TENCENT_SMS_DOMAIN, "TemplateID") +
-//                "&Sign=" + MappingCache.getValue(TENCENT_SMS_DOMAIN, "Sign") +
-//                "&TemplateParamSet.0=" + code +
-//                "&SmsSdkAppid=" + MappingCache.getValue(TENCENT_SMS_DOMAIN, "SmsSdkAppid") +
-//                "&Version=2019-07-11";
-//        ResponseEntity<String> responseEntity = getRestTemplate().getForEntity(url, String.class);
 
         // 实例化一个认证对象,入参需要传入腾讯云账户secretId,secretKey,见《创建secretId和secretKey》小节
         Credential cred = new Credential(MappingCache.getValue(TENCENT_SMS_DOMAIN, "secretId"),
@@ -113,6 +107,35 @@ public class TencentSendMessageFactory {
 
     }
 
+    public static ResultVo sendOweFeeSms(String tel, Object param, SmsConfigDto smsConfigDto) {
+        // 实例化一个认证对象,入参需要传入腾讯云账户secretId,secretKey,见《创建secretId和secretKey》小节
+        Credential cred = new Credential(smsConfigDto.getAccessSecret().trim(),
+                smsConfigDto.getAccessKeyId().trim());
+        // 实例化要请求产品(以cvm为例)的client对象
+        ClientProfile clientProfile = new ClientProfile();
+        clientProfile.setSignMethod(ClientProfile.SIGN_TC3_256);
+        SmsClient smsClient = new SmsClient(cred, smsConfigDto.getRegion().trim());//第二个ap-chongqing 填产品所在的区
+        SendSmsRequest sendSmsRequest = new SendSmsRequest();
+        sendSmsRequest.setSmsSdkAppid(smsConfigDto.getRemarks());//appId ,见《创建应用》小节
+        String[] phones = {"+86" + tel};  //发送短信的目标手机号,可填多个。
+        sendSmsRequest.setPhoneNumberSet(phones);
+        sendSmsRequest.setTemplateID(smsConfigDto.getTemplateCode());  //模版id,见《创建短信签名和模版》小节
+        String[] templateParam = (String[])param;//模版参数,从前往后对应的是模版的{1}、{2}等,见《创建短信签名和模版》小节
+        sendSmsRequest.setTemplateParamSet(templateParam);
+        sendSmsRequest.setSign(smsConfigDto.getSignName()); //签名内容,不是填签名id,见《创建短信签名和模版》小节
+        SendSmsResponse sendSmsResponse = null;
+        try {
+            sendSmsResponse = smsClient.SendSms(sendSmsRequest); //发送短信
+        } catch (TencentCloudSDKException e) {
+            logger.error("发送短信失败", e);
+        }
+
+        logger.debug("腾讯短信验证码发送,请求报文" + JSONObject.toJSONString(sendSmsRequest) + ",返回日志" + (sendSmsResponse != null ? sendSmsResponse.toString() : ""));
+
+        return new ResultVo(ResultVo.CODE_OK,ResultVo.MSG_OK);
+
+    }
+
 //    private static RestTemplate getRestTemplate() {
 //        return ApplicationContextFactory.getBean("restTemplateNoLoadBalanced", RestTemplate.class);
 //    }

+ 93 - 16
service-job/src/main/java/com/java110/job/task/wechat/FeeCollectionPushMessageTemplate.java

@@ -1,29 +1,37 @@
 package com.java110.job.task.wechat;
 
 import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
 import com.java110.core.factory.GenerateCodeFactory;
+import com.java110.core.factory.SendSmsFactory;
 import com.java110.core.factory.WechatFactory;
 import com.java110.dto.community.CommunityDto;
 import com.java110.dto.fee.FeeDto;
 import com.java110.dto.feeCollectionOrder.FeeCollectionOrderDto;
 import com.java110.dto.logSystemError.LogSystemErrorDto;
 import com.java110.dto.owner.OwnerAppUserDto;
+import com.java110.dto.owner.OwnerDto;
 import com.java110.dto.reportOweFee.ReportOweFeeDto;
 import com.java110.dto.reportOweFee.ReportOweFeeItemDto;
 import com.java110.dto.smallWeChat.SmallWeChatDto;
 import com.java110.dto.smallWechatAttr.SmallWechatAttrDto;
+import com.java110.dto.smsConfig.SmsConfigDto;
 import com.java110.dto.task.TaskDto;
 import com.java110.entity.wechat.Content;
 import com.java110.entity.wechat.Data;
 import com.java110.entity.wechat.Miniprogram;
 import com.java110.entity.wechat.PropertyFeeTemplateMessage;
+import com.java110.intf.IFeeCollectionDetailInnerServiceSMO;
+import com.java110.intf.common.ISmsConfigInnerServiceSMO;
 import com.java110.intf.fee.IFeeCollectionOrderInnerServiceSMO;
 import com.java110.intf.fee.IFeeInnerServiceSMO;
 import com.java110.intf.report.IReportOweFeeInnerServiceSMO;
 import com.java110.intf.store.ISmallWeChatInnerServiceSMO;
 import com.java110.intf.store.ISmallWechatAttrInnerServiceSMO;
 import com.java110.intf.user.IOwnerAppUserInnerServiceSMO;
+import com.java110.intf.user.IOwnerInnerServiceSMO;
 import com.java110.job.quartz.TaskSystemQuartz;
+import com.java110.po.feeCollectionDetail.FeeCollectionDetailPo;
 import com.java110.po.logSystemError.LogSystemErrorPo;
 import com.java110.service.smo.ISaveSystemErrorSMO;
 import com.java110.utils.cache.MappingCache;
@@ -31,6 +39,7 @@ import com.java110.utils.constant.WechatConstant;
 import com.java110.utils.util.DateUtil;
 import com.java110.utils.util.ExceptionUtil;
 import com.java110.utils.util.StringUtil;
+import com.java110.vo.ResultVo;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -40,7 +49,6 @@ import org.springframework.web.client.RestTemplate;
 
 import java.math.BigDecimal;
 import java.text.ParseException;
-import java.text.SimpleDateFormat;
 import java.util.*;
 
 /**
@@ -66,13 +74,22 @@ public class FeeCollectionPushMessageTemplate extends TaskSystemQuartz {
     @Autowired
     private IOwnerAppUserInnerServiceSMO ownerAppUserInnerServiceSMOImpl;
 
+    @Autowired
+    private IOwnerInnerServiceSMO ownerInnerServiceSMOImpl;
+
     @Autowired
     private IFeeCollectionOrderInnerServiceSMO feeCollectionOrderInnerServiceSMOImpl;
 
+    @Autowired
+    private IFeeCollectionDetailInnerServiceSMO feeCollectionDetailInnerServiceSMOImpl;
+
 
     @Autowired
     private IReportOweFeeInnerServiceSMO reportOweFeeInnerServiceSMOImpl;
 
+    @Autowired
+    private ISmsConfigInnerServiceSMO smsConfigInnerServiceSMOImpl;
+
     @Autowired
     private RestTemplate outRestTemplate;
 
@@ -173,19 +190,39 @@ public class FeeCollectionPushMessageTemplate extends TaskSystemQuartz {
      * @param feeCollectionOrderDto
      */
     private void doPushMessage(ReportOweFeeDto reportOweFeeDo, FeeCollectionOrderDto feeCollectionOrderDto) {
-
+        FeeCollectionDetailPo feeCollectionDetailPo = new FeeCollectionDetailPo();
+        ResultVo resultVo = null;
         switch (feeCollectionOrderDto.getCollectionWay()) {
             case FeeCollectionOrderDto.COLLECTION_WAY_SMS:
-                doSendSms(reportOweFeeDo, feeCollectionOrderDto);
+                resultVo = doSendSms(reportOweFeeDo, feeCollectionOrderDto);
+                feeCollectionDetailPo.setCollectionWay(FeeCollectionOrderDto.COLLECTION_WAY_SMS);
                 break;
             case FeeCollectionOrderDto.COLLECTION_WAY_WECHAT:
-                doSendWechat(reportOweFeeDo, feeCollectionOrderDto);
+                resultVo = doSendWechat(reportOweFeeDo, feeCollectionOrderDto);
+                feeCollectionDetailPo.setCollectionWay(FeeCollectionOrderDto.COLLECTION_WAY_WECHAT);
                 break;
             case FeeCollectionOrderDto.COLLECTION_WAY_WECHAT_SMS:
-                doSendWechatOrSms(reportOweFeeDo, feeCollectionOrderDto);
+                resultVo = doSendWechatOrSms(reportOweFeeDo, feeCollectionOrderDto, feeCollectionDetailPo);
                 break;
         }
 
+
+        feeCollectionDetailPo.setCollectionName(feeCollectionOrderDto.getCollectionName());
+        feeCollectionDetailPo.setCommunityId(feeCollectionOrderDto.getCommunityId());
+        feeCollectionDetailPo.setDetailId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_detailId));
+        feeCollectionDetailPo.setFeeName(feeCollectionOrderDto.getCollectionName() + "欠费");
+        feeCollectionDetailPo.setOrderId(feeCollectionOrderDto.getOrderId());
+        feeCollectionDetailPo.setOweAmount(reportOweFeeDo.getAmountOwed());
+        feeCollectionDetailPo.setOwnerId(reportOweFeeDo.getOwnerId());
+        feeCollectionDetailPo.setOwnerName(reportOweFeeDo.getOwnerName());
+        feeCollectionDetailPo.setPayerObjId(reportOweFeeDo.getPayerObjId());
+        feeCollectionDetailPo.setPayerObjName(reportOweFeeDo.getPayerObjName());
+        feeCollectionDetailPo.setPayerObjType(reportOweFeeDo.getPayerObjType());
+        feeCollectionDetailPo.setState(resultVo.getCode() == ResultVo.CODE_OK ? FeeCollectionOrderDto.STATE_FINISH : FeeCollectionOrderDto.STATE_ERROR);
+        feeCollectionDetailPo.setRemarks(resultVo.getMsg().length() > 512 ? resultVo.getMsg().substring(0, 450) : resultVo.getMsg());
+        feeCollectionDetailInnerServiceSMOImpl.saveFeeCollectionDetail(feeCollectionDetailPo);
+
+
     }
 
     /**
@@ -194,13 +231,14 @@ public class FeeCollectionPushMessageTemplate extends TaskSystemQuartz {
      * @param reportOweFeeDo
      * @param feeCollectionOrderDto
      */
-    private void doSendWechatOrSms(ReportOweFeeDto reportOweFeeDo, FeeCollectionOrderDto feeCollectionOrderDto) {
+    private ResultVo doSendWechatOrSms(ReportOweFeeDto reportOweFeeDo, FeeCollectionOrderDto feeCollectionOrderDto, FeeCollectionDetailPo feeCollectionDetailPo) {
         Map paramInfo = getOwnerAppUserDto(feeCollectionOrderDto.getCommunityId(), reportOweFeeDo.getOwnerId());
         if (paramInfo == null) {
-            doSendSms(reportOweFeeDo, feeCollectionOrderDto);
-            return;
+            feeCollectionDetailPo.setCollectionWay(FeeCollectionOrderDto.COLLECTION_WAY_SMS);
+            return doSendSms(reportOweFeeDo, feeCollectionOrderDto);
         }
-        doSendWechat(reportOweFeeDo, feeCollectionOrderDto, paramInfo);
+        feeCollectionDetailPo.setCollectionWay(FeeCollectionOrderDto.COLLECTION_WAY_WECHAT);
+        return doSendWechat(reportOweFeeDo, feeCollectionOrderDto, paramInfo);
     }
 
     /**
@@ -209,12 +247,12 @@ public class FeeCollectionPushMessageTemplate extends TaskSystemQuartz {
      * @param reportOweFeeDo
      * @param feeCollectionOrderDto
      */
-    private void doSendWechat(ReportOweFeeDto reportOweFeeDo, FeeCollectionOrderDto feeCollectionOrderDto) {
+    private ResultVo doSendWechat(ReportOweFeeDto reportOweFeeDo, FeeCollectionOrderDto feeCollectionOrderDto) {
         Map paramInfo = getOwnerAppUserDto(feeCollectionOrderDto.getCommunityId(), reportOweFeeDo.getOwnerId());
         if (paramInfo == null) {
-            return;
+            return new ResultVo(ResultVo.CODE_ERROR, "业主未绑定");
         }
-        doSendWechat(reportOweFeeDo, feeCollectionOrderDto, paramInfo);
+        return doSendWechat(reportOweFeeDo, feeCollectionOrderDto, paramInfo);
     }
 
     /**
@@ -223,15 +261,15 @@ public class FeeCollectionPushMessageTemplate extends TaskSystemQuartz {
      * @param reportOweFeeDo
      * @param feeCollectionOrderDto
      */
-    private void doSendWechat(ReportOweFeeDto reportOweFeeDo, FeeCollectionOrderDto feeCollectionOrderDto, Map paramInfo) {
+    private ResultVo doSendWechat(ReportOweFeeDto reportOweFeeDo, FeeCollectionOrderDto feeCollectionOrderDto, Map paramInfo) {
         if (paramInfo == null) {
-            return;
+            return new ResultVo(ResultVo.CODE_ERROR, "业主未绑定");
         }
         String templateId = paramInfo.get("templateId").toString();
         String url = paramInfo.get("url").toString();
         String oweRoomUrl = paramInfo.get("oweCarUrl").toString();
         String oweCarUrl = paramInfo.get("oweCarUrl").toString();
-        SmallWeChatDto weChatDto = (SmallWeChatDto)paramInfo.get("weChatDto");
+        SmallWeChatDto weChatDto = (SmallWeChatDto) paramInfo.get("weChatDto");
         Miniprogram miniprogram = paramInfo.get("oweCarUrl") == null ? null : (Miniprogram) paramInfo.get("oweCarUrl");
         List<OwnerAppUserDto> ownerAppUserDtos = (List<OwnerAppUserDto>) paramInfo.get("ownerAppUserDtos");
 
@@ -277,6 +315,8 @@ public class FeeCollectionPushMessageTemplate extends TaskSystemQuartz {
                 }
             }
         }
+
+        return new ResultVo(ResultVo.CODE_OK, ResultVo.MSG_OK);
     }
 
     /**
@@ -285,8 +325,45 @@ public class FeeCollectionPushMessageTemplate extends TaskSystemQuartz {
      * @param reportOweFeeDo
      * @param feeCollectionOrderDto
      */
-    private void doSendSms(ReportOweFeeDto reportOweFeeDo, FeeCollectionOrderDto feeCollectionOrderDto) {
+    private ResultVo doSendSms(ReportOweFeeDto reportOweFeeDo, FeeCollectionOrderDto feeCollectionOrderDto) {
+
+        SmsConfigDto smsConfigDto = new SmsConfigDto();
+        smsConfigDto.setObjId(feeCollectionOrderDto.getCommunityId());
+        smsConfigDto.setSmsBusi(SmsConfigDto.SMS_BUSI_OWE);
+        List<SmsConfigDto> smsConfigDtos = smsConfigInnerServiceSMOImpl.querySmsConfigs(smsConfigDto);
+
+        if (smsConfigDtos == null || smsConfigDtos.size() < 1) {
+            return new ResultVo(ResultVo.CODE_ERROR,"未配置短信信息");
+        }
+        Object paramIn = null;
+        if("ALI".equals(smsConfigDto.getSmsType())){
+            JSONObject param = new JSONObject();
+            param.put("user",reportOweFeeDo.getOwnerName());
+            param.put("house",reportOweFeeDo.getPayerObjName());
+            param.put("amountOwed",reportOweFeeDo.getAmountOwed());
+            paramIn = param;
+        }else{
+            paramIn = new String[]{
+                    reportOweFeeDo.getOwnerName(),
+                    reportOweFeeDo.getPayerObjName(),
+                    reportOweFeeDo.getAmountOwed()
+            };
+        }
+
+        OwnerDto ownerDto = new OwnerDto();
+        ownerDto.setCommunityId(feeCollectionOrderDto.getCommunityId());
+        ownerDto.setOwnerId(reportOweFeeDo.getOwnerId());
+        List<OwnerDto> ownerDtos = ownerInnerServiceSMOImpl.queryOwners(ownerDto);
+
+        if(ownerDtos == null || ownerDtos.size()<1){
+            return new ResultVo(ResultVo.CODE_ERROR,"业主不存在");
+        }
+        ResultVo resultVo = null;
+        for(OwnerDto ownerDto1 : ownerDtos){
+            resultVo = SendSmsFactory.sendOweFeeSms(ownerDto1.getLink(),smsConfigDto,paramIn);
+        }
 
+        return resultVo;
     }
 
     private Map getOwnerAppUserDto(String communityId, String memberId) {