16 changed files with 184 additions and 164 deletions
@ -1,130 +0,0 @@
|
||||
package co.yixiang.modules.inform; |
||||
|
||||
import cn.hutool.core.util.StrUtil; |
||||
import cn.hutool.json.JSONUtil; |
||||
import cn.iocoder.yudao.framework.common.exception.YshopException; |
||||
import co.yixiang.constant.SystemConfigConstants; |
||||
import co.yixiang.modules.inform.domin.*; |
||||
import co.yixiang.modules.order.service.YxStoreOrderService; |
||||
import co.yixiang.modules.order.service.dto.YxStoreOrderDto; |
||||
import co.yixiang.modules.shop.service.YxSystemConfigService; |
||||
import com.alibaba.fastjson.JSONObject; |
||||
import lombok.SneakyThrows; |
||||
import org.apache.http.HttpStatus; |
||||
import org.apache.http.client.methods.CloseableHttpResponse; |
||||
import org.apache.http.client.methods.HttpPost; |
||||
import org.apache.http.entity.StringEntity; |
||||
import org.apache.http.impl.client.CloseableHttpClient; |
||||
import org.apache.http.impl.client.HttpClients; |
||||
import org.apache.http.util.EntityUtils; |
||||
import org.jsoup.nodes.Element; |
||||
import org.springframework.beans.factory.annotation.Autowired; |
||||
import org.springframework.stereotype.Component; |
||||
|
||||
import java.text.SimpleDateFormat; |
||||
import java.util.ArrayList; |
||||
import java.util.HashMap; |
||||
import java.util.Map; |
||||
|
||||
import org.jsoup.Jsoup; |
||||
import org.jsoup.nodes.Document; |
||||
|
||||
@Component |
||||
public class SendMsgService { |
||||
|
||||
@Autowired |
||||
private YxStoreOrderService yxStoreOrderService; |
||||
|
||||
@Autowired |
||||
private YxSystemConfigService systemConfigService; |
||||
|
||||
@SneakyThrows |
||||
public String inform(long orderId, int type) { |
||||
CloseableHttpClient httpClient = HttpClients.createDefault();//实例化对象
|
||||
// String webhook_url="https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=a2f0f8c9-e406-4f6b-86e4-d6ac9e4df88e";
|
||||
String webhook_url = systemConfigService.getData(SystemConfigConstants.ROBOT_URL); |
||||
if (StrUtil.isBlank(webhook_url)) { |
||||
throw new YshopException("未配置企业微信群机器人"); |
||||
} |
||||
HttpPost httpPost = new HttpPost(webhook_url); |
||||
httpPost.addHeader("Content-Type", "application/json; charset=utf-8"); |
||||
TemplateCard templateCard = this.creatTemplatecard(orderId, type); |
||||
Map<String, Object> param = new HashMap<>(); |
||||
param.put("msgtype", "template_card"); |
||||
param.put("template_card", JSONObject.parseObject(JSONUtil.toJsonStr(templateCard))); |
||||
String jsonParam = JSONObject.toJSONString(param); |
||||
|
||||
StringEntity stringEntity = new StringEntity(jsonParam, "utf-8"); |
||||
httpPost.setEntity(stringEntity); |
||||
CloseableHttpResponse response = httpClient.execute(httpPost); |
||||
// 发送成功接收返回值
|
||||
if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) { |
||||
String result = EntityUtils.toString(response.getEntity(), "utf-8"); |
||||
System.out.println("发送微信机器人消息成功 " + result); |
||||
return result; |
||||
} else { |
||||
System.out.println("发送微信机器人消息失败"); |
||||
} |
||||
// 关闭
|
||||
httpClient.close(); |
||||
response.close(); |
||||
return "发送微信机器人消息失败"; |
||||
} |
||||
|
||||
//创建订单消息
|
||||
public TemplateCard creatTemplatecard(long orderId, int type) { |
||||
YxStoreOrderDto yxStoreOrderDto = yxStoreOrderService.getOrderDetailByOrderId(orderId); |
||||
String mainTitle; |
||||
ArrayList<HorizontalContent> arrayList = new ArrayList<>(); |
||||
arrayList.add(new HorizontalContent().setKeyname("会员名称").setValue(yxStoreOrderDto.getRealName())); |
||||
arrayList.add(new HorizontalContent().setKeyname("会员手机号").setValue(yxStoreOrderDto.getUserPhone())); |
||||
if (type == 0) {//支付时候
|
||||
mainTitle = "有新的在线订单来啦"; |
||||
arrayList.add(new HorizontalContent().setKeyname("下单地址").setValue(yxStoreOrderDto.getUserAddress())); |
||||
arrayList.add(new HorizontalContent().setKeyname("下单时间").setValue(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(yxStoreOrderDto.getCreateTime()))); |
||||
} else { |
||||
mainTitle = "有新的退款申请"; |
||||
//获取Document模型
|
||||
Document docDesc = Jsoup.parse(yxStoreOrderDto.getStatusName()); |
||||
//获取span节点
|
||||
ArrayList<Element> list = docDesc.getElementsByTag("span"); |
||||
//获取文本内容,并且截取只需要标题后面的
|
||||
arrayList.add(new HorizontalContent().setKeyname("退款原因").setValue(list.get(0).text().substring(5))); |
||||
arrayList.add(new HorizontalContent().setKeyname("备注说明").setValue(list.get(1).text().substring(5).length() == 0 ? list.get(1).text().substring(5) : "本次退款无备注")); |
||||
arrayList.add(new HorizontalContent().setKeyname("申请时间").setValue(list.get(2).text().substring(5))); |
||||
} |
||||
|
||||
// templateCard.setHorizontal_content_list(arrayList);
|
||||
// templateCard.setCard_type("text_notice");
|
||||
// templateCard.setSource(new Souce().setDesc("眼界甄选").setIcon_url("https://wework.qpic.cn/wwpic/252813_jOfDHtcISzuodLa_1629280209/0").setDesc_color(0));
|
||||
// templateCard.setMain_title(new MainTitle().setTitle(mainTitle).setDesc("订单号:"+orderId));
|
||||
// templateCard.setEmphasis_content(new EmphasisContent().setTitle(yxStoreOrderDto.getPayPrice().toString()).setDesc("订单总金额"));
|
||||
//// templateCard.setQuote_area(new QuoteArea().setType(0).setUrl("").setAppid("APPID").setTitle("订单详情").setQuote_text("眼镜*1 0.01"));
|
||||
// templateCard.setSub_title_text("订单类型:"+yxStoreOrderDto.getPinkName());//订单类型
|
||||
// templateCard.setJump_list(arrayList1);
|
||||
// templateCard.setCard_action(new CardAction().setType(1).setUrl(cardActionUrl));
|
||||
ArrayList<Jump> arrayList1 = new ArrayList<>(); |
||||
//机器人消息跳转地址
|
||||
String cardActionUrl = systemConfigService.getData(SystemConfigConstants.CARD_ACTION_URL); |
||||
if (StrUtil.isBlank(cardActionUrl)) { |
||||
// throw new YshopException("未配置企业微信群机器人跳转地址");
|
||||
cardActionUrl = "未配置跳转网址"; |
||||
} |
||||
arrayList1.add(new Jump().setType(1).setUrl(cardActionUrl).setTitle("前去处理订单")); |
||||
|
||||
return TemplateCard.builder() |
||||
.horizontalContentList(arrayList).card_type("text_notice") |
||||
.source(Souce.builder() |
||||
.desc("眼界甄选") |
||||
.icon_url("https://wework.qpic.cn/wwpic/252813_jOfDHtcISzuodLa_1629280209/0") |
||||
.desc_color(0) |
||||
.build()) |
||||
.main_title(MainTitle.builder().title(mainTitle).desc("订单号:" + orderId).build()) |
||||
.emphasis_content(EmphasisContent.builder().title(yxStoreOrderDto.getPayPrice().toString()).desc("订单总金额").build()) |
||||
.sub_title_text("订单类型:" + yxStoreOrderDto.getPinkName()) |
||||
.jump_list(arrayList1) |
||||
.card_action(CardAction.builder().type(1).url(cardActionUrl).build()) |
||||
.build(); |
||||
} |
||||
|
||||
} |
@ -1,4 +1,4 @@
|
||||
package co.yixiang.modules.inform.domin; |
||||
package co.yixiang.utils.WxTemplate.dto; |
||||
|
||||
import lombok.AllArgsConstructor; |
||||
import lombok.Builder; |
@ -1,4 +1,4 @@
|
||||
package co.yixiang.modules.inform.domin; |
||||
package co.yixiang.utils.WxTemplate.dto; |
||||
|
||||
import lombok.AllArgsConstructor; |
||||
import lombok.Builder; |
@ -1,5 +1,6 @@
|
||||
package co.yixiang.modules.inform.domin; |
||||
package co.yixiang.utils.WxTemplate.dto; |
||||
|
||||
import lombok.Builder; |
||||
import lombok.Data; |
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
package co.yixiang.modules.inform.domin; |
||||
package co.yixiang.utils.WxTemplate.dto; |
||||
|
||||
import lombok.AllArgsConstructor; |
||||
import lombok.Builder; |
@ -1,4 +1,4 @@
|
||||
package co.yixiang.modules.inform.domin; |
||||
package co.yixiang.utils.WxTemplate.dto; |
||||
|
||||
import lombok.Data; |
||||
|
@ -1,6 +1,5 @@
|
||||
package co.yixiang.modules.inform.domin; |
||||
package co.yixiang.utils.WxTemplate.dto; |
||||
|
||||
import io.swagger.models.auth.In; |
||||
import lombok.AllArgsConstructor; |
||||
import lombok.Builder; |
||||
import lombok.Data; |
@ -0,0 +1,110 @@
|
||||
package co.yixiang.utils; |
||||
|
||||
import cn.hutool.core.util.StrUtil; |
||||
import co.yixiang.constant.SystemConfigConstants; |
||||
import co.yixiang.modules.order.service.YxStoreOrderService; |
||||
import co.yixiang.modules.order.service.dto.YxStoreOrderDto; |
||||
import co.yixiang.modules.shop.service.YxSystemConfigService; |
||||
import co.yixiang.utils.WxTemplate.TemplateCard; |
||||
import co.yixiang.utils.WxTemplate.dto.*; |
||||
import com.alibaba.fastjson.JSON; |
||||
import lombok.extern.slf4j.Slf4j; |
||||
import org.apache.http.HttpStatus; |
||||
import org.apache.http.client.methods.CloseableHttpResponse; |
||||
import org.apache.http.client.methods.HttpPost; |
||||
import org.apache.http.entity.StringEntity; |
||||
import org.apache.http.impl.client.CloseableHttpClient; |
||||
import org.apache.http.impl.client.HttpClients; |
||||
import org.apache.http.util.EntityUtils; |
||||
import org.springframework.beans.factory.annotation.Autowired; |
||||
import org.springframework.stereotype.Component; |
||||
|
||||
import java.io.IOException; |
||||
import java.text.SimpleDateFormat; |
||||
import java.util.ArrayList; |
||||
import java.util.HashMap; |
||||
import java.util.Map; |
||||
|
||||
@Component |
||||
@Slf4j |
||||
public class WxbotMsgUtil { |
||||
|
||||
@Autowired |
||||
private YxStoreOrderService yxStoreOrderService; |
||||
|
||||
@Autowired |
||||
private YxSystemConfigService systemConfigService; |
||||
public void inform(long orderId, int type) throws IOException { |
||||
CloseableHttpClient httpClient = HttpClients.createDefault();//实例化对象
|
||||
// String webhook_url = "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=a08fa2aa-e299-4946-8cba-c99bacac6c33";
|
||||
String webhook_url=systemConfigService.getData(SystemConfigConstants.ROBOT_URL); |
||||
HttpPost httpPost = new HttpPost(webhook_url); |
||||
httpPost.addHeader("Content-Type", "application/json; charset=utf-8"); |
||||
TemplateCard templateCard = this.creatTemplatecard(orderId, type); |
||||
Map<String, Object> param = new HashMap<>(); |
||||
param.put("msgtype", "template_card"); |
||||
param.put("template_card", templateCard); |
||||
|
||||
String jsonParam = JSON.toJSONString(param); |
||||
|
||||
StringEntity stringEntity = new StringEntity(jsonParam, "utf-8"); |
||||
|
||||
httpPost.setEntity(stringEntity); |
||||
CloseableHttpResponse response = httpClient.execute(httpPost); |
||||
|
||||
if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) { |
||||
String result = EntityUtils.toString(response.getEntity(), "utf-8"); |
||||
log.info("result:{}", result); |
||||
} else { |
||||
log.error("发送微信机器人消息失败"); |
||||
} |
||||
// 关闭
|
||||
httpClient.close(); |
||||
response.close(); |
||||
} |
||||
|
||||
//创建订单消息
|
||||
private TemplateCard creatTemplatecard(long orderId, int type) { |
||||
YxStoreOrderDto yxStoreOrderDto = yxStoreOrderService.getOrderDetailByOrderId(orderId); |
||||
String mainTitle; |
||||
ArrayList<HorizontalContent> arrayList = new ArrayList<>(); |
||||
|
||||
arrayList.add(new HorizontalContent("会员名称", yxStoreOrderDto.getRealName())); |
||||
arrayList.add(new HorizontalContent("会员手机号", yxStoreOrderDto.getUserPhone())); |
||||
if (type == 0) {//支付时候
|
||||
mainTitle = StrUtil.format("您有{}条新订单需要处理", 1); |
||||
arrayList.add(new HorizontalContent("下单地址", yxStoreOrderDto.getUserAddress())); |
||||
arrayList.add(new HorizontalContent("下单时间", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(yxStoreOrderDto.getCreateTime()))); |
||||
} else { |
||||
mainTitle = StrUtil.format("您有{}条退款需要处理", 1); |
||||
//获取文本内容,并且截取只需要标题后面的
|
||||
arrayList.add(new HorizontalContent("退款原因", yxStoreOrderDto.getRefundReasonWap())); |
||||
arrayList.add(new HorizontalContent("备注说明", StringUtils.isNotBlank(yxStoreOrderDto.getRefundReasonWapExplain())?yxStoreOrderDto.getRefundReasonWapExplain():"本次退款无备注" )); |
||||
arrayList.add(new HorizontalContent("申请时间", yxStoreOrderDto.getRefundTime())); |
||||
} |
||||
|
||||
ArrayList<Jump> arrayList1 = new ArrayList<>(); |
||||
//机器人消息跳转地址
|
||||
String cardActionUrl = systemConfigService.getData(SystemConfigConstants.CARD_ACTION_URL); |
||||
if (StrUtil.isBlank(cardActionUrl)) { |
||||
// throw new YshopException("未配置企业微信群机器人跳转地址");
|
||||
cardActionUrl = "未配置跳转网址"; |
||||
} |
||||
arrayList1.add(new Jump().setType(1).setUrl(cardActionUrl).setTitle("前去处理订单")); |
||||
return TemplateCard.builder() |
||||
.horizontalContentList(arrayList) |
||||
.cardType("text_notice") |
||||
.source(Souce.builder() |
||||
.desc("眼界甄选") |
||||
.icon_url("https://wework.qpic.cn/wwpic/252813_jOfDHtcISzuodLa_1629280209/0") |
||||
.desc_color(0) |
||||
.build()) |
||||
.mainTitle(MainTitle.builder().title(mainTitle).desc("订单号:" + orderId).build()) |
||||
.emphasisContent(EmphasisContent.builder().title(yxStoreOrderDto.getPayPrice().toString()).desc("订单总金额").build()) |
||||
.subTitleText("订单类型:" + yxStoreOrderDto.getPinkName()) |
||||
.jumpList(arrayList1) |
||||
.cardAction(CardAction.builder().type(1).url(cardActionUrl).build()) |
||||
.build(); |
||||
} |
||||
|
||||
} |
Loading…
Reference in new issue