|
@@ -2,23 +2,28 @@ package book
|
2
|
2
|
|
3
|
3
|
import (
|
4
|
4
|
"errors"
|
|
5
|
+ "spaceofcheng/services/models"
|
5
|
6
|
"spaceofcheng/services/models/book"
|
|
7
|
+ "spaceofcheng/services/models/customer"
|
6
|
8
|
"spaceofcheng/services/models/model"
|
7
|
9
|
"spaceofcheng/services/service"
|
8
|
10
|
"spaceofcheng/services/utils"
|
|
11
|
+ "time"
|
9
|
12
|
)
|
10
|
13
|
|
11
|
14
|
// BookServ 系统处理
|
12
|
15
|
type BookServ struct {
|
13
|
|
- ctx *utils.Context
|
14
|
|
- dao *book.BookDAO
|
|
16
|
+ ctx *utils.Context
|
|
17
|
+ dao *book.BookDAO
|
|
18
|
+ cdao *customer.CustomerDAO
|
15
|
19
|
}
|
16
|
20
|
|
17
|
21
|
// NewBookServ 初始化
|
18
|
22
|
func NewBookServ(ctx *utils.Context) *BookServ {
|
19
|
23
|
return &BookServ{
|
20
|
|
- ctx: ctx,
|
21
|
|
- dao: book.NewBookDAO(ctx),
|
|
24
|
+ ctx: ctx,
|
|
25
|
+ dao: book.NewBookDAO(ctx),
|
|
26
|
+ cdao: customer.NewCustomerDAO(ctx),
|
22
|
27
|
}
|
23
|
28
|
}
|
24
|
29
|
|
|
@@ -40,16 +45,16 @@ func (s *BookServ) GetBookRecommendList(caseid string, page, pageSize int) (map[
|
40
|
45
|
}, nil
|
41
|
46
|
}
|
42
|
47
|
|
43
|
|
-func (s *BookServ) GetBookList(bookType, name, caseid string, page, pageSize int) (map[string]interface{}, error) {
|
|
48
|
+func (s *BookServ) GetBookList(bookType, name, barcode, caseid string, page, pageSize int) (map[string]interface{}, error) {
|
44
|
49
|
if pageSize == 0 {
|
45
|
50
|
pageSize = service.PAGENUM
|
46
|
51
|
}
|
47
|
|
- list, err := s.dao.GetBookList(bookType, name, caseid, page, pageSize)
|
|
52
|
+ list, err := s.dao.GetBookList(bookType, name, barcode, caseid, page, pageSize)
|
48
|
53
|
if err != nil {
|
49
|
54
|
utils.LogError("获取图书列表失败: " + err.Error())
|
50
|
55
|
return nil, errors.New("获取图书列表失败")
|
51
|
56
|
}
|
52
|
|
- total, err := s.dao.GetBookListCount(bookType, name, caseid)
|
|
57
|
+ total, err := s.dao.GetBookListCount(bookType, name, barcode, caseid)
|
53
|
58
|
if err != nil {
|
54
|
59
|
utils.LogError("获取图书列表失败: " + err.Error())
|
55
|
60
|
return nil, errors.New("获取图书列表失败")
|
|
@@ -143,6 +148,7 @@ func (s *BookServ) AddChangeRecord(change model.TaInStockChange) error {
|
143
|
148
|
bookAdd := change.InStockAfter - change.InStockBefore
|
144
|
149
|
book.InStock = book.InStock + bookAdd
|
145
|
150
|
book.LeftNum = change.InStockAfter
|
|
151
|
+ change.InStockTotal = book.InStock
|
146
|
152
|
err = s.dao.AddChangeRecord(change)
|
147
|
153
|
if err != nil {
|
148
|
154
|
utils.LogError("库存盘点失败: " + err.Error())
|
|
@@ -155,3 +161,117 @@ func (s *BookServ) AddChangeRecord(change model.TaInStockChange) error {
|
155
|
161
|
}
|
156
|
162
|
return nil
|
157
|
163
|
}
|
|
164
|
+
|
|
165
|
+func (s *BookServ) BorrowBook(bookId, customerId, caseId, orgId string) (*model.TaBookBorrowRecord, error) {
|
|
166
|
+ reserveRecord, err := s.dao.CustomerReservedBook(bookId, customerId)
|
|
167
|
+ if err != nil {
|
|
168
|
+ utils.LogError("借阅失败: " + err.Error())
|
|
169
|
+ return nil, errors.New("借阅失败")
|
|
170
|
+ }
|
|
171
|
+ dd, _ := time.ParseDuration("168h")
|
|
172
|
+ book, err := s.dao.GetBookById(bookId)
|
|
173
|
+ if err != nil {
|
|
174
|
+ utils.LogError("借阅失败: " + err.Error())
|
|
175
|
+ return nil, errors.New("借阅失败")
|
|
176
|
+ }
|
|
177
|
+ if reserveRecord == nil {
|
|
178
|
+ customer, err := s.cdao.GetCustomerByID(customerId)
|
|
179
|
+ if err != nil {
|
|
180
|
+ utils.LogError("借阅失败: " + err.Error())
|
|
181
|
+ return nil, errors.New("借阅失败")
|
|
182
|
+ }
|
|
183
|
+ var borrowRecord = model.TaBookBorrowRecord{
|
|
184
|
+ BookId: bookId,
|
|
185
|
+ BorrowStatus: models.BORROW_TYPE_BORROWED,
|
|
186
|
+ CustomerId: customerId,
|
|
187
|
+ CustomerName: customer.Name,
|
|
188
|
+ CustomerPhone: customer.Phone,
|
|
189
|
+ BorrowDate: time.Now(),
|
|
190
|
+ EndDate: time.Now().Add(dd),
|
|
191
|
+ CaseId: caseId,
|
|
192
|
+ OrgId: orgId,
|
|
193
|
+ }
|
|
194
|
+ newBorrow, err := s.dao.AddBookRecord(borrowRecord)
|
|
195
|
+ if err != nil {
|
|
196
|
+ utils.LogError("借阅失败: " + err.Error())
|
|
197
|
+ return nil, errors.New("借阅失败")
|
|
198
|
+ }
|
|
199
|
+ book.BorrowNum = book.BorrowNum + 1
|
|
200
|
+ book.LeftNum = book.LeftNum - 1
|
|
201
|
+ err = s.dao.UpdateInStockBook(book)
|
|
202
|
+ if err != nil {
|
|
203
|
+ utils.LogError("借阅失败: " + err.Error())
|
|
204
|
+ return nil, errors.New("借阅失败")
|
|
205
|
+ }
|
|
206
|
+ return newBorrow, nil
|
|
207
|
+ }
|
|
208
|
+ reserveRecord.BorrowDate = time.Now()
|
|
209
|
+ reserveRecord.BorrowStatus = models.BORROW_TYPE_BORROWED
|
|
210
|
+ reserveRecord.EndDate = time.Now().Add(dd)
|
|
211
|
+ newBorrow, err := s.dao.UpdateBookRecord(reserveRecord)
|
|
212
|
+ if err != nil {
|
|
213
|
+ utils.LogError("借阅失败: " + err.Error())
|
|
214
|
+ return nil, errors.New("借阅失败")
|
|
215
|
+ }
|
|
216
|
+ book.BorrowNum = book.BorrowNum + 1
|
|
217
|
+ err = s.dao.UpdateInStockBook(book)
|
|
218
|
+ if err != nil {
|
|
219
|
+ utils.LogError("借阅失败: " + err.Error())
|
|
220
|
+ return nil, errors.New("借阅失败")
|
|
221
|
+ }
|
|
222
|
+ return newBorrow, nil
|
|
223
|
+
|
|
224
|
+}
|
|
225
|
+
|
|
226
|
+func (s *BookServ) ReturnBook(borrowId string) error {
|
|
227
|
+ record, err := s.dao.GetBorrowById(borrowId)
|
|
228
|
+ if err != nil {
|
|
229
|
+ utils.LogError("归还失败: " + err.Error())
|
|
230
|
+ return errors.New("归还失败")
|
|
231
|
+ }
|
|
232
|
+ book, err := s.dao.GetBookById(record.BookId)
|
|
233
|
+ if err != nil {
|
|
234
|
+ utils.LogError("归还失败: " + err.Error())
|
|
235
|
+ return errors.New("归还失败")
|
|
236
|
+ }
|
|
237
|
+ if record == nil {
|
|
238
|
+ return errors.New("不存在的借阅信息")
|
|
239
|
+ }
|
|
240
|
+ record.BorrowStatus = models.BORROW_TYPE_RETURN
|
|
241
|
+ record.ReturnDate = time.Now()
|
|
242
|
+ _, err = s.dao.UpdateBookRecord(record)
|
|
243
|
+ if err != nil {
|
|
244
|
+ utils.LogError("归还失败: " + err.Error())
|
|
245
|
+ return errors.New("归还失败")
|
|
246
|
+ }
|
|
247
|
+ book.BorrowNum = book.BorrowNum - 1
|
|
248
|
+ book.LeftNum = book.LeftNum + 1
|
|
249
|
+ err = s.dao.UpdateInStockBook(book)
|
|
250
|
+ if err != nil {
|
|
251
|
+ utils.LogError("归还失败: " + err.Error())
|
|
252
|
+ return errors.New("归还失败")
|
|
253
|
+ }
|
|
254
|
+ return nil
|
|
255
|
+}
|
|
256
|
+
|
|
257
|
+func (s *BookServ) GetCustomerReturnList(customerInfo, caseId string, page, pageSize int) (map[string]interface{}, error) {
|
|
258
|
+ if pageSize == 0 {
|
|
259
|
+ pageSize = service.PAGENUM
|
|
260
|
+ }
|
|
261
|
+ list, err := s.dao.GetCustomerReturnList(customerInfo, caseId, page, pageSize)
|
|
262
|
+ if err != nil {
|
|
263
|
+ utils.LogError("获取库存盘点列表失败: " + err.Error())
|
|
264
|
+ return nil, errors.New("获取库存盘点列表失败")
|
|
265
|
+ }
|
|
266
|
+ total, err := s.dao.GetCustomerReturnListCount(customerInfo, caseId)
|
|
267
|
+ if err != nil {
|
|
268
|
+ utils.LogError("获取库存盘点列表失败: " + err.Error())
|
|
269
|
+ return nil, errors.New("获取库存盘点列表失败")
|
|
270
|
+ }
|
|
271
|
+ return map[string]interface{}{
|
|
272
|
+ "list": list,
|
|
273
|
+ "pageSize": pageSize,
|
|
274
|
+ "pagenum": total,
|
|
275
|
+ "page": page,
|
|
276
|
+ }, nil
|
|
277
|
+}
|