Trick 6 years ago
parent
commit
a7b20b95f7

+ 10 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/base/wx/WxReplySceneDO.java

@ -20,6 +20,7 @@ public class WxReplySceneDO extends UuidIdentityEntityWithOperator implements ja
    private String event;//微信事件类型:SCAN,LOCATION,CLICK,subscribe,unsubscribe
    private String scene;//图文消息/自定义消息,分组场景,微信的eventKey
    private String content;//居民回复内容,消息字段
    private String defaultReply;//如果值为:default, 则是微信默认回复配置发送的图文
    private Integer status;//状态(-1删除 0 冻结 1可用
    @Column(name = "wechat_id")
@ -76,6 +77,15 @@ public class WxReplySceneDO extends UuidIdentityEntityWithOperator implements ja
        this.content = content;
    }
    @Column(name = "default_reply")
    public String getDefaultReply() {
        return defaultReply;
    }
    public void setDefaultReply(String defaultReply) {
        this.defaultReply = defaultReply;
    }
    @Column(name = "status")
    public Integer getStatus() {
        return status;

+ 21 - 0
common/common-rest-model/src/main/java/com/yihu/jw/restmodel/web/endpoint/EnvelopRestEndpoint.java

@ -1,11 +1,16 @@
package com.yihu.jw.restmodel.web.endpoint;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.yihu.jw.entity.base.doctor.BaseDoctorDO;
import com.yihu.jw.restmodel.web.*;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.StringUtils;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@ -332,4 +337,20 @@ public abstract class EnvelopRestEndpoint {
        return links.toString();
    }
    public String getUID() {
        try {
            HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
            String userAgent = request.getHeader("userAgent");
            if (StringUtils.isEmpty(userAgent)) {
                userAgent = request.getHeader("User-Agent");
            }
            JSONObject json = JSON.parseObject(userAgent);
            return json.getString("uid");
        } catch (Exception e) {
            return null;
        }
    }
}

+ 4 - 0
common/common-util/src/main/java/com/yihu/jw/util/wechat/WeiXinMessageUtils.java

@ -46,6 +46,10 @@ public class WeiXinMessageUtils {
    // 响应消息类型:图文
    public static final String RESP_MESSAGE_TYPE_NEWS = "news";
    //默认值
    public static final String RESP_MESSAGE_DEFAULT = "default";
//    public static BaseMessage messageProcess(){
//        BaseMessage message = null;
//

+ 2 - 0
svr/svr-base/src/main/java/com/yihu/jw/base/dao/wx/WxReplySceneDao.java

@ -25,5 +25,7 @@ public interface WxReplySceneDao extends PagingAndSortingRepository<WxReplyScene
    //点击事件,扫码事件,是否存在相同场景值
    List<WxReplySceneDO> findByWechatIdAndMsgTypeAndEventAndSceneAndStatus(String wechatId,String msgType,String event,String scene,Integer status);
    List<WxReplySceneDO> findByWechatIdAndDefaultReply(String wechatId,String defaultReply);
    List<WxReplySceneDO> findByAppOriginIdAndAndDefaultReply(String appOriginId,String defaultReply);
}

+ 3 - 1
svr/svr-base/src/main/java/com/yihu/jw/base/endpoint/wx/WechatController.java

@ -224,11 +224,13 @@ public class WechatController extends EnvelopRestEndpoint {
                                                                      @RequestParam(value = "event", required = false)String event,
                                                                      @ApiParam(name = "content", value = "回复内容")
                                                                      @RequestParam(value = "content", required = false)String content,
                                                                      @ApiParam(name = "status", value = "删除状态")
                                                                      @RequestParam(value = "status", required = true)Integer status,
                                                                      @ApiParam(name = "page", value = "页数")
                                                                      @RequestParam(value = "page", required = true)Integer page,
                                                                      @ApiParam(name = "size", value = "每页大小")
                                                                      @RequestParam(value = "size", required = true)Integer size) {
        return wechatService.findWxReplyScene(wechatId, msgType, event, content, page, size);
        return wechatService.findWxReplyScene(wechatId, msgType, event, content,status, page, size);
    }
    //====================图文素材管理end============================

+ 5 - 0
svr/svr-base/src/main/java/com/yihu/jw/base/service/wx/WechatCoreService.java

@ -267,6 +267,11 @@ public class WechatCoreService {
                    return getGraphicXMl(scene.getScene(),scene.getWechatId(),message);
                }
            }
            //如果都没有发送默认消息
            List<WxReplySceneDO> list = wxReplySceneDao.findByAppOriginIdAndAndDefaultReply(toUserName,WeiXinMessageUtils.RESP_MESSAGE_DEFAULT);
            WxReplySceneDO wxReplySceneDO = list.get(0);
            return getGraphicXMl(wxReplySceneDO.getScene(),wxReplySceneDO.getWechatId(),message);
        }
        return null;

+ 18 - 3
svr/svr-base/src/main/java/com/yihu/jw/base/service/wx/WechatService.java

@ -331,6 +331,13 @@ public class WechatService {
    }
    public Envelop saveWxReplyScene(WxReplySceneDO wxReplySceneDO){
        if(StringUtils.isNotBlank(wxReplySceneDO.getDefaultReply())){
           List<WxReplySceneDO> list = wxReplySceneDao.findByWechatIdAndDefaultReply(wxReplySceneDO.getWechatId(),wxReplySceneDO.getDefaultReply());
            if(list!=null&&list.size()>0){
                wxReplySceneDao.delete(list);
            }
        }
        wxReplySceneDao.save(wxReplySceneDO);
        return Envelop.getSuccess(BaseRequestMapping.WeChat.api_success);
    }
@ -374,13 +381,14 @@ public class WechatService {
        return map;
    }
    public MixEnvelop findWxReplyScene(String wechatId,String msgType,String event,String content,Integer page,Integer size){
    public MixEnvelop findWxReplyScene(String wechatId,String msgType,String event,String content,Integer status,Integer page,Integer size){
        String totalSql = "SELECT " +
                " COUNT(1) AS total " +
                " FROM " +
                " wx_reply_scene s " +
                " WHERE " +
                " s.wechat_id = '"+wechatId+"'";
                " s.wechat_id = '"+wechatId+"' " +
                " AND s.default_Reply is null ";
        if(StringUtils.isNotBlank(msgType)){
            totalSql += " AND s.msg_type ='"+msgType+"'";
        }
@ -390,6 +398,9 @@ public class WechatService {
        if(StringUtils.isNotBlank(content)){
            totalSql += " AND s.content like '%"+content+"%'";
        }
        if(status!=null){
            totalSql += " AND s.status = "+status;
        }
        List<Map<String, Object>> rstotal = jdbcTemplate.queryForList(totalSql);
        Long count = 0L;
        if (rstotal != null && rstotal.size() > 0) {
@ -409,7 +420,8 @@ public class WechatService {
                " FROM " +
                " wx_reply_scene s " +
                " WHERE " +
                " s.wechat_id = '"+wechatId+"'";
                " s.wechat_id = '"+wechatId+"'" +
                " AND s.default_Reply is null ";
        if(StringUtils.isNotBlank(msgType)){
            sql += " AND s.msg_type ='"+msgType+"'";
        }
@ -419,6 +431,9 @@ public class WechatService {
        if(StringUtils.isNotBlank(content)){
            sql += " AND s.content like '%"+content+"%'";
        }
        if(status!=null){
            sql += " AND s.status = "+status;
        }
        sql+=" LIMIT  " + (page - 1) * size + "," + size + "";
        List<WxReplySceneVO> list = jdbcTemplate.query(sql, new BeanPropertyRowMapper(WxReplySceneVO.class));