|
@@ -26,6 +26,7 @@ import org.springframework.data.redis.core.RedisTemplate;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
import javax.servlet.http.HttpServletRequest;
|
|
import javax.servlet.http.HttpServletRequest;
|
|
|
|
+import java.util.List;
|
|
import java.util.concurrent.TimeUnit;
|
|
import java.util.concurrent.TimeUnit;
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -124,6 +125,11 @@ public class WxGzhServiceImpl implements IWxGzhService {
|
|
if (MessageUtil.MESSAGE_TEXT.equals(msgType)) { // 文本消息
|
|
if (MessageUtil.MESSAGE_TEXT.equals(msgType)) { // 文本消息
|
|
log.info("2.1...");
|
|
log.info("2.1...");
|
|
String content = jsonObjectData.getStr("Content");
|
|
String content = jsonObjectData.getStr("Content");
|
|
|
|
+ String bizmsgmenuid = jsonObjectData.getStr("bizmsgmenuid");
|
|
|
|
+ //如果是选择驾校事件
|
|
|
|
+ if (bizmsgmenuid != null){
|
|
|
|
+ return dealSchoolMsg(bizmsgmenuid,content,fromUserName,toUserName);
|
|
|
|
+ }
|
|
WxForeverCode wxForeverCode = wxForeverCodeService.getOne(new QueryWrapper<WxForeverCode>().eq("code", content).isNull("openid"));
|
|
WxForeverCode wxForeverCode = wxForeverCodeService.getOne(new QueryWrapper<WxForeverCode>().eq("code", content).isNull("openid"));
|
|
//若该口令为未使用的口令
|
|
//若该口令为未使用的口令
|
|
if (wxForeverCode != null){
|
|
if (wxForeverCode != null){
|
|
@@ -148,30 +154,39 @@ public class WxGzhServiceImpl implements IWxGzhService {
|
|
return MessageUtil.initText(fromUserName, toUserName, "抱歉,暂时无法识别图片信息!");
|
|
return MessageUtil.initText(fromUserName, toUserName, "抱歉,暂时无法识别图片信息!");
|
|
}else if (MessageUtil.MESSAGE_EVENT.equals(msgType)) { // 事件消息
|
|
}else if (MessageUtil.MESSAGE_EVENT.equals(msgType)) { // 事件消息
|
|
log.info("3....");
|
|
log.info("3....");
|
|
|
|
+ String result = null ;
|
|
// 区分事件推送
|
|
// 区分事件推送
|
|
String event = jsonObjectData.getStr("Event");
|
|
String event = jsonObjectData.getStr("Event");
|
|
if (MessageUtil.MESSAGE_SUBSCRIBE.equals(event)) { // 关注事件 或 扫描二维码关注事件
|
|
if (MessageUtil.MESSAGE_SUBSCRIBE.equals(event)) { // 关注事件 或 扫描二维码关注事件
|
|
log.info("3.1...");
|
|
log.info("3.1...");
|
|
UserInfo user = userService.getStudentByOpenId(fromUserName);
|
|
UserInfo user = userService.getStudentByOpenId(fromUserName);
|
|
UserInfo userInfo = new UserInfo();
|
|
UserInfo userInfo = new UserInfo();
|
|
- if (user == null){
|
|
|
|
- //保存用户信息
|
|
|
|
-// userInfo.setHeadImage(jsonObj.getString("headimgurl"));
|
|
|
|
-// userInfo.setNickName(jsonObj.getString("nickname"));
|
|
|
|
- userInfo.setOpenid(fromUserName);
|
|
|
|
- userService.saveUserInfo(userInfo);
|
|
|
|
- }
|
|
|
|
|
|
+ userInfo.setOpenid(fromUserName);
|
|
|
|
|
|
//存在Ticket为扫码关注
|
|
//存在Ticket为扫码关注
|
|
if (org.apache.commons.lang3.StringUtils.isNotEmpty(jsonObjectData.getStr("Ticket"))){
|
|
if (org.apache.commons.lang3.StringUtils.isNotEmpty(jsonObjectData.getStr("Ticket"))){
|
|
log.info("3.1.2..");
|
|
log.info("3.1.2..");
|
|
|
|
+ //根据父级销售类型更新当前用户类型
|
|
|
|
+ UserInfo parentUserInfo = userService.getStudentByOpenId(fromUserName);
|
|
|
|
+ if (parentUserInfo != null && (parentUserInfo.getSaleType() ==1 || parentUserInfo.getSaleType() ==3 )){
|
|
|
|
+ userInfo.setSaleType(1);
|
|
|
|
+ }
|
|
//根据Ticket 绑定信息到上级用户
|
|
//根据Ticket 绑定信息到上级用户
|
|
String subscribeEvent = wxMessageEvenService.scanSubscribeEvent(fromUserName, jsonObjectData.getStr("EventKey"),this.getGzhToken(),userInfo.getNickName());
|
|
String subscribeEvent = wxMessageEvenService.scanSubscribeEvent(fromUserName, jsonObjectData.getStr("EventKey"),this.getGzhToken(),userInfo.getNickName());
|
|
- return MessageUtil.initText(fromUserName,toUserName,subscribeEvent);
|
|
|
|
|
|
+ result = MessageUtil.initText(fromUserName,toUserName,subscribeEvent);
|
|
|
|
|
|
}else {
|
|
}else {
|
|
- return MessageUtil.initText(fromUserName, toUserName, "欢迎关注金牌车教,您的学车好伙伴!");
|
|
|
|
|
|
+ result = MessageUtil.initText(fromUserName, toUserName, "欢迎关注金牌车教,您的学车好伙伴!");
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if (user == null){
|
|
|
|
+ //保存用户信息
|
|
|
|
+ userInfoService.save(userInfo);
|
|
|
|
+
|
|
}
|
|
}
|
|
|
|
+ return result;
|
|
|
|
+
|
|
|
|
+
|
|
|
|
|
|
} else if (MessageUtil.MESSAGE_UNSUBSCRIBE.equals(event)) { // 取消订阅事件
|
|
} else if (MessageUtil.MESSAGE_UNSUBSCRIBE.equals(event)) { // 取消订阅事件
|
|
// todo 处理取消订阅事件
|
|
// todo 处理取消订阅事件
|
|
@@ -200,9 +215,9 @@ public class WxGzhServiceImpl implements IWxGzhService {
|
|
//查询该用户的上级
|
|
//查询该用户的上级
|
|
UserInfo upUserInfo = userInfoService.getUpUserInfo(fromUserName);
|
|
UserInfo upUserInfo = userInfoService.getUpUserInfo(fromUserName);
|
|
//当用户销售类型为 普通用户(含驾校分成) 并且他的父级不是代理商(含驾校分成)时,则需要填写驾校信息,且未填写驾校信息时
|
|
//当用户销售类型为 普通用户(含驾校分成) 并且他的父级不是代理商(含驾校分成)时,则需要填写驾校信息,且未填写驾校信息时
|
|
-// if (userInfo.getSaleType() ==1 && upUserInfo.getSaleType()!=3 && upUserInfo.getSchoolName() == null ){
|
|
|
|
-// return choseSchoolName(userInfo,null,fromUserName,toUserName);
|
|
|
|
-// }
|
|
|
|
|
|
+ if (userInfo.getSaleType() ==1 && upUserInfo.getSaleType()!=3 && upUserInfo.getSchoolName() == null ){
|
|
|
|
+ return choseSchoolName(userInfo,fromUserName,toUserName);
|
|
|
|
+ }
|
|
String mediaId = wxMessageEvenService.gainTicketEvent(fromUserName, this.getGzhToken(), false, wxForeverCode);
|
|
String mediaId = wxMessageEvenService.gainTicketEvent(fromUserName, this.getGzhToken(), false, wxForeverCode);
|
|
return MessageUtil.initImage(fromUserName,toUserName,mediaId);
|
|
return MessageUtil.initImage(fromUserName,toUserName,mediaId);
|
|
}
|
|
}
|
|
@@ -217,66 +232,109 @@ public class WxGzhServiceImpl implements IWxGzhService {
|
|
return null;
|
|
return null;
|
|
}
|
|
}
|
|
|
|
|
|
-// private String choseSchoolName(UserInfo userInfo,String text,String fromUserName,String toUserName) throws Exception {
|
|
|
|
-// int index =0;
|
|
|
|
-// if (userInfo.getCityName() ==null){
|
|
|
|
-// if ()
|
|
|
|
-// QueryParams queryParams = new QueryParams();
|
|
|
|
-// queryParams.setChoseColumName("city_name");
|
|
|
|
-// List<String> cities = schoolInfoMapper.queryNames(queryParams);
|
|
|
|
-// String content = "请选择驾校所在省份: \\n";
|
|
|
|
-// for (String city: cities){
|
|
|
|
-// content+=" "+"<a href=\"weixin://bizmsgmenu?msgmenuid="+index+"&msgmenucontent="+city+"\">"+city+"</a>\\n";
|
|
|
|
-// index++;
|
|
|
|
-// }
|
|
|
|
-// return MessageUtil.initText(fromUserName, toUserName, content);
|
|
|
|
-// }
|
|
|
|
-//
|
|
|
|
-// //如果输入值是市名称,则查出改市所有区名称
|
|
|
|
-// if (cities.contains(text)){
|
|
|
|
-// QueryParams queryParamsArea = new QueryParams();
|
|
|
|
-// queryParams.setChoseColumName("area_name");
|
|
|
|
-// queryParams.setConditionColumName("city_name");
|
|
|
|
-// queryParams.setValue(text);
|
|
|
|
-// List<String> areas = schoolInfoMapper.queryNames(queryParamsArea);
|
|
|
|
-// String content = "请选择驾校所在区: \\n";
|
|
|
|
-// for (String area: areas){
|
|
|
|
-// content+=" "+"<a href=\"weixin://bizmsgmenu?msgmenuid="+index+"&msgmenucontent="+area+"\">"+area+"</a>\\n";
|
|
|
|
-// index++;
|
|
|
|
-// }
|
|
|
|
-// return MessageUtil.initText(fromUserName, toUserName, content);
|
|
|
|
-// }
|
|
|
|
-//
|
|
|
|
-// QueryParams queryParamsArea = new QueryParams();
|
|
|
|
-// queryParams.setChoseColumName("area_name");
|
|
|
|
-// queryParams.setConditionColumName("city_name");
|
|
|
|
-// queryParams.setValue(text);
|
|
|
|
-// List<String> areas = schoolInfoMapper.queryNames(queryParamsArea);
|
|
|
|
-// //如果输入值是区名称,则选出所有区驾校名称
|
|
|
|
-// if (areas.contains(text)){
|
|
|
|
-// QueryParams queryParamsSchool = new QueryParams();
|
|
|
|
-// queryParams.setChoseColumName("area_name");
|
|
|
|
-// queryParams.setConditionColumName("city_name");
|
|
|
|
-// queryParams.setValue(text);
|
|
|
|
-// List<String> areas = schoolInfoMapper.queryNames(queryParamsArea);
|
|
|
|
-// String content = "请选择驾校所在区: \\n";
|
|
|
|
-// for (String area: areas){
|
|
|
|
-// content+=" "+"<a href=\"weixin://bizmsgmenu?msgmenuid="+index+"&msgmenucontent="+area+"\">"+area+"</a>\\n";
|
|
|
|
-// index++;
|
|
|
|
-// }
|
|
|
|
-// return MessageUtil.initText(fromUserName, toUserName, content);
|
|
|
|
-// }
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-// return null;
|
|
|
|
-// }
|
|
|
|
|
|
+ private String dealSchoolMsg(String bizmsgmenuid, String content, String fromUserName, String toUserName) throws Exception {
|
|
|
|
+ UserInfo userInfo = userInfoService.getOne(new QueryWrapper<UserInfo>().eq("openid", fromUserName));
|
|
|
|
+ // 1选择城市 2选择区 3选择学校
|
|
|
|
+ if ("1".equals(bizmsgmenuid)){
|
|
|
|
+ userInfo.setCityName(content);
|
|
|
|
+ userInfoService.updateById(userInfo);
|
|
|
|
+ QueryParams queryParamsArea = new QueryParams();
|
|
|
|
+ queryParamsArea.setChoseColumName("area_name");
|
|
|
|
+ queryParamsArea.setConditionColumName1("city_name");
|
|
|
|
+ queryParamsArea.setValue1(content);
|
|
|
|
+ List<String> areas = schoolInfoMapper.queryNames(queryParamsArea);
|
|
|
|
+ StringBuffer buffer = new StringBuffer();
|
|
|
|
+ buffer.append("请选择驾校所在区:").append("\n\n");
|
|
|
|
+ for (String area: areas){
|
|
|
|
+ buffer.append("<a href=\"weixin://bizmsgmenu?msgmenuid=1&msgmenucontent="+area+"\">"+area+"</a>").append("\n");
|
|
|
|
+ buffer.append("<a href=\"weixin://bizmsgmenu?msgmenuid=1&msgmenucontent="+area+"\">"+area+"</a>").append("\n\n");
|
|
|
|
+ return MessageUtil.initText(fromUserName, toUserName, buffer.toString());
|
|
|
|
+ }
|
|
|
|
+ }else if ("2".equals(bizmsgmenuid)){
|
|
|
|
+ userInfo.setAreaName(content);
|
|
|
|
+ userInfoService.updateById(userInfo);
|
|
|
|
+ QueryParams queryParamsArea = new QueryParams();
|
|
|
|
+ queryParamsArea.setChoseColumName("school_name");
|
|
|
|
+ queryParamsArea.setConditionColumName1("city_name");
|
|
|
|
+ queryParamsArea.setValue1(userInfo.getCityName());
|
|
|
|
+ queryParamsArea.setConditionColumName2("area_name");
|
|
|
|
+ queryParamsArea.setValue2(userInfo.getAreaName());
|
|
|
|
+ List<String> schools = schoolInfoMapper.queryNames(queryParamsArea);
|
|
|
|
+ StringBuffer buffer = new StringBuffer();
|
|
|
|
+ buffer.append("请选择驾校:").append("\n\n");
|
|
|
|
+ for (String school: schools){
|
|
|
|
+ buffer.append("<a href=\"weixin://bizmsgmenu?msgmenuid=1&msgmenucontent="+school+"\">"+school+"</a>").append("\n");
|
|
|
|
+ buffer.append("<a href=\"weixin://bizmsgmenu?msgmenuid=1&msgmenucontent="+school+"\">"+school+"</a>").append("\n\n");
|
|
|
|
+ return MessageUtil.initText(fromUserName, toUserName, buffer.toString());
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ //如果输出的是驾校,则返回二维码
|
|
|
|
+ else if ("3".equals(bizmsgmenuid)){
|
|
|
|
+ userInfo.setSchoolName(content);
|
|
|
|
+ userInfoService.updateById(userInfo);
|
|
|
|
+ String mediaId = wxMessageEvenService.gainTicketEvent(fromUserName, this.getGzhToken(), false, null);
|
|
|
|
+ return MessageUtil.initImage(fromUserName,toUserName,mediaId);
|
|
|
|
+ }
|
|
|
|
+ return null;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private String choseSchoolName(UserInfo userInfo,String fromUserName,String toUserName) throws Exception {
|
|
|
|
+ //城市未填写
|
|
|
|
+ if (userInfo.getCityName() == null){
|
|
|
|
+ QueryParams queryParams = new QueryParams();
|
|
|
|
+ queryParams.setChoseColumName("city_name");
|
|
|
|
+ List<String> cities = schoolInfoMapper.queryNames(queryParams);
|
|
|
|
+ StringBuffer buffer = new StringBuffer();
|
|
|
|
+ buffer.append("请选择驾校所在城市:").append("\n\n");
|
|
|
|
+ for (String city: cities){
|
|
|
|
+ buffer.append("<a href=\"weixin://bizmsgmenu?msgmenuid=1&msgmenucontent="+city+"\">"+city+"</a>").append("\n");
|
|
|
|
+ buffer.append("<a href=\"weixin://bizmsgmenu?msgmenuid=1&msgmenucontent="+city+"\">"+city+"</a>").append("\n\n");
|
|
|
|
+ return MessageUtil.initText(fromUserName, toUserName, buffer.toString());
|
|
|
|
+ }
|
|
|
|
+ return MessageUtil.initText(fromUserName, toUserName, buffer.toString());
|
|
|
|
+ }else if (userInfo.getAreaName() == null) {
|
|
|
|
+ QueryParams queryParamsArea = new QueryParams();
|
|
|
|
+ queryParamsArea.setChoseColumName("area_name");
|
|
|
|
+ queryParamsArea.setConditionColumName1("city_name");
|
|
|
|
+ queryParamsArea.setValue1(userInfo.getCityName());
|
|
|
|
+ List<String> areas = schoolInfoMapper.queryNames(queryParamsArea);
|
|
|
|
+ StringBuffer buffer = new StringBuffer();
|
|
|
|
+ buffer.append("请选择驾校所在区:").append("\n\n");
|
|
|
|
+ for (String area: areas){
|
|
|
|
+ buffer.append("<a href=\"weixin://bizmsgmenu?msgmenuid=1&msgmenucontent="+area+"\">"+area+"</a>").append("\n");
|
|
|
|
+ buffer.append("<a href=\"weixin://bizmsgmenu?msgmenuid=1&msgmenucontent="+area+"\">"+area+"</a>").append("\n\n");
|
|
|
|
+ return MessageUtil.initText(fromUserName, toUserName, buffer.toString());
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ else if (userInfo.getSchoolName() == null) {
|
|
|
|
+ QueryParams queryParamsArea = new QueryParams();
|
|
|
|
+ queryParamsArea.setChoseColumName("school_name");
|
|
|
|
+ queryParamsArea.setConditionColumName1("city_name");
|
|
|
|
+ queryParamsArea.setValue1(userInfo.getCityName());
|
|
|
|
+ queryParamsArea.setConditionColumName2("area_name");
|
|
|
|
+ queryParamsArea.setValue2(userInfo.getAreaName());
|
|
|
|
+ List<String> schools = schoolInfoMapper.queryNames(queryParamsArea);
|
|
|
|
+ StringBuffer buffer = new StringBuffer();
|
|
|
|
+ buffer.append("请选择驾校:").append("\n\n");
|
|
|
|
+ for (String school: schools){
|
|
|
|
+ buffer.append("<a href=\"weixin://bizmsgmenu?msgmenuid=1&msgmenucontent="+school+"\">"+school+"</a>").append("\n");
|
|
|
|
+ buffer.append("<a href=\"weixin://bizmsgmenu?msgmenuid=1&msgmenucontent="+school+"\">"+school+"</a>").append("\n\n");
|
|
|
|
+ return MessageUtil.initText(fromUserName, toUserName, buffer.toString());
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ return null;
|
|
|
|
+ }
|
|
|
|
|
|
|
|
|
|
@Data
|
|
@Data
|
|
public class QueryParams {
|
|
public class QueryParams {
|
|
String choseColumName;
|
|
String choseColumName;
|
|
- String conditionColumName;
|
|
|
|
- String value;
|
|
|
|
|
|
+ String conditionColumName1;
|
|
|
|
+ String value1;
|
|
|
|
+ String conditionColumName2;
|
|
|
|
+ String value2;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|