ソースを参照

Merge branch 'telegram'

chenbiao 2 年 前
コミット
358c74627f

+ 4 - 0
netflix-common/src/main/java/com/cyksj/dto/RedisKey.java

@@ -56,4 +56,8 @@ public class RedisKey {
 
     public static String DISABLE_ACCOUNT_ASSIGN = "disable_account_assign:";
 
+    /**
+     * Telegram 电报机器人推送
+     */
+    public static String TELEGRAM_BOT_MSG ="telegram:bot:msg";
 }

+ 19 - 0
netflix-dao/src/main/java/com/cyksj/model/request/TelegramBotMsgReq.java

@@ -0,0 +1,19 @@
+package com.cyksj.model.request;
+
+import lombok.Data;
+
+/**
+ * @author chan
+ * @date 2023/9/12 14:10
+ */
+@Data
+public class TelegramBotMsgReq {
+
+    private String name;
+
+    private String goodsName;
+
+    private Integer number;
+
+    private Long day;
+}

+ 41 - 0
netflix-service/src/main/java/com/cyksj/service/order/impl/OrderDonServiceImpl.java

@@ -53,6 +53,7 @@ import com.cyksj.model.manage.views.GroupsRelationView;
 import com.cyksj.model.manage.views.OrderDonView;
 import com.cyksj.model.request.OrderAttach;
 import com.cyksj.model.request.OrderPayRequest;
+import com.cyksj.model.request.TelegramBotMsgReq;
 import com.cyksj.model.request.TransferAccountsReq;
 import com.cyksj.model.views.CouponNewUserView;
 import com.cyksj.model.views.CouponUserView;
@@ -73,6 +74,7 @@ import com.cyksj.service.relation.GroupRelationClearService;
 import com.cyksj.service.relation.GroupRelationFrontService;
 import com.cyksj.service.relation.GroupsRelationExpiryRecordService;
 import com.cyksj.service.sys.SysConfigService;
+import com.cyksj.service.telegram.TelegramService;
 import com.cyksj.service.template.TemplateCommonService;
 import com.cyksj.service.user.UserBenefitsService;
 import com.cyksj.service.user.UserBindRelationService;
@@ -215,6 +217,8 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 
 	private final UserPhoneSendRecordMapper userPhoneSendRecordMapper;
 
+	private final TelegramService telegramService;
+
 	private final List<String> noChekGoodsTemp = List.of("Apple One", "Youtube", "Spotify");
 
 	@Transactional(rollbackFor = Throwable.class)
@@ -626,6 +630,13 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 				log.error("回传错误 {}", StringUtil.getErrorText(e));
 			}
 		});
+
+		//虚拟物品购买推送电报消息
+		if(goodsDon.getType() == 1){
+			TASK_POOL.execute(()->{
+				sendTelegramMsg(order, goodsDon);
+			});
+		}
 	}
 
 	@Override
@@ -982,6 +993,13 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 				log.error("回传错误 {}", StringUtil.getErrorText(e));
 			}
 		});
+
+		//虚拟物品购买推送电报消息
+		if(goodsDon.getType() == 1){
+			TASK_POOL.execute(()->{
+				sendTelegramMsg(orderDon, goodsDon);
+			});
+		}
 	}
 
 	private void sendOrderPhoneMsg(Long userId) {
@@ -2293,4 +2311,27 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 		transport.setAddress(address.getAddress());
 		orderDonTransportMapper.insert(transport);
 	}
+
+
+	/**
+	 * 购买时发送电报消息
+	 */
+	private void sendTelegramMsg(OrderDon orderDon, GoodsDon goodsDon) {
+		if(!redisService.hasKey(RedisKey.TELEGRAM_BOT_MSG)){
+			TelegramBotMsgReq msgReq = new TelegramBotMsgReq();
+			msgReq.setGoodsName(goodsDon.getTitle());
+			User user = userMapper.selectById(orderDon.getUserId());
+			msgReq.setName(user.getNickname());
+			GroupsRelation groupsRelation = groupsRelationMapper.selectById(orderDon.getRelationId());
+
+			msgReq.setDay(DateUtil.betweenDay(new Date(), groupsRelation.getExpiryTime(),true));
+			msgReq.setNumber(groupsRelation.getNum());
+			try {
+				telegramService.sendMsg(msgReq);
+				redisService.set(RedisKey.TELEGRAM_BOT_MSG,1, 60L * 3L);
+			} catch (Exception e) {
+				log.error("发送电报推送消息错误 msg:{}",StringUtil.getErrorText(e));
+			}
+		}
+	}
 }

+ 34 - 0
netflix-service/src/main/java/com/cyksj/service/telegram/TelegramService.java

@@ -0,0 +1,34 @@
+package com.cyksj.service.telegram;
+
+import cn.hutool.http.HttpUtil;
+import com.cyksj.common.util.Jsons;
+import com.cyksj.dto.RedisKey;
+import com.cyksj.model.request.TelegramBotMsgReq;
+import com.cyksj.redis.RedisService;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+/**
+ * @author chan
+ * @date 2023/9/12 14:17
+ */
+@Service
+@RequiredArgsConstructor
+@Slf4j
+public class TelegramService {
+    private final String URL = "https://yinhedvd.com/8082/api/movies/sendMsg";
+
+    private final RedisService redisService;
+
+    public void sendMsg(TelegramBotMsgReq botMsg) throws Exception {
+        Boolean flag = redisService.hasKey(RedisKey.TELEGRAM_BOT_MSG);
+        if(!flag){
+            log.info("电报购买推送 推送内容:{}",botMsg);
+            HttpUtil.post(URL, Jsons.toJson(botMsg));
+            redisService.set(RedisKey.TELEGRAM_BOT_MSG,1,60L*3L);
+        }else {
+            log.info("推送未间隔2分钟,暂不推送.");
+        }
+    }
+}