package book import ( "errors" "fmt" "io/ioutil" "spaceofcheng/services/controllers" "spaceofcheng/services/models/model" "spaceofcheng/services/service/book" "strings" "github.com/tealeg/xlsx" ) // CaseController 信息 type BookController struct { serv *book.BookServ controllers.BaseController } // Constructor 初始化 Controller // @Title Constructor // @Description 初始化 Controller, 系统自动调用 func (c *BookController) Constructor() { c.serv = book.NewBookServ(c.Context) } // GetRecommendList 获取精选 func (c *BookController) GetRecommendList() { caseid := c.GetString("caseid") page, _ := c.GetInt("page") pagesize, _ := c.GetInt("pagesize") if page < 0 { page = 1 } if pagesize <= 0 { pagesize = 10 } list, err := c.serv.GetBookRecommendList(caseid, page, pagesize) if err != nil { c.ResponseError(err) } c.ResponseJSON(list) } // GetBookList 获取图书列表 func (c *BookController) GetBookList() { caseIDs := c.GetString("caseid") if caseIDs == "" { c.ResponseError(errors.New("请选择案场")) } bookType := c.GetString("booktype") barcode := c.GetString("barcode") page, _ := c.GetInt("page") if page < 1 { page = 1 } pagesize, _ := c.GetInt("pagesize") name := c.GetString("name") showzero := c.GetString("showzero") list, err := c.serv.GetBookList(bookType, name, barcode, showzero, caseIDs, page, pagesize) if err != nil { c.ResponseError(err) } c.ResponseJSON(list) } // GetMineRecord 获取个人借阅记录 func (c *BookController) GetMineRecord() { page, _ := c.GetInt("page") pagesize, _ := c.GetInt("pagesize") status := c.GetString("status") list, err := c.serv.GetMineRecord(status, page, pagesize) if err != nil { c.ResponseError(err) } c.ResponseJSON(list) } // GetInStockChangeByBookId 获取图书盘点列表 func (c *BookController) GetInStockChangeByBookId() { page, _ := c.GetInt("page") if page < 1 { page = 1 } pagesize, _ := c.GetInt("pagesize") bookId := c.GetString(":bookId") list, err := c.serv.GetInStockChangeByBookId(bookId, page, pagesize) if err != nil { c.ResponseError(err) } c.ResponseJSON(list) } func (c *BookController) SaveBook() { org := c.Context.Get("org").(model.SysOrg) book := model.TaBook{} if err := c.ParseForm(&book); err != nil { c.ResponseError(err) } if book.BookId == "" { book.OrgId = org.OrgId book.LeftNum = book.InStock err := c.serv.AuthBook(book) if err != nil { c.ResponseError(err) } list, err := c.serv.AddBook(book) if err != nil { c.ResponseError(err) } c.ResponseJSON(list) } err := c.serv.AuthBookEdit(book) if err != nil { c.ResponseError(err) } list, err := c.serv.EditBook(book) if err != nil { c.ResponseError(err) } c.ResponseJSON(list) } // AddChangeRecord 新增库存盘点 func (c *BookController) AddChangeRecord() { change := model.TaInStockChange{} if err := c.ParseForm(&change); err != nil { c.ResponseError(err) } user := c.Context.Get("user").(model.SysUser) change.ChangeUser = user.UserId change.ChangeUserName = user.RealName err := c.serv.AddChangeRecord(change) if err != nil { c.ResponseError(err) } c.ResponseJSON("添加成功") } // BorrowBook 借书 func (c *BookController) BorrowBook() { bookIds := c.GetString(":bookIds") customerId := c.GetString(":customerId") org := c.Context.Get("org").(model.SysOrg) bookId := strings.Split(bookIds, ",") for i := 0; i < len(bookId); i++ { _, err := c.serv.BorrowBook(bookId[i], customerId, org.OrgId) if err != nil { c.ResponseError(err) } } c.ResponseJSON("借阅成功") } // ReturnBook 还书 func (c *BookController) ReturnBook() { bookIds := c.GetString(":borrowIds") bookId := strings.Split(bookIds, ",") for i := 0; i < len(bookId); i++ { err := c.serv.ReturnBook(bookId[i]) if err != nil { c.ResponseError(err) } } c.ResponseJSON("归还成功") } // ReserveBook 图书预约 func (c *BookController) ReserveBook() { bookid := c.GetString(":bookid") record, err := c.serv.ReserveBook(bookid) if err != nil { c.ResponseError(err) } c.ResponseJSON(record) } // GetCustomerReturnList 获取用户还书记录 func (c *BookController) GetCustomerReturnList() { customerInfo := c.GetString(":customerInfo") caseIDs := c.GetString("caseid") if caseIDs == "" { cases := c.Context.Get("cases").([]model.SysUserCase) caseIDs = c.GetCaseIDs(cases) } page, _ := c.GetInt("page") pagesize, _ := c.GetInt("pagesize") list, err := c.serv.GetCustomerReturnList(customerInfo, caseIDs, page, pagesize) if err != nil { c.ResponseError(err) } c.ResponseJSON(list) } // ExcelInpuData EXCEL导入数据 func (c *BookController) ExcelInpuData() { caseId := c.GetString("caseId") org := c.Context.Get("org").(model.SysOrg) file, _, err := c.GetFile("excel") if err != nil { c.ResponseError(err) } defer file.Close() fileBytes, err := ioutil.ReadAll(file) if err != nil { c.ResponseError(err) } xlFile, err := xlsx.OpenBinary(fileBytes) if err != nil { c.ResponseError(err) } data, err := c.serv.GetBookTypeByCaseId(caseId) if err != nil { c.ResponseError(err) } for _, sheet := range xlFile.Sheets { for key, row := range sheet.Rows { if key == 0 { continue } if row.Cells[0].String() == "" { continue } total, err := row.Cells[2].Int() if err != nil { c.ResponseError(err) } Days, err := row.Cells[3].Int() if err != nil { c.ResponseError(err) } bookTypeId, has := data[row.Cells[4].String()] if !has { c.ResponseError(fmt.Errorf("图书分类【%s】不存在", row.Cells[4].String())) } var book = model.TaBook{ CaseId: caseId, BookBarcode: row.Cells[0].String(), BookName: row.Cells[1].String(), InStock: total, LeftNum: total, BorrowNum: 0, BorrowDays: Days, OrgId: org.OrgId, IsRecommend: 0, Price: "0", BookTypeId: bookTypeId, } err = c.serv.AuthBook(book) if err != nil { c.ResponseError(err) } _, err = c.serv.AddBook(book) if err != nil { c.ResponseError(err) } } } c.ResponseJSON("添加成功") } // GetCustomerByCustomerInfo 根据用户手机或条形码获取用户信息 func (c *BookController) GetCustomerByCustomerInfo() { customerInfo := c.GetString(":customerInfo") customer, err := c.serv.GetCustomerByCustomerInfo(customerInfo) if err != nil { c.ResponseError(err) } c.ResponseJSON(customer) } // GetRecordList 获取借书,预约记录列表 func (c *BookController) GetRecordList() { borrowStatus := c.GetString("borrowstatus") caseIDs := c.GetString("caseid") if caseIDs == "" { cases := c.Context.Get("cases").([]model.SysUserCase) caseIDs = c.GetCaseIDs(cases) } customerName := c.GetString("customername") customerPhone := c.GetString("customerphone") bookName := c.GetString("bookname") barcode := c.GetString("barcode") page, _ := c.GetInt("page") if page < 1 { page = 1 } pagesize, _ := c.GetInt("pagesize") list, err := c.serv.GetRecordList(borrowStatus, caseIDs, customerName, customerPhone, bookName, barcode, page, pagesize) if err != nil { c.ResponseError(err) } c.ResponseJSON(list) } func (c *BookController) CancelReserve() { recordId := c.GetString(":recordId") err := c.serv.CancelReserve(recordId) if err != nil { c.ResponseError(err) } c.ResponseJSON("取消成功") } func (c *BookController) DeleteBook() { bookId := c.GetString(":bookId") err := c.serv.DeleteBook(bookId) if err != nil { c.ResponseError(err) } c.ResponseJSON("删除成功") } func (c *BookController) GetBookById() { bookId := c.GetString(":bookId") list, err := c.serv.GetBookById(bookId) if err != nil { c.ResponseError(err) } c.ResponseJSON(list) } func (c *BookController) GetCustomerBorrowInfo() { customerInfo := c.GetString(":customerInfo") list, err := c.serv.GetCustomerBorrowInfo(customerInfo) if err != nil { c.ResponseError(err) } c.ResponseJSON(list) }