Table of Contents
Preface
Mind map
Table structure
Corresponding enumeration
Backend code
Let’s take a look at a mind map:
Message management is a very skillful thing
Home WeChat Applet WeChat Development ASP.NET MVC5+EF6+EasyUI backend management system WeChat public platform development

ASP.NET MVC5+EF6+EasyUI backend management system WeChat public platform development

Mar 08, 2017 pm 04:24 PM
WeChat development

Preface

Looking back at the previous section, we have a familiar understanding of message requests and responses. In this section we will create a database table. The design of the table is quite complicated

You can also do it Create a table according to the structure of the situation you are analyzing

You must be very familiar with the results of the table to use this table. This table covers a lot of situations

Mind map

I prefer to use mind maps to analyze and express some models:

ASP.NET MVC5+EF6+EasyUI 后台管理系统微信公众平台开发

Table structure

According to the mind map, we can create tables It can be 3 tables: message table, rule table, type table

Message table: actual message

Rule table: text, graphics, voice, etc.

Type table : Text, graphics, voice (default reply, subscription reply)

It can also be two tables: regulation table, message table (+ a type field)

I only design one here Table: Message table (+ a rule field + a type field)

Designing the table structure is related to personal daily habits. I still like simple things. Don’t design specifically for the sake of design. This will only increase the number of people. The complexity of the system


CREATE TABLE [dbo].[WC_MessageResponse](    [Id] [varchar](50) NOT NULL,              --主键        
    [OfficalAccountId] [varchar](50) NULL,    --所属公众号
    [MessageRule] [int] NULL,                 --消息规则(枚举)
    [Category] [int] NULL,                    --类型(枚举)
    [MatchKey] [varchar](1000) NULL,          --关键字
    [TextContent] [varchar](max) NULL,        --文本内容
    [ImgTextContext] [varchar](max) NULL,     --图文文本内容
    [ImgTextUrl] [varchar](1000) NULL,        --图文图片URL
    [ImgTextLink] [varchar](1000) NULL,       --图文图片超链接
    [MeidaUrl] [varchar](1000) NULL,          --语音URL
    [MeidaLink] [varchar](1000) NULL,         --语音超链接
    [Enable] [bit] NOT NULL,                  --是否启用
    [IsDefault] [bit] NOT NULL,               --是否默认
    [Remark] [varchar](2000) NULL,            --说明
    [Sort] [int] NOT NULL,                    --排序
    [CreateTime] [datetime] NOT NULL,         --创建时间
    [CreateBy] [varchar](50) NOT NULL,        --创建人
    [ModifyTime] [datetime] NOT NULL,         --修改时间
    [ModifyBy] [varchar](50) NULL,            --修改人
 CONSTRAINT [PK_WC_MessageResponse] PRIMARY KEY CLUSTERED (    [Id] ASC)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]GOSET ANSI_PADDING OFFGOALTER TABLE [dbo].[WC_MessageResponse]  WITH CHECK ADD  CONSTRAINT [FK_WC_MessageResponse_WC_OfficalAcconts] FOREIGN KEY([OfficalAccountId])REFERENCES [dbo].[WC_OfficalAccounts] ([Id])ON DELETE CASCADEGOALTER TABLE [dbo].[WC_MessageResponse] CHECK CONSTRAINT [FK_WC_MessageResponse_WC_OfficalAcconts]GO
Copy after login


The table corresponds to the two enumeration and associated main tables and the main table managed by the public account


CREATE TABLE [dbo].[WC_OfficalAccounts](    [Id] [varchar](50) NOT NULL,            --主键
    [OfficalId] [varchar](200) NULL,        --公众号的唯一ID
    [OfficalName] [varchar](200) NOT NULL,    --公众号名称
    [OfficalCode] [varchar](200) NOT NULL,  --公众号帐号
    [OfficalPhoto] [varchar](1000) NULL,    --头像
    [OfficalKey] [varchar](500) NULL,        --EncodingAESKey
    [ApiUrl] [varchar](1000) NULL,            --我们的资源服务器
    [Token] [varchar](200) NULL,            --Token
    [AppId] [varchar](200) NULL,            --AppId
    [AppSecret] [varchar](200) NULL,        --Appsecret
    [AccessToken] [varchar](200) NULL,        --访问Token
    [Remark] [varchar](2000) NULL,            --说明
    [Enable] [bit] NOT NULL,                --是否启用
    [IsDefault] [bit] NOT NULL,                --是否为当前默认操作号
    [Category] [int] NOT NULL,                --类别(媒体号,企业号,个人号,开发测试号)
    [CreateTime] [datetime] NOT NULL,        --创建时间
    [CreateBy] [varchar](50) NOT NULL,        --创建人
    [ModifyTime] [datetime] NOT NULL,        --修改时间
    [ModifyBy] [varchar](50) NULL,            --修改人
 CONSTRAINT [PK_WC_OfficalAcconts] PRIMARY KEY CLUSTERED (    [Id] ASC)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]) ON [PRIMARY]
Copy after login


Public account management is in Section 70

Corresponding enumeration


 public enum WeChatReplyCategory
    {        //文本
        Text =1,        //图文
        Image =2,        //语音
        Voice =3,        //相等,用于回复关键字
        Equal=4,        //包含,用于回复关键字
        Contain = 5
    }    public enum WeChatRequestRuleEnum
    {        /// <summary>
        /// 默认回复,没有处理的        /// </summary>
        Default =0,        /// <summary>
        /// 关注回复        /// </summary>
        Subscriber =1,        /// <summary>
        /// 文本回复        /// </summary>
        Text =2,        /// <summary>
        /// 图片回复        /// </summary>
        Image =3,        /// <summary>
        /// 语音回复        /// </summary>
        Voice =4,        /// <summary>
        /// 视频回复        /// </summary>
        Video =5,        /// <summary>
        /// 超链接回复        /// </summary>
        Link =6,        /// <summary>
        /// LBS位置回复        /// </summary>
        Location =7,
    }
Copy after login


The enumeration actually corresponds to the other two tables I left out

At this point, I believe the design of the table is very clear

Backend code

Add, delete, modify and check are very common. The main focus is on the front end. The front end processes the submitted message and must include rules and types to specify the final expression of the message


[HttpPost]
        [SupportFilter(ActionName = "Edit")]        public JsonResult PostData(WC_MessageResponseModel model)
        {
            WC_OfficalAccountsModel accountModel = account_BLL.GetCurrentAccount();            if (string.IsNullOrEmpty(model.Id))
            {
                model.Id = ResultHelper.NewId;
            }
            
            model.CreateBy = GetUserId();
            model.CreateTime = ResultHelper.NowTime;
            model.ModifyBy = GetUserId();
            model.ModifyTime = ResultHelper.NowTime;
            model.OfficalAccountId = accountModel.Id;
            model.Enable = true;
            model.IsDefault = true;            if (m_BLL.PostData(ref errors, model))
            {
                LogHandler.WriteServiceLog(GetUserId(), "Id" + model.Id + ",OfficalAccountId" + model.OfficalAccountId, "成功", "保存", "WC_MessageResponse");                return Json(JsonHandler.CreateMessage(1, Resource.SaveSucceed));
            }            else
            {                string ErrorCol = errors.Error;
                LogHandler.WriteServiceLog(GetUserId(), "Id" + model.Id + ",OfficalAccountId" + model.OfficalAccountId + "," + ErrorCol, "失败", "保存", "WC_MessageResponse");                return Json(JsonHandler.CreateMessage(0, Resource.SaveFail + ErrorCol));
            }

        }
Copy after login


Controller


public bool PostData(ref ValidationErrors errors, WC_MessageResponseModel model)
        {            try
            {

                WC_MessageResponse entity = new WC_MessageResponse();                if (IsExists(model.Id))
                {
                    entity = m_Rep.GetById(model.Id);
                }

                entity.Id = model.Id;
                entity.OfficalAccountId = model.OfficalAccountId;
                entity.MessageRule = model.MessageRule;
                entity.Category = model.Category;
                entity.MatchKey = model.MatchKey;
                entity.TextContent = model.TextContent;
                entity.ImgTextContext = model.ImgTextContext;
                entity.ImgTextUrl = model.ImgTextUrl;
                entity.ImgTextLink = model.ImgTextLink;
                entity.MeidaUrl = model.MeidaUrl;
                entity.Enable = model.Enable;
                entity.IsDefault = model.IsDefault;
                entity.Remark = model.Remark;
                entity.CreateTime = model.CreateTime;
                entity.CreateBy = model.CreateBy;
                entity.Sort = model.Sort;
                entity.ModifyTime = model.ModifyTime;
                entity.ModifyBy = model.ModifyBy;                if (m_Rep.PostData(entity))
                {                    return true;
                }                else
                {
                    errors.Add(Resource.NoDataChange);                    return false;
                }

            }            catch (Exception ex)
            {
                errors.Add(ex.Message);
                ExceptionHander.WriteException(ex);                return false;
            }
        }
Copy after login


BLL


##

  public bool PostData(WC_MessageResponse model)
        {            //如果所有开关都关掉,证明不启用回复
            if (model.Category == null)
            {                return true;
            }            //全部设置为不默认
            ExecuteSqlCommand(string.Format("update [dbo].[WC_MessageResponse] set IsDefault=0 where OfficalAccountId =&#39;{0}&#39; and MessageRule={1}", model.OfficalAccountId, model.MessageRule));            //默认回复和订阅回复,且不是图文另外处理,因为他们有3种模式,但是只有一个是默认的
            if (model.Category!= (int)WeChatReplyCategory.Image && (model.MessageRule == (int)WeChatRequestRuleEnum.Default || model.MessageRule == (int)WeChatRequestRuleEnum.Subscriber))
            {                //查看数据库是否存在数据
                var entity = Context.WC_MessageResponse.Where(p => p.OfficalAccountId == model.OfficalAccountId && p.MessageRule == model.MessageRule && p.Category == model.Category).FirstOrDefault();                if (entity != null)
                {                    //删除原来的                    Context.WC_MessageResponse.Remove(entity);
                }
            }            //全部设置为默认
            ExecuteSqlCommand(string.Format("update [dbo].[WC_MessageResponse] set IsDefault=1 where OfficalAccountId =&#39;{0}&#39; and MessageRule={1} and Category={2}", model.OfficalAccountId, model.MessageRule,model.Category));            //修改
            if(IsExist(model.Id))
            {
               Context.Entry<WC_MessageResponse>(model).State = EntityState.Modified;               return Edit(model);
            }            else { 
               return Create(model);
            }
        }
Copy after login


##DAL

It is necessary to explain the DAL layer

There are three types of default replies and follow-up replies: text, image and text, and voice (but there can only be one, so there is an IsDefault field to indicate which kind of reply is executed). So these two This rule must be processed separately, which can be understood by looking at the SQL statements executed by the DAL code.

So let’s design the front end to our heart’s content!

ASP.NET MVC5+EF6+EasyUI 后台管理系统微信公众平台开发How to design the front-end?

Let’s take a look at a mind map:

ASP.NET MVC5+EF6+EasyUI 后台管理系统微信公众平台开发Complete front-end code

<style>
    .formtable td {
        vertical-align: top;
        padding: 10px;
    }

    .formtable th {
        text-align: left;
        padding: 10px;
        height: 30px;
    }

    .formtablenormal {
        width: 500px;
    }

        .formtablenormal th {
            border: 0px;
            text-align: right;
        }

        .formtablenormal td {
            border: 0px;
            vertical-align: middle;
        }</style>
<script>    //1文本2图文3语音
    var Category = {
        Text: 1,
        Image: 2,
        Voice: 3,
        Equal: 4,
        Contain: 5
    };    //    var RequestRule = {
        Default: 0,
        Subscriber: 1,
        Text: 2,
        Image: 3,
        Voice: 4,
        Video: 5,
        Link: 6,
        Location: 7
    };

    function initDefault() {
        $(&#39;#swText0&#39;).switchbutton({
            onChange: function(checked) {                if (checked) {
                    $(&#39;#swImage0&#39;).switchbutton("uncheck");
                    $(&#39;#swVoice0&#39;).switchbutton("uncheck");
                    $("#p01").show();
                    $("#p02,#p03").hide();
                    $("#Category").val(Category.Text);
                }
            }
        });
        $(&#39;#swImage0&#39;).switchbutton({
            onChange: function(checked) {                if (checked) {
                    $(&#39;#swVoice0&#39;).switchbutton("uncheck");
                    $(&#39;#swText0&#39;).switchbutton("uncheck");
                    $("#p02").show();
                    $("#p01,#p03").hide();
                    $("#Category").val(Category.Image);
                    $("#List0").datagrid("resize");
                }
            }
        });
        $(&#39;#swVoice0&#39;).switchbutton({
            onChange: function(checked) {                if (checked) {
                    $(&#39;#swImage0&#39;).switchbutton("uncheck");
                    $(&#39;#swText0&#39;).switchbutton("uncheck");
                    $("#p03").show();
                    $("#p01,#p02").hide();
                    $("#Category").val(Category.Voice);
                }
            }
        });        //文本
        $.post(&#39;@Url.Action("GetList")&#39;, {
            page: 1,
            rows: 1,
            category: Category.Text,
            messageRule: RequestRule.Default
        },
        function(data) {            var rows = data.rows;            for (var i = 0; i < rows.length; i++) {                if (rows[i].Category == Category.Text) {
                    $("#Text0").val(rows[i].TextContent);                    if (rows[i].IsDefault) {
                        $(&#39;#swText0&#39;).switchbutton("check");
                        $(&#39;#swImage0&#39;).switchbutton("uncheck");
                        $(&#39;#swVoice0&#39;).switchbutton("uncheck");
                    }
                }
            }
        });        //语音
        $.post(&#39;@Url.Action("GetList")&#39;, {
            page: 1,
            rows: 1,
            category: Category.Voice,
            messageRule: RequestRule.Default
        },
       function (data) {           var rows = data.rows;           for (var i = 0; i < rows.length; i++) {               if (rows[i].Category == Category.Voice) {
                   $("#VoiceTitle0").val(rows[i].TextContent);
                   $("#VoiceContent0").val(rows[i].Remark);
                   $("#VoiceUrl0").val(rows[i].MeidaUrl);                   if (rows[i].IsDefault) {
                       $(&#39;#swVoice0&#39;).switchbutton("check");
                       $(&#39;#swText0&#39;).switchbutton("uncheck");
                       $(&#39;#swImage0&#39;).switchbutton("uncheck");
                   }
               }
           }
       });

        $(&#39;#List0&#39;).datagrid({
            url: &#39;@Url.Action("GetList")?messageRule=&#39; + RequestRule.Default + &#39;&category=&#39; + Category.Image,
            width: SetGridWidthSub(40),
            methord: &#39;post&#39;,
            height: SetGridHeightSub(175),
            fitColumns: true,
            sortName: &#39;Sort&#39;,
            sortOrder: &#39;asc&#39;,
            idField: &#39;Id&#39;,
            pageSize: 15,
            pageList: [15, 20, 30, 40, 50],
            pagination: true,
            striped: true,            //奇偶行是否区分
            singleSelect: true,
            onLoadSuccess: function (data) {                if (data.rows.length > 0)
                {                    if (data.rows[0].IsDefault) {
                        $(&#39;#swImage0&#39;).switchbutton("check");
                        $(&#39;#swText0&#39;).switchbutton("uncheck");
                        $(&#39;#swVoice0&#39;).switchbutton("uncheck");
                        $("#Category").val(Category.Image);
                    }
                }
            },            //单选模式            //rownumbers: true,//行号            columns: [[{
                field: &#39;Id&#39;,
                title: &#39;Id&#39;,
                width: 80,
                hidden: true
            },
            {
                field: &#39;TextContent&#39;,
                title: &#39;标题&#39;,
                width: 80,
                sortable: true
            },
            {
                field: &#39;ImgTextUrl&#39;,
                title: &#39;图片&#39;,
                width: 50,
                sortable: true,
                align: &#39;center&#39;, formatter: function (value) { return "<img width=&#39;80&#39; height=&#39;80&#39; src=&#39;" + value + "&#39;/>" }
            },
            {
                field: &#39;ImgTextLink&#39;,
                title: &#39;超链接&#39;,
                width: 80,
                sortable: true
            },
            {
                field: &#39;ImgTextContext&#39;,
                title: &#39;回复内容&#39;,
                width: 180,
                sortable: true
            },

            ]]
        });

        $("#btnCreate02").unbind().click(function () {
            $("#modalwindow0").window({
                title: &#39;@Resource.Create&#39;,
                width: 700,
                height: 500,
                iconCls: &#39;fa fa-plus&#39;
            }).window(&#39;open&#39;);
        });

       

        $("#btnSava01").unbind().click(function() {            //默认回复
            $("#MessageRule").val(RequestRule.Default);            if ($.trim($("#Text0").val())=="")
            {
                $.messager.alert(&#39;@Resource.Tip&#39;, &#39;内容必须填写!&#39;, &#39;warning&#39;);                return;
            }
            $("#TextContent").val($.trim($("#Text0").val()));            if ($("#form").valid()) {
                $.ajax({
                    url: "@Url.Action("PostData")",
                    type: "Post",
                    data: $("#form").serialize(),
                dataType: "json",
                success: function(data) {
                    $.messageBox5s(&#39;@Resource.Tip&#39;, data.message);
                }
            });
        }
        });




        $("#btnSava02").unbind().click(function () {            if ($.trim($("#ImageTitle0").val()) == "") {
                $.messager.alert(&#39;@Resource.Tip&#39;, &#39;标题必须填写!&#39;, &#39;warning&#39;);                return;
            }            if ($.trim($("#ImageUrl0").val()) == "") {
                $.messager.alert(&#39;@Resource.Tip&#39;, &#39;图片必须上传!&#39;, &#39;warning&#39;);                return;
            }            if ($.trim($("#Sort0").val()) == "") {
                $.messager.alert(&#39;@Resource.Tip&#39;, &#39;排序必须填写!&#39;, &#39;warning&#39;);                return;
            }            //图文回复
            $("#MessageRule").val(RequestRule.Default);
            $("#TextContent").val($("#ImageTitle0").val());
            $("#ImgTextUrl").val($("#ImageUrl0").val());
            $("#ImgTextContext").val($("#ImageContent0").val());
            $("#ImgTextLink").val($("#ImageLink0").val());
            $("#Sort").val($("#Sort0").val());           

            if ($("#form").valid()) {
                $.ajax({
                    url: "@Url.Action("PostData")",
                    type: "Post",
                data: $("#form").serialize(),
                dataType: "json",
                success: function(data) {                    if (data.type == 1) {
                        $("#Id").val("");
                        $("#List0").datagrid(&#39;reload&#39;);
                        $("#modalwindow0").window(&#39;close&#39;);
                        $("#ImageTitle0").val("");
                        $("#form02 img").attr("src", "/Content/Images/NotPic.jpg");
                        $("#ImageContent0").val("");
                        $("#ImageLink0").val("");
                        $("#Sort0").val(0);
                        $(&#39;#FileUpload02&#39;).val(&#39;&#39;);
                    }
                    $.messageBox5s(&#39;@Resource.Tip&#39;, data.message);
                }
            });
        }
        });
        $("#btnSava03").unbind().click(function() {            //默认回复
            $("#MessageRule").val(RequestRule.Default);            if ($.trim($("#Text0").val())=="")
            {                if ($.trim($("#VoiceTitle0").val()) == "") {
                    $.messager.alert(&#39;@Resource.Tip&#39;, &#39;标题必须填写!&#39;, &#39;warning&#39;);                    return;
                }                if ($.trim($("#VoiceUrl0").val()) == "") {
                    $.messager.alert(&#39;@Resource.Tip&#39;, &#39;必须上传语音!&#39;, &#39;warning&#39;);                    return;
                }
                $("#TextContent").val($("#VoiceTitle0").val());
                $("#MeidaUrl").val($("#VoiceUrl0").val());
                $("#Remark").val($("#VoiceContent0").val());
            }            if ($("#form").valid()) {
                $.ajax({
                    url: "@Url.Action("PostData")",
                    type: "Post",
                data: $("#form").serialize(),
                dataType: "json",
                success: function(data) {
                    $.messageBox5s(&#39;@Resource.Tip&#39;, data.message);
                }
            });
        }
        });
    }

    function initSubscriber() {
         $(&#39;#swText1&#39;).switchbutton({
            onChange: function(checked) {                if (checked) {
                    $(&#39;#swImage1&#39;).switchbutton("uncheck");
                    $(&#39;#swVoice1&#39;).switchbutton("uncheck");
                    $("#p11").show();
                    $("#p12,#p13").hide();
                    $("#Category").val(Category.Text);
                }
            }
        });
        $(&#39;#swImage1&#39;).switchbutton({
            onChange: function(checked) {                if (checked) {
                    $(&#39;#swVoice1&#39;).switchbutton("uncheck");
                    $(&#39;#swText1&#39;).switchbutton("uncheck");
                    $("#p12").show();
                    $("#p11,#p13").hide();
                    $("#Category").val(Category.Image);
                    $("#List1").datagrid("resize");
                }
            }
        });
        $(&#39;#swVoice1&#39;).switchbutton({
            onChange: function(checked) {                if (checked) {
                    $(&#39;#swImage1&#39;).switchbutton("uncheck");
                    $(&#39;#swText1&#39;).switchbutton("uncheck");
                    $("#p13").show();
                    $("#p11,#p12").hide();
                    $("#Category").val(Category.Voice);
                }
            }
        });        //文本
        $.post(&#39;@Url.Action("GetList")&#39;, {
            page: 1,
            rows: 1,
            category: Category.Text,
            messageRule: RequestRule.Subscriber
        },
        function(data) {            var rows = data.rows;            for (var i = 0; i < rows.length; i++) {                if (rows[i].Category == Category.Text) {
                    $("#Text1").val(rows[i].TextContent);                    if (rows[i].IsDefault) {
                        $(&#39;#swText1&#39;).switchbutton("check");
                        $(&#39;#swImage1&#39;).switchbutton("uncheck");
                        $(&#39;#swVoice1&#39;).switchbutton("uncheck");
                    }
                }
            }
        });        //语音
        $.post(&#39;@Url.Action("GetList")&#39;, {
            page: 1,
            rows: 1,
            category: Category.Voice,
            messageRule: RequestRule.Subscriber
        },
       function (data) {           var rows = data.rows;           for (var i = 0; i < rows.length; i++) {               if (rows[i].Category == Category.Voice) {
                   $("#VoiceTitle1").val(rows[i].TextContent);
                   $("#VoiceContent1").val(rows[i].Remark);                   if (rows[i].IsDefault) {
                       $(&#39;#swVoice1&#39;).switchbutton("check");
                       $(&#39;#swText1&#39;).switchbutton("uncheck");
                       $(&#39;#swImage1&#39;).switchbutton("uncheck");
                   }
               }
           }
       });

        $(&#39;#List1&#39;).datagrid({
            url: &#39;@Url.Action("GetList")?messageRule=&#39; + RequestRule.Subscriber + &#39;&category=&#39; + Category.Image,
            width: SetGridWidthSub(40),
            methord: &#39;post&#39;,
            height: SetGridHeightSub(175),
            fitColumns: true,
            sortName: &#39;Sort&#39;,
            sortOrder: &#39;asc&#39;,
            idField: &#39;Id&#39;,
            pageSize: 15,
            pageList: [15, 20, 30, 40, 50],
            pagination: true,
            striped: true,            //奇偶行是否区分
            singleSelect: true,
            onLoadSuccess: function (data) {                if (data.rows.length > 0)
                {                    if (data.rows[0].IsDefault) {
                        $(&#39;#swImage1&#39;).switchbutton("check");
                        $(&#39;#swText1&#39;).switchbutton("uncheck");
                        $(&#39;#swVoice1&#39;).switchbutton("uncheck");
                    }
                }
            },            //单选模式            //rownumbers: true,//行号            columns: [[{
                field: &#39;Id&#39;,
                title: &#39;Id&#39;,
                width: 80,
                hidden: true
            },
            {
                field: &#39;TextContent&#39;,
                title: &#39;标题&#39;,
                width: 80,
                sortable: true
            },
            {
                field: &#39;ImgTextUrl&#39;,
                title: &#39;图片&#39;,
                width: 50,
                sortable: true,
                align: &#39;center&#39;, formatter: function (value) { return "<img width=&#39;80&#39; height=&#39;80&#39; src=&#39;" + value + "&#39;/>" }
            },
            {
                field: &#39;ImgTextLink&#39;,
                title: &#39;超链接&#39;,
                width: 80,
                sortable: true
            },
            {
                field: &#39;ImgTextContext&#39;,
                title: &#39;回复内容&#39;,
                width: 180,
                sortable: true
            },

            ]]
        });

        $("#btnCreate12").unbind().click(function () {
            $("#modalwindow1").window({
                title: &#39;@Resource.Create&#39;,
                width: 700,
                height: 500,
                iconCls: &#39;fa fa-plus&#39;
            }).window(&#39;open&#39;);
        });
      

        $("#btnSava11").unbind().click(function() {            //默认回复
            $("#MessageRule").val(RequestRule.Subscriber);            if ($.trim($("#Text1").val())=="")
            {
                $.messager.alert(&#39;@Resource.Tip&#39;, &#39;内容必须填写!&#39;, &#39;warning&#39;);                return;
            }
            $("#TextContent").val($.trim($("#Text1").val()));            if ($("#form").valid()) {
                $.ajax({
                    url: "@Url.Action("PostData")",
                    type: "Post",
                    data: $("#form").serialize(),
                dataType: "json",
                success: function(data) {
                    $.messageBox5s(&#39;@Resource.Tip&#39;, data.message);
                }
            });
        }
        });

        $("#btnSava12").unbind().click(function () {            if ($.trim($("#ImageTitle1").val()) == "") {
                $.messager.alert(&#39;@Resource.Tip&#39;, &#39;标题必须填写!&#39;, &#39;warning&#39;);                return;
            }            if ($.trim($("#ImageUrl1").val()) == "") {
                $.messager.alert(&#39;@Resource.Tip&#39;, &#39;图片必须上传!&#39;, &#39;warning&#39;);                return;
            }            if ($.trim($("#Sort1").val()) == "") {
                $.messager.alert(&#39;@Resource.Tip&#39;, &#39;排序必须填写!&#39;, &#39;warning&#39;);                return;
            }            //图文回复
            $("#MessageRule").val(RequestRule.Subscriber);
            $("#TextContent").val($("#ImageTitle1").val());
            $("#ImgTextUrl").val($("#ImageUrl1").val());
            $("#ImgTextContext").val($("#ImageContent1").val());
            $("#ImgTextLink").val($("#ImageLink1").val());
            $("#Sort").val($("#Sort1").val());           
            if ($("#form").valid()) {
                $.ajax({
                    url: "@Url.Action("PostData")",
                    type: "Post",
                data: $("#form").serialize(),
                dataType: "json",
                success: function(data) {                    if (data.type == 1) {
                        $("#Id").val("");
                        $("#List1").datagrid(&#39;reload&#39;);
                        $("#modalwindow1").window(&#39;close&#39;);
                        $("#ImageTitle1").val("");
                        $("#form12 img").attr("src", "/Content/Images/NotPic.jpg");
                        $("#ImageContent1").val("");
                        $("#ImageLink1").val("");
                        $("#Sort1").val(0);
                        $(&#39;#FileUpload12&#39;).val(&#39;&#39;);
                    }
                    $.messageBox5s(&#39;@Resource.Tip&#39;, data.message);
                }
            });
        }
        });
        $("#btnSava13").unbind().click(function() {            //默认回复
            $("#MessageRule").val(RequestRule.Subscriber);            if ($.trim($("#Text1").val())=="")
            {                if ($.trim($("#VoiceTitle1").val()) == "") {
                    $.messager.alert(&#39;@Resource.Tip&#39;, &#39;标题必须填写!&#39;, &#39;warning&#39;);                    return;
                }                if ($.trim($("#VoiceUrl1").val()) == "") {
                    $.messager.alert(&#39;@Resource.Tip&#39;, &#39;必须上传语音!&#39;, &#39;warning&#39;);                    return;
                }
                $("#TextContent").val($("#VoiceTitle1").val());
                $("#MeidaUrl").val($("#VoiceUrl1").val());
                $("#Remark").val($("#VoiceContent1").val());
            }            if ($("#form").valid()) {
                $.ajax({
                    url: "@Url.Action("PostData")",
                    type: "Post",
                data: $("#form").serialize(),
                dataType: "json",
                success: function(data) {
                    $.messageBox5s(&#39;@Resource.Tip&#39;, data.message);
                }
            });
        }
        });
    }

    function initText() {
        $("#Category").val(Category.Equal);
        $(&#39;#List2&#39;).datagrid({
            url: &#39;@Url.Action("GetList")?messageRule=&#39; + RequestRule.Text,
            width: SetGridWidthSub(40),
            methord: &#39;post&#39;,
            height: SetGridHeightSub(100),
            fitColumns: true,
            sortName: &#39;CreateTime&#39;,
            sortOrder: &#39;desc&#39;,
            idField: &#39;Id&#39;,
            pageSize: 15,
            pageList: [15, 20, 30, 40, 50],
            pagination: true,
            striped: true,            //奇偶行是否区分
            singleSelect: true,            //单选模式            //rownumbers: true,//行号            columns: [[{
                field: &#39;Id&#39;,
                title: &#39;Id&#39;,
                width: 80,
                hidden: true
            },
            {
                field: &#39;Category&#39;,
                title: &#39;Category&#39;,
                width: 80,
                sortable: true,
                hidden: true
            },
            {
                field: &#39;MatchKey&#39;,
                title: &#39;关键字&#39;,
                width: 80,
                sortable: true,
                formatter: function (value,row,index){                    if (row.Category == Category.Equal) {                        return "(完全匹配)" + value
                    } else {                        return "(模糊匹配)" + value
                    }
                }
            },
            {
                field: &#39;TextContent&#39;,
                title: &#39;回复内容&#39;,
                width: 80,
                sortable: true
            },

            ]]
        });

        $(&#39;#swMessageRule2&#39;).switchbutton({
            onChange: function(checked) {                if (checked) {
                    $("#Category").val(Category.Equal);
                } else {
                    $("#Category").val(Category.Contain);
                }
            }
        });
        $("#btnCreate2").unbind().click(function () {
            $("#modalwindow2").window({
                title: &#39;@Resource.Create&#39;,
                width: 700,
                height: 400,
                iconCls: &#39;fa fa-plus&#39;
            }).window(&#39;open&#39;);
        });

        $("#btnSava2").unbind().click(function () {            if ($.trim($("#TextMatchKey2").val()) == "") {
                $.messager.alert(&#39;@Resource.Tip&#39;, &#39;关键字必须填写!&#39;, &#39;warning&#39;);                return;
            }            if ($.trim($("#Text2").val()) == "") {
                $.messager.alert(&#39;@Resource.Tip&#39;, &#39;内容必须填写!&#39;, &#39;warning&#39;);                return;
            }            //文本回复
            $("#MessageRule").val(RequestRule.Text);
            $("#MatchKey").val($.trim($("#TextMatchKey2").val()));
            $("#TextContent").val($("#Text2").val());            if ($("#form").valid()) {
                $.ajax({
                    url: "@Url.Action("PostData")",
                    type: "Post",
                data: $("#form").serialize(),
                dataType: "json",
                success: function(data) {                    if (data.type == 1) {
                        $("#Id").val("");
                        $("#List2").datagrid(&#39;reload&#39;);
                        $("#modalwindow2").window(&#39;close&#39;);
                        $("#TextMatchKey2").val("");
                        $("#Text2").val("");
                    }
                    $.messageBox5s(&#39;@Resource.Tip&#39;, data.message);
                }
            });
        }
        });
    }


    function initImage() {
        $("#Category").val(Category.Equal);
        $(&#39;#List31&#39;).datagrid({
            url: &#39;@Url.Action("GetListProperty")?messageRule=&#39; + RequestRule.Image,
            width: 300,
            methord: &#39;post&#39;,
            height: SetGridHeightSub(100),
            fitColumns: true,
            sortName: &#39;CreateTime&#39;,
            sortOrder: &#39;desc&#39;,
            idField: &#39;Id&#39;,
            pageSize: 15,
            pageList: [15, 20, 30, 40, 50],
            pagination: true,
            striped: true,            //奇偶行是否区分
            singleSelect: true,
            onClickRow: function (index,data) {                var row = $(&#39;#List31&#39;).datagrid(&#39;getSelected&#39;);                if (row != null)
                {
                    $(&#39;#List3&#39;).datagrid({url:&#39;@Url.Action("GetList")?messageRule=&#39;+RequestRule.Image+&#39;&category=&#39;+row.Category+&#39;&matchKey=&#39;+row.MatchKey});
                }
            },            //单选模式            //rownumbers: true,//行号            columns: [[{
                field: &#39;Id&#39;,
                title: &#39;Id&#39;,
                width: 80,
                hidden: true
            },
            {
                field: &#39;Category&#39;,
                title: &#39;Category&#39;,
                width: 80,
                sortable: true,
                hidden: true
            },
            {
                field: &#39;MatchKey&#39;,
                title: &#39;关键字&#39;,
                width: 130,
                sortable: true,
                formatter: function (value, row, index) {                    if (row.Category == Category.Equal) {                        return "(完全匹配)" + value
                    } else {                        return "(模糊匹配)" + value
                    }
                }
            },
            {
                field: &#39;CreateTime&#39;,
                title: &#39;创建时间&#39;,
                width: 80,
                sortable: true
            },

            ]]
        }).datagrid(&#39;getPager&#39;).pagination({ showPageList: true, showRefresh: false, displayMsg: &#39;&#39; });


        $(&#39;#List3&#39;).datagrid({
            url:&#39;@Url.Action("GetList")?messageRule=&#39;+RequestRule.Image+&#39;&category=x&matchKey=x&#39;,
            width: SetGridWidthSub(340),
            methord: &#39;post&#39;,
            height: SetGridHeightSub(100),
            fitColumns: true,
            sortName: &#39;Sort&#39;,
            sortOrder: &#39;asc&#39;,
            idField: &#39;Id&#39;,
            pageSize: 15,
            pageList: [15, 20, 30, 40, 50],
            pagination: true,
            striped: true,            //奇偶行是否区分
            singleSelect: true,            //单选模式            //rownumbers: true,//行号            columns: [[{
                field: &#39;Id&#39;,
                title: &#39;Id&#39;,
                width: 80,
                hidden: true
            },
            {
                field: &#39;Category&#39;,
                title: &#39;Category&#39;,
                width: 80,
                sortable: true,
                hidden: true
            },
            {
                field: &#39;TextContent&#39;,
                title: &#39;标题&#39;,
                width: 80,
                sortable: true
            },
            {
                field: &#39;MatchKey&#39;,
                title: &#39;关键字&#39;,
                width: 80,
                sortable: true,
                formatter: function (value,row,index){                    if (row.Category == Category.Equal) {                        return "(完全匹配)" + value
                    } else {                        return "(模糊匹配)" + value
                    }
                }
            },
            {
                field: &#39;ImgTextUrl&#39;,
                title: &#39;图片&#39;,
                width: 50,
                sortable: true,
                align: &#39;center&#39;, formatter: function (value) { return "<img width=&#39;80&#39; height=&#39;80&#39; src=&#39;" + value + "&#39;/>" }
            },
            {
                field: &#39;ImgTextLink&#39;,
                title: &#39;超链接&#39;,
                width: 80,
                sortable: true
            },
            {
                field: &#39;ImgTextContext&#39;,
                title: &#39;回复内容&#39;,
                width: 180,
                sortable: true
            },
            {
                field: &#39;Sort&#39;,
                title: &#39;排序&#39;,
                width: 50,
                sortable: true
            },
            ]]
        });

        $(&#39;#swMessageRule3&#39;).switchbutton({
            onChange: function(checked) {                if (checked) {
                    $("#Category").val(Category.Equal);
                } else {
                    $("#Category").val(Category.Contain);
                }
            }
        });
        $("#btnCreate3").unbind().click(function () {
            $("#modalwindow3").window({
                title: &#39;@Resource.Create&#39;,
                width: 700,
                height: 550,
                iconCls: &#39;fa fa-plus&#39;
            }).window(&#39;open&#39;);
        });

     
        $("#btnSava3").unbind().click(function () {            if ($.trim($("#ImageTitle3").val()) == "") {
                $.messager.alert(&#39;@Resource.Tip&#39;, &#39;标题必须填写!&#39;, &#39;warning&#39;);                return;
            }            if ($.trim($("#TextMatchKey3").val()) == "") {
                $.messager.alert(&#39;@Resource.Tip&#39;, &#39;关键字必须填写!&#39;, &#39;warning&#39;);                return;
            }            if ($.trim($("#ImageUrl3").val()) == "") {
                $.messager.alert(&#39;@Resource.Tip&#39;, &#39;图片必须上传!&#39;, &#39;warning&#39;);                return;
            }            //图文回复
            $("#MessageRule").val(RequestRule.Image);
            $("#MatchKey").val($.trim($("#TextMatchKey3").val()));
            $("#TextContent").val($("#ImageTitle3").val());
            $("#ImgTextUrl").val($("#ImageUrl3").val());
            $("#ImgTextContext").val($("#ImageContent3").val());
            $("#ImgTextLink").val($("#ImageLink3").val());
            $("#Sort").val($("#Sort3").val());            if ($("#form").valid()) {
                $.ajax({
                    url: "@Url.Action("PostData")",
                    type: "Post",
                data: $("#form").serialize(),
                dataType: "json",
                success: function(data) {                    if (data.type == 1) {
                        $("#Id").val("");
                        $("#List3").datagrid(&#39;reload&#39;);
                        $("#List31").datagrid(&#39;reload&#39;);
                        $("#modalwindow3").window(&#39;close&#39;);
                        $("#ImageTitle3").val("");
                        $("#form3 img").attr("src", "/Content/Images/NotPic.jpg");
                        $("#ImageContent3").val("");
                        $("#ImageLink3").val("");
                        $("#Sort3").val(0);
                        $(&#39;#FileUpload3&#39;).val(&#39;&#39;);
                        $("#TextMatchKey3").val(&#39;&#39;);
                    }
                    $.messageBox5s(&#39;@Resource.Tip&#39;, data.message);
                }
            });
        }
        });
    }

    function initVoice() {
        $("#Category").val(Category.Equal);
        $(&#39;#List4&#39;).datagrid({
            url: &#39;@Url.Action("GetList")?messageRule=&#39; + RequestRule.Voice,
            width: SetGridWidthSub(40),
            methord: &#39;post&#39;,
            height: SetGridHeightSub(100),
            fitColumns: true,
            sortName: &#39;CreateTime&#39;,
            sortOrder: &#39;desc&#39;,
            idField: &#39;Id&#39;,
            pageSize: 15,
            pageList: [15, 20, 30, 40, 50],
            pagination: true,
            striped: true,            //奇偶行是否区分
            singleSelect: true,            //单选模式            //rownumbers: true,//行号            columns: [[{
                field: &#39;Id&#39;,
                title: &#39;Id&#39;,
                width: 80,
                hidden: true
            },
            {
                field: &#39;Category&#39;,
                title: &#39;Category&#39;,
                width: 80,
                sortable: true,
                hidden: true
            },
            {
                field: &#39;TextContent&#39;,
                title: &#39;标题&#39;,
                width: 80,
                sortable: true
            },
            {
                field: &#39;MatchKey&#39;,
                title: &#39;关键字&#39;,
                width: 80,
                sortable: true,
                formatter: function (value,row,index){                    if (row.Category == Category.Equal) {                        return "(完全匹配)" + value
                    } else {                        return "(模糊匹配)" + value
                    }
                }
            },
            {
                field: &#39;MeidaUrl&#39;,
                title: &#39;语音&#39;,
                width: 80,
                sortable: true,
                align: &#39;center&#39;, formatter: function (value) { return "<img width=&#39;80&#39; height=&#39;80&#39; src=&#39;" + value + "&#39;/>" }
            },
            {
                field: &#39;ImgTextLink&#39;,
                title: &#39;超链接&#39;,
                width: 80,
                sortable: true
            },
            {
                field: &#39;ImgTextContext&#39;,
                title: &#39;回复内容&#39;,
                width: 80,
                sortable: true
            },

            ]]
        });

        $(&#39;#swMessageRule4&#39;).switchbutton({
            onChange: function(checked) {                if (checked) {
                    $("#Category").val(Category.Equal);
                } else {
                    $("#Category").val(Category.Contain);
                }
            }
        });
        $("#btnCreate4").unbind().click(function() {
            $("#modalwindow4").window({
                title: &#39;@Resource.Create&#39;,
                width: 700,
                height: 500,
                iconCls: &#39;fa fa-plus&#39;
            }).window(&#39;open&#39;);
        });

    
        $("#btnSava4").unbind().click(function () {            if ($.trim($("#VoiceTitle4").val()) == "") {
                $.messager.alert(&#39;@Resource.Tip&#39;, &#39;标题必须填写!&#39;, &#39;warning&#39;);                return;
            }            if ($.trim($("#TextMatchKey4").val()) == "") {
                $.messager.alert(&#39;@Resource.Tip&#39;, &#39;关键字必须填写!&#39;, &#39;warning&#39;);                return;
            }            if ($.trim($("#VoiceUrl4").val()) == "") {
                $.messager.alert(&#39;@Resource.Tip&#39;, &#39;必须上传语音!&#39;, &#39;warning&#39;);                return;
            }            //图文回复
            $("#MessageRule").val(RequestRule.Voice);
            $("#MatchKey").val($("#TextMatchKey4").val());
            $("#TextContent").val($("#VoiceTitle4").val());
            $("#MeidaUrl").val($("#VoiceUrl4").val());
            $("#Remark").val($("#VoiceContent4").val());            if ($("#form").valid()) {
                $.ajax({
                    url: "@Url.Action("PostData")",
                    type: "Post",
                data: $("#form").serialize(),
                dataType: "json",
                success: function(data) {                    if (data.type == 1) {
                        $("#Id").val("");
                        $("#List4").datagrid(&#39;reload&#39;);
                        $("#modalwindow4").window(&#39;close&#39;);
                        $("#TextMatchKey4").val("");
                        $("#VoiceTitle4").val("");
                        $("#VoiceUrl4").val("");
                        $("#VoiceContent4").val("");
                        $("#FileUpload4").val("");
                        $("#form3 img").attr("src", "/Content/Images/NotPic.jpg");
                    }
                    $.messageBox5s(&#39;@Resource.Tip&#39;, data.message);
                }
            });
        }
        });
    }
    $(function() {
        $(&#39;#tt&#39;).tabs({
            justified: true,
            width: &#39;100%&#39;,
            height: $(window).height() - 20
        });
        $(&#39;#tt&#39;).tabs({
            onSelect: function(title, index) {                switch (index) {                    case RequestRule.Default:
                        initDefault();                        break;                    case RequestRule.Subscriber:
                        initSubscriber();                        break;                    case RequestRule.Text:
                        initText();                        break;                    case RequestRule.Image:
                        initImage();                        break;                    case RequestRule.Voice:
                        initVoice();                        break;
                }
            }
        });        //初始化第一个标签        initDefault();        //自动宽高        $(window).resize(function() {
            $(&#39;#tt&#39;).tabs({
                height:$(window).height() - 20
            });            //$(&#39;#List2&#39;).datagrid(&#39;resize&#39;, {            //    width: SetGridWidthSub(40),            //    height: SetGridHeightSub(100)            //});
        });
    });
    $(function () {
        $(&#39;input.textbox&#39;).validatebox().bind(&#39;blur&#39;, function () {
            $(this).validatebox(&#39;enableValidation&#39;).validatebox(&#39;validate&#39;);
        });
    })</script>
<form id="form" method="post">
    <input type="hidden" id="Id" name="Id" />
    <input type="hidden" id="MessageRule" name="MessageRule" />
    <input type="hidden" id="Category" name="Category" />
    <input type="hidden" id="MatchKey" name="MatchKey" />
    <input type="hidden" id="TextContent" name="TextContent" />
    <input type="hidden" id="ImgTextContext" name="ImgTextContext" />
    <input type="hidden" id="ImgTextUrl" name="ImgTextUrl" />
    <input type="hidden" id="ImgTextLink" name="ImgTextLink" />
    <input type="hidden" id="MeidaUrl" name="MeidaUrl" />
    <input type="hidden" id="MeidaLink" name="MeidaLink" />
    <input type="hidden" id="Remark" name="Remark" />
    <input type="hidden" id="Sort" name="Sort" value="0" />
    <input type="hidden" id="CreateTime" name="CreateTime" />
    <input type="hidden" id="CreateBy" name="CreateBy" />
    <input type="hidden" id="ModifyTime" name="ModifyTime" />
    <input type="hidden" id="ModifyBy" name="ModifyBy" />
</form>
<p style="padding:10px;">
        <p id="tt" class="easyui-tabs">
            <p title="默认回复"> 
                <table class="formtable" style="height:45px; line-height:45px; width:100%; border-bottom:1px solid #e7eaec">
                    <tr>
                        <td style="width:100px;">
                            文本: @Html.SwitchButtonByEdit("swText0", false)                        </td>
                        <td style="width:100px;">
                            图文: @Html.SwitchButtonByEdit("swImage0", false)                        </td>
                        <td style="width:100px;">
                            语音: @Html.SwitchButtonByEdit("swVoice0", false)                        </td>
                        <td></td>
                        <td style="width:300px;">
                                <p class="color-green">当前操作公众号:<span id="CurrentOfficalAccount">@ViewBag.CurrentOfficalAcount</span></p>
                        </td>
                    </tr>
                </table>
                <p id="p01" class="displaynone">
                    <p class="mvctool bgb">
                        @Html.ToolButton("btnSava01", "fa fa-plus", "提交保存", ref perm, "Edit", false)                    </p>
                    <textarea id="Text0" style="width: 300px;height: 330px; margin:20px;"></textarea>
                    </p>
                <p id="p02" class="displaynone">
                    <p class="mvctool bgb">
                        @Html.ToolButton("btnCreate02", "fa fa-search", "添加回复", ref perm, "Edit", false)                    </p>
                    <p id="modalwindow0" class="easyui-window" style="width:600px; height:550px;" data-options="modal:true,closed: true,minimizable:false,shadow:false">
                        <p class="mvctool bgb">
                            @Html.ToolButton("btnSava02", "fa fa-search", "提交保存", ref perm, "Edit", false)                        </p>
                        <table class="formtablenormal">
                            <tr><th>标题: </th><td><input type="text" id="ImageTitle0" class="textbox" data-options="required:true" /></td></tr>
                            <tr>
                                <th>图片: </th>
                                <td>
                                    <form id="form02" method="post">
                                        <input type="hidden" name="ImageUrl0" id="ImageUrl0" />
                                        <img class="expic" src="/Content/Images/NotPic.jpg" />
                                        <br />
                                        <a href="javascript:$(&#39;#FileUpload02&#39;).trigger(&#39;click&#39;);" class="files">@Resource.Browse</a>
                                        <input type="file" id="FileUpload02" class="displaynone" name="FileUpload02" onchange="Upload(&#39;SingleFile&#39;, &#39;ImageUrl0&#39;, &#39;FileUpload02&#39;, &#39;1&#39;, &#39;1&#39;, &#39;#form02&#39;);" />
                                        <span class="uploading">@Resource.Uploading</span>
                                    </form>
                            </tr>
                            <tr><th>内容: </th><td><textarea id="ImageContent0" style="width: 300px; height: 100px;"></textarea></td></tr>
                            <tr><th>链接: </th><td><input type="text" id="ImageLink0" /></td></tr>
                            <tr><th>排序: </th><td><input type="number" id="Sort0" value="0" /></td></tr>
                        </table>

                    </p>
                    <p style="padding:10px;">
                        <table id="List0"></table>
                    </p>   
                </p>
                            
                <p id="p03" class="displaynone">
                    <p class="mvctool bgb">
                        @Html.ToolButton("btnSava03", "fa fa-plus", "提交保存", ref perm, "Edit", false)                    </p>
                                <table class="formtablenormal" style="margin:20px;">
                                    <tr><th>标题: </th><td><input type="text" id="VoiceTitle0" /></td></tr>
                                    <tr><th>语音: </th><td>
                                                         <form id="form03" method="post">
                                                             <input type="text" name="VoiceUrl0" class="left" id="VoiceUrl0" />
                                                             <a href="javascript:$(&#39;#FileUpload03&#39;).trigger(&#39;click&#39;);" class="files">@Resource.Browse</a>
                                                             <input type="file" accept="audio/mpeg" id="FileUpload03" class="displaynone" name="FileUpload03" onchange="Upload(&#39;SingleFile&#39;, &#39;VoiceUrl0&#39;, &#39;FileUpload03&#39;, &#39;&#39;, &#39;&#39;, &#39;#form03&#39;);" />
                                                             <span class="uploading">@Resource.Uploading</span>
                                                         </form>
                                        </td></tr>
                                    <tr><th>描述: </th><td><textarea id="VoiceContent0" style="width:335px; height:300px;"></textarea></td></tr>
                                </table>
                 </p>       
            </p>
            <p title="关注时回复" >
                <table class="formtable" style="height:45px; line-height:45px; width:100%; border-bottom:1px solid #e7eaec">
                    <tr>
                        <td style="width:100px;">
                            文本: @Html.SwitchButtonByEdit("swText1", false)                        </td>
                        <td style="width:100px;">
                            图文: @Html.SwitchButtonByEdit("swImage1", false)                        </td>
                        <td style="width:100px;">
                            语音: @Html.SwitchButtonByEdit("swVoice1", false)                        </td>
                        <td></td>
                        <td style="width:300px;">
                            <p class="color-green">当前操作公众号:<span id="CurrentOfficalAccount">@ViewBag.CurrentOfficalAcount</span></p>
                        </td>
                    </tr>
                </table>
                <p id="p11" class="displaynone">
                    <p class="mvctool bgb">
                        @Html.ToolButton("btnSava11", "fa fa-plus", "提交保存", ref perm, "Edit", false)                    </p>
                    <textarea id="Text1" style="width: 300px;height: 330px; margin:20px;"></textarea>
                </p>
                <p id="p12" class="displaynone">
                    <p class="mvctool bgb">
                        @Html.ToolButton("btnCreate12", "fa fa-search", "添加回复", ref perm, "Edit", false)
                        @Html.ToolButton("btnEdit12", "fa fa-search", "编辑", ref perm, "Edit", true)
                        @Html.ToolButton("btnDelete12", "fa fa-search", "删除", ref perm, "Delete", false)                    </p>
                    <p id="modalwindow1" class="easyui-window" style="width:600px; height:550px;" data-options="modal:true,closed: true,minimizable:false,shadow:false">
                        <p class="mvctool bgb">
                            @Html.ToolButton("btnSava12", "fa fa-search", "提交保存", ref perm, "Edit", false)                            
                        </p>
                        <table class="formtablenormal">
                            <tr><th>标题: </th><td><input type="text" id="ImageTitle1" class="textbox" data-options="required:true" /></td></tr>
                            <tr>
                                <th>图片: </th>
                                <td>
                                    <form id="form12" method="post">
                                        <input type="hidden" name="ImageUrl1" id="ImageUrl1" />
                                        <img class="expic" src="/Content/Images/NotPic.jpg" />
                                        <br />
                                        <a href="javascript:$(&#39;#FileUpload12&#39;).trigger(&#39;click&#39;);" class="files">@Resource.Browse</a>
                                        <input type="file" id="FileUpload12" class="displaynone" name="FileUpload12" onchange="Upload(&#39;SingleFile&#39;, &#39;ImageUrl1&#39;, &#39;FileUpload12&#39;, &#39;1&#39;, &#39;1&#39;, &#39;#form12&#39;);" />
                                        <span class="uploading">@Resource.Uploading</span>
                                    </form>
                            </tr>
                            <tr><th>内容: </th><td><textarea id="ImageContent1" style="width: 300px; height: 100px;"></textarea></td></tr>
                            <tr><th>链接: </th><td><input type="text" id="ImageLink1" /></td></tr>
                            <tr><th>排序: </th><td><input type="number" id="Sort1" value="0" /></td></tr>
                        </table>

                    </p>
                    <p style="padding:10px;">
                        <table id="List1"></table>
                    </p>
                </p>

                <p id="p13" class="displaynone">
                    <p class="mvctool bgb">
                        @Html.ToolButton("btnSava13", "fa fa-plus", "提交保存", ref perm, "Edit", false)                    </p>
                    <table class="formtablenormal" style="margin:20px;">
                        <tr><th>标题: </th><td><input type="text" id="VoiceTitle1" /></td></tr>
                        <tr>
                            <th>语音: </th>
                            <td>
                                <form id="form13" method="post">
                                    <input type="text" name="VoiceUrl1" class="left" id="VoiceUrl0" />
                                    <a href="javascript:$(&#39;#FileUpload13&#39;).trigger(&#39;click&#39;);" class="files">@Resource.Browse</a>
                                    <input type="file" accept="audio/mpeg" id="FileUpload13" class="displaynone" name="FileUpload13" onchange="Upload(&#39;SingleFile&#39;, &#39;VoiceUrl1&#39;, &#39;FileUpload13&#39;, &#39;&#39;, &#39;&#39;, &#39;#form13&#39;);" />
                                    <span class="uploading">@Resource.Uploading</span>
                                </form>
                            </td>
                        </tr>
                        <tr><th>描述: </th><td><textarea id="VoiceContent1" style="width:335px; height:300px;"></textarea></td></tr>
                    </table>
                </p>  
            </p>

            <p title="文本回复" style="padding:10px">
                <p class="mvctool ">
                    @Html.ToolButton("btnCreate2", "fa fa-search", "添加回复", ref perm, "Edit", true)
                    @Html.ToolButton("btnEdit2", "fa fa-search", "编辑", ref perm, "Edit", true)
                    @Html.ToolButton("btnDelete2", "fa fa-search", "删除", ref perm, "Delete", false)                    <p class="rightp color-green">
                        当前操作公众号: <span id="CurrentOfficalAccount">@ViewBag.CurrentOfficalAcount</span>
                    </p>
                </p>
                <p id="modalwindow2"
                        class="easyui-window"
                        style="width:600px; height:500px;" data-options="modal:true,closed: true,minimizable:false,shadow:false">
                    <p class="mvctool bgb">
                        @Html.ToolButton("btnSava2", "fa fa-search", "提交保存", ref perm, "Edit", false)                        <p class="rightp color-green">
                            当前操作公众号: <span id="CurrentOfficalAccount">@ViewBag.CurrentOfficalAcount</span>
                        </p>
                    </p>
                    <table class="formtablenormal">
                        <tr>
                            <th>关键字: </th>
                            <td>
                                <input type="text" id="TextMatchKey2" />
                            </td>
                        </tr>
                        <tr>
                            <th>规则: </th>
                            <td>
                                @Html.SwitchButtonByEdit("swMessageRule2", true, "模糊匹配(关键字包含内容) ", "完全匹配(内容与关键字完全匹配)", "280")                            </td>
                        </tr>
                        <tr>
                            <th>内容: </th>
                            <td>
                                <textarea id="Text2" style="width: 280px;height:200px"></textarea>
                            </td>
                        </tr>
                    </table>
                </p>
                <table id="List2"></table>
               
            </p>

            <p title="图片回复" style="padding:10px">
                <p class="mvctool">
                    @Html.ToolButton("btnCreate3", "fa fa-search", "添加回复", ref perm, "Edit", true)
                    @Html.ToolButton("btnEdit3", "fa fa-search", "编辑", ref perm, "Edit", true)
                    @Html.ToolButton("btnDelete3", "fa fa-search", "删除", ref perm, "Delete", false)                    <p class="rightp color-green">
                        当前操作公众号: <span id="CurrentOfficalAccount">@ViewBag.CurrentOfficalAcount</span>
                    </p>
                </p>
                <p id="modalwindow3" class="easyui-window" style="width:600px; height:550px;" data-options="modal:true,closed: true,minimizable:false,shadow:false">
                    <p class="mvctool bgb">
                        @Html.ToolButton("btnSava3", "fa fa-search", "提交保存", ref perm, "Edit", false)                        <p class="rightp color-green">
                            当前操作公众号: <span id="CurrentOfficalAccount">@ViewBag.CurrentOfficalAcount</span>
                        </p>
                    </p>
                    <table class="formtablenormal">
                        <tr><th>标题: </th><td><input type="text" id="ImageTitle3" /></td></tr>
                        <tr>
                            <th>关键字: </th>
                            <td>
                                <input type="text" id="TextMatchKey3" />
                            </td>
                        </tr>
                        <tr>
                            <th>规则: </th>
                            <td>
                                @Html.SwitchButtonByEdit("swMessageRule3", true, "模糊匹配(关键字包含内容) ", "完全匹配(内容与关键字完全匹配)", "280")                            </td>
                        </tr>
                        <tr>
                            <th>图片: </th>
                            <td>
                                <form id="form3" method="post">
                                    <input type="hidden" name="ImageUrl3" id="ImageUrl3" />
                                    <img class="expic" src="/Content/Images/NotPic.jpg" />
                                    <br />
                                    <a href="javascript:$(&#39;#FileUpload3&#39;).trigger(&#39;click&#39;);" class="files">@Resource.Browse</a>
                                    <input type="file" id="FileUpload3" class="displaynone" name="FileUpload3" onchange="Upload(&#39;SingleFile&#39;, &#39;ImageUrl3&#39;, &#39;FileUpload3&#39;, &#39;1&#39;, &#39;1&#39;, &#39;#form3&#39;);" />
                                    <span class="uploading">@Resource.Uploading</span>
                                </form>
                            </td>
                        </tr>
                        <tr><th>内容: </th><td><textarea id="ImageContent3" style="width: 300px; height: 80px;"></textarea></td></tr>
                        <tr><th>链接: </th><td><input type="text" id="ImageLink3" /></td></tr>
                        <tr><th>排序: </th><td><input type="number" id="Sort3" value="0" /></td></tr>
                    </table>
                  
                </p>
                <table><tr><td><table id="List31"></table></td><td> </td><td><table id="List3"></table></td></tr></table>
               
            </p>

            <p title="语音回复" style="padding:10px">
                <p class="mvctool ">
                    @Html.ToolButton("btnCreate4", "fa fa-search", "添加回复", ref perm, "Edit", false)
                    @Html.ToolButton("btnEdit4", "fa fa-search", "编辑", ref perm, "Edit", true)
                    @Html.ToolButton("btnDelete4", "fa fa-search", "删除", ref perm, "Delete", false)                    <p class="rightp color-green">
                        当前操作公众号: <span id="CurrentOfficalAccount">@ViewBag.CurrentOfficalAcount</span>
                    </p>
                </p>
                <p id="modalwindow4"
                     class="easyui-window"
                     style="width:600px; height:500px;" data-options="modal:true,closed: true,minimizable:false,shadow:false">
                    <p class="mvctool bgb">
                        @Html.ToolButton("btnSava4", "fa fa-search", "提交保存", ref perm, "Edit", false)                        <p class="rightp color-green">
                            当前操作公众号: <span id="CurrentOfficalAccount">@ViewBag.CurrentOfficalAcount</span>
                        </p>
                    </p>
                    <table class="formtablenormal">
                        <tr><th>标题: </th><td><input type="text" id="VoiceTitle4" /></td></tr>
                        <tr>
                            <th>关键字: </th>
                            <td>
                                <input type="text" id="TextMatchKey4" />
                            </td>
                        </tr>
                        <tr>
                            <th>规则: </th>
                            <td>
                                @Html.SwitchButtonByEdit("swMessageRule4", true, "模糊匹配(关键字包含内容) ", "完全匹配(内容与关键字完全匹配)", "280")                            </td>
                        </tr>
                        <tr>
                            <th>语音: </th>
                            <td>
                                <form id="form4" method="post">
                                    <input type="text" class="left" name="VoiceUrl4" id="VoiceUrl4" />
                                    <a href="javascript:$(&#39;#FileUpload4&#39;).trigger(&#39;click&#39;);" class="files">@Resource.Browse</a>
                                    <input type="file" id="FileUpload4" accept="audio/mpeg" class="displaynone" name="FileUpload4" onchange="Upload(&#39;SingleFile&#39;, &#39;VoiceUrl4&#39;, &#39;FileUpload4&#39;, &#39;&#39;, &#39;&#39;, &#39;#form4&#39;);" />
                                    <span class="uploading">@Resource.Uploading</span>
                                </form>
                               
                            </td>
                        </tr>
                        <tr><th>描述: </th><td><textarea id="VoiceContent4" style="width: 300px; height: 100px;"></textarea></td></tr>
                       
                    </table>

                </p>
                <table id="List4"></table>
            </p>
            @*<p title="视频回复"
                 style="padding:10px">
            </p>*@
            @*<p title="链接回复"
                 styIe="padding:10px">
            </p>
            <p title="LBS位置回复"
                 style="padding:10px">
            </p>*@        </p>
    </p>
Copy after login


View Code

Use the front-end mind map to quickly understand the front-end code and apply it to actual practice

Summary

Message management is a very skillful thing

1. When there is no task reply to the message, we should enable the default reply, otherwise the user will not get a response and lose the experience

2. The design of keywords is generally linked to each other, which has a guiding role.

For example: Keyword: (I want) Reply: Press 1 to join to get a gift, press 2 to get it directly 50 yuan

 Keywords: (1) Reply: Press 3 to get a piece of Tieguanyin tea, press 4 to get Pu'er tea

Keywords: (3 or 4) Reply: Please reply to your Address, phone number and recipient

In this way we will get a complete conversation between the system and the user, of course we also have to process the user’s last information

The above is the detailed content of ASP.NET MVC5+EF6+EasyUI backend management system WeChat public platform development. For more information, please follow other related articles on the PHP Chinese website!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

PHP WeChat development: How to implement message encryption and decryption PHP WeChat development: How to implement message encryption and decryption May 13, 2023 am 11:40 AM

PHP is an open source scripting language that is widely used in web development and server-side programming, especially in WeChat development. Today, more and more companies and developers are starting to use PHP for WeChat development because it has become a truly easy-to-learn and easy-to-use development language. In WeChat development, message encryption and decryption are a very important issue because they involve data security. For messages without encryption and decryption methods, hackers can easily obtain the data, posing a threat to users.

Using PHP to develop WeChat mass messaging tools Using PHP to develop WeChat mass messaging tools May 13, 2023 pm 05:00 PM

With the popularity of WeChat, more and more companies are beginning to use it as a marketing tool. The WeChat group messaging function is one of the important means for enterprises to conduct WeChat marketing. However, if you only rely on manual sending, it is an extremely time-consuming and laborious task for marketers. Therefore, it is particularly important to develop a WeChat mass messaging tool. This article will introduce how to use PHP to develop WeChat mass messaging tools. 1. Preparation work To develop WeChat mass messaging tools, we need to master the following technical points: Basic knowledge of PHP WeChat public platform development Development tools: Sub

PHP WeChat development: How to implement user tag management PHP WeChat development: How to implement user tag management May 13, 2023 pm 04:31 PM

In the development of WeChat public accounts, user tag management is a very important function, which allows developers to better understand and manage their users. This article will introduce how to use PHP to implement the WeChat user tag management function. 1. Obtain the openid of the WeChat user. Before using the WeChat user tag management function, we first need to obtain the user's openid. In the development of WeChat public accounts, it is a common practice to obtain openid through user authorization. After the user authorization is completed, we can obtain the user through the following code

PHP WeChat development: How to implement group message sending records PHP WeChat development: How to implement group message sending records May 13, 2023 pm 04:31 PM

As WeChat becomes an increasingly important communication tool in people's lives, its agile messaging function is quickly favored by a large number of enterprises and individuals. For enterprises, developing WeChat into a marketing platform has become a trend, and the importance of WeChat development has gradually become more prominent. Among them, the group sending function is even more widely used. So, as a PHP programmer, how to implement group message sending records? The following will give you a brief introduction. 1. Understand the development knowledge related to WeChat public accounts. Before understanding how to implement group message sending records, I

PHP WeChat development: How to implement customer service chat window management PHP WeChat development: How to implement customer service chat window management May 13, 2023 pm 05:51 PM

WeChat is currently one of the social platforms with the largest user base in the world. With the popularity of mobile Internet, more and more companies are beginning to realize the importance of WeChat marketing. When conducting WeChat marketing, customer service is a crucial part. In order to better manage the customer service chat window, we can use PHP language for WeChat development. 1. Introduction to PHP WeChat development PHP is an open source server-side scripting language that is widely used in the field of Web development. Combined with the development interface provided by WeChat public platform, we can use PHP language to conduct WeChat

PHP WeChat development: How to implement voting function PHP WeChat development: How to implement voting function May 14, 2023 am 11:21 AM

In the development of WeChat public accounts, the voting function is often used. The voting function is a great way for users to quickly participate in interactions, and it is also an important tool for holding events and surveying opinions. This article will introduce you how to use PHP to implement WeChat voting function. Obtain the authorization of the WeChat official account. First, you need to obtain the authorization of the WeChat official account. On the WeChat public platform, you need to configure the API address of the WeChat public account, the official account, and the token corresponding to the public account. In the process of our development using PHP language, we need to use the PH officially provided by WeChat

PHP WeChat development: How to implement speech recognition PHP WeChat development: How to implement speech recognition May 13, 2023 pm 09:31 PM

With the popularity of mobile Internet, more and more people are using WeChat as a social software, and the WeChat open platform has also brought many opportunities to developers. In recent years, with the development of artificial intelligence technology, speech recognition technology has gradually become one of the popular technologies in mobile terminal development. In WeChat development, how to implement speech recognition has become a concern for many developers. This article will introduce how to use PHP to develop WeChat applications to implement speech recognition functions. 1. Principles of Speech Recognition Before introducing how to implement speech recognition, let us first understand the language

How to use PHP for WeChat development? How to use PHP for WeChat development? May 21, 2023 am 08:37 AM

With the development of the Internet and mobile smart devices, WeChat has become an indispensable part of the social and marketing fields. In this increasingly digital era, how to use PHP for WeChat development has become the focus of many developers. This article mainly introduces the relevant knowledge points on how to use PHP for WeChat development, as well as some of the tips and precautions. 1. Development environment preparation Before developing WeChat, you first need to prepare the corresponding development environment. Specifically, you need to install the PHP operating environment and the WeChat public platform

See all articles