Tìm hiểu cơ sở dữ liệu blockchain và ứng dụng vào công nghệ truy xuất nguồn gốc trên trái xoài cát chu của tỉnh đồng tháp

67 3 0
Tìm hiểu cơ sở dữ liệu blockchain và ứng dụng vào công nghệ truy xuất nguồn gốc trên trái xoài cát chu của tỉnh đồng tháp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

BỘ GIÁO DỤC VÀ ĐÀO TẠO DAI HOC HUE TRUONG DAI HOC KHOA HOC VO TAN VINH TIM HIEU CO SO DU LIEU BLOCKCHAIN VA UNG DUNG VAO CONG NGHE TRUY XUAT NGUON GOC TREN TRAI XOAI CAT CHU CUA TINH DONG THAP CHUYEN NGANH: KHOA HOC MAY TINH MA SO: 8.48.01.01 LUAN VAN THAC SI KHOA HOC DINH HUONG UNG DUNG NGUOI HUONG DAN KHOA HOC PGS.TS HOANG QUANG Thira Thién Hué, 2020 LỜI CAM ĐOAN Tôi cam đoan cơng trình nghiên cứu riêng tơi Các số liệu, kết nêu luận văn trung thực chưa công bố cơng trình khác Tác giả Võ Tấn Vinh LOI CAM ON Xin chân thành cảm ơn thay hướng dẫn, PGS.TS Hồng Quang, Trưởng khoa Khoa Cơng nghệ thơng tin, Trường Đại học Khoa học, Đại học Huế Thây tận tình hướng dẫn tạo điều kiện thuận lợi để thực luận văn Xin trân trọng gửi lời tri ân đến tất quý thầy, cô Khoa Công nghệ thông tin Trường Đại học Khoa học, Đại học Huế Thay, cô tận tinh truyền đạy kiến thức kinh nghiệm quý báu cho tơi suốt q trình học tập Xm chân thành gửi lời cảm ơn tới Ban Giám hiệu Trường Đại học Đồng Tháp, quý thầy cô đơn vị hỗ trợ tạo điều kiện thuận lợi để tơi hồn thành khóa học Xin chân thành cảm ơn nhà vườn sản xuất xoài Cat Chu tai TP Cao Lãnh, tỉnh Đồng Tháp hỗ trợ em hoàn thành luận văn Cảm ơn tất bạn học lớp Cao học Khoa học máy tính khóa - An Giang động viên chia khó khăn suốt q trình học tập Sau cùng, xin gửi lời cảm ơn sâu sắc tới gia đình, ông bà, cha mẹ, anh chị em động viên, chia khó khăn hết lịng hỗ trợ, tạo điều kiện thuận lợi để tơi hồn thành tốt khóa học nảy Trân trọng! MỤC LỤC Trang 0909.0060970 02008 À,.HA i I09)09.0 0109) 72000757 .“-TQAHDHẬHH)H ii h19/90 sn iii DANE MUC GAC THING wrcssecesesssepivesesenseresvsecrnevacnmerereneaarsemsneareneranmaveronand Vv DANH MỤC CÁC CHỮ VIẾT TẮTT -2-2 ©5 new t Id =x.Id, Name = x.Name, Created = x.Created ToShortDateString(), ImageOne = x.ImageOne, ImageTwo = x.ImageTwo, Origin = x.Origin, Attribute = x.Attribute, }} } Publish = x.Publish == false ? "Cho duyét" : "Da duyét" return Json(new { data = productViews }, JsonRequestBehavior.AllowGet); public JsonResult LoadDataPublishQ t var data = productViewService.GetProductViews(); var product Views = data.Select(x => new t Id =x.Id, Name = x.Name, Created = x.Created ToShortDateString(), ImageOne = x.ImageOne, ImageTwo = x.ImageTwo, Origin = x.Origin, Attribute = x.Attribute, Publish = x.Publish == false ? "Chờ duyệt" : "Đã duyệt", 3): } Supplier = x.Suplier.Name return Json(new { data = productViews }, JsonRequestBehavior.AllowGet); publie ActionResult AddOrEditGtring Id = "") t 1ƒ qd.Equals("")) t 52 = return Product View ViewModel()); Partial View("AddOrEditProduct", new } else { var product = product ViewService.GetProductByID(Id); var model = new Product ViewViewModel() { } } } Id = product.Id.ToString(), Name = product.Name, Created = product.Created, ImageOne = product.ImageOne, ImageTwo = product ImageT wo, Origin = product.Origin, Attribute = product.Attribute, Publish = product.Publish, Supplierld = product.Suplier.Name return PartialView("AddOrEditProduct", model); [HttpPost] public ActionResult AddOrUpdate(ProductViewViewModel model) { try { SavelmageToDB savelmageToDB = new SavelmageToDB(); bool success = false; if (model.Id == null && model.Name != null) { ProductView product = new ProductView() { Server), Server), Name = model.Name, Created = DateTime Now, ImageOne = savelmageToDB.uploadImage(model.ImageOnePath, ImageTwo = savelmageToDB.uploadImage(model.ImageTwoPath, Origin = model.Origin, Attribute = model.Attribute, } Publish = false var session = (UserLogin)Session[Constants.USER_ SESSION]: 53 string mem = membershipUserService.GetIDSupplierByl D(session.UserlD.ToString()); var sp = supplierService.GetSuplier(mem); if(sp == null) return Json(new { success = success, message = "Thém khéng công" }, JsonRequestBehavior.AllowGet); product.QRHashCode = Hash Instance.ComputeSha256Hash(product.Id + product.Name aa product.Created); product.Suplier = sp; if (product ViewService.Add(product)) { Success = frue; return Json(new { success = success, message = "Thêm thành công" }, JsonRequestBehavior.AllowGet); } else { return Json(new { success = success, message = "Thém khéng công" }, JsonRequestBehavior.AllowGet); } } else if (model.Id != null && model.Name != null) t var product = product ViewService.GetProductByID(model.Id); product.Name = model.Name; product.Created = DateTime.Now; if (model.ImageOnePath != null) product ImageOne savelmage ToDB.uploadImage(model.[mageOnePath, Server); if (model.ImageTwoPath != null) product.ImageTwo savelmageToDB.uploadImage(model._ImageTwoPath, Server); product.Origin = model.Origin; product.Attribute = model.Attribute; product.QRHashCode Hash Instance.ComputeSha256Hash(product.Id =F product.Name product.Created); if (product ViewService.Update(product)) t a = = a success = true; retum Json(new { success công" }, JsonRequestBehavior.AllowGet); } 54 = success, message = "Cap nhat thành else { return Json(new { success = success, message = "Cap nhat khong thành công" }, JsonRequestBehavior.AllowGet); } } else { return Json(new JsonRequestBehavior.AllowGet); } { success = success, message = "I!!!" }, } catch (Exception ex) { } } return Json(new { success = false, message = ex.Message }); public ActionResult Delete(string Id) { 1f qd.Equals("")) { return Json(new { success JsonRequestBehavior.AllowGet); = false, message = "Kh6ng tim thay!" }, } else t if (productViewService.Delete(Id)) retum Json(new { success = true, message = "Xoa céng" JsonRequestBehavior.AllowGet); return Json(new { success = false, message = "X6a thất bại" JsonRequestBehavior.AllowGet); } } } } - Xuất tem QR code cho sản phẩm: public ActionResult ExportQR(string Id) t string s=""; var product = productService.GetProductByID(Id); if (product != null) { 55 }, }, //Get domain string url = HttpContext.Request.Url.GetLeftPart(UnPartial Authority); sting p = Url.Action("Index", "Product", new { Id = product.QRHashCode, Area = String.Empty }); //p = p.Remove(p.Length - 1, 1); //p = p.Remove(0, 1); p=url +p; var Image = SavelmageQR Instance.createQRCode(p, product.Id.ToString(), Server); ReportQR reportQR = new ReportQRQ: //reportQR.DataSource = 5; reportQR.create(Image, product.Name, product.Suplier.Name); string path = "~/Public"; bool exist = System.IO.Directory.Exists(Server.MapPath(path)); if (!exist) System.IO.Directory.CreateDirectory(Server.MapPath(path)); // Console.WriteLine(Server.MapPath(path) + "\\" + product QRHashCode), reportQR.CreateDocument(); reportQR.ExportT oPdf(Server.MapPath(path) 3k + product.QRHashCode + " pdf"); //WebClient myWebClient = new WebClient(); //string myStringWebResource = Server.MapPath(path); //myWebClient DownloadFile(myString WebResource, product.QRHashCode); // return Download(product.QRHashCode +" pdf"), window.open("Link URL") // window.open("Link URL") s=url + "/Public/" + product QRHashCode + " pdf"; // Response Write("window.open(""+ s + ",' blank');"); // ScriptManager.RegisterStartupScript(Page, Page.GetTypeQ), "popup", "window.open('" + strUrl + '"',' blank')", true); // Redirect(url + "/Public/" + product.QRHashCode + ".pdf"); //retum RedirectToAction(url+"public\\"+ product.QRHashCode + " pdt"); } retum Json(new { success = true, message = "Success", linkScript = s }, JsonRequestBehavior.AllowGet); //return RedirectToAction(Server.MapPath(path) ar " a product.QRHashCode + " pdf"); } 56 - Tạo block theo công nghệ Blockchain hệ thống (parent hash dòng liệu thứ n lây hash dòng liệu thứ n-1 tạo thành chuỗi block khơng thê phá vỡ được) using using using using using using using using using OriginV.Core.Interfaces; Origin V.Core.Interfaces.Services; Origin V.Core.Models.Entities; System; System.Collections.Generic; System.Data.Entity; System.Linq; System.Text; System.Threading.Tasks; namespace Origin V.Core.Services { public class ProductService : IProductService { private IDataContext context; public ProductService(IDataContext _ context) t } context = context; public Product GetProduct(string name) { } return context.Products.Where(x => x.NÑame == name).SingleOrDefaultQ; public Product GetProductByID(string ID) t } Guid Id = new Guid(ID), return context.Products.Where(x => x.Id == Id).SingleOrDefaultQ); public Product GetProductByHashC ode(string hasCode) t return context.Products.Where(x hasCode).SingleOrDefaultQ; =% } public List GetProducts() { } return context.Products.Select(x => x).ToListQ); public List GetProducts(string ID) { Guid Id = new Guid(ID), 57 x.QRHashCode ¬= return context.Products.Include(x => x.Suplier).Where(x => x.Suplier.Id == Id).Select(x => x).ToListQ; } public bool Published(ProductView productView) t var data = context.ProductViews Where(x productView.Id).SingleOrDefaultQ; if(data != null) { data.Publish = true; context.SaveChanges(); } } return true; return false; public Product GetLastProduct() { return context.Products Inelude(x => x.Parent) Inelude(x => x.User) Inelude(x => x.Suplier) Select(x => x) OrderByDescending(x => x.Created) Take(1) SingleOrDefaultQ; } public bool Add(Product product) { try { context.Products.Add(product); context.SaveChanges(); } return true; catch (Exception ex) { } } Console.WriteLine(ex.Message.T oString()); return false; 58 => x.Id == - Xuất thông fin sản phẩm lên web để xem: @model Origin V.Core.Models.Entities Product Truy Xuất Nguồn Gốc Sản Phẩm @Styles.Render("~/Content/css") 59 (@Model.NÑame Truy Xuất Nguồn gốc @Model.Name Thông Tin Sản Xuất

Tên sản phâm: (@Model.Name

Chu san xuất: @Model.Suplier.Name

Dia chi: @Model Suplier.Address

Ngay thu hoach: @Model.Created

Thông Tin Sản Phẩm

Nguồn gốc: (@Model.Origin

Đặc điểm: @Model Attribute

@Scripts.Render("~/bundles/script") 60

Ngày đăng: 11/01/2024, 22:45

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan