|
@ -1,12 +1,12 @@
|
|
|
package com.yihu.jw.base.service.wx;
|
|
|
|
|
|
import com.yihu.jw.restmodel.base.saas.SaasVO;
|
|
|
import com.yihu.jw.restmodel.base.wx.WxSaasVO;
|
|
|
import com.yihu.jw.restmodel.base.wx.WxWechatVO;
|
|
|
import com.yihu.jw.base.dao.wx.*;
|
|
|
import com.yihu.jw.entity.base.wx.*;
|
|
|
import com.yihu.jw.restmodel.base.wx.*;
|
|
|
import com.yihu.jw.restmodel.web.Envelop;
|
|
|
import com.yihu.jw.restmodel.web.MixEnvelop;
|
|
|
import com.yihu.jw.restmodel.web.ObjEnvelop;
|
|
|
import com.yihu.jw.rm.specialist.SpecialistMapping;
|
|
|
import com.yihu.jw.rm.base.BaseRequestMapping;
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.jdbc.core.BeanPropertyRowMapper;
|
|
@ -16,6 +16,7 @@ import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
|
import java.util.UUID;
|
|
|
|
|
|
/**
|
|
|
* Created by trick on 2017/5/20 0020.
|
|
@ -26,6 +27,24 @@ public class WechatService {
|
|
|
|
|
|
@Autowired
|
|
|
private JdbcTemplate jdbcTemplate;
|
|
|
@Autowired
|
|
|
private WechatDao wechatDao;
|
|
|
@Autowired
|
|
|
private WxWechatSaasDao wxWechatSaasDao;
|
|
|
@Autowired
|
|
|
private WxGraphicSceneDao wxGraphicSceneDao;
|
|
|
@Autowired
|
|
|
private WxGraphicSceneGroupDao wxGraphicSceneGroupDao;
|
|
|
@Autowired
|
|
|
private WxGraphicMessageDao wxGraphicMessageDao;
|
|
|
@Autowired
|
|
|
private WxReplySceneDao wxReplySceneDao;
|
|
|
@Autowired
|
|
|
private WxTemplateDao wxTemplateDao;
|
|
|
@Autowired
|
|
|
private WxTemplateConfigDao wxTemplateConfigDao;
|
|
|
|
|
|
//====================微信与租户管理=======================
|
|
|
|
|
|
public MixEnvelop getWxWechatList(String name,String saasName,Integer status,Integer publicType,Integer page,Integer size){
|
|
|
|
|
@ -91,7 +110,7 @@ public class WechatService {
|
|
|
count = (Long) rstotal.get(0).get("total");
|
|
|
}
|
|
|
|
|
|
return MixEnvelop.getSuccessListWithPage(SpecialistMapping.api_success, list, page, size, count);
|
|
|
return MixEnvelop.getSuccessListWithPage(BaseRequestMapping.WeChat.api_success, list, page, size, count);
|
|
|
}
|
|
|
|
|
|
public List<WxSaasVO> getWxSaasVOs(String id){
|
|
@ -106,4 +125,335 @@ public class WechatService {
|
|
|
List<WxSaasVO> list = jdbcTemplate.query(sql, new BeanPropertyRowMapper(WxSaasVO.class));
|
|
|
return list;
|
|
|
}
|
|
|
|
|
|
public Envelop saveWxAndSaas(WxWechatDO wxWechatDO, List<WxWechatSaasDO> wxWechatSaasDOs){
|
|
|
String uuid = UUID.randomUUID().toString();
|
|
|
wxWechatDO.setId(uuid);
|
|
|
wechatDao.save(wxWechatDO);
|
|
|
|
|
|
if(wxWechatSaasDOs!=null&&wxWechatSaasDOs.size()>0){
|
|
|
for(WxWechatSaasDO wxs:wxWechatSaasDOs){
|
|
|
wxs.setWechatId(uuid);
|
|
|
}
|
|
|
wxWechatSaasDao.save(wxWechatSaasDOs);
|
|
|
}
|
|
|
return Envelop.getSuccess(BaseRequestMapping.WeChat.api_success);
|
|
|
}
|
|
|
|
|
|
public Envelop updateWxAndSaas(WxWechatDO wxWechatDO, List<WxWechatSaasDO> wxWechatSaasDOs) {
|
|
|
wechatDao.save(wxWechatDO);
|
|
|
|
|
|
List<WxWechatSaasDO> ws = wxWechatSaasDao.findByWechatId(wxWechatDO.getId());
|
|
|
wxWechatSaasDao.delete(ws);
|
|
|
|
|
|
if(wxWechatSaasDOs!=null&&wxWechatSaasDOs.size()>0){
|
|
|
|
|
|
for(WxWechatSaasDO wxs:wxWechatSaasDOs){
|
|
|
wxs.setWechatId(wxWechatDO.getId());
|
|
|
}
|
|
|
wxWechatSaasDao.save(wxWechatSaasDOs);
|
|
|
}
|
|
|
return Envelop.getSuccess(BaseRequestMapping.WeChat.api_success);
|
|
|
}
|
|
|
|
|
|
|
|
|
//====================微信与租户管理end=======================
|
|
|
|
|
|
//====================图文素材管理============================
|
|
|
|
|
|
public MixEnvelop findWechatCombo(){
|
|
|
String sql ="SELECT t.id,t.`name`,t.app_origin_id AS appOriginId from wx_wechat t";
|
|
|
List<WxComboVO> list = jdbcTemplate.query(sql, new BeanPropertyRowMapper(WxComboVO.class));
|
|
|
return MixEnvelop.getSuccessList(BaseRequestMapping.WeChat.api_success,list);
|
|
|
}
|
|
|
|
|
|
public MixEnvelop findWechatImgGroup(String wechatId,Integer page,Integer size){
|
|
|
|
|
|
String totalSql ="SELECT COUNT(1) AS total from wx_graphic_scene g WHERE g.wechat_id ='"+wechatId+"'";
|
|
|
List<Map<String, Object>> rstotal = jdbcTemplate.queryForList(totalSql);
|
|
|
Long count = 0L;
|
|
|
if (rstotal != null && rstotal.size() > 0) {
|
|
|
count = (Long) rstotal.get(0).get("total");
|
|
|
}
|
|
|
String sql = "SELECT " +
|
|
|
" g.id,g.wechat_id AS wechatId,g.scene " +
|
|
|
" FROM " +
|
|
|
" wx_graphic_scene g " +
|
|
|
" WHERE " +
|
|
|
" g.wechat_id = '"+wechatId+"' " +
|
|
|
" LIMIT " + (page - 1) * size + "," + size + "";
|
|
|
List<WxGraphicSceneVO> list = jdbcTemplate.query(sql, new BeanPropertyRowMapper(WxGraphicSceneVO.class));
|
|
|
|
|
|
return MixEnvelop.getSuccessListWithPage(BaseRequestMapping.WeChat.api_success, list, page, size, count);
|
|
|
}
|
|
|
|
|
|
public Envelop createImgGroup(WxGraphicSceneDO wxGraphicSceneDO){
|
|
|
wxGraphicSceneDao.save(wxGraphicSceneDO);
|
|
|
return Envelop.getSuccess(BaseRequestMapping.WeChat.api_success);
|
|
|
}
|
|
|
|
|
|
public Envelop updateImgGroup(String id,String scene){
|
|
|
WxGraphicSceneDO wxGraphicSceneDO = wxGraphicSceneDao.findOne(id);
|
|
|
List<WxGraphicSceneGroupDO> list = wxGraphicSceneGroupDao.findByWechatIdAndScene(wxGraphicSceneDO.getWechatId(),wxGraphicSceneDO.getScene());
|
|
|
|
|
|
if(list!=null&&list.size()>0){
|
|
|
for(WxGraphicSceneGroupDO group:list){
|
|
|
group.setScene(scene);
|
|
|
}
|
|
|
wxGraphicSceneGroupDao.save(list);
|
|
|
}
|
|
|
wxGraphicSceneDO.setScene(scene);
|
|
|
wxGraphicSceneDao.save(wxGraphicSceneDO);
|
|
|
return Envelop.getSuccess(BaseRequestMapping.WeChat.api_success);
|
|
|
}
|
|
|
|
|
|
public Envelop deleteImgGroup(String id){
|
|
|
WxGraphicSceneDO wxGraphicSceneDO = wxGraphicSceneDao.findOne(id);
|
|
|
List<WxGraphicSceneGroupDO> list = wxGraphicSceneGroupDao.findByWechatIdAndScene(wxGraphicSceneDO.getWechatId(),wxGraphicSceneDO.getScene());
|
|
|
if(list!=null&&list.size()>0){
|
|
|
wxGraphicSceneGroupDao.delete(list);
|
|
|
}
|
|
|
wxGraphicSceneDao.delete(wxGraphicSceneDO);
|
|
|
return Envelop.getSuccess(BaseRequestMapping.WeChat.api_success);
|
|
|
}
|
|
|
|
|
|
public Envelop saveImg(WxGraphicMessageDO wxGraphicMessageDO){
|
|
|
wxGraphicMessageDao.save(wxGraphicMessageDO);
|
|
|
return Envelop.getSuccess(BaseRequestMapping.WeChat.api_success);
|
|
|
}
|
|
|
|
|
|
public MixEnvelop findImg(String wechatId,String title,String scene,Integer page,Integer size){
|
|
|
|
|
|
String sqlTotal = "SELECT " +
|
|
|
" COUNT(1) AS total " +
|
|
|
" FROM " +
|
|
|
" wx_graphic_message m ";
|
|
|
if(StringUtils.isNotBlank(scene)){
|
|
|
sqlTotal+= " JOIN wx_graphic_scene_group g ON g.graphic_id = m.id ";
|
|
|
}
|
|
|
sqlTotal+= " WHERE " +
|
|
|
" m.wechat_id = '"+wechatId+"' " +
|
|
|
" m.status =1" ;
|
|
|
if(StringUtils.isNotBlank(title)){
|
|
|
sqlTotal += " AND m.title LIKE '%"+title+"%' " ;
|
|
|
}
|
|
|
if(StringUtils.isNotBlank(scene)){
|
|
|
sqlTotal+= "AND g.scene = '"+scene+"'";
|
|
|
}
|
|
|
List<Map<String, Object>> rstotal = jdbcTemplate.queryForList(sqlTotal);
|
|
|
Long count = 0L;
|
|
|
if (rstotal != null && rstotal.size() > 0) {
|
|
|
count = (Long) rstotal.get(0).get("total");
|
|
|
}
|
|
|
|
|
|
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 ";
|
|
|
if(StringUtils.isNotBlank(scene)){
|
|
|
sql+= " JOIN wx_graphic_scene_group g ON g.graphic_id = m.id ";
|
|
|
}
|
|
|
sql+=" WHERE m.wechat_id = '"+wechatId+"' " +
|
|
|
" m.status =1" ;
|
|
|
if(StringUtils.isNotBlank(title)){
|
|
|
sql += " AND m.title LIKE '%"+title+"%' " ;
|
|
|
}
|
|
|
if(StringUtils.isNotBlank(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 Envelop saveImgGroup(List<WxGraphicSceneGroupDO> groups){
|
|
|
List<WxGraphicSceneGroupDO> gs = wxGraphicSceneGroupDao.findByWechatIdAndScene(groups.get(0).getWechatId(),groups.get(0).getScene());
|
|
|
if(gs!=null&&gs.size()>0){
|
|
|
wxGraphicSceneGroupDao.delete(gs);
|
|
|
}
|
|
|
wxGraphicSceneGroupDao.save(groups);
|
|
|
return Envelop.getSuccess(BaseRequestMapping.WeChat.api_success);
|
|
|
}
|
|
|
|
|
|
public Envelop saveWxReplyScene(WxReplySceneDO wxReplySceneDO){
|
|
|
wxReplySceneDao.save(wxReplySceneDO);
|
|
|
return Envelop.getSuccess(BaseRequestMapping.WeChat.api_success);
|
|
|
}
|
|
|
|
|
|
public MixEnvelop findWxReplyScene(String wechatId,String msgType,String event,String content,Integer page,Integer size){
|
|
|
String totalSql = "SELECT " +
|
|
|
" COUNT(1) AS total " +
|
|
|
" FROM " +
|
|
|
" wx_reply_scene s " +
|
|
|
" WHERE " +
|
|
|
" s.wechat_id = '"+wechatId+"'";
|
|
|
if(StringUtils.isNotBlank(msgType)){
|
|
|
totalSql += " AND s.msg_type ='"+msgType+"'";
|
|
|
}
|
|
|
if(StringUtils.isNotBlank(event)){
|
|
|
totalSql += " AND s.event ='"+event+"'";
|
|
|
}
|
|
|
if(StringUtils.isNotBlank(content)){
|
|
|
totalSql += " AND s.content like '%"+content+"%'";
|
|
|
}
|
|
|
List<Map<String, Object>> rstotal = jdbcTemplate.queryForList(totalSql);
|
|
|
Long count = 0L;
|
|
|
if (rstotal != null && rstotal.size() > 0) {
|
|
|
count = (Long) rstotal.get(0).get("total");
|
|
|
}
|
|
|
|
|
|
String sql = "SELECT " +
|
|
|
" s.wechat_id AS wechatId," +
|
|
|
" s.scene, " +
|
|
|
" s.`status`, " +
|
|
|
" s.id, " +
|
|
|
" s.content, " +
|
|
|
" s.app_origin_id AS appOriginId, " +
|
|
|
" s.`event`, " +
|
|
|
" s.msg_type AS msgType" +
|
|
|
" FROM " +
|
|
|
" wx_reply_scene s " +
|
|
|
" WHERE " +
|
|
|
" s.wechat_id = '"+wechatId+"'";
|
|
|
if(StringUtils.isNotBlank(msgType)){
|
|
|
sql += " AND s.msg_type ='"+msgType+"'";
|
|
|
}
|
|
|
if(StringUtils.isNotBlank(event)){
|
|
|
sql += " AND s.event ='"+event+"'";
|
|
|
}
|
|
|
if(StringUtils.isNotBlank(content)){
|
|
|
sql += " AND s.content like '%"+content+"%'";
|
|
|
}
|
|
|
sql+=" LIMIT " + (page - 1) * size + "," + size + "";
|
|
|
|
|
|
List<WxReplySceneVO> list = jdbcTemplate.query(sql, new BeanPropertyRowMapper(WxReplySceneVO.class));
|
|
|
return MixEnvelop.getSuccessListWithPage(BaseRequestMapping.WeChat.api_success, list, page, size, count);
|
|
|
}
|
|
|
|
|
|
//===================图文素材管理end====================================
|
|
|
|
|
|
//===================模板消息==========================================
|
|
|
|
|
|
public Envelop saveWxTemp(WxTemplateDO wxTemplateDO){
|
|
|
wxTemplateDao.save(wxTemplateDO);
|
|
|
return Envelop.getSuccess(BaseRequestMapping.WeChat.api_success);
|
|
|
}
|
|
|
|
|
|
public MixEnvelop findWxtemp(String wechatId,Integer status,String name,String key,Integer page,Integer size){
|
|
|
String totalSql = "SELECT " +
|
|
|
" COUNT(1) AS total " +
|
|
|
" FROM " +
|
|
|
" wx_template t" +
|
|
|
" WHERE t.wechat_id= '"+wechatId+"' ";
|
|
|
if(status!=null){
|
|
|
totalSql+= " AND t.status = "+ status;
|
|
|
}
|
|
|
if(StringUtils.isNotBlank(name)){
|
|
|
totalSql+= " AND t.template_name ='"+name+"'";
|
|
|
}
|
|
|
if(StringUtils.isNotBlank(key)){
|
|
|
totalSql+= " AND (t.template_id ='"+key+"' OR t.title like'%"+key+"%')";
|
|
|
}
|
|
|
List<Map<String, Object>> rstotal = jdbcTemplate.queryForList(totalSql);
|
|
|
Long count = 0L;
|
|
|
if (rstotal != null && rstotal.size() > 0) {
|
|
|
count = (Long) rstotal.get(0).get("total");
|
|
|
}
|
|
|
|
|
|
String sql = "SELECT " +
|
|
|
" t.id, " +
|
|
|
" t.title, " +
|
|
|
" t.wechat_id AS wechatId, " +
|
|
|
" t.template_id AS templateId, " +
|
|
|
" t.template_name AS templateName, " +
|
|
|
" t.content, " +
|
|
|
" t.`status` " +
|
|
|
" FROM " +
|
|
|
" wx_template t" +
|
|
|
" WHERE t.wechat_id= '"+wechatId+"' ";
|
|
|
if(status!=null){
|
|
|
sql+= " AND t.status = "+ status;
|
|
|
}
|
|
|
if(StringUtils.isNotBlank(name)){
|
|
|
sql+= " AND t.template_name ='"+name+"'";
|
|
|
}
|
|
|
if(StringUtils.isNotBlank(key)){
|
|
|
sql+= " AND (t.template_id ='"+key+"' OR t.title like'%"+key+"%')";
|
|
|
}
|
|
|
sql+=" LIMIT " + (page - 1) * size + "," + size + "";
|
|
|
List<WxTemplateVO> list = jdbcTemplate.query(sql, new BeanPropertyRowMapper(WxTemplateVO.class));
|
|
|
return MixEnvelop.getSuccessListWithPage(BaseRequestMapping.WeChat.api_success, list, page, size, count);
|
|
|
}
|
|
|
|
|
|
public Envelop saveWxTempConfig(WxTemplateConfigDO wxTemplateConfigDO){
|
|
|
wxTemplateConfigDao.save(wxTemplateConfigDO);
|
|
|
return Envelop.getSuccess(BaseRequestMapping.WeChat.api_success);
|
|
|
}
|
|
|
|
|
|
public MixEnvelop findWxTempConfigList(String wechatId,String scene,Integer page,Integer size){
|
|
|
String totalSql ="SELECT " +
|
|
|
" COUNT(1) AS total " +
|
|
|
" FROM " +
|
|
|
" wx_template_config g " +
|
|
|
" WHERE " +
|
|
|
" g.wechat_id ='"+wechatId+"'";
|
|
|
if(StringUtils.isNotBlank(scene)){
|
|
|
totalSql += " AND g.scene = '"+scene+"'";
|
|
|
}
|
|
|
List<Map<String, Object>> rstotal = jdbcTemplate.queryForList(totalSql);
|
|
|
Long count = 0L;
|
|
|
if (rstotal != null && rstotal.size() > 0) {
|
|
|
count = (Long) rstotal.get(0).get("total");
|
|
|
}
|
|
|
|
|
|
String sql ="SELECT " +
|
|
|
" g.id, " +
|
|
|
" g.wechat_id AS wechatId, " +
|
|
|
" g.template_id AS templateId, " +
|
|
|
" g.template_name AS template_name, " +
|
|
|
" g.scene, " +
|
|
|
" g.scene_description AS sceneDescription, " +
|
|
|
" g.`first`, " +
|
|
|
" g.url, " +
|
|
|
" g.remark, " +
|
|
|
" g.keyword1, " +
|
|
|
" g.keyword2, " +
|
|
|
" g.keyword3, " +
|
|
|
" g.keyword4, " +
|
|
|
" g.keyword5, " +
|
|
|
" g.keyword6, " +
|
|
|
" g.keyword7, " +
|
|
|
" g.create_time AS createTime, " +
|
|
|
" g.create_user AS createUser, " +
|
|
|
" g.create_user_name AS createUserName, " +
|
|
|
" g.update_time AS updateTime, " +
|
|
|
" g.update_user AS updateUser, " +
|
|
|
" g.update_user_name AS updateUserName " +
|
|
|
" FROM " +
|
|
|
" wx_template_config g " +
|
|
|
" WHERE " +
|
|
|
" g.wechat_id ='"+wechatId+"'";
|
|
|
if(StringUtils.isNotBlank(scene)){
|
|
|
sql += " AND g.scene = '"+scene+"'";
|
|
|
}
|
|
|
sql+=" LIMIT " + (page - 1) * size + "," + size + "";
|
|
|
List<WxTemplateConfigVO> list = jdbcTemplate.query(sql, new BeanPropertyRowMapper(WxTemplateConfigVO.class));
|
|
|
return MixEnvelop.getSuccessListWithPage(BaseRequestMapping.WeChat.api_success, list, page, size, count);
|
|
|
}
|
|
|
|
|
|
public WxTemplateConfigDO findWxTemplateConfig(String wechatId,String name,String scene){
|
|
|
WxTemplateConfigDO wxTemplateConfigDO = wxTemplateConfigDao.findByWechatIdAndTemplateNameAndScene(wechatId,name,scene);
|
|
|
return wxTemplateConfigDO;
|
|
|
}
|
|
|
//===================模板消息end=======================================
|
|
|
|
|
|
|
|
|
}
|