예제 #1
0
        public void PublishFoodSendToWeChat(string shopId, string msg, int type)
        {
            List <string>        userList             = null;
            WeChatSendMsgContext weChatSendMsgContext = new WeChatSendMsgContext();

            if (type == 0)
            {
                //查询门店需要发送时间
                userList = Service.GetIQueryable <F_UserInfo>().Where(a => a.ShopInfoId == shopId)
                           .Select(a => a.WeCharUserId).ToList();
                if (userList.Count == 0)
                {
                    return;
                }
                var token = WeChatOperation.GetToken(EnumWeChatAppType.Food);
                //查询当前门店今天的订单用户发送
                var joinUser = string.Join("|", userList);
                weChatSendMsgContext.title       = "点餐提醒";
                weChatSendMsgContext.btntxt      = "点餐";
                weChatSendMsgContext.url         = "/ClientFood/Order";
                weChatSendMsgContext.description = "<div class=\"gray\">" + DateTime.Now.ToString("yyyy-MM-dd") +
                                                   "</div> <div class=\"normal\">" + msg + "</div>";
                if (WeChatOperation.SendMsg(token, joinUser, EnumWeChatAppType.Food, weChatSendMsgContext))
                {
                    loger.LogInformation("发送成功!");
                }
                else
                {
                    loger.LogInformation("发送失败!");
                }
            }
            else if (type == 1)
            {
                //查询点过餐品的成员信息
                var q = from a in Service.GetIQueryable <F_Order>()
                        join b in Service.GetIQueryable <F_OrderInfo>() on a.OrderCode equals b.OrderCode
                        join c in Service.GetIQueryable <F_PublishFood>() on b.PublishFoodId equals c.Id
                        join d in Service.GetIQueryable <F_UserInfo>() on a.UserInfoId equals d.Id
                        where c.ShopInfoId == shopId && a.CreateTime >= DateTime.Now.Date &&
                        a.CreateTime < DateTime.Now.Date.AddDays(1) && a.Status != 4
                        select d.WeCharUserId;
                userList = q.ToList();
                if (userList.Count == 0)
                {
                    return;
                }
                var token    = WeChatOperation.GetToken(EnumWeChatAppType.Food);
                var joinUser = string.Join("|", userList);
                weChatSendMsgContext.title       = "取餐提醒";
                weChatSendMsgContext.btntxt      = "取餐详情";
                weChatSendMsgContext.url         = "/ClientFood/ScanCode?day=" + DateTime.Now.ToString("yyyy-MM-dd");
                weChatSendMsgContext.description = "<div class=\"gray\">" + DateTime.Now.ToString("yyyy-MM-dd") +
                                                   "</div> <div class=\"normal\">" + msg + "</div>";
                if (WeChatOperation.SendMsg(token, joinUser, EnumWeChatAppType.Food, weChatSendMsgContext))
                {
                    loger.LogInformation("发送成功!");
                }
                else
                {
                    loger.LogInformation("发送失败!");
                }
            }
            else if (type == 2)
            {
                //查询部门
                var q = from a in Service.GetIQueryable <F_Order>()
                        join b in Service.GetIQueryable <F_OrderInfo>() on a.OrderCode equals b.OrderCode
                        join c in Service.GetIQueryable <F_PublishFood>() on b.PublishFoodId equals c.Id
                        join d in Service.GetIQueryable <F_UserInfo>() on a.UserInfoId equals d.Id
                        join e in Service.GetIQueryable <Base_DepartmentRelation>() on d.FullDepartment equals e.Department
                        into de
                        from e in de.DefaultIfEmpty()
                        where c.ShopInfoId == shopId && a.CreateTime >= DateTime.Now.Date &&
                        a.CreateTime < DateTime.Now.Date.AddDays(1) && a.Status != 4
                        select new
                {
                    d.WeCharUserId,
                    e.OldDepartment,
                    d.FullDepartment,
                    d.UserName,
                    c.FoodName,
                    a.TakeFoodName,
                    a.TakeFoodCode
                };
                var queryList = q.ToList();
                if (queryList.Count == 0)
                {
                    return;
                }
                var token = WeChatOperation.GetToken(EnumWeChatAppType.Food);
                //根据部门发送
                queryList.GroupBy(a => a.OldDepartment ?? a.FullDepartment).ForEach(a =>
                {
                    //随机抽取一个,哈哈哈
                    var randMan = a.FirstOrDefault()?.TakeFoodName;
                    weChatSendMsgContext.title  = "取餐提醒";
                    weChatSendMsgContext.btntxt = "取餐详情";
                    weChatSendMsgContext.url    = "/ClientFood/ScanCode?day=" + DateTime.Now.ToString("yyyy-MM-dd");
                    //var foodList = a.Select(c => c.UserName + "-" + c.FoodName).ToList();
                    //var foodName = string.Join(",", foodList);
                    var foodList = a.GroupBy(c => c.FoodName).Select(c => c.Key + "*" + c.Count());
                    var foodName = string.Join(",", foodList);
                    weChatSendMsgContext.description =
                        "<div class=\"gray\">" + DateTime.Now.ToString("yyyy-MM-dd") + "</div>" +
                        "<div>您已被随机抽取为本部门领餐:</div>" +
                        "<div class=\"normal\">部门名称:" + a.Key + "</div>" +
                        "<div class=\"normal\">取餐码: A" + a.FirstOrDefault()?.TakeFoodCode + " </div>" +
                        "<div class=\"highlight\">共 " + a.ToList().Count + " 份</div>" +
                        "<div>菜品名称:" + foodName + "</div>";
                    if (WeChatOperation.SendMsg(token, a.FirstOrDefault(b => b.UserName == randMan)?.WeCharUserId,
                                                EnumWeChatAppType.Food, weChatSendMsgContext))
                    {
                        loger.LogInformation("发送成功!");
                    }
                    else
                    {
                        loger.LogInformation("发送失败!");
                    }

                    //发送部门其他人员
                    var joinList = a.Where(c => c.UserName != randMan).Select(c => c.WeCharUserId).ToList();
                    if (joinList.Count > 0)
                    {
                        var joinUser                     = string.Join("|", joinList);
                        weChatSendMsgContext.url         = "/ClientFood/ScanCode?day=" + DateTime.Now.ToString("yyyy-MM-dd");
                        weChatSendMsgContext.description =
                            "<div class=\"gray\">" + DateTime.Now.ToString("yyyy-MM-dd") +
                            "</div> <div class=\"normal\">已随机抽取您部门的 " + randMan +
                            " 取餐</div>";
                        if (WeChatOperation.SendMsg(token, joinUser, EnumWeChatAppType.Food, weChatSendMsgContext))
                        {
                            loger.LogInformation("发送成功!");
                        }
                        else
                        {
                            loger.LogInformation("发送失败!");
                        }
                    }
                });
            }
        }
예제 #2
0
 /// <summary>
 /// 发送企业微信消息
 /// </summary>
 /// <param name="token">token</param>
 /// <param name="userList">指定接收消息的成员,成员ID列表(多个接收者用‘|’分隔,最多支持1000个)。特殊情况:指定为”@all”,则向该企业应用的全部成员发送</param>
 /// <param name="agentid">企业应用的id,整型。企业内部开发,可在应用的设置页面查看</param>
 /// <param name="msgContent">消息内容,最长不超过2048个字节,超过将截断(支持id转译)</param>
 /// <returns></returns>
 public static bool SendMsg(string token, string userList, EnumWeChatAppType app, WeChatSendMsgContext weChatSendMsgContext)
 {
     try
     {
         WeChatSendMsg weChatSendMsg = new WeChatSendMsg();
         weChatSendMsgContext.url = autoInfoList.FirstOrDefault(a => a.AppId == (int)app)?.Url + weChatSendMsgContext.url;
         Dictionary <string, object> dic = new Dictionary <string, object>
         {
             { "touser", userList },
             { "msgtype", "textcard" },
             { "agentid", autoInfoList.FirstOrDefault(a => a.AppId == (int)app)?.AgentId },
             { "textcard", weChatSendMsgContext }
         };
         string url        = SendMssage + "?access_token=" + token;
         string resultJson = HttpHelper.PostData(url, dic, contentType: ContentType.Json);
         WeChatSendMsgResult weChatSendMsgResult = resultJson.ToObject <WeChatSendMsgResult>();
         if (weChatSendMsgResult.errcode != "0")
         {
             LogHelper.WriteLog_LocalTxt(resultJson);
             logger?.LogWarning(resultJson);
             return(false);
         }
         return(true);
     }
     catch (Exception e)
     {
         LogHelper.WriteLog_LocalTxt(e.Message);
         return(false);
     }
 }