From 9bc5869abdde52269eb6bb0691fc0c6e7d370d50 Mon Sep 17 00:00:00 2001 From: sj <1304317391@qq.com> Date: Sat, 29 Oct 2022 18:39:27 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E8=AE=A2=E5=8D=95=E6=94=AF?= =?UTF-8?q?=E4=BB=98=E5=8F=8A=E9=80=80=E6=AC=BE=E6=B6=88=E6=81=AF=E9=80=9A?= =?UTF-8?q?=E7=9F=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/resources/application-local.yaml | 2 +- .../order/rest/AppStoreOrderController.java | 2 - .../modules/inform/SendMsgService.java | 130 ------------------ .../modules/mp/listener/TemplateListener.java | 16 +++ .../order/service/dto/YxStoreOrderDto.java | 3 + .../service/impl/YxStoreOrderServiceImpl.java | 15 +- .../impl/StoreAfterSalesServiceImpl.java | 21 ++- .../WxTemplate}/TemplateCard.java | 28 ++-- .../WxTemplate/dto}/CardAction.java | 2 +- .../WxTemplate/dto}/EmphasisContent.java | 2 +- .../WxTemplate/dto}/HorizontalContent.java | 7 +- .../domin => utils/WxTemplate/dto}/Jump.java | 3 +- .../WxTemplate/dto}/MainTitle.java | 2 +- .../WxTemplate/dto}/QuoteArea.java | 2 +- .../domin => utils/WxTemplate/dto}/Souce.java | 3 +- .../java/co/yixiang/utils/WxbotMsgUtil.java | 110 +++++++++++++++ 16 files changed, 184 insertions(+), 164 deletions(-) delete mode 100644 zsw-bxg/src/main/java/co/yixiang/modules/inform/SendMsgService.java rename zsw-bxg/src/main/java/co/yixiang/{modules/inform/domin => utils/WxTemplate}/TemplateCard.java (67%) rename zsw-bxg/src/main/java/co/yixiang/{modules/inform/domin => utils/WxTemplate/dto}/CardAction.java (95%) rename zsw-bxg/src/main/java/co/yixiang/{modules/inform/domin => utils/WxTemplate/dto}/EmphasisContent.java (88%) rename zsw-bxg/src/main/java/co/yixiang/{modules/inform/domin => utils/WxTemplate/dto}/HorizontalContent.java (69%) rename zsw-bxg/src/main/java/co/yixiang/{modules/inform/domin => utils/WxTemplate/dto}/Jump.java (88%) rename zsw-bxg/src/main/java/co/yixiang/{modules/inform/domin => utils/WxTemplate/dto}/MainTitle.java (89%) rename zsw-bxg/src/main/java/co/yixiang/{modules/inform/domin => utils/WxTemplate/dto}/QuoteArea.java (91%) rename zsw-bxg/src/main/java/co/yixiang/{modules/inform/domin => utils/WxTemplate/dto}/Souce.java (85%) create mode 100644 zsw-bxg/src/main/java/co/yixiang/utils/WxbotMsgUtil.java diff --git a/yudao-server/src/main/resources/application-local.yaml b/yudao-server/src/main/resources/application-local.yaml index 8c1f119d..2dcebe34 100644 --- a/yudao-server/src/main/resources/application-local.yaml +++ b/yudao-server/src/main/resources/application-local.yaml @@ -244,7 +244,7 @@ dubbo: bxg: shop: # API_URL: http://192.168.10.113:48080/bxgApp - API_URL: https://912e-27-19-79-51.jp.ngrok.io + API_URL: https://d305-27-19-79-51.jp.ngrok.io SITE_URL: http://192.168.10.113:48080/bxgApp UNI_SITE_URL: http://192.168.10.113:48080/bxgApp ADMIN_API_URL: http://192.168.10.113:48080/bxg diff --git a/zsw-bxg/src/main/java/co/yixiang/app/modules/order/rest/AppStoreOrderController.java b/zsw-bxg/src/main/java/co/yixiang/app/modules/order/rest/AppStoreOrderController.java index e0465f81..109a5cb8 100644 --- a/zsw-bxg/src/main/java/co/yixiang/app/modules/order/rest/AppStoreOrderController.java +++ b/zsw-bxg/src/main/java/co/yixiang/app/modules/order/rest/AppStoreOrderController.java @@ -22,7 +22,6 @@ import co.yixiang.app.modules.services.OrderSupplyService; import cn.iocoder.yudao.framework.security.core.annotations.AuthCheck; import co.yixiang.enums.*; import co.yixiang.logging.aop.log.AppLog; -import co.yixiang.modules.inform.SendMsgService; import co.yixiang.modules.mp.domain.YxWechatTemplate; import co.yixiang.modules.mp.service.WeixinPayService; import co.yixiang.modules.mp.service.YxWechatTemplateService; @@ -84,7 +83,6 @@ public class AppStoreOrderController { private final YxStoreOrderCartInfoService storeOrderCartInfoService; private final WeixinPayService weixinPayService; - private final SendMsgService sendMsgService; /** * 订单确认 diff --git a/zsw-bxg/src/main/java/co/yixiang/modules/inform/SendMsgService.java b/zsw-bxg/src/main/java/co/yixiang/modules/inform/SendMsgService.java deleted file mode 100644 index f99462c1..00000000 --- a/zsw-bxg/src/main/java/co/yixiang/modules/inform/SendMsgService.java +++ /dev/null @@ -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 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 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 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 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(); - } - -} diff --git a/zsw-bxg/src/main/java/co/yixiang/modules/mp/listener/TemplateListener.java b/zsw-bxg/src/main/java/co/yixiang/modules/mp/listener/TemplateListener.java index 0d4d2899..dadede1e 100644 --- a/zsw-bxg/src/main/java/co/yixiang/modules/mp/listener/TemplateListener.java +++ b/zsw-bxg/src/main/java/co/yixiang/modules/mp/listener/TemplateListener.java @@ -29,6 +29,7 @@ import co.yixiang.modules.user.domain.YxUser; import co.yixiang.modules.user.service.YxUserBillService; import co.yixiang.modules.user.service.YxUserService; import co.yixiang.modules.user.service.dto.WechatUserDto; +import co.yixiang.utils.WxbotMsgUtil; import com.github.binarywang.wxpay.exception.WxPayException; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; @@ -37,6 +38,7 @@ import org.springframework.context.event.SmartApplicationListener; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Component; +import java.io.IOException; import java.math.BigDecimal; import java.util.Date; import java.util.List; @@ -67,6 +69,8 @@ public class TemplateListener implements SmartApplicationListener { private YxStoreCustomerService yxStoreCustomerService; //@Autowired //private MqProducer mqProducer; + @Autowired + private WxbotMsgUtil wxbotMsgUtil; @Override public boolean supportsEventType(Class aClass) { @@ -83,10 +87,17 @@ public class TemplateListener implements SmartApplicationListener { log.info("模板事件类型:{}", templateBean.getTemplateType()); switch (TemplateListenEnum.toType(templateBean.getTemplateType())) { case TYPE_1: + try { + wxbotMsgUtil.inform(Long.parseLong(templateBean.getOrderId()),0); + } catch (IOException e) { + log.error("机器人发送失败,{}",e); +// throw new RuntimeException(e); + } weixinTemplateService.paySuccessNotice(templateBean.getOrderId() , templateBean.getPrice(), templateBean.getUid()); weiXinSubscribeService.paySuccessNotice(templateBean.getOrderId() , templateBean.getPrice(), templateBean.getUid()); + /**************给客服发送消息**************/ try { List yxStoreCustomers = yxStoreCustomerService.lambdaQuery().eq(YxStoreCustomer::getIsEnable, ShopConstants.ZSW_ONE_NUM).list(); @@ -164,6 +175,11 @@ public class TemplateListener implements SmartApplicationListener { case TYPE_9: weixinTemplateService.refundSuccessNotice("您的订单退款申请已提交,等待审核。",templateBean.getOrderId(), templateBean.getPrice(), templateBean.getUid(), templateBean.getTime()); + try { + wxbotMsgUtil.inform(Long.parseLong(templateBean.getOrderId()),1); + } catch (IOException e) { + throw new RuntimeException(e); + } /**************给客服发送消息**************/ try { List yxStoreCustomers = yxStoreCustomerService.lambdaQuery().eq(YxStoreCustomer::getIsEnable, ShopConstants.ZSW_ONE_NUM).list(); diff --git a/zsw-bxg/src/main/java/co/yixiang/modules/order/service/dto/YxStoreOrderDto.java b/zsw-bxg/src/main/java/co/yixiang/modules/order/service/dto/YxStoreOrderDto.java index 6056471b..fc935b9f 100644 --- a/zsw-bxg/src/main/java/co/yixiang/modules/order/service/dto/YxStoreOrderDto.java +++ b/zsw-bxg/src/main/java/co/yixiang/modules/order/service/dto/YxStoreOrderDto.java @@ -112,6 +112,9 @@ public class YxStoreOrderDto implements Serializable { // 退款用户说明 private String refundReasonWapExplain; + // 申请退款时间 + private String refundTime; + /** 退款联系人 */ private String refundName; diff --git a/zsw-bxg/src/main/java/co/yixiang/modules/order/service/impl/YxStoreOrderServiceImpl.java b/zsw-bxg/src/main/java/co/yixiang/modules/order/service/impl/YxStoreOrderServiceImpl.java index 08456053..ff45e36b 100644 --- a/zsw-bxg/src/main/java/co/yixiang/modules/order/service/impl/YxStoreOrderServiceImpl.java +++ b/zsw-bxg/src/main/java/co/yixiang/modules/order/service/impl/YxStoreOrderServiceImpl.java @@ -40,7 +40,6 @@ import co.yixiang.modules.cart.domain.YxStoreCart; import co.yixiang.modules.cart.service.YxStoreCartService; import co.yixiang.modules.cart.service.mapper.StoreCartMapper; import co.yixiang.modules.cart.vo.YxStoreCartQueryVo; -import co.yixiang.modules.inform.SendMsgService; import co.yixiang.modules.order.domain.YxExpress; import co.yixiang.modules.order.domain.YxStoreOrder; import co.yixiang.modules.order.domain.YxStoreOrderCartInfo; @@ -191,8 +190,7 @@ public class YxStoreOrderServiceImpl extends BaseServiceImpl退款原因:" + yxStoreOrder.getRefundReasonWap() + "" + "备注说明:" + yxStoreOrder.getRefundReasonWapExplain() + "" + @@ -2438,7 +2435,9 @@ public class YxStoreOrderServiceImpl extends BaseServiceImpl horizontalContentList; /** { @@ -49,11 +56,14 @@ public class TemplateCard { "pagepath":"PAGEPATH", "title":"跳转小程序" }*/ - private ArrayList jump_list; + @JSONField(name = "jump_list") + private ArrayList jumpList; /** 0 = 未购买 1 = 已购买 "type":1, "url":"https://work.weixin.qq.com/?from=openApi", "appid":"APPID", "pagepath":"PAGEPATH"*/ - private CardAction card_action; + @JSONField(name = "card_action") + private CardAction cardAction; + } diff --git a/zsw-bxg/src/main/java/co/yixiang/modules/inform/domin/CardAction.java b/zsw-bxg/src/main/java/co/yixiang/utils/WxTemplate/dto/CardAction.java similarity index 95% rename from zsw-bxg/src/main/java/co/yixiang/modules/inform/domin/CardAction.java rename to zsw-bxg/src/main/java/co/yixiang/utils/WxTemplate/dto/CardAction.java index a1549683..3bdf5421 100644 --- a/zsw-bxg/src/main/java/co/yixiang/modules/inform/domin/CardAction.java +++ b/zsw-bxg/src/main/java/co/yixiang/utils/WxTemplate/dto/CardAction.java @@ -1,4 +1,4 @@ -package co.yixiang.modules.inform.domin; +package co.yixiang.utils.WxTemplate.dto; import lombok.AllArgsConstructor; import lombok.Builder; diff --git a/zsw-bxg/src/main/java/co/yixiang/modules/inform/domin/EmphasisContent.java b/zsw-bxg/src/main/java/co/yixiang/utils/WxTemplate/dto/EmphasisContent.java similarity index 88% rename from zsw-bxg/src/main/java/co/yixiang/modules/inform/domin/EmphasisContent.java rename to zsw-bxg/src/main/java/co/yixiang/utils/WxTemplate/dto/EmphasisContent.java index 315468a1..e4cb7f41 100644 --- a/zsw-bxg/src/main/java/co/yixiang/modules/inform/domin/EmphasisContent.java +++ b/zsw-bxg/src/main/java/co/yixiang/utils/WxTemplate/dto/EmphasisContent.java @@ -1,4 +1,4 @@ -package co.yixiang.modules.inform.domin; +package co.yixiang.utils.WxTemplate.dto; import lombok.AllArgsConstructor; import lombok.Builder; diff --git a/zsw-bxg/src/main/java/co/yixiang/modules/inform/domin/HorizontalContent.java b/zsw-bxg/src/main/java/co/yixiang/utils/WxTemplate/dto/HorizontalContent.java similarity index 69% rename from zsw-bxg/src/main/java/co/yixiang/modules/inform/domin/HorizontalContent.java rename to zsw-bxg/src/main/java/co/yixiang/utils/WxTemplate/dto/HorizontalContent.java index 897c059b..da26409e 100644 --- a/zsw-bxg/src/main/java/co/yixiang/modules/inform/domin/HorizontalContent.java +++ b/zsw-bxg/src/main/java/co/yixiang/utils/WxTemplate/dto/HorizontalContent.java @@ -1,4 +1,4 @@ -package co.yixiang.modules.inform.domin; +package co.yixiang.utils.WxTemplate.dto; import lombok.Data; @@ -14,5 +14,8 @@ public class HorizontalContent { private String url; private String media_id; - + public HorizontalContent(String keyname, String value) { + this.keyname = keyname; + this.value = value; + } } diff --git a/zsw-bxg/src/main/java/co/yixiang/modules/inform/domin/Jump.java b/zsw-bxg/src/main/java/co/yixiang/utils/WxTemplate/dto/Jump.java similarity index 88% rename from zsw-bxg/src/main/java/co/yixiang/modules/inform/domin/Jump.java rename to zsw-bxg/src/main/java/co/yixiang/utils/WxTemplate/dto/Jump.java index 98c658e0..4da1f3b3 100644 --- a/zsw-bxg/src/main/java/co/yixiang/modules/inform/domin/Jump.java +++ b/zsw-bxg/src/main/java/co/yixiang/utils/WxTemplate/dto/Jump.java @@ -1,5 +1,6 @@ -package co.yixiang.modules.inform.domin; +package co.yixiang.utils.WxTemplate.dto; +import lombok.Builder; import lombok.Data; diff --git a/zsw-bxg/src/main/java/co/yixiang/modules/inform/domin/MainTitle.java b/zsw-bxg/src/main/java/co/yixiang/utils/WxTemplate/dto/MainTitle.java similarity index 89% rename from zsw-bxg/src/main/java/co/yixiang/modules/inform/domin/MainTitle.java rename to zsw-bxg/src/main/java/co/yixiang/utils/WxTemplate/dto/MainTitle.java index c1ec3b3b..bac8a039 100644 --- a/zsw-bxg/src/main/java/co/yixiang/modules/inform/domin/MainTitle.java +++ b/zsw-bxg/src/main/java/co/yixiang/utils/WxTemplate/dto/MainTitle.java @@ -1,4 +1,4 @@ -package co.yixiang.modules.inform.domin; +package co.yixiang.utils.WxTemplate.dto; import lombok.AllArgsConstructor; import lombok.Builder; diff --git a/zsw-bxg/src/main/java/co/yixiang/modules/inform/domin/QuoteArea.java b/zsw-bxg/src/main/java/co/yixiang/utils/WxTemplate/dto/QuoteArea.java similarity index 91% rename from zsw-bxg/src/main/java/co/yixiang/modules/inform/domin/QuoteArea.java rename to zsw-bxg/src/main/java/co/yixiang/utils/WxTemplate/dto/QuoteArea.java index 2f06b6c9..557e1135 100644 --- a/zsw-bxg/src/main/java/co/yixiang/modules/inform/domin/QuoteArea.java +++ b/zsw-bxg/src/main/java/co/yixiang/utils/WxTemplate/dto/QuoteArea.java @@ -1,4 +1,4 @@ -package co.yixiang.modules.inform.domin; +package co.yixiang.utils.WxTemplate.dto; import lombok.Data; diff --git a/zsw-bxg/src/main/java/co/yixiang/modules/inform/domin/Souce.java b/zsw-bxg/src/main/java/co/yixiang/utils/WxTemplate/dto/Souce.java similarity index 85% rename from zsw-bxg/src/main/java/co/yixiang/modules/inform/domin/Souce.java rename to zsw-bxg/src/main/java/co/yixiang/utils/WxTemplate/dto/Souce.java index 248b68c2..09fc2024 100644 --- a/zsw-bxg/src/main/java/co/yixiang/modules/inform/domin/Souce.java +++ b/zsw-bxg/src/main/java/co/yixiang/utils/WxTemplate/dto/Souce.java @@ -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; diff --git a/zsw-bxg/src/main/java/co/yixiang/utils/WxbotMsgUtil.java b/zsw-bxg/src/main/java/co/yixiang/utils/WxbotMsgUtil.java new file mode 100644 index 00000000..f9d7f5d6 --- /dev/null +++ b/zsw-bxg/src/main/java/co/yixiang/utils/WxbotMsgUtil.java @@ -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 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 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 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(); + } + +}