Trick 6 years ago
parent
commit
1077f67790

+ 11 - 25
common/common-entity/src/main/java/com/yihu/jw/entity/base/wx/WxGraphicMessageDO.java

@ -15,14 +15,22 @@ import java.util.Date;
@Table(name = "wx_graphic_message")
public class WxGraphicMessageDO extends UuidIdentityEntityWithOperator implements java.io.Serializable {
    private String code;
    private String wechatId;//微信id
    private String title;//标题
    private String description;//描述
    private String url;//图文消息url值
    private String picUrl;//图片地址
    private String remark;//备注
    private Integer status;  //状态 -1删除 0 冻结 1可用
    @Column(name = "wechat_id", length = 50)
    public String getWechatId() {
        return wechatId;
    }
    public void setWechatId(String wechatId) {
        this.wechatId = wechatId;
    }
    @Column(name = "title", length = 200)
    public String getTitle() {
        return title;
@ -59,21 +67,7 @@ public class WxGraphicMessageDO extends UuidIdentityEntityWithOperator implement
        this.picUrl = picUrl;
    }
    @Column(name = "remark", length = 1000)
    public void setUpdateUser(String updateUser) {
        this.updateUser = updateUser;
    }
    @Column(name = "remark", length = 1000)
    public String getRemark() {
        return remark;
    }
    public void setRemark(String remark) {
        this.remark = remark;
    }
    @Column(name = "status", length = 2000)
    public Integer getStatus() {
        return status;
    }
@ -82,12 +76,4 @@ public class WxGraphicMessageDO extends UuidIdentityEntityWithOperator implement
        this.status = status;
    }
    @Column(name = "code", length = 50)
    public String getCode() {
        return code;
    }
    @Column(name = "code", length = 50)
    public void setCode(String code) {
        this.code = code;
    }
}

+ 2 - 0
common/common-request-mapping/src/main/java/com/yihu/jw/rm/base/BaseRequestMapping.java

@ -243,10 +243,12 @@ public class BaseRequestMapping {
        public static final String findWechatImgGroup ="/findWechatImgGroup";
        public static final String createImgGroup ="/createImgGroup";
        public static final String findImgGroupExist ="/findImgGroupExist";
        public static final String updateImgGroup ="/updateImgGroup";
        public static final String deleteImgGroup ="/deleteImgGroup";
        public static final String saveImg ="/saveImg";
        public static final String findImg ="/findImg";
        public static final String findGraphicMessageSingle ="/findGraphicMessageSingle";
        public static final String saveImgGroup ="/saveImgGroup";
        public static final String saveWxReplyScene ="/saveWxReplyScene";

+ 11 - 0
common/common-rest-model/src/main/java/com/yihu/jw/restmodel/base/wx/WxComboVO.java

@ -6,12 +6,15 @@ import io.swagger.annotations.ApiModelProperty;
 * Created by Administrator on 2018/10/9.
 */
public class WxComboVO {
    @ApiModelProperty(value = "微信id")
    private String id;
    @ApiModelProperty(value = "微信公众号")
    private String name;
    @ApiModelProperty(value = "原始id")
    private String appOriginId;
    @ApiModelProperty(value="公众号类型")
    private String publicType;
    public String getId() {
        return id;
@ -36,4 +39,12 @@ public class WxComboVO {
    public void setAppOriginId(String appOriginId) {
        this.appOriginId = appOriginId;
    }
    public String getPublicType() {
        return publicType;
    }
    public void setPublicType(String publicType) {
        this.publicType = publicType;
    }
}

+ 5 - 14
common/common-rest-model/src/main/java/com/yihu/jw/restmodel/base/wx/WxGraphicMessageVO.java

@ -7,7 +7,7 @@ import java.util.Date;
 */
public class WxGraphicMessageVO {
    private String id;
    private String saasId;
    private String wechatId;//微信id
    private String title;//标题
    private String description;//描述
    private String url;//图文消息url值
@ -18,7 +18,6 @@ public class WxGraphicMessageVO {
    private String updateUser;//修改人
    private String updateUserName;//修改人名称
    private Date updateTime;//修改时间
    private String remark;//备注
    private Integer status;  //状态 -1删除 0 冻结 1可用
    public String getId() {
@ -109,12 +108,12 @@ public class WxGraphicMessageVO {
        this.updateTime = updateTime;
    }
    public String getRemark() {
        return remark;
    public String getWechatId() {
        return wechatId;
    }
    public void setRemark(String remark) {
        this.remark = remark;
    public void setWechatId(String wechatId) {
        this.wechatId = wechatId;
    }
    public Integer getStatus() {
@ -124,12 +123,4 @@ public class WxGraphicMessageVO {
    public void setStatus(Integer status) {
        this.status = status;
    }
    public String getSaasId() {
        return saasId;
    }
    public void setSaasId(String saasId) {
        this.saasId = saasId;
    }
}

+ 4 - 4
server/svr-authentication/src/main/java/com/yihu/jw/security/oauth2/provider/endpoint/WlyyLoginEndpoint.java

@ -118,10 +118,10 @@ public class WlyyLoginEndpoint extends AbstractEndpoint {
        if (StringUtils.isEmpty(parameters.get("captcha"))) {
            parameters.put("grant_type", "password");
            //解密密码
//            if (parameters.get("password") != null) {
//                RSAPrivateKey rsaPrivateKey = (RSAPrivateKey)httpSession.getAttribute("privateKey");
//                parameters.put("password", RSAUtils.decryptByPrivateKey(new String(Base64.decodeBase64(parameters.get("password"))), rsaPrivateKey));
//            }
            if (parameters.get("password") != null) {
                RSAPrivateKey rsaPrivateKey = (RSAPrivateKey)httpSession.getAttribute("privateKey");
                parameters.put("password", RSAUtils.decryptByPrivateKey(new String(Base64.decodeBase64(parameters.get("password"))), rsaPrivateKey));
            }
        } else {
            parameters.put("grant_type", "captcha");
        }

+ 2 - 2
server/svr-configuration/src/main/resources/bootstrap.yml

@ -10,7 +10,7 @@ spring:
      failFast: true #启动快速失败 即链接不到配置服务就启动失败
      server:
        git:
          uri: ${wlyy.spring.config.git.uri:http://192.168.1.220:10080/jiwei/wlyy2.0.config.git}
          uri: ${wlyy.spring.config.git.uri:http://192.168.1.220:10080/Amoy2/wlyy2.0.config.git}
          basedir: /usr/local/wlyy2.0-config
        default-label: ${wlyy.spring.config.git.label:jwdev}
@ -23,7 +23,7 @@ spring:
      failFast: true #启动快速失败 即链接不到配置服务就启动失败
      server:
        git:
          uri: ${wlyy.spring.config.git.uri:http://192.168.1.220:10080/jiwei/wlyy2.0.config.git}
          uri: ${wlyy.spring.config.git.uri:http://192.168.1.220:10080/Amoy2/wlyy2.0.config.git}
          basedir: /usr/local/wlyy2.0-config
        default-label: ${wlyy.spring.config.git.label:jwdev}

+ 4 - 0
svr/svr-base/src/main/java/com/yihu/jw/base/dao/wx/WxGraphicSceneDao.java

@ -4,8 +4,12 @@ import com.yihu.jw.entity.base.wx.WxGraphicSceneDO;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.repository.PagingAndSortingRepository;
import java.util.List;
/**
 * Created by Administrator on 2018/10/9.
 */
public interface WxGraphicSceneDao extends PagingAndSortingRepository<WxGraphicSceneDO, String>, JpaSpecificationExecutor<WxGraphicSceneDO> {
    List<WxGraphicSceneDO> findByWechatIdAndScene(String wechatId,String scene);
}

+ 5 - 2
svr/svr-base/src/main/java/com/yihu/jw/base/endpoint/wx/WeChatQrcodeController.java

@ -15,6 +15,8 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest;
/**
 * Created by Trick on 2018/9/7.
 */
@ -31,8 +33,9 @@ public class WeChatQrcodeController extends EnvelopRestEndpoint {
    public Envelop getQrcode(@ApiParam(name = "wxId", value = "微信id")
                             @RequestParam(value = "wxId", required = true)String wxId,
                             @ApiParam(name = "scene", value = "场景值")
                             @RequestParam(value = "scene", required = true)String scene) throws Exception{
        return success(weChatQrcodeService.getQrcode(wxId,scene));
                             @RequestParam(value = "scene", required = true)String scene,
                             HttpServletRequest request) throws Exception{
        return success(weChatQrcodeService.getQrcode(request,wxId,scene));
    }
}

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

@ -82,7 +82,7 @@ public class WechatController extends EnvelopRestEndpoint {
    @GetMapping(value = BaseRequestMapping.WeChat.findWxWechatExist)
    @ApiOperation(value = "判断微信名称是否存在", notes = "判断微信名称是否存在")
    public Envelop findWxWechatExist(String name) {
       return success("success", wechatService.findWxWechatExist(name));
       return success(BaseRequestMapping.WeChat.api_success, wechatService.findWxWechatExist(name));
    }
@ -116,6 +116,15 @@ public class WechatController extends EnvelopRestEndpoint {
        return wechatService.createImgGroup(wxWechatScene);
    }
    @GetMapping(value = BaseRequestMapping.WeChat.findImgGroupExist)
    @ApiOperation(value = "验证图文素材分组是否存在", notes = "验证图文素材分组是否存在")
    public Envelop findImgGroupExist(@ApiParam(name = "wechatId", value = "微信id")
                                     @RequestParam(value = "wechatId", required = true)String wechatId,
                                     @ApiParam(name = "scene", value = "场景值")
                                     @RequestParam(value = "scene", required = true)String scene) {
        return success(BaseRequestMapping.WeChat.api_success,wechatService.findImgGroupExist(wechatId,scene));
    }
    @PostMapping(value = BaseRequestMapping.WeChat.updateImgGroup)
    @ApiOperation(value = "修改图文素材分组", notes = "修改图文素材分组")
    public Envelop updateImgGroup(@ApiParam(name = "id", value = "id")
@ -134,8 +143,8 @@ public class WechatController extends EnvelopRestEndpoint {
    @PostMapping(value = BaseRequestMapping.WeChat.saveImg)
    @ApiOperation(value = "保存图文素材", notes = "保存图文素材")
    public Envelop saveImg(@ApiParam(name = "id", value = "id")
                           @RequestParam(value = "id", required = true)String wxGraphicMessageJson)throws Exception {
    public Envelop saveImg(@ApiParam(name = "wxGraphicMessageJson", value = "保存图文素材")
                           @RequestParam(value = "wxGraphicMessageJson", required = true)String wxGraphicMessageJson)throws Exception {
        WxGraphicMessageDO WxGraphicMessage = toEntity(wxGraphicMessageJson, WxGraphicMessageDO.class);
        return wechatService.saveImg(WxGraphicMessage);
    }
@ -155,6 +164,13 @@ public class WechatController extends EnvelopRestEndpoint {
        return wechatService.findImg(wechatId, title, scene, page, size);
    }
    @GetMapping(value = BaseRequestMapping.WeChat.findGraphicMessageSingle)
    @ApiOperation(value = "获取图文素材(单条)", notes = "获取图文素材(单条)")
    public ObjEnvelop<WxGraphicMessageVO> findGraphicMessageSingle(@ApiParam(name = "id", value = "图文id")
                                                       @RequestParam(value = "id", required = true)String id) {
        return success(wechatService.findGraphicMessageSingle(id),WxGraphicMessageVO.class);
    }
    @PostMapping(value = BaseRequestMapping.WeChat.saveImgGroup)
    @ApiOperation(value = "分组图文素材", notes = "分组图文素材")
    public Envelop saveImgGroup(@ApiParam(name = "groups", value = "微信id")

+ 59 - 3
svr/svr-base/src/main/java/com/yihu/jw/base/service/wx/WeChatQrcodeService.java

@ -4,10 +4,14 @@ import com.fasterxml.jackson.databind.node.ObjectNode;
import com.yihu.fastdfs.FastDFSUtil;
import com.yihu.jw.util.wechat.wxhttp.HttpUtil;
import org.apache.commons.lang3.StringUtils;
import org.apache.http.HttpRequest;
import org.json.JSONObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.servlet.http.HttpServletRequest;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
@ -25,7 +29,7 @@ public class WeChatQrcodeService {
    @Autowired
    private WxAccessTokenService wxAccessTokenService;
    public String getQrcode(String wechatId,String scene) throws Exception{
    public String getQrcode(HttpServletRequest request, String wechatId, String scene) throws Exception{
        String token_url = "https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=" + wxAccessTokenService.getWxAccessTokenById(wechatId).getAccessToken();
        String params = "{\"action_name\": \"QR_LIMIT_STR_SCENE\", \"action_info\": {\"scene\": {\"scene_str\": \"" + scene + "\"}}}";
        //服务号必须是通过腾讯认证,每年是300元,如果没有认证而导致的错误提示,那就去认证
@ -43,11 +47,63 @@ public class WeChatQrcodeService {
                HttpURLConnection connection = (HttpURLConnection) urlGet.openConnection();
                connection.connect();
                inputStream = connection.getInputStream();
                ObjectNode objectNode = fastDFSHelper.upload(inputStream,"png","微信二维码");
                String pathFile = request.getSession().getServletContext().getRealPath("/")
                        + File.separator + "qrcode" + File.separator + wechatId+"_"+scene+".png";
                File file = new File(pathFile);
                if(!file.exists()){
                    file.mkdir();
                }
                // 保存文件
                FileOutputStream outputStream = new FileOutputStream(file);
                byte[] data = new byte[1024];
                int len = 0;
                while ((len = inputStream.read(data)) != -1) {
                    outputStream.write(data, 0, len);
                }
                InputStream input = new FileInputStream(file);
                ObjectNode objectNode = fastDFSHelper.upload(input,"png","");
                if(file.exists()){
                    file.delete();
                }
                if (outputStream != null) {
                    outputStream.close();
                }
                if (inputStream != null) {
                    inputStream.close();
                }
                return objectNode.get("fileId").toString().replaceAll("\"", "");
            }
        }
        return "";
    }
//    public void write(InputStream inputStream)throws Exception{
//        String file = "D:\\workspace\\file\\test.png";
//        // 保存文件
//        FileOutputStream outputStream = new FileOutputStream(file);
//
//        byte[] data = new byte[1024];
//        int len = 0;
//
//        while ((len = inputStream.read(data)) != -1) {
//            outputStream.write(data, 0, len);
//        }
//
//        if (outputStream != null) {
//            outputStream.close();
//        }
//
//    }
}

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

@ -15,6 +15,7 @@ import org.dom4j.io.SAXReader;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;
@ -33,6 +34,7 @@ public class WechatCoreService {
    private Logger logger = LoggerFactory.getLogger(WechatCoreService.class);
    @Autowired
    private WechatDao wechatDao;

+ 22 - 9
svr/svr-base/src/main/java/com/yihu/jw/base/service/wx/WechatService.java

@ -177,7 +177,10 @@ public class WechatService {
    //====================图文素材管理============================
    public MixEnvelop findWechatCombo(){
        String sql ="SELECT t.id,t.`name`,t.app_origin_id AS appOriginId from wx_wechat t";
        String sql ="SELECT t.id,t.`name`," +
                "t.app_origin_id AS appOriginId," +
                "t.public_type AS publicType " +
                "from wx_wechat t";
        List<WxComboVO> list = jdbcTemplate.query(sql, new BeanPropertyRowMapper(WxComboVO.class));
        return MixEnvelop.getSuccessList(BaseRequestMapping.WeChat.api_success,list);
    }
@ -187,7 +190,7 @@ public class WechatService {
        String totalSql ="SELECT COUNT(1) AS total from wx_graphic_scene g WHERE g.wechat_id ='"+wechatId+"'";
        if(StringUtils.isNotBlank(scene)){
            totalSql+=" AND g.scene ='"+scene+"' ";
            totalSql+=" AND g.scene like'%"+scene+"%' ";
        }
        List<Map<String, Object>> rstotal = jdbcTemplate.queryForList(totalSql);
@ -204,7 +207,7 @@ public class WechatService {
                " g.wechat_id = '"+wechatId+"' ";
        if(StringUtils.isNotBlank(scene)){
            sql+= " AND g.scene='"+scene+"'" ;
            sql+= " AND g.scene like'%"+scene+"%'" ;
        }
        sql+= " LIMIT  " + (page - 1) * size + "," + size + "";
@ -219,6 +222,14 @@ public class WechatService {
        return Envelop.getSuccess(BaseRequestMapping.WeChat.api_success);
    }
    public Boolean findImgGroupExist(String wechatId,String scene){
        List<WxGraphicSceneDO> list = wxGraphicSceneDao.findByWechatIdAndScene(wechatId,scene);
        if(list!=null&&list.size()>0){
            return true;
        }
        return false;
    }
    public Envelop updateImgGroup(String id,String scene){
        WxGraphicSceneDO wxGraphicSceneDO = wxGraphicSceneDao.findOne(id);
        List<WxGraphicSceneGroupDO> list = wxGraphicSceneGroupDao.findByWechatIdAndScene(wxGraphicSceneDO.getWechatId(),wxGraphicSceneDO.getScene());
@ -260,12 +271,12 @@ public class WechatService {
                }
        sqlTotal+= " WHERE " +
                " m.wechat_id = '"+wechatId+"' " +
                " m.status =1" ;
                " AND m.status =1" ;
                if(StringUtils.isNotBlank(title)){
                    sqlTotal += " AND m.title LIKE '%"+title+"%' " ;
                }
                if(StringUtils.isNotBlank(scene)){
                    sqlTotal+= "AND g.scene = '"+scene+"'";
                    sqlTotal+= " AND g.scene = '"+scene+"'";
                }
        List<Map<String, Object>> rstotal = jdbcTemplate.queryForList(sqlTotal);
        Long count = 0L;
@ -276,12 +287,10 @@ public class WechatService {
        String sql = "SELECT " +
                " m.id, " +
                " m.wechat_id AS wechatId, " +
                " m.`code` AS code, " +
                " m.title, " +
                " m.description, " +
                " m.url, " +
                " m.pic_url AS picUrl, " +
                " m.remark, " +
                " m.`status` " +
                " FROM " +
                " wx_graphic_message m ";
@ -289,18 +298,22 @@ public class WechatService {
            sql+= " JOIN wx_graphic_scene_group g ON g.graphic_id = m.id ";
        }
        sql+=" WHERE m.wechat_id = '"+wechatId+"' " +
                " m.status =1" ;
                " AND m.status =1" ;
        if(StringUtils.isNotBlank(title)){
            sql += " AND m.title LIKE '%"+title+"%' " ;
        }
        if(StringUtils.isNotBlank(scene)){
            sql+= "AND g.scene = '"+scene+"'";
            sql+= " AND g.scene = '"+scene+"'";
        }
        sql+=" LIMIT  " + (page - 1) * size + "," + size + "";
        List<WxGraphicMessageVO> list = jdbcTemplate.query(sql, new BeanPropertyRowMapper(WxGraphicMessageVO.class));
        return MixEnvelop.getSuccessListWithPage(BaseRequestMapping.WeChat.api_success, list, page, size, count);
    }
    public WxGraphicMessageDO findGraphicMessageSingle(String id){
        return wxGraphicMessageDao.findOne(id);
    }
    public Envelop saveImgGroup(List<WxGraphicSceneGroupDO> groups){
        List<WxGraphicSceneGroupDO> gs = wxGraphicSceneGroupDao.findByWechatIdAndScene(groups.get(0).getWechatId(),groups.get(0).getScene());
        if(gs!=null&&gs.size()>0){