日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

类818tu.c微信小说分销系统设计之定时模板消息源码

發布時間:2023/12/10 windows 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 类818tu.c微信小说分销系统设计之定时模板消息源码 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

近期將出個系列講解開發過程,同時作為此系統的開發記錄吧,萬能的博客園,本邊講解如何發送模板消息,并且能夠定時發送,下一篇講解如何處理多個公眾號的網頁授權登錄問題

【后臺】http://xiaoshuo.qqsiot.cn/manager

管理員賬號:admin

渠道商賬號:channel

代理商賬號:agent

演示密碼:123456

【前臺】http://y6.qqsiot.cn

我的獨立博客:http://www.yxxrui.cn

先講一下系統的功能,整個系統總共有四種角色:管理員??-> ?渠道商 ?-> ?代理商 ?-> ?讀者

? ?【管理員】管理員擁有最高權限。可以發布通知公告(不同可見度的通知)、查看整個平臺數據統計、訂單明細、管理小說分類、管理小說、管理章節、管理渠道商、管理員管理、處理渠道打款、修改個人資料、修改密碼、清空數據庫、安全域名自動配置,每個渠道商擁有一個專屬的子域名,支付域名也單獨拿出來,防微信封殺功能、導入ApiKey設置與刷新、;

? ?【渠道商】查看公告,本渠道的數據統計、讀者統計、訂單明細、定時群發微信模板消息、查看小說、查看章節、內容、推廣小說、文案編輯、復制鏈接、推廣首頁、當前渠道商的代理商管理、我的結算單、處理代理打款事項、查看所有讀者、讀者充值記錄、公眾號設置、關鍵字回復、創建微信自定義菜單、自定義關注章節、簡易掃碼支付(減少有風險環境下無法支付的問題)、修改個人資料、修改密碼等;

? ?【代理商】查看公告、本代理的數據統計、用戶統計、訂單統計、查看小說、查看章節、內容、推廣小說、文案編輯、復制鏈接、推廣首頁、我的結算單、修改個人資料、修改密碼等;代理商無需公眾號即可賺錢。

? ?【讀 ? 者】首頁、搜索書庫、男頻、女頻、排行、書庫、分類、書簽、歷史記錄、簽到、首次閱讀自動簽到、簽到自動回復客服消息、關注推送文章鏈接、關鍵字圖文回復、分享賺書幣(3次)、看書、充值書幣、充值年費會員等。

前臺(部分):

? ? ? ? ??? ? ?

?

??? ? ?

后臺(部分):

批量導入工具:

還有一個配套的高級導入工具,選擇一次,遍歷所有文件夾中的小說,批量導入到系統中

定時發送模板消息,目前比較簡單,在網站開始運行的時候,啟動定時器,每隔x時間則檢測一下是否有定時需要發送的模板消息:

public static void SetOndDayTimer(){//第一次開始的時間,兩秒執行一次DateTime startTime = DateTime.Now;/*if (startTime < DateTime.Now)startTime = startTime.AddDays(1.0);*/TimeSpan delayTime = (startTime - DateTime.Now);TimeSpan intervalTime = new TimeSpan(0, 0, 0, 1); //1秒執行一次// OnOndDayTimer為你每天需要調用的方法TimerCallback timerDelegate = new TimerCallback(DealTask);// Create a timer that signals the delegate to invokemyTimer = new System.Threading.Timer(timerDelegate, null, delayTime, intervalTime);} 上邊的源碼中的DealTask為處理數據庫中定時消息的方法,此方法從數據庫讀取數據,并且處理,代碼如下:
private static bool _isBusy = false;//是否正在工作中public static void DealTask(object obj){if (_isBusy) return;_isBusy = true;TimerTaskBll timerTaskBll = new TimerTaskBll();var tts = timerTaskBll.Gets(null, 1);if (tts.Count < 1){_isBusy = false;return;}UserBll userBll = new UserBll();foreach (var task in tts){//先處理掉timerTaskBll.FinishThis(task.TaskId);List<User> users = null;//需要發送消息的所有用戶if (task.AgentId == null||task.AgentId==0){if (task.UserId == null || task.UserId == 0){users = userBll.Gets(null, null, null, null, null);}else{users = new List<User>();users.Add(userBll.Get(task.UserId ?? 0));}}else{if (task.UserId == null || task.UserId == 0){//2017-06-30 可能需修改users = userBll.Gets(task.AgentId, task.AgentId, null, null, null);}else{users = new List<User>();User user = userBll.Get(task.UserId ?? 0);if (user.BelongToAgentId == task.AgentId){users.Add(user);}}}try{var wexinTool = new WxNorFactory(task.AgentId ?? 5);foreach (var user in users){var data = task.TaskValue.Replace("{nickname}", user.Nickname).Replace("{coinnum}", user.CoinNum.ToString());wexinTool.SendTemplateMsg(user.Openid, task.TemplateId, task.ClickUrl, data);}}catch{timerTaskBll.FinishThisWithError(task.TaskId);}}_isBusy = false;} 主要思路就是先統計需要發送的用戶,然后拿到每個用戶的openid,最后給每個用戶發送一條消息即可。
wexinTool.SendTemplateMsg(user.Openid, task.TemplateId, task.ClickUrl, data);此方法為最終發送模板消息的,直接將提交到微信服務器

上邊的WxNorFactory類中包含了多公眾號接口操作的所有方法,具體講解關注我的博客園賬號,下次寫多個微信公眾號網頁授權、多域名技術、跨公眾號支付

我剛發現手機上看不到博客評論,抱歉,答案在此:1420213383

總結

以上是生活随笔為你收集整理的类818tu.c微信小说分销系统设计之定时模板消息源码的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。