Commit 325713a9 by Mahjong

专家处理商机,更新预约状态,给客户发送预约成功短信,小程序发送预约成功通知2

parent f70bda75
package com.yd.api.practitioner.service.impl;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.github.pagehelper.PageHelper;
import com.google.common.base.Strings;
import com.itextpdf.text.*;
......@@ -64,6 +66,7 @@ import com.yd.dal.service.marketing.*;
import com.yd.dal.service.meta.*;
import com.yd.dal.service.order.PoOrderDALService;
import com.yd.dal.service.survey.SurveyCustomerAnswersDALService;
import com.yd.dal.service.tencent.TenInterfRecordDALService;
import com.yd.dal.service.user.AclUserDALService;
import com.yd.rmi.ali.mail.service.MailService;
import com.yd.rmi.ali.oss.service.OssService;
......@@ -80,11 +83,18 @@ import com.yd.rmi.n22.staff.pojo.Staff;
import com.yd.rmi.n22.staff.service.N22StaffService;
import com.yd.rmi.tencent.wechat.service.WechatService;
import com.yd.rmi.tencent.wechat.vo.WeChatInfoByENV;
import com.yd.rmi.tencent.wechatinterf.pojo.accesstoken.AccessTokenRequest;
import com.yd.rmi.tencent.wechatinterf.pojo.templetemessage.DataDetailInfo;
import com.yd.rmi.tencent.wechatinterf.pojo.templetemessage.MiniProgramSfpInfo;
import com.yd.rmi.tencent.wechatinterf.pojo.templetemessage.SendTemplateSfpRequest;
import com.yd.rmi.tencent.wechatinterf.pojo.ticket.TicketRequest;
import com.yd.rmi.tencent.wechatinterf.pojo.token.TokenRequest;
import com.yd.rmi.tencent.wechatinterf.service.WechatInterfService;
import com.yd.util.CommonUtil;
import com.yd.util.HttpUtil;
import com.yd.util.JsonUtil;
import com.yd.util.PDFConfiguration;
import com.yd.util.SpringContextUtil;
import com.yd.util.config.ZHBErrorConfig;
import com.yd.util.deshandler.DESTypeHandler;
import lombok.extern.slf4j.Slf4j;
......@@ -209,7 +219,8 @@ public class PractitionerServiceImpl implements com.yd.api.practitioner.service.
private MktLeadsAssignedsMapper mktLeadsAssignedsMapper;
@Autowired
private ScheduleTrackService scheduleTrackService;
@Autowired
private WechatInterfService wechatInterfService;
@Autowired
private SendService sendService;
@Override
......@@ -1811,6 +1822,44 @@ public class PractitionerServiceImpl implements com.yd.api.practitioner.service.
}
}
//小程序给客户发送预约成功通知
if (StringUtils.isNotBlank(pool.getWxOpenId())) {
JSONObject result = null;
String requestJson = "";
String templateId = systemConfigService.getSingleConfigValue("SFP_TENCENT_WECHAT_TEMPLATE_ID");
String jumpUrl = systemConfigService.getSingleConfigValue("SFP_PAGE_CUS_URL");
String color = systemConfigService.getSingleConfigValue("TENCENT_WECHAT_TEMPLATE_COLOR_XB");
String remarkValue = systemConfigService.getSingleConfigValue("SFP_TENCENT_WECHAT_TEMPLATE_CUS_REMARK");
String accessToken = getAccessToken();
String url = systemConfigService.getSingleConfigValue("SFP_TENCENT_WECHAT_TEMPLATE_SEND_URL")+accessToken;
// 组装模板数据
DataDetailInfo thing2 = new DataDetailInfo("SFP智能财策", color);
DataDetailInfo thing3 = new DataDetailInfo("网上预约", null);
DataDetailInfo date4 = new DataDetailInfo(CommonUtil.dateParseString(new Date(),"yyyy-MM-dd HH:mm:ss"), null);
DataDetailInfo thing5 = new DataDetailInfo(remarkValue, null);
MiniProgramSfpInfo dataInfo = new MiniProgramSfpInfo();
dataInfo.setThing2(thing2);
dataInfo.setThing3(thing3);
dataInfo.setDate4(date4);
dataInfo.setThing5(thing5);
SendTemplateSfpRequest sendTemplateRequest = new SendTemplateSfpRequest();
sendTemplateRequest.setTemplateId(templateId);
sendTemplateRequest.setUrl(jumpUrl);
sendTemplateRequest.setData(dataInfo);
sendTemplateRequest.setToUser(pool.getWxOpenId());
requestJson = JsonUtil.objToJson(sendTemplateRequest);
log.info("ydLife,请求信息:{}",JsonUtil.format(requestJson));
String responseJson = wechatInterfService.weChatTransaction(url,requestJson);
result = JSON.parseObject(responseJson);
log.info("ydLife,返回信息:{}",result);
int errCode = result.getIntValue("errCode");
String errMsg = result.getString("errmsg");
log.info("ydLife,错误代码{},错误信息{}",errCode,errMsg);
}
//关联商机
//添加到日程
AddScheduleTrackRequestVO addScheduleTrackRequestVO = new AddScheduleTrackRequestVO();
......@@ -1819,8 +1868,8 @@ public class PractitionerServiceImpl implements com.yd.api.practitioner.service.
addScheduleTrackRequestVO.setReferLeadsId(track.getId());
addScheduleTrackRequestVO.setTaskImportantTag(0);
addScheduleTrackRequestVO.setIsActive(1);
addScheduleTrackRequestVO.setTaskTimeFrom("08:00:00");
addScheduleTrackRequestVO.setTaskTimeEnd("22:00:00");
addScheduleTrackRequestVO.setTaskTimeFrom(requestVO.getTaskTimeFrom());
addScheduleTrackRequestVO.setTaskTimeEnd(requestVO.getTaskTimeEnd());
addScheduleTrackRequestVO.setCustomerId(track.getCustomerId());
addScheduleTrackRequestVO.setMdDropOptionId(requestVO.getMdDropOptionId());
addScheduleTrackRequestVO.setTrackTime(track.getTrackTime());
......@@ -1828,6 +1877,26 @@ public class PractitionerServiceImpl implements com.yd.api.practitioner.service.
}
}
private String getAccessToken() {
String appId = systemConfigService.getSingleConfigValue("SFP_TENCENT_WECHAT_APPID");
String secret = systemConfigService.getSingleConfigValue("SFP_TENCENT_WECHAT_APPSECRET");
String grantType = systemConfigService.getSingleConfigValue("TENCENT_WECHAT_TOKEN_GRANT_TYPE");
AccessTokenRequest accessTokenRequest = new AccessTokenRequest();
accessTokenRequest.setAppid(appId);
accessTokenRequest.setSecret(secret);
accessTokenRequest.setGrant_type(grantType);
boolean isLocal = SpringContextUtil.isLocal();
return isLocal ? getAccessTokenByDEV(accessTokenRequest) : wechatService.getAccessToken(accessTokenRequest);
}
private String getAccessTokenByDEV(AccessTokenRequest accessTokenRequest) {
String requestJson = JsonUtil.objToJson(accessTokenRequest);
String responseJson = HttpUtil.postForJson("https://mdev.zuihuibi.cn/api/getAccessToken",requestJson);
JSONObject result = JSON.parseObject(responseJson);
return result.getString("data");
}
@Override
public OpportunityStatisticsResponseVO opportunityStatistics(OpportunityStatisticsRequestVO requestVO) {
OpportunityStatisticsResponseVO resp = new OpportunityStatisticsResponseVO();
......
......@@ -12,4 +12,7 @@ public class OwnOpportunityRecordSaveRequestVO {
private Long mdDropOptionId;
private String noticeDate;
private Long leadsAssignedId;
private String taskTimeFrom;//跟进开始时间
private String taskTimeEnd;//跟进结束时间
}
......@@ -58,5 +58,6 @@ public class MktLeadsPool {
private Long appointmentRecordId;//预约表id
private Long sfpMainId;
private String mobile;
private String wxOpenId;//sfp 用户小程序openid
}
package com.yd.rmi.tencent.wechatinterf.pojo.templetemessage;
import com.fasterxml.jackson.annotation.JsonProperty;
/**
* @author: hongzhong
* @date 2023年06月15日 17:13
*/
public class MiniProgramSfpInfo {
@JsonProperty("thing2")
private DataDetailInfo thing2;
@JsonProperty("thing3")
private DataDetailInfo thing3;
@JsonProperty("date4")
private DataDetailInfo date4;
@JsonProperty("thing5")
private DataDetailInfo thing5;
public DataDetailInfo getThing2() {
return thing2;
}
public void setThing2(DataDetailInfo thing2) {
this.thing2 = thing2;
}
public DataDetailInfo getThing3() {
return thing3;
}
public void setThing3(DataDetailInfo thing3) {
this.thing3 = thing3;
}
public DataDetailInfo getDate4() {
return date4;
}
public void setDate4(DataDetailInfo date4) {
this.date4 = date4;
}
public DataDetailInfo getThing5() {
return thing5;
}
public void setThing5(DataDetailInfo thing5) {
this.thing5 = thing5;
}
}
package com.yd.rmi.tencent.wechatinterf.pojo.templetemessage;
import com.fasterxml.jackson.annotation.JsonProperty;
public class SendTemplateSfpRequest {
@JsonProperty("touser")
private String toUser;
@JsonProperty("template_id")
private String templateId;
private String url;
@JsonProperty("miniprogram")
private MiniProgramInfo miniProgram;
private MiniProgramSfpInfo data;
public String getToUser() {
return toUser;
}
public void setToUser(String toUser) {
this.toUser = toUser;
}
public String getTemplateId() {
return templateId;
}
public void setTemplateId(String templateId) {
this.templateId = templateId;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public MiniProgramInfo getMiniProgram() {
return miniProgram;
}
public void setMiniProgram(MiniProgramInfo miniProgram) {
this.miniProgram = miniProgram;
}
public MiniProgramSfpInfo getData() {
return data;
}
public void setData(MiniProgramSfpInfo data) {
this.data = data;
}
}
......@@ -271,7 +271,7 @@
select
a.id, a.customer_id customerId, a.mkt_campaign mktCampaign, a.mkt_task mktTask, a.has_assigned hasAssigned, a.source_from sourceFrom,
a.is_active isActive,c.mobile mobile,
a.added_at addedAt, a.added_by addedBy,a.remark remark,a.appointment_record_id appointmentRecordId,b.sfp_main_id sfpMainId
a.added_at addedAt, a.added_by addedBy,a.remark remark,a.appointment_record_id appointmentRecordId,b.sfp_main_id sfpMainId ,c.wx_open_id wxOpenId
from ag_mkt_leads_pool a , ag_sfp_appointment_record b , ag_sfp_user c
where a.appointment_record_id=b.id and b.user_id=c.id
and b.status = 0 and b.is_complete =0
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment