8 Commits

7 changed files with 201 additions and 2 deletions
Split View
  1. 6
      dating-agency-mall-server/pom.xml
  2. 69
      dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/dingtalk/DingTalkWarningEventHandler.java
  3. 1
      dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/operationlog/OperationLogEventHandler.java
  4. 94
      dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/utils/DingTalkWarningUtil.java
  5. 7
      dating-agency-mall-server/src/main/java/com/qniao/dam/query/externalorder/ExternalOrderRelQueryService.java
  6. 23
      dating-agency-mall-server/src/main/java/com/qniao/dam/query/externalorder/impl/ExternalOrderRelQueryServiceImpl.java
  7. 3
      dating-agency-mall-server/src/main/resources/mapper/right/WalletAccountAssociateOrderRecordDao.xml

6
dating-agency-mall-server/pom.xml

@ -101,6 +101,12 @@
<artifactId>dating-agency-service-sdk</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
<!-- 本地钉钉SDK -->
<dependency>
<groupId>taobao.sdk.java</groupId>
<artifactId>auto_1479188381469-20191226</artifactId>
<version>1.0.0</version>
</dependency>
</dependencies>
<build>

69
dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/dingtalk/DingTalkWarningEventHandler.java

@ -0,0 +1,69 @@
package com.qniao.dam.application.handler.dingtalk;
import com.google.common.eventbus.Subscribe;
import com.qniao.dam.domain.aggregate.externalorder.entity.ExternalOrderRel;
import com.qniao.dam.domain.aggregate.order.entity.Order;
import com.qniao.dam.domain.aggregate.order.entity.OrderItem;
import com.qniao.dam.domain.aggregate.order.repository.OrderRepository;
import com.qniao.dam.domian.aggregate.order.event.OrderCompletedEvent;
import com.qniao.dam.infrastructure.persistent.dao.domain.SiteActivityDao;
import com.qniao.dam.infrastructure.utils.DingTalkWarningUtil;
import com.qniao.dam.query.externalorder.ExternalOrderRelQueryService;
import com.qniao.das.domian.aggregate.siteactivity.SiteActivity;
import com.qniao.domain.BaseApplicationService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.util.HashMap;
import java.util.Objects;
import java.util.stream.Collectors;
@Component
@Slf4j
public class DingTalkWarningEventHandler extends BaseApplicationService {
@Value("${payment-order-paid-dingTalk-token}")
private String paymentOrderPaidToken;
@Resource
private DingTalkWarningUtil dingTalkWarningUtil;
@Resource
private OrderRepository orderRepository;
@Resource
private ExternalOrderRelQueryService externalOrderRelQueryService;
@Resource
private SiteActivityDao siteActivityDao;
/**
* 订单已完成事件
*/
@Subscribe
public void handle(OrderCompletedEvent event) {
try {
Order order = orderRepository.load(event.getId());
StringBuilder builder = new StringBuilder();
builder.append("订单已支付 <br>");
builder.append("订单号:" + order.getOrderCode() + "<br>");
builder.append("客户类型:" + order.getOrderBelonging().getDesc() + "<br>");
builder.append("客户名称:" + order.getOrderBelongName() + "<br>");
builder.append("订单金额:" + order.getSettlementAmount() + "<br>");
builder.append("产品名称:" + order.getOrderItemList().stream().map(OrderItem::getProductTitle).collect(Collectors.joining("、")) + "<br>");
ExternalOrderRel externalOrderRel = externalOrderRelQueryService.queryByOrderId(order.getId());
if (Objects.nonNull(externalOrderRel)) {
SiteActivity siteActivity = siteActivityDao.selectById(externalOrderRel.getExternalId());
if (Objects.nonNull(siteActivity)) {
builder.append("关联活动:" + siteActivity.getName());
}
}
HashMap<String, String> body = new HashMap<>();
body.put("Msgtype", "markdown");
body.put("toastType", "提醒");
body.put("content", builder.toString());
body.put("contextSize", "2000");
dingTalkWarningUtil.send(paymentOrderPaidToken, body);
} catch (Exception e) {
log.error("订单已完成事件处理异常:", e);
}
}
}

1
dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/operationlog/OperationLogEventHandler.java

@ -8,7 +8,6 @@ import com.qniao.dam.domian.aggregate.order.event.OrderCompletedEvent;
import com.qniao.dam.infrastructure.persistent.dao.domain.OrderDao;
import com.qniao.dam.infrastructure.persistent.dao.domain.UserDao;
import com.qniao.dam.query.account.AccountQueryService;
import com.qniao.das.domian.aggregate.certificate.constant.CertificationAuditStatusEnum;
import com.qniao.dau.domain.aggregate.account.entity.Account;
import com.qniao.dau.domain.aggregate.user.entity.User;
import com.qniao.dau.domian.aggregate.account.constant.AccountTypeEnum;

94
dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/utils/DingTalkWarningUtil.java

@ -0,0 +1,94 @@
package com.qniao.dam.infrastructure.utils;
import cn.hutool.http.HttpUtil;
import com.alibaba.fastjson.JSONObject;
import com.dingtalk.api.DefaultDingTalkClient;
import com.dingtalk.api.DingTalkClient;
import com.dingtalk.api.request.OapiRobotSendRequest;
import com.taobao.api.ApiException;
import com.taobao.api.TaobaoResponse;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils;
import org.springframework.stereotype.Component;
import java.util.Map;
@Component
@Slf4j
public class DingTalkWarningUtil {
private static Integer contextSize = 600;
private final static String dingTalkUrl = "https://oapi.dingtalk.com/robot/send?access_token=";
/**
* 发送钉钉报错信息
*
* @param data 数据
* @return
*/
public static boolean send(String accessToken, Map<String, String> data) {
OapiRobotSendRequest request = new OapiRobotSendRequest();
if (data.containsKey("Msgtype")) {
request.setMsgtype(data.get("Msgtype"));
} else {
request.setMsgtype("text");
}
OapiRobotSendRequest.Text text = new OapiRobotSendRequest.Text();
String content = "";
if (data.containsKey("time")) {
content = content + data.get("time");
}
if (data.containsKey("traceId")) {
content = content + "[" + data.get("traceId") + "]";
}
if (data.containsKey("requestUri")) {
content = content + "[" + data.get("requestUri") + "]";
}
if (data.containsKey("content")) {
content = content + data.get("content");
}
Integer csize = contextSize;
if (data.containsKey("contextSize")) {
csize = Integer.parseInt(data.get("contextSize"));
}
if (content.length() > csize) {
content = content.substring(0, csize);
}
log.info(content);
if (data.containsKey("Msgtype") && data.get("Msgtype").equals("markdown")) {
OapiRobotSendRequest.Markdown markdown = new OapiRobotSendRequest.Markdown();
markdown.setTitle(data.get("toastType"));
if (data.containsKey("RemindUser")) {
content = "@" + data.get("RemindUser") + " <br>" + content;
}
markdown.setText(content);
request.setMarkdown(markdown);
} else {
if (data.containsKey("toastType")) {
content = data.get("toastType") + content;
}
text.setContent(content);
request.setText(text);
}
try {
TaobaoResponse response = getTalkClient(accessToken).execute(request);
if (response.getErrorCode() != null && !response.getErrorCode().equals("0")) {
log.error("DingTalk接口异常", response);
return false;
}
} catch (ApiException e) {
log.error("DingTalk接口异常", e);
return false;
}
return true;
}
private static DingTalkClient getTalkClient(String accessToken) {
return StringUtils.isNotBlank(accessToken) ? new DefaultDingTalkClient(dingTalkUrl + accessToken) : null;
}
}

7
dating-agency-mall-server/src/main/java/com/qniao/dam/query/externalorder/ExternalOrderRelQueryService.java

@ -0,0 +1,7 @@
package com.qniao.dam.query.externalorder;
import com.qniao.dam.domain.aggregate.externalorder.entity.ExternalOrderRel;
public interface ExternalOrderRelQueryService {
ExternalOrderRel queryByOrderId(Long orderId);
}

23
dating-agency-mall-server/src/main/java/com/qniao/dam/query/externalorder/impl/ExternalOrderRelQueryServiceImpl.java

@ -0,0 +1,23 @@
package com.qniao.dam.query.externalorder.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.qniao.dam.domain.aggregate.externalorder.entity.ExternalOrderRel;
import com.qniao.dam.infrastructure.persistent.dao.domain.ExternalOrderRelDao;
import com.qniao.dam.query.externalorder.ExternalOrderRelQueryService;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
@Service
public class ExternalOrderRelQueryServiceImpl implements ExternalOrderRelQueryService {
@Resource
private ExternalOrderRelDao externalOrderRelDao;
@Override
public ExternalOrderRel queryByOrderId(Long orderId) {
return externalOrderRelDao.selectOne(new LambdaQueryWrapper<ExternalOrderRel>()
.eq(ExternalOrderRel::getOrderId, orderId)
.last("limit 1"));
}
}

3
dating-agency-mall-server/src/main/resources/mapper/right/WalletAccountAssociateOrderRecordDao.xml

@ -22,6 +22,7 @@
</select>
<select id="checkUserVip" resultType="java.lang.Integer">
SELECT COUNT(1) FROM `da_right` WHERE user_id =#{userId} AND mi_id =#{miId} AND start_time &lt;= NOW() AND end_time >= NOW() AND `type` = 601
SELECT COUNT(1) FROM `da_right`
WHERE is_delete = 0 and user_id =#{userId} AND mi_id =#{miId} AND start_time &lt;= NOW() AND end_time >= NOW() AND `type` = 601
</select>
</mapper>
Loading…
Cancel
Save