book.go 7.8KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346
  1. package book
  2. import (
  3. "errors"
  4. "fmt"
  5. "io/ioutil"
  6. "spaceofcheng/services/controllers"
  7. "spaceofcheng/services/models/model"
  8. "spaceofcheng/services/service/book"
  9. "strings"
  10. "github.com/tealeg/xlsx"
  11. )
  12. // CaseController 信息
  13. type BookController struct {
  14. serv *book.BookServ
  15. controllers.BaseController
  16. }
  17. // Constructor 初始化 Controller
  18. // @Title Constructor
  19. // @Description 初始化 Controller, 系统自动调用
  20. func (c *BookController) Constructor() {
  21. c.serv = book.NewBookServ(c.Context)
  22. }
  23. // GetRecommendList 获取精选
  24. func (c *BookController) GetRecommendList() {
  25. caseid := c.GetString("caseid")
  26. page, _ := c.GetInt("page")
  27. pagesize, _ := c.GetInt("pagesize")
  28. if page < 0 {
  29. page = 1
  30. }
  31. if pagesize <= 0 {
  32. pagesize = 10
  33. }
  34. list, err := c.serv.GetBookRecommendList(caseid, page, pagesize)
  35. if err != nil {
  36. c.ResponseError(err)
  37. }
  38. c.ResponseJSON(list)
  39. }
  40. // GetBookList 获取图书列表
  41. func (c *BookController) GetBookList() {
  42. caseIDs := c.GetString("caseid")
  43. if caseIDs == "" {
  44. c.ResponseError(errors.New("请选择案场"))
  45. }
  46. bookType := c.GetString("booktype")
  47. barcode := c.GetString("barcode")
  48. page, _ := c.GetInt("page")
  49. if page < 1 {
  50. page = 1
  51. }
  52. pagesize, _ := c.GetInt("pagesize")
  53. name := c.GetString("name")
  54. showzero := c.GetString("showzero")
  55. list, err := c.serv.GetBookList(bookType, name, barcode, showzero, caseIDs, page, pagesize)
  56. if err != nil {
  57. c.ResponseError(err)
  58. }
  59. c.ResponseJSON(list)
  60. }
  61. // GetMineRecord 获取个人借阅记录
  62. func (c *BookController) GetMineRecord() {
  63. page, _ := c.GetInt("page")
  64. pagesize, _ := c.GetInt("pagesize")
  65. status := c.GetString("status")
  66. list, err := c.serv.GetMineRecord(status, page, pagesize)
  67. if err != nil {
  68. c.ResponseError(err)
  69. }
  70. c.ResponseJSON(list)
  71. }
  72. // GetInStockChangeByBookId 获取图书盘点列表
  73. func (c *BookController) GetInStockChangeByBookId() {
  74. page, _ := c.GetInt("page")
  75. if page < 1 {
  76. page = 1
  77. }
  78. pagesize, _ := c.GetInt("pagesize")
  79. bookId := c.GetString(":bookId")
  80. list, err := c.serv.GetInStockChangeByBookId(bookId, page, pagesize)
  81. if err != nil {
  82. c.ResponseError(err)
  83. }
  84. c.ResponseJSON(list)
  85. }
  86. func (c *BookController) SaveBook() {
  87. org := c.Context.Get("org").(model.SysOrg)
  88. book := model.TaBook{}
  89. if err := c.ParseForm(&book); err != nil {
  90. c.ResponseError(err)
  91. }
  92. if book.BookId == "" {
  93. book.OrgId = org.OrgId
  94. book.LeftNum = book.InStock
  95. err := c.serv.AuthBook(book)
  96. if err != nil {
  97. c.ResponseError(err)
  98. }
  99. list, err := c.serv.AddBook(book)
  100. if err != nil {
  101. c.ResponseError(err)
  102. }
  103. c.ResponseJSON(list)
  104. }
  105. err := c.serv.AuthBookEdit(book)
  106. if err != nil {
  107. c.ResponseError(err)
  108. }
  109. list, err := c.serv.EditBook(book)
  110. if err != nil {
  111. c.ResponseError(err)
  112. }
  113. c.ResponseJSON(list)
  114. }
  115. // AddChangeRecord 新增库存盘点
  116. func (c *BookController) AddChangeRecord() {
  117. change := model.TaInStockChange{}
  118. if err := c.ParseForm(&change); err != nil {
  119. c.ResponseError(err)
  120. }
  121. user := c.Context.Get("user").(model.SysUser)
  122. change.ChangeUser = user.UserId
  123. change.ChangeUserName = user.RealName
  124. err := c.serv.AddChangeRecord(change)
  125. if err != nil {
  126. c.ResponseError(err)
  127. }
  128. c.ResponseJSON("添加成功")
  129. }
  130. // BorrowBook 借书
  131. func (c *BookController) BorrowBook() {
  132. bookIds := c.GetString(":bookIds")
  133. customerId := c.GetString(":customerId")
  134. org := c.Context.Get("org").(model.SysOrg)
  135. bookId := strings.Split(bookIds, ",")
  136. for i := 0; i < len(bookId); i++ {
  137. _, err := c.serv.BorrowBook(bookId[i], customerId, org.OrgId)
  138. if err != nil {
  139. c.ResponseError(err)
  140. }
  141. }
  142. c.ResponseJSON("借阅成功")
  143. }
  144. // ReturnBook 还书
  145. func (c *BookController) ReturnBook() {
  146. bookIds := c.GetString(":borrowIds")
  147. bookId := strings.Split(bookIds, ",")
  148. for i := 0; i < len(bookId); i++ {
  149. err := c.serv.ReturnBook(bookId[i])
  150. if err != nil {
  151. c.ResponseError(err)
  152. }
  153. }
  154. c.ResponseJSON("归还成功")
  155. }
  156. // ReserveBook 图书预约
  157. func (c *BookController) ReserveBook() {
  158. bookid := c.GetString(":bookid")
  159. record, err := c.serv.ReserveBook(bookid)
  160. if err != nil {
  161. c.ResponseError(err)
  162. }
  163. c.ResponseJSON(record)
  164. }
  165. // GetCustomerReturnList 获取用户还书记录
  166. func (c *BookController) GetCustomerReturnList() {
  167. customerInfo := c.GetString(":customerInfo")
  168. caseIDs := c.GetString("caseid")
  169. if caseIDs == "" {
  170. cases := c.Context.Get("cases").([]model.SysUserCase)
  171. caseIDs = c.GetCaseIDs(cases)
  172. }
  173. page, _ := c.GetInt("page")
  174. pagesize, _ := c.GetInt("pagesize")
  175. list, err := c.serv.GetCustomerReturnList(customerInfo, caseIDs, page, pagesize)
  176. if err != nil {
  177. c.ResponseError(err)
  178. }
  179. c.ResponseJSON(list)
  180. }
  181. // ExcelInpuData EXCEL导入数据
  182. func (c *BookController) ExcelInpuData() {
  183. caseId := c.GetString("caseId")
  184. org := c.Context.Get("org").(model.SysOrg)
  185. file, _, err := c.GetFile("excel")
  186. if err != nil {
  187. c.ResponseError(err)
  188. }
  189. defer file.Close()
  190. fileBytes, err := ioutil.ReadAll(file)
  191. if err != nil {
  192. c.ResponseError(err)
  193. }
  194. xlFile, err := xlsx.OpenBinary(fileBytes)
  195. if err != nil {
  196. c.ResponseError(err)
  197. }
  198. data, err := c.serv.GetBookTypeByCaseId(caseId)
  199. if err != nil {
  200. c.ResponseError(err)
  201. }
  202. for _, sheet := range xlFile.Sheets {
  203. for key, row := range sheet.Rows {
  204. if key == 0 {
  205. continue
  206. }
  207. if row.Cells[0].String() == "" {
  208. continue
  209. }
  210. total, err := row.Cells[2].Int()
  211. if err != nil {
  212. c.ResponseError(err)
  213. }
  214. Days, err := row.Cells[3].Int()
  215. if err != nil {
  216. c.ResponseError(err)
  217. }
  218. bookTypeId, has := data[row.Cells[4].String()]
  219. if !has {
  220. c.ResponseError(fmt.Errorf("图书分类【%s】不存在", row.Cells[4].String()))
  221. }
  222. var book = model.TaBook{
  223. CaseId: caseId,
  224. BookBarcode: row.Cells[0].String(),
  225. BookName: row.Cells[1].String(),
  226. InStock: total,
  227. LeftNum: total,
  228. BorrowNum: 0,
  229. BorrowDays: Days,
  230. OrgId: org.OrgId,
  231. IsRecommend: 0,
  232. Price: "0",
  233. BookTypeId: bookTypeId,
  234. }
  235. err = c.serv.AuthBook(book)
  236. if err != nil {
  237. c.ResponseError(err)
  238. }
  239. _, err = c.serv.AddBook(book)
  240. if err != nil {
  241. c.ResponseError(err)
  242. }
  243. }
  244. }
  245. c.ResponseJSON("添加成功")
  246. }
  247. // GetCustomerByCustomerInfo 根据用户手机或条形码获取用户信息
  248. func (c *BookController) GetCustomerByCustomerInfo() {
  249. customerInfo := c.GetString(":customerInfo")
  250. customer, err := c.serv.GetCustomerByCustomerInfo(customerInfo)
  251. if err != nil {
  252. c.ResponseError(err)
  253. }
  254. c.ResponseJSON(customer)
  255. }
  256. // GetRecordList 获取借书,预约记录列表
  257. func (c *BookController) GetRecordList() {
  258. borrowStatus := c.GetString("borrowstatus")
  259. caseIDs := c.GetString("caseid")
  260. if caseIDs == "" {
  261. cases := c.Context.Get("cases").([]model.SysUserCase)
  262. caseIDs = c.GetCaseIDs(cases)
  263. }
  264. customerName := c.GetString("customername")
  265. customerPhone := c.GetString("customerphone")
  266. bookName := c.GetString("bookname")
  267. barcode := c.GetString("barcode")
  268. page, _ := c.GetInt("page")
  269. if page < 1 {
  270. page = 1
  271. }
  272. pagesize, _ := c.GetInt("pagesize")
  273. list, err := c.serv.GetRecordList(borrowStatus, caseIDs, customerName, customerPhone, bookName, barcode, page, pagesize)
  274. if err != nil {
  275. c.ResponseError(err)
  276. }
  277. c.ResponseJSON(list)
  278. }
  279. func (c *BookController) CancelReserve() {
  280. recordId := c.GetString(":recordId")
  281. err := c.serv.CancelReserve(recordId)
  282. if err != nil {
  283. c.ResponseError(err)
  284. }
  285. c.ResponseJSON("取消成功")
  286. }
  287. func (c *BookController) DeleteBook() {
  288. bookId := c.GetString(":bookId")
  289. err := c.serv.DeleteBook(bookId)
  290. if err != nil {
  291. c.ResponseError(err)
  292. }
  293. c.ResponseJSON("删除成功")
  294. }
  295. func (c *BookController) GetBookById() {
  296. bookId := c.GetString(":bookId")
  297. list, err := c.serv.GetBookById(bookId)
  298. if err != nil {
  299. c.ResponseError(err)
  300. }
  301. c.ResponseJSON(list)
  302. }
  303. func (c *BookController) GetCustomerBorrowInfo() {
  304. customerInfo := c.GetString(":customerInfo")
  305. list, err := c.serv.GetCustomerBorrowInfo(customerInfo)
  306. if err != nil {
  307. c.ResponseError(err)
  308. }
  309. c.ResponseJSON(list)
  310. }