Przeglądaj źródła

出发前一日LINE消息实装

liuzf 3 lat temu
rodzic
commit
edd5967540

+ 8 - 0
pom.xml

@@ -33,6 +33,7 @@
         <velocity.version>2.3</velocity.version>
         <jwt.version>0.9.1</jwt.version>
         <httpclient.version>5.2</httpclient.version>
+        <linebot.version>4.7.0</linebot.version>
     </properties>
 	
     <!-- 依赖声明 -->
@@ -201,6 +202,13 @@
 	            <version>${httpclient.version}</version>
         	</dependency>
 
+			<!-- line bot -->
+			<dependency>
+	            <groupId>com.linecorp.bot</groupId>
+	            <artifactId>line-bot-spring-boot</artifactId>
+	            <version>${linebot.version}</version>
+    		</dependency>
+ 
         </dependencies>
     </dependencyManagement>
 

+ 6 - 1
ruoyi-admin/pom.xml

@@ -70,7 +70,12 @@
             <groupId>org.apache.httpcomponents.client5</groupId>
             <artifactId>httpclient5</artifactId>
         </dependency>
-        
+        <!-- line bot -->
+        <dependency>
+            <groupId>com.linecorp.bot</groupId>
+            <artifactId>line-bot-spring-boot</artifactId>
+    	</dependency>
+    
     </dependencies>
 
     <build>

+ 4 - 1
ruoyi-admin/src/main/java/com/ruoyi/web/pcApi/mapper/TOrderManageMapper.java

@@ -3,9 +3,10 @@ package com.ruoyi.web.pcApi.mapper;
 import java.util.List;
 import java.util.Map;
 
+import org.apache.ibatis.annotations.Param;
+
 import com.ruoyi.web.pcApi.domain.TOrderManage;
 import com.ruoyi.web.pcApi.domain.TPurchasedDetailExportDo;
-import org.apache.ibatis.annotations.Param;
 
 /**
  * 订单管理Mapper接口
@@ -86,4 +87,6 @@ public interface TOrderManageMapper
     List<Map<String, Object>> selectPlaceList(String id);
 
     List<TPurchasedDetailExportDo> purchasedDetailList(TOrderManage order);
+    
+    public List<TOrderManage> selectTomorrowDeparture(String departureDate);
 }

+ 8 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/pcApi/service/ITOrderManageService.java

@@ -79,4 +79,12 @@ public interface ITOrderManageService
     List<Map<String, Object>> selectPlaceList(String id);
 
     List<TPurchasedDetailExportDo> purchasedDetailList(TOrderManage order);
+    
+    /**
+     * 订单信息。
+     * @param departureDate 出发日期
+     * @return 指定出发日的数据取得
+     */
+    public List<TOrderManage> selectTomorrowDeparture(String departureDate);
+
 }

+ 10 - 4
ruoyi-admin/src/main/java/com/ruoyi/web/pcApi/service/impl/TOrderManageServiceImpl.java

@@ -3,15 +3,16 @@ package com.ruoyi.web.pcApi.service.impl;
 import java.util.List;
 import java.util.Map;
 
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
 import com.ruoyi.common.annotation.DataScope;
 import com.ruoyi.common.utils.DateUtils;
+import com.ruoyi.web.pcApi.domain.TOrderManage;
 import com.ruoyi.web.pcApi.domain.TPurchasedDetailExportDo;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
 import com.ruoyi.web.pcApi.mapper.TOrderManageMapper;
-import com.ruoyi.web.pcApi.domain.TOrderManage;
 import com.ruoyi.web.pcApi.service.ITOrderManageService;
-import org.springframework.transaction.annotation.Transactional;
 
 /**
  * 订单管理Service业务层处理
@@ -147,4 +148,9 @@ public class TOrderManageServiceImpl implements ITOrderManageService
     public List<TPurchasedDetailExportDo> purchasedDetailList(TOrderManage order) {
         return tOrderManageMapper.purchasedDetailList(order);
     }
+
+	@Override
+	public List<TOrderManage> selectTomorrowDeparture(String departureDate) {
+		return tOrderManageMapper.selectTomorrowDeparture(departureDate);
+	}
 }

+ 49 - 9
ruoyi-admin/src/main/java/com/ruoyi/web/schedulTask/schedulTask.java

@@ -1,6 +1,23 @@
 
 package com.ruoyi.web.schedulTask;
 
+import java.text.SimpleDateFormat;
+import java.time.LocalDate;
+import java.time.format.DateTimeFormatter;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.List;
+import java.util.Locale;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.MessageSource;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+import org.springframework.transaction.annotation.Transactional;
+
+import com.linecorp.bot.client.LineMessagingClient;
+import com.linecorp.bot.model.PushMessage;
+import com.linecorp.bot.model.message.TextMessage;
 import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.web.pcApi.domain.TCommodityCoupon;
 import com.ruoyi.web.pcApi.domain.TCommodityManage;
@@ -10,15 +27,6 @@ import com.ruoyi.web.pcApi.service.ITCommodityCouponService;
 import com.ruoyi.web.pcApi.service.ITCommodityManageService;
 import com.ruoyi.web.pcApi.service.ITCustomerCouponService;
 import com.ruoyi.web.pcApi.service.ITOrderManageService;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.scheduling.annotation.Scheduled;
-import org.springframework.stereotype.Component;
-import org.springframework.transaction.annotation.Transactional;
-
-import java.text.SimpleDateFormat;
-import java.util.Calendar;
-import java.util.Date;
-import java.util.List;
 
 /**
  * 定时调度任务
@@ -37,6 +45,11 @@ public class schedulTask
     @Autowired
     private ITOrderManageService orderManageService;
 
+    @Autowired
+    private LineMessagingClient lineMessagingClient;
+    @Autowired
+    MessageSource messages;
+    
     private static final SimpleDateFormat dateSdf = new SimpleDateFormat("yyyy-MM-dd");
 
     /**
@@ -139,6 +152,33 @@ public class schedulTask
 
             }
         }
+
     }
 
+    /**
+     *   每天执行一次,对明天出发的客户进行line消息通知。
+     * @throws Exception
+     */
+    @Transactional
+    @SuppressWarnings("all")
+    @Scheduled(cron = "0 8 * * * ?")
+    public void lineSendMsgScheduleTask() throws Exception{
+    	//
+    	LocalDate tomorrow = LocalDate.now().plusDays(1);
+    	
+    	String tomorrowStr = tomorrow.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
+        // 查询未支付的订单
+        List<TOrderManage> orderManageList = orderManageService.selectTomorrowDeparture(tomorrowStr);
+        for (TOrderManage orderManage : orderManageList) {
+        	String msg = messages.getMessage(
+        		      "departureAlertMsg", new String[]{orderManage.getCommodityName(),
+        		    		  orderManage.getDepartureDate(), orderManage.getDeparturePlace(),
+        		    		  String.valueOf(orderManage.getAdultNum()), String.valueOf(orderManage.getChildNum())}, Locale.JAPAN
+        		    );
+        	
+        	lineMessagingClient.pushMessage(new PushMessage(orderManage.getPhone(), new TextMessage(msg)));
+        }
+        
+        
+    }
 }

+ 1 - 0
ruoyi-admin/src/main/resources/i18n/messages_ja.properties

@@ -0,0 +1 @@
+departureAlertMsg=「{0}」出発のご連絡。\n出発日:{1}\n出発地:{2}\n大人:{3}人\nことも:{4}人\n忘れないように楽しみにしましょう。

+ 14 - 0
ruoyi-admin/src/main/resources/mapper/order/TOrderManageMapper.xml

@@ -394,4 +394,18 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             a.`status` IN ( '1', '2', '9' ) and a.commodity_id = #{commodityId} and a.departure_date = #{departureDate}
     </select>
 
+    <select id="selectTomorrowDeparture" parameterType="String" resultMap="TOrderManageResult">
+        select c.commodity_name,
+               a.departure_place,
+               a.departure_date,
+               a.adult_num,
+               a.child_num,
+               b.username phone
+            from t_order_manage a
+                inner join t_customer_manage b on a.customer_id = b.id
+                left join t_commodity_manage c on a.commodity_id = c.id
+            where 
+                a.del_flag = '0' and b.del_flag = '0' and a.status = '1'
+                and departure_date = #{departureDate}
+    </select>
 </mapper>