src/SSCMS.Core/Services/WxManager.Reply.cs

(开头部分) 4KB

这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。

using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using SSCMS.Enums;
using SSCMS.Models;
using SSCMS.Utils;

namespace SSCMS.Core.Services
{
    ////群发媒体文件时传入mediaId,群发文本消息时传入content,群发卡券时传入cardId
    public partial class WxManager
    {
        private static bool IsMatch(WxReplyKeyword keyword, string content)
        {
            if (keyword.Exact)
            {
                return StringUtils.EqualsIgnoreCase(keyword.Text, content);
            }

            return StringUtils.ContainsIgnoreCase(keyword.Text, content) ||
                   StringUtils.ContainsIgnoreCase(content, keyword.Text);
        }

        public async Task<List<WxReplyMessage>> GetMessagesAsync(int siteId, string content, int defaultMessageId)
        {
            List<WxReplyMessage> messages = null;

            var keywords = await _wxReplyKeywordRepository.GetKeywordsAsync(siteId);
            var keyword = keywords.FirstOrDefault(x => IsMatch(x, content));
            if (keyword != null)
            {
                var rule = await _wxReplyRuleRepository.GetAsync(keyword.RuleId);
                if (rule != null)
                {
                    var allMessages = await GetMessagesAsync(siteId, keyword.RuleId);
                    if (rule.Random)
                    {
                        var index = StringUtils.GetRandomInt(0, allMessages.Count - 1);
                        messages = new List<WxReplyMessage>
                        {
                            allMessages[index]
                        };
                    }
                    else
                    {
                        messages = allMessages;
                    }
                }
            }
            else if (defaultMessageId > 0)
            {
                var message = await GetMessageAsync(siteId, defaultMessageId);
                if (message != null)
                {
                    messages = new List<WxReplyMessage>
                    {
                        message
                    };
                }
            }
后面还有 81 行代码,解锁后查看完整代码

24 小时内免费解锁 3 个项目,之后 1 积分/个。 规则说明

AI 解读

登录后可用,每次 10 积分,解读结果公开显示在下面。

还没有人解读过这个文件。