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)); }
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); }
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); }
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 })); }
/// <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)); }
/// <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); }
/// <summary> /// 向产品规格表中插入记录 /// </summary> /// <param name="productSpec">产品规格ID</param> /// <returns>返回向产品规格表中插入记录所影响的行数</returns> public static int AddProductSpec(ProductSpecModel productSpec) { return(ProductSpecDAL.AddProductSpec(productSpec)); }
/// <summary> /// 更新指定产品规格信息 /// </summary> /// <param name="productSpec">产品规格模型</param> /// <returns>返回更新指定产品规格信息所影响的行数</returns> public static int UpdProductSpecByID(ProductSpecModel productSpec) { return(ProductSpecDAL.UpdProductSpecByID(productSpec)); }
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)); }