public ActionResult UpgradePage(string model, string viewname)
 {
     try
     {
         strLogs = "";
         DbContext currentDb = SysContext.GetCurrentDb();
         core_menu core_menu = currentDb.FirstOrDefault <core_menu>("where MenuUrl like '%model=" + model + "%' and MenuUrl like '%viewname=" + viewname + "%'", new object[0]);
         if (core_menu == null)
         {
             core_menu = currentDb.FirstOrDefault <core_menu>("where MenuUrl like '%model=" + model + "%' and MenuUrl like '%viewtype=" + viewname + "%'", new object[0]);
         }
         if (core_menu != null)
         {
             UpdateCoreMenu(core_menu);
         }
         GenUpdateFile(model, viewname);
         return(Json(new AjaxResult
         {
             statusCode = "1"
         }));
     }
     catch (Exception ex)
     {
         ServiceHelper.Log(ex);
         return(Json(new AjaxResult
         {
             statusCode = ((ex is UserException) ? "2" : "3"),
             message = ex.Message
         }));
     }
 }
        private void UpdateCoreMenu(core_menu menuData)
        {
            DbContext currentDb = SysContext.GetCurrentDb();

            if (menuData.MenuUrl != null)
            {
                string text = "http://a.com/" + menuData.MenuUrl;
                if (menuData.MenuUrl != null && menuData.MenuUrl.EndsWith(".js"))
                {
                    currentDb.Update("core_menu", "ID", new
                    {
                        ID      = menuData.ID,
                        MenuUrl = menuData.MenuUrl.Replace(".js", ".w")
                    });
                }
                if (menuData.MenuUrl != null && menuData.MenuUrl.Contains(".js?"))
                {
                    currentDb.Update("core_menu", "ID", new
                    {
                        ID      = menuData.ID,
                        MenuUrl = menuData.MenuUrl.Replace(".js", ".w")
                    });
                }
                if (text.Contains("model="))
                {
                    string newUrl = GetNewUrl(text);
                    if (!(newUrl == text))
                    {
                        strLogs += string.Format("\n更新菜单({0})链接为{1}", menuData.MenuName, newUrl);
                        currentDb.Update("core_menu", "ID", new
                        {
                            ID      = menuData.ID,
                            MenuUrl = newUrl
                        });
                    }
                }
            }
        }
        public ActionResult setup(string content)
        {
            string    updatePackagePath = GetUpdatePackagePath();
            DbContext currentDb         = SysContext.GetCurrentDb();

            System.IO.File.WriteAllBytes(updatePackagePath, Convert.FromBase64String(content));
            Dictionary <string, object> dictionary = new Dictionary <string, object>();
            List <string> lstLogs = (List <string>)(dictionary["logs"] = new List <string>());

            try
            {
                if (System.IO.File.Exists(updatePackagePath))
                {
                    dictionary["exist"] = true;
                    string projectPath = GetProjectPath();
                    string zipRootPath = updatePackagePath.Substring(0, updatePackagePath.Length - ".zip".Length) + "\\";
                    ZipHelper.UnZip(updatePackagePath, zipRootPath);
                    System.IO.File.Delete(updatePackagePath);
                    string[] files = Directory.GetFiles(zipRootPath, "*", SearchOption.AllDirectories);
                    dictionary["files_count"] = files.Count();
                    dictionary["files"]       = files;
                    bool     modelBuild   = false;
                    bool     serviceBuild = false;
                    string[] array        = files;
                    foreach (string f in array)
                    {
                        try
                        {
                            string fileName = f.Replace(zipRootPath, "");
                            lstLogs.Add("path:" + fileName);
                            if (fileName.StartsWith("db\\"))
                            {
                                string sqlContent = System.IO.File.ReadAllText(f);
                                int    num        = 0;
                                if (fileName.EndsWith(".sqljson"))
                                {
                                    Dictionary <string, object> sqlJson = JsonHelper.DeserializeJsonToObject <Dictionary <string, object> >(sqlContent);
                                    sqlContent = ObjectExtensions.ToStr(sqlJson["sql"]);
                                    var ags = sqlJson["args"];
                                    if (ags is Array)
                                    {
                                        num = currentDb.Execute(sqlContent, ((Array)ags));
                                    }
                                    else
                                    {
                                        num = currentDb.Execute(sqlContent, ags);
                                    }
                                }
                                else
                                {
                                    try
                                    {
                                        currentDb.Execute(sqlContent, new object[0]);
                                    }
                                    catch (Exception ex)
                                    {
                                        Log("写入SQL失败:" + sqlContent + "(" + ex.Message + ")");
                                    }
                                }
                                try
                                {
                                    lstLogs.Add("写入SQL:" + sqlContent + "(" + num + ")");
                                    Log("写入SQL:" + sqlContent + "(" + num + ")");
                                }
                                catch (Exception ex)
                                {
                                    lstLogs.Add("写入SQL:" + sqlContent + "\n出错:" + ex.Message);
                                    Log("写入SQL:" + sqlContent + "\n出错:" + ex.Message);
                                }
                            }
                            else if (fileName == "update.json")
                            {
                                string     input      = System.IO.File.ReadAllText(f);
                                updateinfo updateinfo = JsonHelper.DeserializeJsonToObject <updateinfo>(input);
                                if (updateinfo.model != null && updateinfo.model.Any())
                                {
                                    AddCSFiles("Model", zipRootPath, updateinfo.model);
                                    modelBuild = true;
                                }
                                if (updateinfo.model_remove != null && updateinfo.model_remove.Any())
                                {
                                    RemvoeCSFiles("Model", zipRootPath, updateinfo.model_remove);
                                    modelBuild = true;
                                }
                                if (updateinfo.web != null && updateinfo.web.Any())
                                {
                                    AddStaticFiles("web", zipRootPath, updateinfo.web);
                                }
                                if (updateinfo.web_remove != null && updateinfo.web_remove.Any())
                                {
                                    RemvoeStaticFiles("web", zipRootPath, updateinfo.web_remove);
                                }
                                if (updateinfo.mobileWeb != null && updateinfo.mobileWeb.Any())
                                {
                                    AddStaticFiles("mobileWeb", zipRootPath, updateinfo.mobileWeb);
                                }
                                if (updateinfo.mobileWeb_remove != null && updateinfo.mobileWeb_remove.Any())
                                {
                                    RemvoeStaticFiles("mobileWeb", zipRootPath, updateinfo.mobileWeb_remove);
                                }
                                if (updateinfo.service != null && updateinfo.service.Any())
                                {
                                    AddCSFiles("Service", zipRootPath, updateinfo.service);
                                    serviceBuild = true;
                                }
                                if (updateinfo.service_remove != null && updateinfo.service_remove.Any())
                                {
                                    RemvoeCSFiles("Service", zipRootPath, updateinfo.service_remove);
                                    serviceBuild = true;
                                }
                                if (updateinfo.bin != null && updateinfo.bin.Any())
                                {
                                    AddBinFiles(zipRootPath, updateinfo.bin);
                                }
                                if (updateinfo.bin_remove != null && updateinfo.bin_remove.Any())
                                {
                                    RemoveBinFiles(zipRootPath, updateinfo.bin_remove);
                                }
                                if (updateinfo.menu != null && updateinfo.menu.Any())
                                {
                                    foreach (updatemenu item in updateinfo.menu)
                                    {
                                        core_menu core_menu = new core_menu();
                                        core_menu.ID           = Guid.NewGuid().ToString();
                                        core_menu.CreateUserID = SysContext.WanJiangUserID;
                                        core_menu.CreateDate   = DateTime.Now;
                                        core_menu.MenuName     = item.title;
                                        core_menu.MenuUrl      = item.url;
                                        core_menu.MenuNo       = item.menuNo;
                                        core_menu.MenuIcon     = "/contents/icons/bubbles/02.Shop.png";
                                        if (!string.IsNullOrEmpty(item.parentNo))
                                        {
                                            string text6 = core_menu.ParentID = currentDb.ExecuteScalar <string>("select ID from core_menu where MenuNo = @0", new object[1]
                                            {
                                                item.parentNo
                                            });
                                        }
                                        currentDb.Insert("core_menu", "ID", false, (object)core_menu);
                                    }
                                }
                            }
                        }
                        catch (Exception ex2)
                        {
                            lstLogs.Add("Error2:" + ex2.Message + ",StackTrace2:" + ex2.StackTrace);
                        }
                    }
                    //if (modelBuild)
                    //{
                    //    string projectName = ConfigurationManager.AppSettings["ModelProjectName"];
                    //    CompileProject($"{projectPath}{projectName}\\{projectName}.csproj");
                    //}
                    //if (serviceBuild)
                    //{
                    //    string projectName = ConfigurationManager.AppSettings["ServiceProjectName"];
                    //    CompileProject($"{projectPath}{projectName}\\{projectName}.csproj");
                    //}
                    //if (modelBuild || serviceBuild)
                    //{
                    //    string projectName = ConfigurationManager.AppSettings["WebProjectName"];
                    //    CompileProject($"{projectPath}{projectName}\\{projectName}.csproj");
                    //}
                }
                else
                {
                    dictionary["exist"] = false;
                }
            }
            catch (Exception ex)
            {
                lstLogs.Add("Error:" + ex.Message + ",StackTrace:" + ex.StackTrace);
            }
            return(Json(new AjaxResult
            {
                data = dictionary,
                statusCode = "1"
            }));
        }