public MessageModel UpdateSingleEntity(ProductSpecModel model)
        {
            Func <IEntityContext, string> operation = (context =>
            {
                var data = context.ProductSpec.FirstOrDefault(m => m.SPCID == model.SPCID);
                if (data == null)
                {
                    return("当前数据不存在或被更新,请刷新后再次操作!");
                }

                data.SPCID = model.SPCID;
                data.ClassID = model.ClassID;
                data.ClassName = model.ClassName;
                data.SpecCode = model.SpecCode;
                data.SpecName = model.SpecName;
                data.Remark = model.Remark;
                data.IsLocked = model.IsLocked;
                data.IsShow = model.IsShow;
                data.ModifyID = 1;
                data.ModifyName = "Admin";
                data.ModifyTime = DateTime.Now;
                context.SaveChanges();
                return(string.Empty);
            });

            return(base.DbOperation(operation));
        }
Пример #2
0
        private async Task <string> UpdateProductSpecMesh(AssetFileModel file, ProductSpecModel spec, StreamWriter loger)
        {
            StaticMeshModel mesh = cache.Parsed.GetById(file.ObjId) as StaticMeshModel;

            if (mesh == null)
            {
                return("mesh obj not found " + file.ObjId);
            }

            spec.name          = file.Name;
            spec.iconAssetId   = file.iconfid;
            spec.ComponentsObj = new List <FProductComponentModel>();
            FProductStaticMeshComponent meshcomp = new FProductStaticMeshComponent();

            meshcomp.StaticMesh = mesh;
            meshcomp.Id         = mesh.id;
            meshcomp.Name       = mesh.name;
            meshcomp.Icon       = file.iconurl;
            spec.ComponentsObj.Add(meshcomp);
            spec.staticMeshIds = "{\"Items\":[{\"StaticMeshId\":\"" + mesh.id + "\",\"MaterialIds\":[]}]}";
            spec.PropObjToStr();

            var res = await api.PutAsync <ProductSpecModel>("/productspec", spec);

            return(res.IsSuccess ? "ok" : "failed " + res.StatusCode);
        }
Пример #3
0
        private async Task <string> CreateProductForMesh(AssetFileModel file, StreamWriter loger)
        {
            StaticMeshModel mesh = cache.Parsed.GetById(file.ObjId) as StaticMeshModel;

            if (mesh == null)
            {
                return("mesh obj not found " + file.ObjId);
            }

            ProductSpecModel spec = new ProductSpecModel();

            spec.name          = file.Name;
            spec.iconAssetId   = file.iconfid;
            spec.IconUrl       = file.iconurl;
            spec.ComponentsObj = new List <FProductComponentModel>();
            FProductStaticMeshComponent meshcomp = new FProductStaticMeshComponent();

            meshcomp.StaticMesh = mesh;
            meshcomp.Id         = mesh.id;
            meshcomp.Name       = mesh.name;
            meshcomp.Icon       = file.iconurl;
            spec.ComponentsObj.Add(meshcomp);
            spec.staticMeshIds = "{\"Items\":[{\"StaticMeshId\":\"" + mesh.id + "\",\"MaterialIds\":[]}]}";
            spec.PropObjToStr();

            ProductModel product = new ProductModel();

            product.name        = file.Name;
            product.iconAssetId = file.iconfid;
            product.IconUrl     = file.iconurl;
            var prodres = await api.PostAsync <ProductModel>("/products", product);

            string productId = "";
            string specId    = "";

            if (prodres.IsSuccess && prodres.Content != null && prodres.Content.specifications?.Count > 0)
            {
                productId = prodres.Content.id;
                specId    = prodres.Content.specifications[0]?.id;
                spec.id   = specId;
                var specres = await api.PutAsync("/productspec", spec);//现在的api版本,put 不需要id

                if (specres.IsSuccess)
                {
                    loger.WriteLine($"{DateTime.Now}, CREATE, {file.Package}, {file.Type}, {file.ObjId}, productid {prodres.Content.id} SpecId {specId} update ok");
                }
                else
                {
                    loger.WriteLine($"{DateTime.Now}, CREATE, {file.Package}, {file.Type}, {file.ObjId}, productid {prodres.Content.id} SpecId {specId} update failed. {specres.StatusCode} {specres.Content}");
                }
            }
            else
            {
                loger.WriteLine($"{DateTime.Now}, CREATE, {file.Package}, {file.Type}, {file.ObjId}, create product failed. {prodres.StatusCode} {prodres.Content}");
            }
            string ids = $"product id {productId} specid {specId}";

            return(prodres.IsSuccess ? "ok " + ids : "failed " + prodres.StatusCode);
        }
Пример #4
0
        public ActionResult Edit(ProductSpecModel productSpecModel)
        {
            var result = productSpecService.UpdateSingleProductSpec(productSpecModel);
            var flag   = result.Status == MessageStatus.Success ? true : false;
            var msg    = result.Message;

            return(Json(new { flag = flag, msg = msg }));
        }
Пример #5
0
        /// <summary>
        /// 向产品规格表中插入记录
        /// </summary>
        /// <param name="productSpec">产品规格ID</param>
        /// <returns>返回向产品规格表中插入记录所影响的行数</returns>
        public static int AddProductSpec(ProductSpecModel productSpec)
        {
            SqlParameter[] sparams = new SqlParameter[]
            {
                new SqlParameter("@productSpecName", SqlDbType.VarChar, 50),
                new SqlParameter("@productSpecDescr", SqlDbType.VarChar, 50)
            };
            sparams[0].Value = productSpec.ProductSpecName;
            sparams[1].Value = productSpec.ProductSpecDescr;

            return(DBHelper.ExecuteNonQuery("AddProductSpec", sparams, CommandType.StoredProcedure));
        }
        public MessageModel InsertSingleEntity(ProductSpecModel model)
        {
            Func <IEntityContext, string> operation = (context => {
                model.ModifyID = UserManagement.CurrentUser.UserID;
                model.ModifyName = UserManagement.CurrentUser.UserName;
                model.ModifyTime = DateTime.Now;
                context.ProductSpec.Add(model);
                context.SaveChanges();
                return(string.Empty);
            });

            return(base.DbOperation(operation));
        }
Пример #7
0
        /// <summary>
        /// 查询产品规格
        /// </summary>
        /// <param name="productSpecID"></param>
        /// <returns></returns>
        public static ProductSpecModel GetProductSpecItem(int productSpec)
        {
            string cmd = "select ProductSpecName,ProductSpecDEscr from ProductSpec where ProductSpec=@ProductSpec";

            SqlParameter[] param = new SqlParameter[]
            {
                new SqlParameter("@ProductSpec", productSpec)
            };

            SqlDataReader dr = DBHelper.ExecuteReader(cmd, param, CommandType.Text);

            dr.Read();

            ProductSpecModel psm = new ProductSpecModel(productSpec);

            psm.ProductSpecName  = dr["ProductSpecName"].ToString();
            psm.ProductSpecDescr = dr["ProductSpecDEscr"].ToString();

            dr.Close();

            return(psm);
        }
Пример #8
0
 /// <summary>
 /// 向产品规格表中插入记录
 /// </summary>
 /// <param name="productSpec">产品规格ID</param>
 /// <returns>返回向产品规格表中插入记录所影响的行数</returns>
 public static int AddProductSpec(ProductSpecModel productSpec)
 {
     return(ProductSpecDAL.AddProductSpec(productSpec));
 }
Пример #9
0
 /// <summary>
 /// 更新指定产品规格信息
 /// </summary>
 /// <param name="productSpec">产品规格模型</param>
 /// <returns>返回更新指定产品规格信息所影响的行数</returns>
 public static int UpdProductSpecByID(ProductSpecModel productSpec)
 {
     return(ProductSpecDAL.UpdProductSpecByID(productSpec));
 }
Пример #10
0
        public string CheckForUpload()
        {
            if (IsMd5Checked == false)
            {
                return("请等待md5计算结束");
            }

            UploadList.Clear();

            //check files to upload, create upload task first.
            foreach (var item in LocalFiles)
            {
                var svrObj = cache.Parsed.GetNewestObjByPackageName(item.Package);

                //upload it if need.
                if (svrObj == null || //server no this file
                    string.Compare(svrObj.fileAsset?.md5, item.Md5, true) != 0 ||  //or svr file is different
                    string.IsNullOrEmpty(svrObj.fileAsset?.url)    //or svr file download url is invalid.
                    )
                {
                    AssetFileOperate op = new AssetFileOperate();
                    op.File    = item;
                    op.Operate = AssetFileOperateType.UploadFile;
                    UploadList.Add(op);
                }
            }

            StringBuilder sb = new StringBuilder();

            sb.AppendLine($"本地资源 {LocalFiles.Count}, 服务器资源 {cache.Parsed.PackageObjMap.Count}, 服务器对象 {ServerFiles.Count}");
            foreach (var item in LocalFiles)
            {
                var assetFiles                 = cache.Parsed.GetFileAssetsByPackageName(item.Package);
                var objOnPackage               = cache.Parsed.GetNewestObjByPackageName(item.Package);
                var productOnPackage           = cache.Parsed.GetProductOnPackage(item.Package);
                ProductSpecModel specOnPackage = null;

                if (objOnPackage != null)
                {
                    item.ObjId = objOnPackage.id;
                }

                if (productOnPackage?.specifications?.Count > 0 && string.IsNullOrEmpty(productOnPackage.specifications[0].id) == false)
                {
                    specOnPackage = productOnPackage.specifications[0];
                }

                if (objOnPackage == null) // server no this asset file, no staticmesh/material/texture/map.
                {
                    if (item.IsInWorkDir == false)
                    {
                        continue;//only create objects for item in work dir.
                    }
                    localAdd.Add(item);
                    AssetFileOperate op = new AssetFileOperate();
                    op.File    = item;
                    op.Operate = AssetFileOperateType.Create;

                    //no file asset but exist a product to reference it.
                    if (productOnPackage != null)
                    {
                        if (productOnPackage.specifications?.Count > 0 && string.IsNullOrEmpty(productOnPackage.specifications[0].id) == false)
                        {
                            op.Target  = productOnPackage.specifications[0].id;
                            op.specId  = productOnPackage.specifications[0].id;
                            op.spec    = productOnPackage.specifications[0];
                            op.Operate = AssetFileOperateType.CreateAndUpdateSpec;
                        }
                        else
                        {
                            AssetFileOperate op2 = new AssetFileOperate();
                            op2.File      = item;
                            op2.Operate   = AssetFileOperateType.DeleteProduct;
                            op2.Target    = productOnPackage.id;
                            op2.productId = productOnPackage.id;
                            UploadList.Add(op2);
                        }
                    }

                    UploadList.Add(op);
                }
                else
                {
                    //file asset existed.

                    bool isFileChanged = string.Equals(objOnPackage.fileAsset?.md5, item.Md5, StringComparison.CurrentCultureIgnoreCase) == false;
                    if (objOnPackage.IsDependenciesValid() == false)
                    {
                        isFileChanged = true;// force update invalid object.
                    }
                    if (isFileChanged)
                    {
                        //file changed.
                        AssetFileOperate op = new AssetFileOperate();
                        op.File    = item;
                        op.Operate = AssetFileOperateType.Update;
                        op.Target  = objOnPackage.id;
                        UploadList.Add(op);
                    }
                }


                if (item.Class == "StaticMesh")
                {
                    //product mising
                    if (specOnPackage == null)
                    {
                        AssetFileOperate op = new AssetFileOperate();
                        op.File    = item;
                        op.Operate = AssetFileOperateType.CreateMissingProduct;
                        UploadList.Add(op);
                    }
                    else // product exist.
                    {
                        string specmeshid = "";
                        if (specOnPackage.staticMeshes?.Count > 0)
                        {
                            specmeshid = specOnPackage.staticMeshes[0].id;
                        }
                        if (specOnPackage.ComponentsObj?.Count > 0)
                        {
                            foreach (var comp in specOnPackage.ComponentsObj)
                            {
                                var meshcomp = comp as FProductStaticMeshComponent;
                                if (meshcomp?.StaticMesh != null)
                                {
                                    specmeshid = meshcomp.StaticMesh.id;
                                }
                            }
                        }
                        //product do not use latest mesh
                        if (string.Compare(objOnPackage.id, specmeshid, true) != 0)
                        {
                            AssetFileOperate op = new AssetFileOperate();
                            op.File    = item;
                            op.Operate = AssetFileOperateType.ProductUseLatestMesh;
                            op.Target  = specOnPackage.id;
                            op.spec    = specOnPackage;
                            op.specId  = specOnPackage.id;
                            UploadList.Add(op);
                        }
                    }
                } //if item is static mesh
            }     //foreach
            sb.AppendLine($"检测到改动 {UploadList.Count}");

            IsCheckedForUpload = true;
            return(sb.ToString());
        }
 /// <summary>
 /// 编辑单条ProductSpec
 /// </summary>
 /// <param name="model">地块信息实体</param>
 /// <returns></returns>
 public MessageModel UpdateSingleProductSpec(ProductSpecModel model)
 {
     return(productSpecAccess.UpdateSingleEntity(model));
 }
 /// <summary>
 /// 新增单条ProductSpec
 /// </summary>
 /// <param name="model">地块信息实体</param>
 /// <returns></returns>
 public MessageModel InsertSingleProductSpec(ProductSpecModel model)
 {
     return(productSpecAccess.InsertSingleEntity(model));
 }