From fd2d4c117db9be24b75be9150bd50407ba9ff0ab Mon Sep 17 00:00:00 2001
From: liujie <1793218484@qq.com>
Date: 星期一, 18 八月 2025 21:09:37 +0800
Subject: [PATCH] update

---
 ManagementOKTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tDriver/tDriver_add.html                                        |    4 
 ManagementOKTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tOpenCity/tOpenCity_edit.html                                   |    1 
 ManagementOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TUser.java                                    |    2 
 UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/UserActivityInviteMapper.xml                  |    3 
 ManagementOKTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tDriver/tDriver_edit.html                                       |    4 
 UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/UserInfoServiceImpl.java                     |   41 ++++++++
 ManagementOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TOpenCityController.java         |    4 
 ManagementOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/SysCouponActivityController.java |   23 ++++
 ManagementOKTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tCar/tCar_add.html                                              |    4 
 UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/WxMaSubscribeMessageUtil.java                        |   92 ++++++++++++++++++
 ManagementOKTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tCar/tCar_edit.html                                             |    4 
 ManagementOKTravel/guns-admin/src/main/webapp/WEB-INF/view/system/report/operationalData.html                                     |    1 
 ManagementOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/UserCouponRecordController.java  |    1 
 ManagementOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/WxMaSubscribeMessageUtil.java                  |   92 ++++++++++++++++++
 ManagementOKTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tOpenCity/tOpenCity_add.html                                    |    1 
 15 files changed, 274 insertions(+), 3 deletions(-)

diff --git a/ManagementOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/SysCouponActivityController.java b/ManagementOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/SysCouponActivityController.java
index ce85b63..5782a3c 100644
--- a/ManagementOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/SysCouponActivityController.java
+++ b/ManagementOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/SysCouponActivityController.java
@@ -19,6 +19,7 @@
 import com.stylefeng.guns.modular.system.service.ISysCouponActivityService;
 import com.stylefeng.guns.modular.system.service.ISysCouponRecordService;
 import com.stylefeng.guns.modular.system.service.ITUserService;
+import com.stylefeng.guns.modular.system.util.WxMaSubscribeMessageUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
 import org.springframework.ui.Model;
@@ -49,6 +50,7 @@
 
     @Autowired
     private ISysCouponRecordService couponRecordService;
+
 
     /**
      * 跳转到首页
@@ -245,6 +247,11 @@
             userCouponRecord.setCouponActivityId(sysCouponActivity.getId());
             userCouponRecord.setCouponId(sysCouponActivity.getCouponId());
             userCouponRecord.setActivityType(1);
+
+            SysCouponRecord sysCouponRecord = couponRecordService.selectById(sysCouponActivity.getCouponId());
+
+
+
             //判断发送类型1=全部用户,2=选择用户
             if(sysCouponActivity.getSendType()==1){
                 Wrapper wrapper = new EntityWrapper<TUser>();
@@ -256,6 +263,15 @@
                     userCouponRecord.setUserId(user.getId());
                     for (int i=0;i<sysCouponActivity.getNumber();i++){
                         userCouponRecord.insert();
+
+                        // 订阅通知
+                        if(user.getOpenId()!=null){
+                            // 推送订阅消息
+                            WxMaSubscribeMessageUtil.push(user.getAppletsOpenId(),sysCouponRecord.getName(),sysCouponRecord.getMoney().doubleValue());
+                        }
+
+
+
                     }
                 }
                 sysCouponActivity.setSendUserNum(list.size());
@@ -266,6 +282,13 @@
                     userCouponRecord.setUserId(userId.getJSONObject(j).getInteger("userId"));
                     for (int i=0;i<sysCouponActivity.getNumber();i++){
                         userCouponRecord.insert();
+                        TUser user = userService.selectById(userCouponRecord.getUserId());
+                        // 订阅通知
+                        if(user.getOpenId()!=null){
+                            // 推送订阅消息
+                            WxMaSubscribeMessageUtil.push(user.getAppletsOpenId(),sysCouponRecord.getName(),sysCouponRecord.getMoney().doubleValue());
+                        }
+
                     }
                 }
                 sysCouponActivity.setSendUserNum(userId.size());
diff --git a/ManagementOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TOpenCityController.java b/ManagementOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TOpenCityController.java
index 243da2b..b747cbb 100644
--- a/ManagementOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TOpenCityController.java
+++ b/ManagementOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TOpenCityController.java
@@ -192,9 +192,9 @@
                 businessType = 2;
             }else if ("跨城出行".equals(type)){
                 businessType = 3;
-            }else if ("跨城小件物流".equals(type)){
-                businessType = 4;
             }else if ("同城小件物流".equals(type)){
+                businessType = 4;
+            }else if ("跨城小件物流".equals(type)){
                 businessType = 5;
             }else if ("包车".equals(type)){
                 businessType = 6;
diff --git a/ManagementOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/UserCouponRecordController.java b/ManagementOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/UserCouponRecordController.java
index f1087c3..f8ddabc 100644
--- a/ManagementOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/UserCouponRecordController.java
+++ b/ManagementOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/UserCouponRecordController.java
@@ -87,6 +87,7 @@
     @ResponseBody
     public Object add(UserCouponRecord userCouponRecord) {
         userCouponRecordService.insert(userCouponRecord);
+
         return SUCCESS_TIP;
     }
 
diff --git a/ManagementOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TUser.java b/ManagementOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TUser.java
index d78c0ea..58ce217 100644
--- a/ManagementOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TUser.java
+++ b/ManagementOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TUser.java
@@ -136,6 +136,8 @@
     // 加入黑名单时间
     private Date blackTime;
 
+    private String appletsOpenId;
+
 
 
     public Integer getId() {
diff --git a/ManagementOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/WxMaSubscribeMessageUtil.java b/ManagementOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/WxMaSubscribeMessageUtil.java
new file mode 100644
index 0000000..7ee9112
--- /dev/null
+++ b/ManagementOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/WxMaSubscribeMessageUtil.java
@@ -0,0 +1,92 @@
+package com.stylefeng.guns.modular.system.util;
+
+import cn.hutool.http.HttpUtil;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import org.springframework.stereotype.Component;
+
+/**
+ * @BelongsProject: xxx
+ * @BelongsPackage: com.xxx.commons.utils
+ * @ClassName WxMaSubscribeMessageUtil
+ * @Author: handsome boy__LiuWenCheng
+ * @CreateTime: 2024-09-05  15:58
+ */
+ 
+@Component
+public class WxMaSubscribeMessageUtil {
+    public static String appId = "wx4d36488fa2cd2718";
+    public static String appSecret = "f3874e9c813f31a2e90c37346eb74d82";
+ 
+ 
+    /**
+     * 活动即将开始通知
+     * @param openId
+     */
+    public static void push(String openId,String name ,Double money) {
+        String accessToken = getAccessToken();
+        String url = "https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=" + accessToken;
+        JSONObject data = new JSONObject();
+        data.put("touser", openId);
+        data.put("template_id", "loQAaLfhJvkkvZL0ILKbwKJiXiHq5db6SLqeLX_V54c");
+        data.put("page", "/pages/index/index/index" );
+ 
+        // 设置消息内容
+        JSONObject messageData = new JSONObject();
+ 
+ 
+        JSONObject thing1 = new JSONObject();
+        thing1.put("value", name);
+        messageData.put("thing1", thing1);
+ 
+
+
+        JSONObject time2 = new JSONObject();
+        time2.put("value", "您的专属优惠券已到账,快点打车用掉吧~");
+        messageData.put("thing2", time2);
+
+        // 转化成年月日时分的时间格式
+        JSONObject thing3 = new JSONObject();
+        thing3.put("value", money);
+        messageData.put("amount3", thing3);
+ 
+
+        // 打印 messageData 的内容
+        System.out.println("messageData: " + messageData.toJSONString());
+ 
+        data.put("data", messageData);
+        // 打印 data 的内容
+        System.out.println("data: " + data.toJSONString());
+ 
+        // 发送消息
+        String result = HttpUtil.post(url, data.toString());
+        System.out.println("订阅消息结果:" + result);
+    }
+
+    public static void main(String[] args) {
+        push("oTrbv6yS0oceps4FVbW6UcaIWscI","张三", Double.valueOf(10.0d));
+    }
+
+ 
+ 
+    public static String getAccessToken() {
+ 
+ 
+        String url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET";
+        url = url.replace("APPID", appId).replace("APPSECRET", appSecret);
+        try {
+ 
+            String result = HttpUtil.get(url);
+            JSONObject jsonObject = JSON.parseObject(result);
+            return jsonObject.getString("access_token");
+        } catch (Exception e) {
+            System.err.println("请求失败:" + e.getMessage());
+            e.printStackTrace();
+            return null;
+        }
+ 
+    }
+ 
+ 
+}
+ 
\ No newline at end of file
diff --git a/ManagementOKTravel/guns-admin/src/main/webapp/WEB-INF/view/system/report/operationalData.html b/ManagementOKTravel/guns-admin/src/main/webapp/WEB-INF/view/system/report/operationalData.html
index 8d8e262..fe2839a 100644
--- a/ManagementOKTravel/guns-admin/src/main/webapp/WEB-INF/view/system/report/operationalData.html
+++ b/ManagementOKTravel/guns-admin/src/main/webapp/WEB-INF/view/system/report/operationalData.html
@@ -10,6 +10,7 @@
                                 <#SelectCon id="type" name="类别" >
                                     <option value="2">出租车</option>
                                     <option value="3">跨城出行</option>
+                                    <option value="4">同城小件物流</option>
                                 </#SelectCon>
                             </div>
                             <div class="col-sm-3">
diff --git a/ManagementOKTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tCar/tCar_add.html b/ManagementOKTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tCar/tCar_add.html
index 3453d3b..cee08e1 100644
--- a/ManagementOKTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tCar/tCar_add.html
+++ b/ManagementOKTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tCar/tCar_add.html
@@ -53,6 +53,10 @@
                                     <input type="checkbox" name="serverBox" id="serverBox3" value="3" onclick="TCarInfoDlg.kcServerClick()">
                                     <label for="serverBox3"> 跨城 </label>
                                 </div>
+                                <div class="checkbox checkbox-success  checkbox-inline">
+                                    <input type="checkbox" name="serverBox" id="serverBox4" value="4">
+                                    <label for="serverBox4"> 同城小件物流 </label>
+                                </div>
                             </div>
                         </fieldset>
                     </div>
diff --git a/ManagementOKTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tCar/tCar_edit.html b/ManagementOKTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tCar/tCar_edit.html
index 2609f04..8346e13 100644
--- a/ManagementOKTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tCar/tCar_edit.html
+++ b/ManagementOKTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tCar/tCar_edit.html
@@ -55,6 +55,10 @@
                                     <input type="checkbox" name="serverBox" id="serverBox3" value="3" ${2 == three ? 'checked=checked' : ''} onclick="TCarInfoDlg.kcServerClick()">
                                     <label for="serverBox3"> 跨城 </label>
                                 </div>
+                                <div class="checkbox checkbox-success  checkbox-inline">
+                                    <input type="checkbox" name="serverBox" id="serverBox4" value="4" ${2 == four ? 'checked=checked' : ''} onclick="TCarInfoDlg.kcServerClick()">
+                                    <label for="serverBox4"> 同城小件物流 </label>
+                                </div>
                             </div>
                         </fieldset>
                     </div>
diff --git a/ManagementOKTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tDriver/tDriver_add.html b/ManagementOKTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tDriver/tDriver_add.html
index 80105d8..a2cbaa4 100644
--- a/ManagementOKTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tDriver/tDriver_add.html
+++ b/ManagementOKTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tDriver/tDriver_add.html
@@ -78,6 +78,10 @@
                                     <input type="checkbox" name="serverBox" id="serverBox3" value="3" onclick="YesDriverInfoDlg.checkBox()" >
                                     <label for="serverBox3"> 跨城 </label>
                                 </div>
+                                <div class="checkbox checkbox-success  checkbox-inline">
+                                    <input type="checkbox" name="serverBox" id="serverBox4" value="4" >
+                                    <label for="serverBox4"> 同城小件物流 </label>
+                                </div>
                             </div>
                         </fieldset>
                     </div>
diff --git a/ManagementOKTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tDriver/tDriver_edit.html b/ManagementOKTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tDriver/tDriver_edit.html
index a69b25b..21e2b19 100644
--- a/ManagementOKTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tDriver/tDriver_edit.html
+++ b/ManagementOKTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tDriver/tDriver_edit.html
@@ -81,6 +81,10 @@
                                     <input type="checkbox" name="serverBox" id="serverBox3" value="3" ${2 == three ? 'checked=checked' : ''} onclick="YesDriverInfoDlg.checkBox()" >
                                     <label for="serverBox3"> 跨城 </label>
                                 </div>
+                                <div class="checkbox checkbox-success  checkbox-inline">
+                                    <input type="checkbox" name="serverBox" id="serverBox4" value="4" ${2 == four ? 'checked=checked' : ''}  >
+                                    <label for="serverBox4"> 同城小件物流 </label>
+                                </div>
                             </div>
                         </fieldset>
                     </div>
diff --git a/ManagementOKTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tOpenCity/tOpenCity_add.html b/ManagementOKTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tOpenCity/tOpenCity_add.html
index a2e861c..ef0a951 100644
--- a/ManagementOKTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tOpenCity/tOpenCity_add.html
+++ b/ManagementOKTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tOpenCity/tOpenCity_add.html
@@ -28,6 +28,7 @@
                                 <option value="">选择经营业务</option>
                                 <option value="2">出租车</option>
                                 <option value="3">跨城出行</option>
+                                <option value="4">同城小件物流</option>
                             </select>
                         </div>
                         <div class="col-sm-3" >
diff --git a/ManagementOKTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tOpenCity/tOpenCity_edit.html b/ManagementOKTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tOpenCity/tOpenCity_edit.html
index 2c06fbf..95591e7 100644
--- a/ManagementOKTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tOpenCity/tOpenCity_edit.html
+++ b/ManagementOKTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tOpenCity/tOpenCity_edit.html
@@ -35,6 +35,7 @@
                                 <option value="">选择经营业务</option>
                                 <option value="2">出租车</option>
                                 <option value="3">跨城出行</option>
+                                <option value="4">同城小件物流</option>
                             </select>
                         </div>
                         <div class="col-sm-3" >
diff --git a/UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/UserActivityInviteMapper.xml b/UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/UserActivityInviteMapper.xml
index b5ebff3..beb628d 100644
--- a/UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/UserActivityInviteMapper.xml
+++ b/UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/UserActivityInviteMapper.xml
@@ -33,7 +33,8 @@
         c.couponUseType as couponUseType,
         c.couponType as couponType,
         a.totalPrice as totalPrice,
-        a.lavePrice as lavePrice
+        a.lavePrice as lavePrice,
+        c.name as name
         from t_user_activity_invite a
         left join t_user_activity b on (a.userActivityId = b.id)
         left join t_sys_coupon_record c on (a.couponId = c.id)
diff --git a/UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/UserInfoServiceImpl.java b/UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/UserInfoServiceImpl.java
index 8bc77a0..2f3578e 100644
--- a/UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/UserInfoServiceImpl.java
+++ b/UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/UserInfoServiceImpl.java
@@ -42,6 +42,7 @@
 import java.io.*;
 import java.math.BigDecimal;
 import java.security.SecureRandom;
+import java.time.LocalDateTime;
 import java.util.*;
 
 
@@ -278,6 +279,14 @@
                             userCouponRecordService.insert(userCouponRecord);
                             //修改剩余可发放总金额
                             lavePrice -= Double.valueOf(String.valueOf(map.get("money")));
+
+                            // 订阅通知
+                            UserInfo userInfo1 = userInfoMapper.selectById(uid);
+                            if(userInfo1.getOpenId()!=null){
+                                // 推送订阅消息
+                                WxMaSubscribeMessageUtil.push(userInfo1.getAppletsOpenId(),map.get("name").toString(),userCouponRecord.getMoney());
+                            }
+
                         }
                         UserActivityInvite uai = userActivityInviteMapper.selectById(Integer.valueOf(map.get("id").toString()));
                         uai.setLavePrice(new BigDecimal(lavePrice).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
@@ -434,6 +443,15 @@
                         userCouponRecordService.insert(userCouponRecord);
                         //修改剩余可发放总金额
                         lavePrice -= Double.valueOf(String.valueOf(map.get("money")));
+
+                        // 订阅通知
+                        UserInfo userInfo1 = userInfoMapper.selectById(uid);
+                        if(userInfo1.getOpenId()!=null){
+                            // 推送订阅消息
+                            WxMaSubscribeMessageUtil.push(userInfo1.getAppletsOpenId(),map.get("name").toString(),userCouponRecord.getMoney());
+                        }
+
+
                     }
                     UserActivityInvite uai = userActivityInviteMapper.selectById(Integer.valueOf(map.get("id").toString()));
                     uai.setLavePrice(new BigDecimal(lavePrice).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
@@ -591,6 +609,16 @@
                             userCouponRecord.setCompanyId(userInfo.getCompanyId());
                             userCouponRecord.setUserId(uid);
                             userCouponRecordService.insert(userCouponRecord);
+
+
+                            // 订阅通知
+                            UserInfo userInfo1 = userInfoMapper.selectById(uid);
+                            if(userInfo1.getOpenId()!=null){
+                                // 推送订阅消息
+                                  WxMaSubscribeMessageUtil.push(userInfo1.getAppletsOpenId(),map.get("name").toString(),userCouponRecord.getMoney());
+                            }
+
+
                             //修改剩余可发放总金额
                             lavePrice -= Double.valueOf(String.valueOf(map.get("money")));
                         }
@@ -1388,6 +1416,13 @@
                     //修改剩余可发放总金额
                     lavePrice -= Double.valueOf(String.valueOf(map.get("money")));
                     num++;
+
+
+                    // 订阅通知
+                    if(userInfo.getOpenId()!=null){
+                        // 推送订阅消息
+                        WxMaSubscribeMessageUtil.push(userInfo.getAppletsOpenId(),map.get("name").toString(),userCouponRecord.getMoney());
+                    }
                 }
                 UserActivityRegistered uar = userActivityRegisteredService.selectById(Integer.valueOf(map.get("id").toString()));
                 uar.setLavePrice(new BigDecimal(lavePrice).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
@@ -1436,6 +1471,12 @@
                     //修改剩余可发放总金额
                     lavePrice -= Double.valueOf(String.valueOf(map.get("money")));
                     num++;
+
+                    // 订阅通知
+                    if(userInfo.getOpenId()!=null){
+                        // 推送订阅消息
+                        WxMaSubscribeMessageUtil.push(userInfo.getAppletsOpenId(),map.get("name").toString(),userCouponRecord.getMoney());
+                    }
                 }
                 UserActivityRegistered uar = userActivityRegisteredService.selectById(Integer.valueOf(map.get("id").toString()));
                 uar.setLavePrice(new BigDecimal(lavePrice).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
diff --git a/UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/WxMaSubscribeMessageUtil.java b/UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/WxMaSubscribeMessageUtil.java
new file mode 100644
index 0000000..1d2d9ac
--- /dev/null
+++ b/UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/WxMaSubscribeMessageUtil.java
@@ -0,0 +1,92 @@
+package com.stylefeng.guns.modular.system.util;
+
+import cn.hutool.http.HttpUtil;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import org.springframework.stereotype.Component;
+
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+
+/**
+ * @BelongsProject: xxx
+ * @BelongsPackage: com.xxx.commons.utils
+ * @ClassName WxMaSubscribeMessageUtil
+ * @Author: handsome boy__LiuWenCheng
+ * @CreateTime: 2024-09-05  15:58
+ */
+ 
+@Component
+public class WxMaSubscribeMessageUtil {
+    public static String appId = "wx4d36488fa2cd2718";
+    public static String appSecret = "f3874e9c813f31a2e90c37346eb74d82";
+ 
+ 
+    /**
+     * 活动即将开始通知
+     * @param openId
+     */
+    public static void push(String openId,String name ,Double money) {
+        String accessToken = getAccessToken();
+        String url = "https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=" + accessToken;
+        JSONObject data = new JSONObject();
+        data.put("touser", openId);
+        data.put("template_id", "loQAaLfhJvkkvZL0ILKbwKJiXiHq5db6SLqeLX_V54c    ");
+        data.put("page", "/pages/index/index/index" );
+ 
+        // 设置消息内容
+        JSONObject messageData = new JSONObject();
+ 
+ 
+        JSONObject thing1 = new JSONObject();
+        thing1.put("value", name);
+        messageData.put("thing1", thing1);
+ 
+
+
+        JSONObject time2 = new JSONObject();
+        time2.put("value", "您的专属优惠券已到账,快点打车用掉吧~");
+        messageData.put("thing2", time2);
+
+        // 转化成年月日时分的时间格式
+        JSONObject thing3 = new JSONObject();
+        thing3.put("value", money);
+        messageData.put("amount3", thing3);
+ 
+
+        // 打印 messageData 的内容
+        System.out.println("messageData: " + messageData.toJSONString());
+ 
+        data.put("data", messageData);
+        // 打印 data 的内容
+        System.out.println("data: " + data.toJSONString());
+ 
+        // 发送消息
+        String result = HttpUtil.post(url, data.toString());
+        System.out.println("订阅消息结果:" + result);
+    }
+
+
+ 
+ 
+    public static String getAccessToken() {
+ 
+ 
+        String url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET";
+        url = url.replace("APPID", appId).replace("APPSECRET", appSecret);
+        try {
+ 
+            String result = HttpUtil.get(url);
+            JSONObject jsonObject = JSON.parseObject(result);
+            return jsonObject.getString("access_token");
+        } catch (Exception e) {
+            System.err.println("请求失败:" + e.getMessage());
+            e.printStackTrace();
+            return null;
+        }
+ 
+    }
+ 
+ 
+}
+ 
\ No newline at end of file

--
Gitblit v1.7.1