using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Edu.Cache.User; using Edu.Common; using Edu.Common.API; using Edu.Common.Enum.Finance; using Edu.Common.Enum.WeChat; using Edu.Common.Plugin; using Edu.Model.ViewModel.WeChat; using Edu.Module.QYWeChat; using Edu.Module.User; using Edu.ThirdCore.QYWinXin; using Edu.WebApi.Filter; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Cors; using Microsoft.AspNetCore.Mvc; using Newtonsoft.Json.Linq; namespace Edu.WebApi.Controllers.QYWeChat { /// /// 企业微信接口 /// [Route("api/[controller]/[action]")] [ApiExceptionFilter] [ApiController] [EnableCors("AllowCors")] public class QYWeChatController : BaseController { /// /// 企业微信处理类对象 /// private readonly QYWeChatModule weChatModule = new QYWeChatModule(); private readonly GroupModule groupModule = new GroupModule(); #region 微信配置 /// /// 获取活动配置 /// /// [HttpPost] public ApiResult GetWeChatConfigInfo() { var userInfo = base.UserInfo; var model = weChatModule.GetWeChatConfigModel(new RB_WeChat_Config_ViewModel() { Group_Id = userInfo.Group_Id }); if (model == null) { model = new Model.CacheModel.WorkChatConfig(); } return ApiResult.Success("", new { model.Id, model.Name, model.WX_CorpId, model.Social_Code, model.Employee_Secret, model.Contact_Secret, model.TelEvent_CallBack, model.Token, model.Encoding_Aes_Key, model.EmpEvent_CallBack, model.Enable, model.DeptEmpEnable, model.UpdateBy, UpdateByName = UserReidsCache.GetUserLoginInfo(model.UpdateBy)?.AccountName ?? "", UpdateTime = model.UpdateTime.ToString("yyyy-MM-dd HH:mm") }); } /// /// 新增/修改 活动配置 /// /// [HttpPost] public ApiResult SetWeChatConfig() { var userInfo = base.UserInfo; RB_WeChat_Config_ViewModel demdoel = JsonHelper.DeserializeObject(RequestParm.Msg.ToString()); demdoel.Group_Id = userInfo.Group_Id; demdoel.CreateBy = userInfo.Id; demdoel.CreateTime = DateTime.Now; demdoel.UpdateBy = userInfo.Id; demdoel.UpdateTime = DateTime.Now; demdoel.Token = Config.ReadConfigKey("QYWeiChatToken"); demdoel.Encoding_Aes_Key = Config.ReadConfigKey("QYWeiChatEncodingAESKey"); string msg = weChatModule.SetWeChatConfig(demdoel); if (msg == "") { return ApiResult.Success(); } else { return ApiResult.Failed(msg); } } #endregion #region 同步部门 /// /// 同步教育部门 /// /// [HttpPost] public ApiResult SetSyncEduDepartment() { var userInfo = base.UserInfo; string msg = weChatModule.SetSyncEduDepartment(userInfo); if (msg == "") { return ApiResult.Success(); } else { return ApiResult.Failed(msg); } } #endregion #region 同步人员 /// /// 同步教育人员 /// /// [HttpPost] public ApiResult SetSynvEduEmployee() { var userInfo = base.UserInfo; string msg = weChatModule.SetSynvEduEmployee(userInfo); if (msg == "") { return ApiResult.Success(); } else { return ApiResult.Failed(msg); } } #endregion #region 客户转移 /// /// 客户继承 /// /// [HttpPost] public ApiResult SetUserCoustomerTransfer() { var userInfo = base.UserInfo; JObject parms = JObject.Parse(base.RequestParm.Msg.ToString()); int TransferUserId = parms.GetInt("TransferUserId", 0);//转交人 int ReceiveUserId = parms.GetInt("ReceiveUserId", 0);//接收人 int CustomerTransfer = parms.GetInt("CustomerTransfer", 0);//是否客户转移 int ChannelTransfer = parms.GetInt("ChannelTransfer", 0);//是否转移渠道码用户配置 if (TransferUserId <= 0) { return ApiResult.ParamIsNull("请传递转交人"); } if (ReceiveUserId <= 0) { return ApiResult.ParamIsNull("请传递接收人"); } if (CustomerTransfer != 1 && ChannelTransfer != 1) { return ApiResult.ParamIsNull("请选择需要转移的对象"); } string msg = weChatModule.SetUserCoustomerTransfer(TransferUserId, ReceiveUserId, CustomerTransfer, ChannelTransfer, userInfo); if (msg == "") { return ApiResult.Success(); } else { return ApiResult.Failed(msg); } } /// /// 获取离职用户客服列表 /// /// [HttpPost] public ApiResult GetLeaveUserClientList() { var userInfo = base.UserInfo; var RList = weChatModule.GetLeaveUserClientList(userInfo); return ApiResult.Success("", RList); } /// /// 离职用户 客户转移 /// /// public ApiResult SetLeaveUserCustomerTransfer() { var userInfo = base.UserInfo; JObject parms = JObject.Parse(base.RequestParm.Msg.ToString()); int TransferUserId = parms.GetInt("TransferUserId", 0);//转交人 int ReceiveUserId = parms.GetInt("ReceiveUserId", 0);//接收人 string ClientList = parms.GetStringValue("ClientList");//客户Id列表 if (TransferUserId <= 0) { return ApiResult.ParamIsNull("请传递转交人"); } if (ReceiveUserId <= 0) { return ApiResult.ParamIsNull("请传递接收人"); } if (string.IsNullOrEmpty(ClientList)) { return ApiResult.ParamIsNull("请传递客户列表"); } string msg = weChatModule.SetLeaveUserCustomerTransfer(TransferUserId, ReceiveUserId, ClientList, userInfo); if (msg == "") { return ApiResult.Success(); } else { return ApiResult.Failed(msg); } } #endregion #region 素材管理 /// /// 获取素材分组分页列表 /// /// [HttpPost] public ApiResult GetWeChatMediumGroupPageList() { var userInfo = base.UserInfo; var pageModel = JsonHelper.DeserializeObject(base.RequestParm.Msg.ToString()); var demodel = JsonHelper.DeserializeObject(base.RequestParm.Msg.ToString()); demodel.Group_Id = userInfo.Group_Id; var list = weChatModule.GetWeChatMediumGroupPageList(pageModel.PageIndex, pageModel.PageSize, out long count, demodel); pageModel.Count = Convert.ToInt32(count); pageModel.PageData = list.Select(x => new { x.Id, x.Name, x.Sort, x.UpdateBy, UpdateByName = UserReidsCache.GetUserLoginInfo(x.UpdateBy)?.AccountName ?? "", UpdateTime = x.UpdateTime.ToString("yyyy-MM-dd HH:mm") }); return ApiResult.Success("", pageModel); } /// /// 获取素材分组列表 /// /// [HttpPost] public ApiResult GetWeChatMediumGroupList() { var userInfo = base.UserInfo; var demodel = JsonHelper.DeserializeObject(base.RequestParm.Msg.ToString()); demodel.Group_Id = userInfo.Group_Id; var list = weChatModule.GetWeChatMediumGroupList(demodel); return ApiResult.Success("", list.Select(x => new { x.Id, x.Name, x.Sort, })); } /// /// 新增修改素材分组 /// /// [HttpPost] public ApiResult SetWeChatMediumGroup() { var userInfo = base.UserInfo; var demodel = JsonHelper.DeserializeObject(base.RequestParm.Msg.ToString()); if (string.IsNullOrEmpty(demodel.Name)) { return ApiResult.ParamIsNull("请传递分组名称"); } demodel.Group_Id = userInfo.Group_Id; demodel.Status = 0; demodel.CreateBy = userInfo.Id; demodel.CreateTime = DateTime.Now; demodel.UpdateBy = userInfo.Id; demodel.UpdateTime = DateTime.Now; string msg = weChatModule.SetWeChatMediumGroup(demodel); if (msg == "") { return ApiResult.Success(); } else { return ApiResult.Failed(); } } /// /// 删除素材分组 /// /// [HttpPost] public ApiResult DelWeChatMediumGroup() { var userInfo = base.UserInfo; JObject parms = JObject.Parse(base.RequestParm.Msg.ToString()); int MediumId = parms.GetInt("MediumId", 0); if (MediumId <= 0) { return ApiResult.ParamIsNull(); } string msg = weChatModule.DelWeChatMediumGroup(MediumId, userInfo); if (msg == "") { return ApiResult.Success(); } else { return ApiResult.Failed(msg); } } /// /// 获取素材分页列表 /// /// [HttpPost] public ApiResult GetWeChatMediumPageList() { var userInfo = base.UserInfo; var pageModel = JsonHelper.DeserializeObject(base.RequestParm.Msg.ToString()); var demodel = JsonHelper.DeserializeObject(base.RequestParm.Msg.ToString()); demodel.Group_Id = userInfo.Group_Id; var list = weChatModule.GetWeChatMediumPageList(pageModel.PageIndex, pageModel.PageSize, out long count, demodel); pageModel.Count = Convert.ToInt32(count); pageModel.PageData = list.Select(x => new { x.Id, x.MediaGroupId, x.MediumGroupName, x.Media_Id, x.Type, TypeName = x.Type.ToName(), x.Is_Sync, x.TextModel, x.ImageModel, x.ImgTextModel, x.AudioModel, x.VideoModel, x.AppletModel, x.FileModel, x.UpdateBy, UpdateByName = UserReidsCache.GetUserLoginInfo(x.UpdateBy)?.AccountName ?? "", UpdateTime = x.UpdateTime.ToString("yyyy-MM-dd HH:mm") }); return ApiResult.Success("", pageModel); } /// /// 保存素材 /// /// [HttpPost] public ApiResult SetWeChatMediumInfo() { var userInfo = base.UserInfo; var demodel = JsonHelper.DeserializeObject(base.RequestParm.Msg.ToString()); if (demodel.MediaGroupId < 0) { return ApiResult.ParamIsNull("请传递分组id"); } switch (demodel.Type) { case Common.Enum.WeChat.MediumTypeEnum.Text: if (demodel.TextModel == null) { return ApiResult.ParamIsNull("请传递文本信息"); } demodel.Content = JsonHelper.Serialize(demodel.TextModel); break; case Common.Enum.WeChat.MediumTypeEnum.Image: if (demodel.ImageModel == null) { return ApiResult.ParamIsNull("请传递图片信息"); } demodel.Content = JsonHelper.Serialize(demodel.ImageModel); break; case Common.Enum.WeChat.MediumTypeEnum.ImgText: if (demodel.ImgTextModel == null) { return ApiResult.ParamIsNull("请传递图文信息"); } demodel.Content = JsonHelper.Serialize(demodel.ImgTextModel); break; case Common.Enum.WeChat.MediumTypeEnum.Audio: if (demodel.AudioModel == null) { return ApiResult.ParamIsNull("请传递音频信息"); } demodel.Content = JsonHelper.Serialize(demodel.AudioModel); break; case Common.Enum.WeChat.MediumTypeEnum.Video: if (demodel.VideoModel == null) { return ApiResult.ParamIsNull("请传递视频信息"); } demodel.Content = JsonHelper.Serialize(demodel.VideoModel); break; case Common.Enum.WeChat.MediumTypeEnum.Applet: if (demodel.AppletModel == null) { return ApiResult.ParamIsNull("请传递小程序信息"); } demodel.Content = JsonHelper.Serialize(demodel.AppletModel); break; case Common.Enum.WeChat.MediumTypeEnum.File: if (demodel.FileModel == null) { return ApiResult.ParamIsNull("请传递文件信息"); } demodel.Content = JsonHelper.Serialize(demodel.FileModel); break; } if (demodel.Id > 0) { if (demodel.Type != Common.Enum.WeChat.MediumTypeEnum.Text && demodel.Type != Common.Enum.WeChat.MediumTypeEnum.ImgText && demodel.Type != Common.Enum.WeChat.MediumTypeEnum.Applet) { return ApiResult.Failed("无法修改"); } } demodel.Group_Id = userInfo.Group_Id; demodel.Status = 0; demodel.CreateBy = userInfo.Id; demodel.CreateTime = DateTime.Now; demodel.UpdateBy = userInfo.Id; demodel.UpdateTime = DateTime.Now; string msg = weChatModule.SetWeChatMediumInfo(demodel, out int MediumId); if (msg == "") { return ApiResult.Success("", MediumId); } else { return ApiResult.Failed(); } } /// /// 移动素材 /// /// [HttpPost] public ApiResult SetWecharMediumMore() { var userInfo = base.UserInfo; JObject parms = JObject.Parse(base.RequestParm.Msg.ToString()); string MediumIds = parms.GetStringValue("MediumIds");//素材ids int MediumGroupId = parms.GetInt("MediumGroupId", 0);//新分组id if (string.IsNullOrEmpty(MediumIds)) { return ApiResult.ParamIsNull("请传递素材ids"); } List MediumIdList = JsonHelper.DeserializeObject>("[" + MediumIds + "]"); if (MediumGroupId <= 0) { return ApiResult.ParamIsNull("请传递分组id"); } string msg = weChatModule.SetWecharMediumMore(MediumIdList, MediumGroupId, userInfo); if (msg == "") { return ApiResult.Success(); } else { return ApiResult.Failed(msg); } } /// /// 删除素材 /// /// [HttpPost] public ApiResult DelWecharMediumInfo() { var userInfo = base.UserInfo; JObject parms = JObject.Parse(base.RequestParm.Msg.ToString()); string MediumIds = parms.GetStringValue("MediumIds");//素材ids if (string.IsNullOrEmpty(MediumIds)) { return ApiResult.ParamIsNull("请传递素材ids"); } List MediumIdList = JsonHelper.DeserializeObject>("[" + MediumIds + "]"); string msg = weChatModule.DelWecharMediumMore(MediumIdList, userInfo); if (msg == "") { return ApiResult.Success(); } else { return ApiResult.Failed(msg); } } /// /// 获取枚举列表 /// /// [HttpPost] public ApiResult GetMediumTypeEnumList() { var list = EnumHelper.EnumToList(typeof(MediumTypeEnum)); return ApiResult.Success("", list.OrderBy(x => x.Id).Select(x => new { x.Name, x.Id })); } #endregion #region 欢迎语管理 /// /// 获取欢迎语分页列表 /// /// [HttpPost] public ApiResult GetWeChatWelcomesPageList() { var userInfo = base.UserInfo; var pageModel = JsonHelper.DeserializeObject(base.RequestParm.Msg.ToString()); var demodel = JsonHelper.DeserializeObject(base.RequestParm.Msg.ToString()); demodel.Group_Id = userInfo.Group_Id; var list = weChatModule.GetWeChatWelcomesPageList(pageModel.PageIndex, pageModel.PageSize, out long count, demodel); pageModel.Count = Convert.ToInt32(count); pageModel.PageData = list.Select(x => new { x.Id, x.UserIdList, x.Content, x.MediumIds, x.Type, MediumList = x.MediumList?.Select(x => new { x?.Id, x?.Type, TypeName = x?.Type.ToName(), x?.ImageModel, x?.ImgTextModel, x?.AppletModel, x?.VideoModel, x?.FileModel }), x.UpdateBy, UpdateByName = UserReidsCache.GetUserLoginInfo(x.UpdateBy)?.AccountName ?? "", UpdateTime = x.UpdateTime.ToString("yyyy-MM-dd HH:mm") }); return ApiResult.Success("", pageModel); } /// /// 获取欢迎语详情 /// /// [HttpPost] public ApiResult GetWeChatWelcomesInfo() { var userInfo = base.UserInfo; JObject parms = JObject.Parse(base.RequestParm.Msg.ToString()); int WelcomeId = parms.GetInt("WelcomeId", 0); var model = weChatModule.GetWeChatWelcomesInfo(WelcomeId, userInfo.Group_Id); if (model == null) { return ApiResult.Failed("欢迎语不存在,请核实后再试"); } return ApiResult.Success("", new { model.Id, model.UserIdList, model.Content, model.MediumIds, model.Type, MediumList = model.MediumList?.Select(x => new { x?.Id, x?.Type, TypeName = x?.Type.ToName(), x?.ImageModel, x?.ImgTextModel, x?.AppletModel, x?.VideoModel, x?.FileModel }), model.UpdateBy }); } /// /// 保存欢迎语 /// /// [HttpPost] public ApiResult SetWeChatWelcomesInfo() { var userInfo = base.UserInfo; var demodel = JsonHelper.DeserializeObject(base.RequestParm.Msg.ToString()); if (demodel.UserIdList == null || !demodel.UserIdList.Any()) { return ApiResult.ParamIsNull("请选择人员"); } if (demodel.Type > 1) { if (string.IsNullOrEmpty(demodel.MediumIds)) { return ApiResult.ParamIsNull("请传递素材Id"); } } demodel.UserIds = string.Join(",", demodel.UserIdList); demodel.Group_Id = userInfo.Group_Id; demodel.Status = 0; demodel.CreateBy = userInfo.Id; demodel.CreateTime = DateTime.Now; demodel.UpdateBy = userInfo.Id; demodel.UpdateTime = DateTime.Now; string msg = weChatModule.SetWeChatWelcomesInfo(demodel); if (msg == "") { return ApiResult.Success(); } else { return ApiResult.Failed(); } } /// /// 删除欢迎语 /// /// [HttpPost] public ApiResult DelWechatWelcomesInfo() { var userInfo = base.UserInfo; JObject parms = JObject.Parse(base.RequestParm.Msg.ToString()); int WelcomesId = parms.GetInt("WelcomesId", 0);//欢迎语id if (WelcomesId <= 0) { return ApiResult.ParamIsNull("请传递欢迎语id"); } string msg = weChatModule.DelWechatWelcomesInfo(WelcomesId, userInfo); if (msg == "") { return ApiResult.Success(); } else { return ApiResult.Failed(msg); } } #endregion #region 客户标签 /// /// 根据多个ID获取对应的标签信息 /// /// /// public ApiResult GetLabelListByIds() { var param = JObject.Parse(base.RequestParm.Msg.ToString()); string ids = param.GetStringValue("ids"); if (!string.IsNullOrEmpty(ids)) { var result = weChatModule.GetLabelListByIds(ids); return ApiResult.Success(message: "OK", data: result); } else { return ApiResult.Failed("参数信息错误"); } } /// /// 获取企业标签列表 /// /// [HttpPost] public ApiResult GetWeChatLableList() { var userInfo = base.UserInfo; var demodel = JsonHelper.DeserializeObject(base.RequestParm.Msg.ToString()); demodel.Group_Id = userInfo.Group_Id; var list = weChatModule.GetWeChatLableList(demodel); return ApiResult.Success("", list.OrderByDescending(x => x.Sort).ThenBy(x => x.Id).Select(x => new { x.Id, x.WXLableId, x.ParentId, x.Name, x.Sort, ChildList = x.ChildList.OrderByDescending(x => x.Sort).ThenBy(x => x.Id).Select(z => new { z.Id, z.WXLableId, z.ParentId, z.Name, z.Sort }) })); } /// /// 新增修改标签 /// /// [HttpPost] public ApiResult SetWeChatLable() { var userInfo = base.UserInfo; var demodel = JsonHelper.DeserializeObject(base.RequestParm.Msg.ToString()); if (string.IsNullOrEmpty(demodel.Name)) { return ApiResult.ParamIsNull("请输入分组/标签名称"); } if (demodel.Id == 0 && demodel.ParentId == 0) { if (demodel.ChildList == null || !demodel.ChildList.Any()) { return ApiResult.ParamIsNull("新增分组必须至少添加一个标签"); } foreach (var item in demodel.ChildList) { if (string.IsNullOrEmpty(item.Name)) { return ApiResult.ParamIsNull("请输入标签名称"); } } } demodel.Group_Id = userInfo.Group_Id; demodel.Status = 0; demodel.CreateBy = userInfo.Id; demodel.CreateTime = DateTime.Now; demodel.UpdateBy = userInfo.Id; demodel.UpdateTime = DateTime.Now; string msg = weChatModule.SetWeChatLable(demodel); if (msg == "") { return ApiResult.Success(); } else { return ApiResult.Failed(); } } /// /// 删除标签 /// /// [HttpPost] public ApiResult DelWeChatLable() { var userInfo = base.UserInfo; JObject parms = JObject.Parse(base.RequestParm.Msg.ToString()); int LableId = parms.GetInt("LableId", 0); if (LableId <= 0) { return ApiResult.ParamIsNull("请传递标签Id"); } string msg = weChatModule.DelWeChatLable(LableId, userInfo); if (msg == "") { return ApiResult.Success(); } else { return ApiResult.Failed(msg); } } /// /// 同步企业微信标签 /// /// [HttpPost] public ApiResult SetSyncWeChatLable() { var userInfo = base.UserInfo; string msg = weChatModule.SetSyncWeChatLable(userInfo); if (msg == "") { return ApiResult.Success(); } else { return ApiResult.Failed(msg); } } #endregion #region 渠道活码 #region 渠道分组 /// /// 获取渠道分组分页列表 /// /// [HttpPost] public ApiResult GetWeChatChannelGroupPageList() { var userInfo = base.UserInfo; var pageModel = JsonHelper.DeserializeObject(base.RequestParm.Msg.ToString()); var demodel = JsonHelper.DeserializeObject(base.RequestParm.Msg.ToString()); demodel.Group_Id = userInfo.Group_Id; var list = weChatModule.GetWeChatChannelGroupPageList(pageModel.PageIndex, pageModel.PageSize, out long count, demodel); pageModel.Count = Convert.ToInt32(count); pageModel.PageData = list.Select(x => new { x.Id, x.Name, x.Sort, x.UpdateBy, UpdateByName = UserReidsCache.GetUserLoginInfo(x.UpdateBy)?.AccountName ?? "", UpdateTime = x.UpdateTime.ToString("yyyy-MM-dd HH:mm") }); return ApiResult.Success("", pageModel); } /// /// 获取渠道分组列表 /// /// [HttpPost] public ApiResult GetWeChatChannelGroupList() { var userInfo = base.UserInfo; var demodel = JsonHelper.DeserializeObject(base.RequestParm.Msg.ToString()); demodel.Group_Id = userInfo.Group_Id; var list = weChatModule.GetWeChatChannelGroupList(demodel); return ApiResult.Success("", list.Select(x => new { x.Id, x.Name, x.Sort, })); } /// /// 新增修改渠道分组 /// /// [HttpPost] public ApiResult SetWeChatChannelGroup() { var userInfo = base.UserInfo; var demodel = JsonHelper.DeserializeObject(base.RequestParm.Msg.ToString()); if (string.IsNullOrEmpty(demodel.Name)) { return ApiResult.ParamIsNull("请传递分组名称"); } demodel.Group_Id = userInfo.Group_Id; demodel.Status = 0; demodel.CreateBy = userInfo.Id; demodel.CreateTime = DateTime.Now; demodel.UpdateBy = userInfo.Id; demodel.UpdateTime = DateTime.Now; string msg = weChatModule.SetWeChatChannelGroup(demodel); if (msg == "") { return ApiResult.Success(); } else { return ApiResult.Failed(msg); } } /// /// 删除渠道分组 /// /// [HttpPost] public ApiResult DelWeChatChannelGroup() { var userInfo = base.UserInfo; JObject parms = JObject.Parse(base.RequestParm.Msg.ToString()); int MediumId = parms.GetInt("GroupId", 0); if (MediumId <= 0) { return ApiResult.ParamIsNull(); } string msg = weChatModule.DelWeChatChannelGroup(MediumId, userInfo); if (msg == "") { return ApiResult.Success(); } else { return ApiResult.Failed(msg); } } #endregion /// /// 获取渠道活码分页列表 /// /// [HttpPost] public ApiResult GetWeChatChannelPageList() { var userInfo = base.UserInfo; var pageModel = JsonHelper.DeserializeObject(base.RequestParm.Msg.ToString()); var demodel = JsonHelper.DeserializeObject(base.RequestParm.Msg.ToString()); demodel.Group_Id = userInfo.Group_Id; var list = weChatModule.GetWeChatChannelPageList(pageModel.PageIndex, pageModel.PageSize, out long count, demodel); pageModel.Count = Convert.ToInt32(count); pageModel.PageData = list.Select(x => new { x.Id, x.Name, x.Type, x.WXQRCode, x.ChannelGroupId, x.ChannelGroupName, x.CustomerNum, x.LabelList, x.SkipVerify, x.UpdateBy, UpdateByName = UserReidsCache.GetUserLoginInfo(x.UpdateBy)?.AccountName ?? "", UpdateTime = x.UpdateTime.ToString("yyyy-MM-dd HH:mm") }); return ApiResult.Success("", pageModel); } /// /// 获取渠道活码详情 /// /// [HttpPost] public ApiResult GetWeChatChannelInfo() { var userInfo = base.UserInfo; JObject parms = JObject.Parse(base.RequestParm.Msg.ToString()); int ChannelId = parms.GetInt("ChannelId", 0); if (ChannelId <= 0) { return ApiResult.ParamIsNull("请传递活码Id"); } var rmodel = weChatModule.GetWeChatChannelInfo(ChannelId, userInfo); if (rmodel == null) { return ApiResult.Failed("渠道活码不存在"); } return ApiResult.Success("", new { rmodel.Id, rmodel.ChannelGroupId, rmodel.ChannelGroupName, rmodel.Name, rmodel.SkipVerify, rmodel.LableIds, rmodel.LabelIdList, rmodel.Type, WeekList = rmodel.WeekList?.Select(z => new { z.Id, z.Week, z.IsDefault, z.StartHours, z.EndHours, z.EmpList, z.DeptList }), rmodel.SpecialDateEnable, SpecialWeekList = rmodel.SpecialWeekList?.Select(z => new { z.Id, StartDate = z.StartDate.Value.ToString("yyyy-MM-dd"), EndDate = z.EndDate.Value.ToString("yyyy-MM-dd"), z.IsDefault, z.StartHours, z.EndHours, z.EmpList, z.DeptList }), rmodel.EmpAddLimit, LimitList = rmodel.LimitList?.Select(x => new { x.Id, x.EmpId, x.EmpName, x.LimitNum }), rmodel.EmpBackUp, rmodel.EmpBackUpList, rmodel.WelcomeEnable, WelcomeList = rmodel.WelcomeList?.Select(x => new { x.Id, x.Content, x.MediumIds, MediumList = x.MediumList?.Select(x => new { x?.Id, x?.Type, TypeName = x?.Type.ToName(), x?.ImageModel, x?.ImgTextModel, x?.AppletModel, x?.VideoModel, x?.FileModel }) }), rmodel.WelcomeWeekEnable, WelcomeWeekList = rmodel.WelcomeWeekList?.Select(x => new { x.Id, x.Weeks, x.StartHours, x.EndHours, x.Content, x.MediumIds, MediumList = x.MediumList?.Select(x => new { x?.Id, x?.Type, TypeName = x?.Type.ToName(), x?.ImageModel, x?.ImgTextModel, x?.AppletModel, x?.VideoModel, x?.FileModel }) }), rmodel.WelcomeSpecialEnable, WelcomeSpecialList = rmodel.WelcomeSpecialList?.Select(x => new { x.Id, StartDate = x.StartDate.Value.ToString("yyyy-MM-dd"), EndDate = x.EndDate.Value.ToString("yyyy-MM-dd"), x.StartHours, x.EndHours, x.Content, x.MediumIds, MediumList = x.MediumList?.Select(x => new { x?.Id, x?.Type, TypeName = x?.Type.ToName(), x?.ImageModel, x?.ImgTextModel, x?.AppletModel, x?.VideoModel, x?.FileModel }) }) }); } /// /// 获取渠道活码详情 /// /// [HttpPost] public ApiResult GetWeChatChannelInfo_V2() { var userInfo = base.UserInfo; JObject parms = JObject.Parse(base.RequestParm.Msg.ToString()); int ChannelId = parms.GetInt("ChannelId", 0); if (ChannelId <= 0) { return ApiResult.ParamIsNull("请传递活码Id"); } var rmodel = weChatModule.GetWeChatChannelInfo(ChannelId, userInfo); if (rmodel == null) { return ApiResult.Failed("渠道活码不存在"); } return ApiResult.Success("", new { rmodel.Id, rmodel.ChannelGroupId, rmodel.ChannelGroupName, rmodel.Name, rmodel.SkipVerify, rmodel.LableIds, rmodel.LabelIdList, rmodel.Type, WeekList = rmodel.WeekList?.OrderBy(x => x.StartHours).Select(z => new { z.Id, z.Week, z.IsDefault, z.StartHours, z.EndHours, z.EmpList, z.DeptList }), rmodel.SpecialDateEnable, SpecialWeekList = rmodel.SpecialWeekList?.GroupBy(x => new { x.StartDate, x.EndDate }).OrderBy(x => x.Key.StartDate).Select(z => new { StartDate = z.Key.StartDate.Value.ToString("yyyy-MM-dd"), EndDate = z.Key.EndDate.Value.ToString("yyyy-MM-dd"), ChlidList = z.OrderBy(x => x.StartHours).Select(q => new { q.Id, q.IsDefault, q.StartHours, q.EndHours, q.EmpList, q.DeptList }) }), rmodel.EmpAddLimit, LimitList = rmodel.LimitList?.OrderBy(x => x.Id).Select(x => new { x.Id, x.EmpId, x.EmpName, x.LimitNum }), rmodel.EmpBackUp, rmodel.EmpBackUpList, rmodel.WelcomeEnable, WelcomeList = rmodel.WelcomeList?.Select(x => new { x.Id, x.Content, x.MediumIds, MediumList = x.MediumList?.Select(x => new { x?.Id, x?.Type, TypeName = x?.Type.ToName(), x?.ImageModel, x?.ImgTextModel, x?.AppletModel, x?.VideoModel, x?.FileModel }) }), rmodel.WelcomeWeekEnable, WelcomeWeekList = rmodel.WelcomeWeekList?.GroupBy(x => new { x.Weeks }).Select(x => new { x.Key.Weeks, ChildList = x.OrderBy(x => x.StartHours).Select(x => new { x.Id, x.StartHours, x.EndHours, x.Content, x.MediumIds, MediumList = x.MediumList?.Select(x => new { x?.Id, x?.Type, TypeName = x?.Type.ToName(), x?.ImageModel, x?.ImgTextModel, x?.AppletModel, x?.VideoModel, x?.FileModel }) }) }), rmodel.WelcomeSpecialEnable, WelcomeSpecialList = rmodel.WelcomeSpecialList?.GroupBy(x => new { x.StartDate, x.EndDate }).OrderBy(x => x.Key.StartDate).Select(x => new { StartDate = x.Key.StartDate.Value.ToString("yyyy-MM-dd"), EndDate = x.Key.EndDate.Value.ToString("yyyy-MM-dd"), ChildList = x.OrderBy(x => x.StartHours).Select(x => new { x.Id, x.StartHours, x.EndHours, x.Content, x.MediumIds, MediumList = x.MediumList?.Select(x => new { x?.Id, x?.Type, TypeName = x?.Type.ToName(), x?.ImageModel, x?.ImgTextModel, x?.AppletModel, x?.VideoModel, x?.FileModel }) }) }) }); } /// /// 保存修改渠道活码 /// /// [HttpPost] public ApiResult SetWeChatChannelInfo() { var userInfo = base.UserInfo; RB_WeChat_Channel_ViewModel demodel = JsonHelper.DeserializeObject(base.RequestParm.Msg.ToString()); if (demodel.ChannelGroupId <= 0) { return ApiResult.ParamIsNull("请传递分组Id"); } if (string.IsNullOrEmpty(demodel.Name)) { return ApiResult.ParamIsNull("请输入渠道码的名称"); } if (demodel.SkipVerify <= 0) { return ApiResult.ParamIsNull("请选择自动添加好友类型"); } demodel.LableIds = ""; if (demodel.LabelIdList != null && demodel.LabelIdList.Any()) { demodel.LableIds = string.Join(",", demodel.LabelIdList); } if (demodel.Type <= 0) { return ApiResult.ParamIsNull("请选择渠道码类型"); } if (demodel.WeekList == null || !demodel.WeekList.Any()) { return ApiResult.ParamIsNull("请传递周期数据"); } foreach (var item in demodel.WeekList) { if ((item.EmpList == null || !item.EmpList.Any()) && (item.DeptList == null || !item.DeptList.Any())) { return ApiResult.Failed("周期数据传递有误"); } } for (int i = 0; i < 7; i++) { var nlist = demodel.WeekList.Where(x => x.Week == i).ToList(); if (!nlist.Any()) { return ApiResult.ParamIsNull("周期成员设置有误,亲核实后再试"); } if (!nlist.Where(x => x.IsDefault == 1).Any()) { return ApiResult.ParamIsNull("周期成员默认数据不存在,请核实后再试"); } } if (demodel.SpecialDateEnable == 1) { //启用特殊日期 if (demodel.SpecialWeekList == null || !demodel.SpecialWeekList.Any()) { return ApiResult.ParamIsNull("请传递特殊日期数据"); } foreach (var item in demodel.SpecialWeekList) { if ((item.EmpList == null || !item.EmpList.Any()) && (item.DeptList == null || !item.DeptList.Any())) { return ApiResult.Failed("特殊日期数据传递有误"); } } } if (demodel.EmpAddLimit == 1) { if (demodel.LimitList == null || !demodel.LimitList.Any()) { return ApiResult.ParamIsNull("请传递人员添加上限数据"); } if (string.IsNullOrEmpty(demodel.EmpBackUp)) { return ApiResult.ParamIsNull("请选择备用人员"); } } if (demodel.WelcomeEnable == 1) { if (demodel.WelcomeList == null || !demodel.WelcomeList.Any()) { return ApiResult.ParamIsNull("请传递通用欢迎语"); } } if (demodel.WelcomeWeekEnable == 1) { if (demodel.WelcomeWeekList == null || !demodel.WelcomeWeekList.Any()) { return ApiResult.ParamIsNull("请传递周期欢迎语"); } } if (demodel.WelcomeSpecialEnable == 1) { if (demodel.WelcomeSpecialList == null || !demodel.WelcomeSpecialList.Any()) { return ApiResult.ParamIsNull("请传递特殊日期欢迎语"); } } demodel.Group_Id = userInfo.Group_Id; demodel.Status = 0; demodel.CreateBy = userInfo.Id; demodel.CreateTime = DateTime.Now; demodel.UpdateBy = userInfo.Id; demodel.UpdateTime = DateTime.Now; string msg = weChatModule.SetWeChatChannelInfo(demodel); if (msg == "") { return ApiResult.Success(); } else { return ApiResult.Failed(msg); } } /// /// 修改渠道分组 /// /// [HttpPost] public ApiResult UpdateWeChatChannelGroup() { var userInfo = base.UserInfo; JObject parms = JObject.Parse(base.RequestParm.Msg.ToString()); int ChannelId = parms.GetInt("ChannelId", 0); int GroupId = parms.GetInt("GroupId", 0); if (ChannelId <= 0 || GroupId <= 0) { return ApiResult.ParamIsNull(); } string msg = weChatModule.UpdateWeChatChannelGroup(ChannelId, GroupId, userInfo); if (msg == "") { return ApiResult.Success(); } else { return ApiResult.Failed(msg); } } /// /// 获取渠道码添加的客户分页列表 /// /// [HttpPost] public ApiResult GetWeChatChannelCoustomerPageList() { var userInfo = base.UserInfo; ResultPageModel pageModel = JsonHelper.DeserializeObject(base.RequestParm.Msg.ToString()); RB_WeChat_ChannelRecord_ViewModel demodel = JsonHelper.DeserializeObject(base.RequestParm.Msg.ToString()); demodel.Group_Id = userInfo.Group_Id; demodel.Type = 1; var list = weChatModule.GetWeChatChannelCoustomerPageList(pageModel.PageIndex, pageModel.PageSize, out long count, demodel); pageModel.Count = Convert.ToInt32(count); int num = 1; pageModel.PageData = list.Select(x => new { Id = num++, x.EmpId, x.EmpName, x.DeptName, x.WorkEmpId, x.ExternalUserId, x.CustomerName, CreateTime = x.CreateTime.ToString("yyyy-MM-dd HH:mm") }); return ApiResult.Success("", pageModel); } #endregion #region 渠道码统计 /// /// 获取渠道码今日统计 /// /// [HttpPost] public ApiResult GetWeChatChannelStatisticsForDay() { var userInfo = base.UserInfo; JObject parms = JObject.Parse(base.RequestParm.Msg.ToString()); int ChannelId = parms.GetInt("ChannelId", 0); if (ChannelId <= 0) { return ApiResult.ParamIsNull(); } var robj = weChatModule.GetWeChatChannelStatisticsForDay(ChannelId, userInfo); return ApiResult.Success("", robj); } /// /// 渠道码曲线图统计 /// /// [HttpPost] public ApiResult GetWeChatChannelStatistics() { var userInfo = base.UserInfo; JObject parms = JObject.Parse(base.RequestParm.Msg.ToString()); int ChannelId = parms.GetInt("ChannelId", 0); int Type = parms.GetInt("Type", 0);//类型 1按日 2按周 3按月 (周:最近一周 月:最近一年) string StartTime = parms.GetStringValue("StartTime"); string EndTime = parms.GetStringValue("EndTime"); if (ChannelId <= 0) { return ApiResult.ParamIsNull(); } if (Type == 1) { if (string.IsNullOrEmpty(StartTime)) { return ApiResult.ParamIsNull("请传递开始时间"); } if (string.IsNullOrEmpty(EndTime)) { return ApiResult.ParamIsNull("请传递结束时间"); } } var robj = weChatModule.GetWeChatChannelStatistics(ChannelId, Type, StartTime, EndTime, userInfo); return ApiResult.Success("", robj); } /// /// 获取统计详细数据 /// /// [HttpPost] public ApiResult GetWeChatChannelStatisticsPageList() { var userInfo = base.UserInfo; ResultPageModel pageModel = JsonHelper.DeserializeObject(base.RequestParm.Msg.ToString()); JObject parms = JObject.Parse(base.RequestParm.Msg.ToString()); int ChannelId = parms.GetInt("ChannelId", 0); int Type = parms.GetInt("Type", 0);//类型 1按日 2按周 3按月 (周:最近一周 月:最近一年) string StartTime = parms.GetStringValue("StartTime"); string EndTime = parms.GetStringValue("EndTime"); if (ChannelId <= 0) { return ApiResult.ParamIsNull(); } if (Type == 1) { if (string.IsNullOrEmpty(StartTime)) { return ApiResult.ParamIsNull("请传递开始时间"); } if (string.IsNullOrEmpty(EndTime)) { return ApiResult.ParamIsNull("请传递结束时间"); } } var list = weChatModule.GetWeChatChannelStatisticsPageList(pageModel.PageIndex, pageModel.PageSize, out long count, ChannelId, Type, StartTime, EndTime, userInfo); pageModel.Count = Convert.ToInt32(count); pageModel.PageData = list.Select(x => new { x.DateStr, x.AddNum, x.DelNum, x.BlacklistNum, NetNum = x.AddNum - x.DelNum - x.BlacklistNum }); return ApiResult.Success("", pageModel); } #endregion #region 企业微信客户端API /// /// 获取企业微信TOKEN /// /// [HttpPost] [AllowAnonymous] public ApiResult GetWorkToken() { var referer = Request.Headers["Origin"].ToString().Replace("http://", ""); if (!string.IsNullOrEmpty(referer)) { var group = groupModule.GetGroupEntityModule(referer); if (group.GId != 0) { var config = Cache.WeChat.WeChatReidsCache.GetWorkChatConfig(group.GId); var query = QYWeiXinHelper.GetToken(config?.WX_CorpId ?? "", config?.Employee_Secret ?? "", false); if (!string.IsNullOrEmpty(query)) { return ApiResult.Success(data: query); } else { return ApiResult.Failed(message: "解析用户信息失败"); } } else { return ApiResult.Failed(message: "未知的集团信息"); } } else { return ApiResult.Failed(message: "未找到域名来源"); } } /// 获取登录信息 /// /// [HttpPost] [AllowAnonymous] public ApiResult GetLoginUserInfo() { var mark = JObject.FromObject(RequestParm.Msg).GetStringValue("mark"); mark += "_Finish"; if (UserReidsCache.Exists(mark)) { var cacheObj = UserReidsCache.Get(mark); var cacheContent = JObject.FromObject(cacheObj); return ApiResult.Success(data: cacheContent["user"].ToString()); } else { return ApiResult.Success(data: ""); } } /// /// 获取用户Code /// /// [HttpPost] [AllowAnonymous] public ApiResult SetUserCodeCallBack() { var referer = Request.Headers["Origin"].ToString().Replace("http://", ""); if (!string.IsNullOrEmpty(referer)) { var group = groupModule.GetGroupEntityModule(referer); if (group.GId != 0) { var parm = JObject.FromObject(RequestParm.Msg); var appcode = parm.GetStringValue("appcode"); var code = parm.GetStringValue("code"); var config = Cache.WeChat.WeChatReidsCache.GetAppConfig(group.GId, appcode); var token = QYWeiXinHelper.GetToken(config?.CropId ?? "", config?.Secret ?? "", false); var userInfo = new QYWeiXinHelper().GetLoginWorkUserInfo(group.GId, code, appcode, token); if (userInfo.status) { return ApiResult.Success(data: userInfo.result); } else { return ApiResult.Failed(message: "解析用户信息失败"); } } else { return ApiResult.Failed(message: "未知的集团信息"); } } else { return ApiResult.Failed(message: "未找到域名来源"); } } /// 发起登录请求 /// /// [HttpPost] [AllowAnonymous] public ApiResult SetUserAutoLogin() { var referer = Request.Headers["Origin"].ToString().Replace("http://", ""); if (!string.IsNullOrEmpty(referer)) { var group = groupModule.GetGroupEntityModule(referer); if (group.GId != 0) { var query = JObject.Parse(RequestParm.Msg.ToString()); var mark = query.GetStringValue("mark"); var config = Cache.WeChat.WeChatReidsCache.GetAppConfig(group.GId, mark); var token = QYWeiXinHelper.GetToken(config?.CropId ?? "", config?.Secret ?? "", false); var path = new QYWeiXinHelper().GetUserAuthorizationCodePath(mark, config?.CropId ?? "", config?.AppId ?? "", token); if (!string.IsNullOrEmpty(path)) { HttpHelper.HttpGet(path); return ApiResult.Success(data: path); } else { return ApiResult.Failed(message: "获取登录信息失败"); } } else { return ApiResult.Failed(message: "未知的集团信息"); } } else { return ApiResult.Failed(message: "未找到域名来源"); } } #endregion } }