Browse Source

门禁进场短信功能开发完成

wuxw 3 years ago
parent
commit
a1750b39c1

+ 27 - 10
java110-bean/src/main/java/com/java110/dto/marketBlacklist/MarketBlacklistDto.java

@@ -1,6 +1,7 @@
 package com.java110.dto.marketBlacklist;
 
 import com.java110.dto.PageDto;
+
 import java.io.Serializable;
 import java.util.Date;
 
@@ -15,9 +16,10 @@ import java.util.Date;
 public class MarketBlacklistDto extends PageDto implements Serializable {
 
     private String personName;
-private String filter;
-private String remark;
-private String blId;
+    private String filter;
+    private String[] filters;
+    private String remark;
+    private String blId;
 
 
     private Date createTime;
@@ -28,25 +30,32 @@ private String blId;
     public String getPersonName() {
         return personName;
     }
-public void setPersonName(String personName) {
+
+    public void setPersonName(String personName) {
         this.personName = personName;
     }
-public String getFilter() {
+
+    public String getFilter() {
         return filter;
     }
-public void setFilter(String filter) {
+
+    public void setFilter(String filter) {
         this.filter = filter;
     }
-public String getRemark() {
+
+    public String getRemark() {
         return remark;
     }
-public void setRemark(String remark) {
+
+    public void setRemark(String remark) {
         this.remark = remark;
     }
-public String getBlId() {
+
+    public String getBlId() {
         return blId;
     }
-public void setBlId(String blId) {
+
+    public void setBlId(String blId) {
         this.blId = blId;
     }
 
@@ -66,4 +75,12 @@ public void setBlId(String blId) {
     public void setStatusCd(String statusCd) {
         this.statusCd = statusCd;
     }
+
+    public String[] getFilters() {
+        return filters;
+    }
+
+    public void setFilters(String[] filters) {
+        this.filters = filters;
+    }
 }

+ 12 - 0
java110-db/src/main/resources/mapper/common/MarketBlacklistV1ServiceDaoImplMapper.xml

@@ -27,6 +27,12 @@
         <if test="filter !=null and filter != ''">
             and t.filter= #{filter}
         </if>
+        <if test="filters !=null ">
+            and t.filter in
+            <foreach collection="filters" item="item" open="(" close=")" separator=",">
+                #{item}
+            </foreach>
+        </if>
         <if test="statusCd !=null and statusCd != ''">
             and t.status_cd= #{statusCd}
         </if>
@@ -77,6 +83,12 @@
         <if test="filter !=null and filter != ''">
             and t.filter= #{filter}
         </if>
+        <if test="filters !=null ">
+            and t.filter in
+            <foreach collection="filters" item="item" open="(" close=")" separator=",">
+                #{item}
+            </foreach>
+        </if>
         <if test="statusCd !=null and statusCd != ''">
             and t.status_cd= #{statusCd}
         </if>

+ 27 - 2
service-job/src/main/java/com/java110/job/adapt/market/DefaultSendExecutor.java

@@ -1,11 +1,13 @@
 package com.java110.job.adapt.market;
 
 import com.java110.core.factory.GenerateCodeFactory;
+import com.java110.dto.marketBlacklist.MarketBlacklistDto;
 import com.java110.dto.marketLog.MarketLogDto;
 import com.java110.dto.marketSmsValue.MarketSmsValueDto;
 import com.java110.dto.marketText.MarketTextDto;
 import com.java110.dto.owner.OwnerAppUserDto;
 import com.java110.dto.user.UserDto;
+import com.java110.intf.common.IMarketBlacklistV1InnerServiceSMO;
 import com.java110.intf.common.IMarketLogV1InnerServiceSMO;
 import com.java110.intf.user.IOwnerAppUserInnerServiceSMO;
 import com.java110.intf.user.IUserV1InnerServiceSMO;
@@ -30,6 +32,9 @@ public  abstract class DefaultSendExecutor implements ISendExecutor {
     @Autowired
     private IUserV1InnerServiceSMO userV1InnerServiceSMOImpl;
 
+    @Autowired
+    private IMarketBlacklistV1InnerServiceSMO marketBlacklistV1InnerServiceSMOImpl;
+
 
     @Override
     public void send(MarketTextDto marketTextDto,String tel,String communityId,String communityName) {
@@ -58,8 +63,15 @@ public  abstract class DefaultSendExecutor implements ISendExecutor {
             return;
         }
 
+        //判断是否为黑名单
+
+        if(validateBlacklist(tel,openId)){
+            return ;
+        }
+
+
 
-        ResultVo resultVo = doSend(marketTextDto,tel,communityId);
+        ResultVo resultVo = doSend(marketTextDto,tel,communityId,openId);
 
         String userName = "未知";
 
@@ -91,13 +103,26 @@ public  abstract class DefaultSendExecutor implements ISendExecutor {
         marketLogV1InnerServiceSMOImpl.saveMarketLog(marketLogPo);
     }
 
+    private boolean validateBlacklist(String tel, String openId) {
+
+        MarketBlacklistDto marketBlacklistDto = new MarketBlacklistDto();
+        marketBlacklistDto.setFilters(new String[]{tel,openId});
+        int count = marketBlacklistV1InnerServiceSMOImpl.queryMarketBlacklistsCount(marketBlacklistDto);
+
+        if(count> 0){
+            return true;
+        }
+
+        return false;
+    }
+
     /**
      * 发送消息
      * @param marketTextDto
      * @param tel
      * @param communityId
      */
-    public abstract ResultVo doSend(MarketTextDto marketTextDto, String tel, String communityId);
+    public abstract ResultVo doSend(MarketTextDto marketTextDto, String tel, String communityId,String openId);
 
 
     private String getOpenId(MarketTextDto marketTextDto,String tel, String communityId) {

+ 1 - 1
service-job/src/main/java/com/java110/job/adapt/market/executor/SendExecutorSMS.java

@@ -50,7 +50,7 @@ public class SendExecutorSMS extends DefaultSendExecutor {
     private OutRestTemplate outRestTemplate;
 
     @Override
-    public ResultVo doSend(MarketTextDto marketTextDto, String tel, String communityId) {
+    public ResultVo doSend(MarketTextDto marketTextDto, String tel, String communityId,String openId) {
 
         MarketSmsValueDto marketSmsValueDto = new MarketSmsValueDto();
         marketSmsValueDto.setSmsId(marketTextDto.getSmsId());

+ 97 - 0
service-job/src/main/java/com/java110/job/adapt/market/executor/SendExecutorWechatTemplate.java

@@ -0,0 +1,97 @@
+package com.java110.job.adapt.market.executor;
+
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.java110.core.client.OutRestTemplate;
+import com.java110.core.factory.WechatFactory;
+import com.java110.core.log.LoggerFactory;
+import com.java110.dto.marketSmsValue.MarketSmsValueDto;
+import com.java110.dto.marketText.MarketTextDto;
+import com.java110.entity.wechat.Content;
+import com.java110.entity.wechat.Data;
+import com.java110.entity.wechat.PropertyFeeTemplateMessage;
+import com.java110.intf.common.IMarketSmsValueV1InnerServiceSMO;
+import com.java110.job.adapt.market.DefaultSendExecutor;
+import com.java110.job.task.wechat.WeChatPushMessageTemplate;
+import com.java110.utils.cache.MappingCache;
+import com.java110.utils.constant.WechatConstant;
+import com.java110.utils.util.DateUtil;
+import com.java110.utils.util.StringUtil;
+import com.java110.vo.ResultVo;
+import org.slf4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.*;
+import org.springframework.stereotype.Service;
+
+import java.security.MessageDigest;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+/**
+ * https://console.shlianlu.com/#/document/api_4_2
+ * <p>
+ * 联麓信息
+ */
+@Service("sendExecutorWechatTemplate")
+public class SendExecutorWechatTemplate extends DefaultSendExecutor {
+
+    private static Logger logger = LoggerFactory.getLogger(SendExecutorWechatTemplate.class);
+
+
+    //短信地址
+    private static String sendMsgUrl = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=";
+
+    private static final String APP_ID = "AppId";
+    private static final String APP_SECURE = "AppSecure";
+    private static final String TEMPLATE_ID = "TemplateId";
+
+
+    @Autowired
+    private IMarketSmsValueV1InnerServiceSMO marketSmsValueV1InnerServiceSMOImpl;
+
+    @Autowired
+    private OutRestTemplate outRestTemplate;
+
+    @Override
+    public ResultVo doSend(MarketTextDto marketTextDto, String tel, String communityId, String openId) {
+
+        MarketSmsValueDto marketSmsValueDto = new MarketSmsValueDto();
+        marketSmsValueDto.setSmsId(marketTextDto.getSmsId());
+        List<MarketSmsValueDto> marketSmsValueDtos = marketSmsValueV1InnerServiceSMOImpl.queryMarketSmsValues(marketSmsValueDto);
+
+        if (marketSmsValueDtos == null || marketSmsValueDtos.size() < 1) {
+            throw new IllegalArgumentException("未包含 sms 配置信息");
+        }
+
+        String sendTemplate = MappingCache.getValue(WechatConstant.WECHAT_DOMAIN, WechatConstant.SEND_TEMPLATE_URL);
+        if (StringUtil.isEmpty(sendTemplate)) {
+            sendTemplate = sendMsgUrl;
+        }
+
+        String accessToken = WechatFactory.getAccessToken(getMarketValue(marketSmsValueDtos, APP_ID), getMarketValue(marketSmsValueDtos, APP_SECURE));
+
+        String url = sendTemplate + accessToken;
+
+        Data data = new Data();
+        data.setFirst(new Content(marketTextDto.getName()));
+        data.setKeyword1(new Content(marketTextDto.getName()));
+        data.setKeyword2(new Content(DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_A)));
+        data.setKeyword3(new Content(marketTextDto.getTextContent()));
+        data.setRemark(new Content("如有疑问请联系相关物业人员"));
+        PropertyFeeTemplateMessage templateMessage = new PropertyFeeTemplateMessage();
+        templateMessage.setTemplate_id(getMarketValue(marketSmsValueDtos, TEMPLATE_ID));
+        templateMessage.setTouser(openId);
+        logger.info("发送模板消息内容:{}", JSON.toJSONString(templateMessage));
+        ResponseEntity<String> responseEntity = outRestTemplate.postForEntity(url, JSON.toJSONString(templateMessage), String.class);
+        logger.info("微信模板返回内容:{}", responseEntity);
+        //if ("00".equals(result.getString("status"))) {
+            return new ResultVo(ResultVo.CODE_OK, "成功", "2002");
+        //}
+
+
+    }
+
+}