ice_raft.go 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709
  1. package service
  2. import (
  3. "cold-delivery/app/admin/model"
  4. "cold-delivery/app/admin/service/dto"
  5. "cold-delivery/common/actions"
  6. cDto "cold-delivery/common/dto"
  7. "cold-delivery/common/global"
  8. model2 "cold-delivery/common/model"
  9. "errors"
  10. "fmt"
  11. "gogs.baozhida.cn/zoie/OAuth-core/service"
  12. "gorm.io/gorm"
  13. "time"
  14. )
  15. type IceRaft struct {
  16. service.Service
  17. }
  18. // GetPage 获取IceRaft列表
  19. func (e *IceRaft) GetPage(c *dto.IceRaftGetPageReq, list *[]model.IceRaft, count *int64, p *actions.DataPermission) error {
  20. var err error
  21. var data model.IceRaft
  22. if c.PageSize == 9999 {
  23. err = e.Orm.Model(&data).
  24. Scopes(
  25. actions.Permission(data.TableName(), p),
  26. ).
  27. Find(list).Limit(-1).Offset(-1).
  28. Count(count).Error
  29. } else {
  30. err = e.Orm.Model(&data).
  31. Scopes(
  32. cDto.MakeCondition(c.GetNeedSearch()),
  33. cDto.Paginate(c.GetPageSize(), c.GetPageIndex()),
  34. actions.Permission(data.TableName(), p),
  35. ).
  36. Find(list).Limit(-1).Offset(-1).
  37. Count(count).Error
  38. }
  39. if err != nil {
  40. e.Log.Errorf("db error: %s", err)
  41. return global.GetFailedErr
  42. }
  43. return nil
  44. }
  45. func IceRaftNameRecordStatusScopes(status string) func(db *gorm.DB) *gorm.DB {
  46. return func(db *gorm.DB) *gorm.DB {
  47. if len(status) == 0 {
  48. return db
  49. }
  50. if status == "0" {
  51. return db.Where("ice_raft_record.status is null")
  52. }
  53. return db.Where("ice_raft_record.status = ?", status)
  54. }
  55. }
  56. func IceRaftNameRecordIceLockerIdScopes(iceLockerId int) func(db *gorm.DB) *gorm.DB {
  57. return func(db *gorm.DB) *gorm.DB {
  58. if iceLockerId == 0 {
  59. return db
  60. }
  61. return db.Where("ice_raft_record.ice_locker_id = ? and ice_raft_record.cooler_box_id = 0", iceLockerId)
  62. }
  63. }
  64. func IceRaftNameRecordCoolerBoxIdScopes(coolerBoxId int) func(db *gorm.DB) *gorm.DB {
  65. return func(db *gorm.DB) *gorm.DB {
  66. if coolerBoxId == 0 {
  67. return db
  68. }
  69. return db.Where("ice_raft_record.cooler_box_id = ?", coolerBoxId)
  70. }
  71. }
  72. func (e *IceRaft) GetRecordPage(c *dto.IceRaftGetNewestRecordPageReq, list *[]model.IceRaft, count *int64, p *actions.DataPermission) error {
  73. var err error
  74. var data model.IceRaft
  75. if c.PageSize == 9999 {
  76. err = e.Orm.Model(&data).
  77. Scopes(
  78. actions.Permission(data.TableName(), p),
  79. ).
  80. Where("ice_raft.status = '2'").
  81. Joins("left join ice_raft_record on ice_raft.ice_raft_record_id = ice_raft_record.id").
  82. Preload("IceRaftRecord.IceLocker").
  83. Preload("IceRaftRecord.CoolerBox").
  84. Preload("IceRaftRecord").
  85. Order("FIELD(ice_raft_record.status,'2','','1','3','4')").
  86. Find(list).Limit(-1).Offset(-1).
  87. Count(count).Error
  88. } else {
  89. err = e.Orm.Model(&data).
  90. Scopes(
  91. cDto.MakeCondition(c.GetNeedSearch()),
  92. cDto.Paginate(c.GetPageSize(), c.GetPageIndex()),
  93. actions.Permission(data.TableName(), p),
  94. IceRaftNameRecordStatusScopes(c.Status),
  95. IceRaftNameRecordIceLockerIdScopes(c.IceLockerId),
  96. IceRaftNameRecordCoolerBoxIdScopes(c.CoolerBoxId),
  97. ).
  98. Where("ice_raft.status = '2'").
  99. Joins("left join ice_raft_record on ice_raft.ice_raft_record_id = ice_raft_record.id").
  100. Preload("IceRaftRecord.IceLocker").
  101. Preload("IceRaftRecord.CoolerBox").
  102. Preload("IceRaftRecord").
  103. Order("FIELD(ice_raft_record.status,'2','','1','3','4')").
  104. Find(list).Limit(-1).Offset(-1).
  105. Count(count).Error
  106. }
  107. if err != nil {
  108. e.Log.Errorf("db error: %s", err)
  109. return global.GetFailedErr
  110. }
  111. return nil
  112. }
  113. // Get 获取IceRaft对象
  114. func (e *IceRaft) Get(d *dto.IceRaftGetReq, iceRaftModel *model.IceRaft, p *actions.DataPermission) error {
  115. err := e.Orm.
  116. Scopes(actions.Permission(iceRaftModel.TableName(), p)).
  117. First(iceRaftModel, d.GetId()).Error
  118. if err != nil {
  119. e.Log.Errorf("db error: %s", err)
  120. if errors.Is(err, gorm.ErrRecordNotFound) {
  121. return global.GetNotFoundOrNoPermissionErr
  122. }
  123. return global.GetFailedErr
  124. }
  125. return nil
  126. }
  127. func (e *IceRaft) GetByCode(d *dto.IceRaftGetByCodeReq, iceRaftModel *model.IceRaft, p *actions.DataPermission) error {
  128. err := e.Orm.
  129. Scopes(actions.Permission(iceRaftModel.TableName(), p)).
  130. Where("code = ?", d.Code).
  131. First(iceRaftModel).Error
  132. if err != nil {
  133. e.Log.Errorf("db error: %s", err)
  134. if errors.Is(err, gorm.ErrRecordNotFound) {
  135. return errors.New(fmt.Sprintf("冰排编号【%s】不存在!", d.Code))
  136. }
  137. return global.GetFailedErr
  138. }
  139. return nil
  140. }
  141. // Insert 创建IceRaft对象
  142. func (e *IceRaft) Insert(c *dto.IceRaftInsertReq) error {
  143. var err error
  144. var data model.IceRaft
  145. tx := e.Orm.Begin()
  146. defer func() {
  147. if err != nil {
  148. tx.Rollback()
  149. } else {
  150. tx.Commit()
  151. }
  152. }()
  153. for _, code := range c.CodeList {
  154. var k int64
  155. err = tx.Model(&data).Where("code = ? and dept_id = ?", code, c.DeptId).Count(&k).Error
  156. if err != nil {
  157. e.Log.Errorf("db error: %s", err)
  158. return global.CreateFailedErr
  159. }
  160. // 冰排编号已存在
  161. if k > 0 {
  162. err = errors.New("该编号已存在!")
  163. return err
  164. }
  165. // 添加冰排
  166. data.Id = 0
  167. c.Generate(&data, code)
  168. err = tx.Create(&data).Error
  169. if err != nil {
  170. e.Log.Errorf("db error: %s", err)
  171. return global.CreateFailedErr
  172. }
  173. }
  174. return nil
  175. }
  176. // Update 修改IceRaft对象
  177. func (e *IceRaft) Update(c *dto.IceRaftUpdateReq, p *actions.DataPermission) error {
  178. var err error
  179. tx := e.Orm.Begin()
  180. defer func() {
  181. if err != nil {
  182. tx.Rollback()
  183. } else {
  184. tx.Commit()
  185. }
  186. }()
  187. var iceRaftModel = model.IceRaft{}
  188. // 查询冰排是否存在
  189. err = e.Orm.Scopes(actions.Permission(iceRaftModel.TableName(), p)).
  190. First(&iceRaftModel, c.GetId()).Error
  191. if err != nil {
  192. e.Log.Errorf("db error: %s", err)
  193. if errors.Is(err, gorm.ErrRecordNotFound) {
  194. return global.UpdateNotFoundOrNoPermissionErr
  195. }
  196. return global.UpdateFailedErr
  197. }
  198. if iceRaftModel.Code != c.Code {
  199. var k int64
  200. var data = model.IceRaft{}
  201. err = tx.Model(&data).Where("code = ? and dept_id = ?", c.Code, iceRaftModel.DeptId).Count(&k).Error
  202. if err != nil {
  203. e.Log.Errorf("db error: %s", err)
  204. return global.CreateFailedErr
  205. }
  206. if k > 0 {
  207. err = errors.New("冰排编号已存在!")
  208. e.Log.Errorf("db error: %s", err)
  209. return err
  210. }
  211. }
  212. c.Generate(&iceRaftModel)
  213. err = tx.Save(&iceRaftModel).Error
  214. if err != nil {
  215. e.Log.Errorf("db error: %s", err)
  216. return global.UpdateFailedErr
  217. }
  218. // 查询冰排记录是否存在
  219. var iceRaftRecordModel model.IceRaftRecord
  220. var count int64
  221. e.Orm.Table(iceRaftRecordModel.TableName()).Where("ice_raft_id = ?", c.Id).Count(&count)
  222. if count > 0 {
  223. iceRaftRecordModel.Id = iceRaftModel.IceRaftRecordId
  224. iceRaftRecordModel.FreezeClaim = iceRaftModel.FreezeClaim
  225. iceRaftRecordModel.Label = iceRaftModel.Label
  226. err = tx.Updates(&iceRaftRecordModel).Error
  227. if err != nil {
  228. e.Log.Errorf("db error: %s 该冰排未使用", err)
  229. return errors.New("修改冰排记录失败")
  230. }
  231. }
  232. c.Id = iceRaftModel.Id
  233. return nil
  234. }
  235. // Remove 删除IceRaft
  236. func (e *IceRaft) Remove(c *dto.IceRaftDeleteReq, p *actions.DataPermission) error {
  237. var err error
  238. tx := e.Orm.Begin()
  239. defer func() {
  240. if err != nil {
  241. tx.Rollback()
  242. } else {
  243. tx.Commit()
  244. }
  245. }()
  246. var iceRaftModel model.IceRaft
  247. // 查询冰排是否存在
  248. err = e.Orm.Scopes(actions.Permission(iceRaftModel.TableName(), p)).
  249. First(&iceRaftModel, c.GetId()).Error
  250. if err != nil {
  251. e.Log.Errorf("db error: %s", err)
  252. if errors.Is(err, gorm.ErrRecordNotFound) {
  253. return global.DeleteNotFoundOrNoPermissionErr
  254. }
  255. return global.DeleteFailedErr
  256. }
  257. db := tx.Delete(&iceRaftModel)
  258. if err = db.Error; err != nil {
  259. e.Log.Errorf("db error: %s", err)
  260. return global.DeleteFailedErr
  261. }
  262. if db.RowsAffected == 0 {
  263. return global.DeleteNotFoundOrNoPermissionErr
  264. }
  265. return nil
  266. }
  267. func (e *IceRaft) InStorage(c *dto.IceRaftInStorageReq, p *actions.DataPermission) error {
  268. var err error
  269. tx := e.Orm.Begin()
  270. defer func() {
  271. if err != nil {
  272. tx.Rollback()
  273. } else {
  274. tx.Commit()
  275. }
  276. }()
  277. // 查询冷冻柜信息
  278. var iceLockerModel model.IceLocker
  279. err = e.Orm.Scopes(actions.Permission(iceLockerModel.TableName(), p)).
  280. First(&iceLockerModel, c.IceLockerId).Error
  281. if err != nil {
  282. e.Log.Errorf("db error: %s", err)
  283. return errors.New("获取冷冻柜信息失败")
  284. }
  285. if iceLockerModel.Status != model.IceLockerStatusNormal {
  286. err = errors.New("冷冻柜状态异常")
  287. return err
  288. }
  289. for _, code := range c.Code {
  290. // 查询冰排是否存在
  291. var iceRaftModel model.IceRaft
  292. err = e.Orm.Scopes(actions.Permission(iceRaftModel.TableName(), p)).
  293. Where("code = ?", code).
  294. Preload("IceRaftRecord").
  295. First(&iceRaftModel).Error
  296. if err != nil {
  297. // 冰排编号不存在,添加
  298. //if errors.Is(err, gorm.ErrRecordNotFound) {
  299. // iceRaftModel.Code = code
  300. // iceRaftModel.Status = model.IceRaftStatusNormal
  301. // iceRaftModel.DeptId = p.DeptId
  302. // iceRaftModel.CreateBy = p.UserId
  303. // err = tx.Create(&iceRaftModel).Error
  304. // if err != nil {
  305. // e.Log.Errorf("db error: %s", err)
  306. // return errors.New(fmt.Sprintf("添加冰排【%s】信息失败", code))
  307. // }
  308. //} else {
  309. // e.Log.Errorf("db error: %s", err)
  310. // return errors.New(fmt.Sprintf("获取冰排【%s】信息失败",code))
  311. //}
  312. e.Log.Errorf("db error: %s", err)
  313. return errors.New(fmt.Sprintf("获取冰排【%s】信息失败", code))
  314. }
  315. if iceRaftModel.Status != model.IceRaftStatusNormal {
  316. err = errors.New(fmt.Sprintf("冰排【%s】状态异常", code))
  317. return err
  318. }
  319. if iceRaftModel.IceRaftRecord.Status == model.IceRaftRecordStatusFreezing || iceRaftModel.IceRaftRecord.Status == model.IceRaftRecordStatusWaitUse {
  320. err = errors.New(fmt.Sprintf("冰排【%s】状态为%s,入库失败!", code, model.GetIceRaftRecordStatus(iceRaftModel.IceRaftRecord.Status)))
  321. return err
  322. }
  323. // 更新冰排记录状态 使用中 -> 已完成
  324. err = tx.Model(&model.IceRaftRecord{}).
  325. Where("ice_raft_id = ? and status = ?", iceRaftModel.Id, model.IceRaftRecordStatusUsing).
  326. Updates(map[string]interface{}{
  327. "status": model.IceRaftRecordStatusFinish,
  328. }).Error
  329. // 添加冰排记录
  330. var iceRaftRecordModel = model.IceRaftRecord{
  331. IceLockerId: iceLockerModel.Id,
  332. IceRaftId: iceRaftModel.Id,
  333. Status: model.IceRaftRecordStatusFreezing,
  334. Label: iceRaftModel.Label,
  335. InStorageTime: model2.Time(time.Now()),
  336. FreezeClaim: iceRaftModel.FreezeClaim,
  337. DeptBy: model2.DeptBy{
  338. DeptId: p.DeptId,
  339. },
  340. }
  341. err = tx.Create(&iceRaftRecordModel).Error
  342. if err != nil {
  343. e.Log.Errorf("db error: %s", err)
  344. return errors.New("添加冰排记录失败")
  345. }
  346. // 更新冰排使用记录
  347. err = tx.Model(&iceRaftModel).
  348. Where("id = ?", iceRaftModel.Id).
  349. Updates(map[string]interface{}{
  350. "ice_raft_record_id": iceRaftRecordModel.Id,
  351. }).Error
  352. if err != nil {
  353. e.Log.Errorf("db error: %s", err)
  354. return errors.New("关联冰排记录失败")
  355. }
  356. }
  357. return nil
  358. }
  359. func (e *IceRaft) OutStorage(c *dto.IceRaftOutStorageReq, p *actions.DataPermission) error {
  360. var err error
  361. tx := e.Orm.Begin()
  362. defer func() {
  363. if err != nil {
  364. tx.Rollback()
  365. } else {
  366. tx.Commit()
  367. }
  368. }()
  369. // 查询保温箱信息
  370. var coolerBoxModel model.CoolerBox
  371. err = e.Orm.Scopes(actions.Permission(coolerBoxModel.TableName(), p)).
  372. First(&coolerBoxModel, c.CoolerBoxId).Error
  373. if err != nil {
  374. e.Log.Errorf("db error: %s", err)
  375. return errors.New("获取保温箱信息失败")
  376. }
  377. if coolerBoxModel.Status != model.CoolerBoxStatusNormal {
  378. err = errors.New("保温箱状态异常")
  379. return err
  380. }
  381. for _, code := range c.Code {
  382. // 查询冰排是否存在
  383. var iceRaftModel model.IceRaft
  384. err = e.Orm.Scopes(actions.Permission(iceRaftModel.TableName(), p)).
  385. Where("code = ?", code).
  386. Preload("IceRaftRecord").
  387. First(&iceRaftModel).Error
  388. if err != nil {
  389. e.Log.Errorf("db error: %s", err)
  390. return errors.New("获取冰排信息失败")
  391. }
  392. if iceRaftModel.Status != model.IceRaftStatusNormal {
  393. err = errors.New(fmt.Sprintf("冰排【%s】状态异常", code))
  394. return err
  395. }
  396. // 获取冰排记录
  397. var iceRaftRecordModel model.IceRaftRecord
  398. err = e.Orm.Scopes(actions.Permission(iceRaftRecordModel.TableName(), p)).
  399. Where("ice_raft_id = ?", iceRaftModel.Id).
  400. First(&iceRaftRecordModel, iceRaftModel.IceRaftRecordId).Error
  401. if err != nil {
  402. e.Log.Errorf("db error: %s", err)
  403. return errors.New("获取冰排记录失败,请确认冰排是否入库!")
  404. }
  405. if len(iceRaftRecordModel.OutStorageTime.String()) > 0 {
  406. err = errors.New(fmt.Sprintf("冰排【%s】已出库,禁止出库!", code))
  407. return err
  408. }
  409. inTime := iceRaftRecordModel.InStorageTime.Local()
  410. if inTime.Add(time.Hour * time.Duration(iceRaftRecordModel.FreezeClaim)).After(time.Now()) {
  411. err = errors.New(fmt.Sprintf("冰排【%s】未达到冷冻时长,禁止出库", code))
  412. return err
  413. }
  414. iceRaftRecordModel.Status = model.IceRaftRecordStatusUsing
  415. iceRaftRecordModel.CoolerBoxId = coolerBoxModel.Id
  416. iceRaftRecordModel.OutStorageTime = model2.Time(time.Now())
  417. iceRaftRecordModel.SuitableForCold = c.SuitableForCold
  418. //data, err := nats_server.Read_DeviceTask_List_By_Condition(coolerBoxModel.Sn)
  419. //if data.T_State != 1 {
  420. // e.Log.Errorf("该保温箱未启动: %s", err)
  421. // return errors.New("该保温箱未启动,请启动保温箱监控")
  422. //}
  423. //if err != nil {
  424. // e.Log.Errorf("获取设备任务列表失败: %s", err)
  425. // return errors.New("该保温箱未绑定平台")
  426. //}
  427. //iceRaftRecordModel.CoolerBoxStarTime = model2.Time(data.T_Ut_start)
  428. err = tx.Save(&iceRaftRecordModel).Error
  429. if err != nil {
  430. e.Log.Errorf("db error: %s", err)
  431. return errors.New("保存冰排记录失败")
  432. }
  433. }
  434. return nil
  435. }
  436. // 查询保温箱关联的冰排
  437. func (e *IceRaft) GetPageByCoolerBoxId(coolerBoxId int, list *[]string, p *actions.DataPermission) error {
  438. var data model.IceRaft
  439. err := e.Orm.Model(&data).
  440. Select("code").
  441. Scopes(
  442. actions.Permission(data.TableName(), p),
  443. IceRaftNameRecordStatusScopes(model.IceRaftRecordStatusUsing),
  444. IceRaftNameRecordCoolerBoxIdScopes(coolerBoxId),
  445. ).
  446. Joins("left join ice_raft_record on ice_raft.ice_raft_record_id = ice_raft_record.id").
  447. Find(list).Error
  448. if err != nil {
  449. e.Log.Errorf("db error: %s", err)
  450. return global.GetFailedErr
  451. }
  452. return nil
  453. }
  454. type IceRaftRecord struct {
  455. service.Service
  456. }
  457. // GetPage 获取IceRaft列表
  458. func (e *IceRaftRecord) GetPage(c *dto.IceRaftRecordGetPageReq, list *[]model.IceRaftRecord, count *int64, p *actions.DataPermission) error {
  459. var err error
  460. var data model.IceRaftRecord
  461. if c.PageSize == 9999 {
  462. err = e.Orm.Model(&data).
  463. Scopes(
  464. actions.Permission(data.TableName(), p),
  465. ).
  466. Preload("IceLocker").
  467. Preload("CoolerBox").
  468. Find(list).Limit(-1).Offset(-1).
  469. Count(count).Error
  470. } else {
  471. err = e.Orm.Model(&data).
  472. Scopes(
  473. cDto.MakeCondition(c.GetNeedSearch()),
  474. cDto.Paginate(c.GetPageSize(), c.GetPageIndex()),
  475. actions.Permission(data.TableName(), p),
  476. ).
  477. Preload("IceLocker").
  478. Preload("CoolerBox").
  479. Find(list).Limit(-1).Offset(-1).
  480. Count(count).Error
  481. }
  482. if err != nil {
  483. e.Log.Errorf("db error: %s", err)
  484. return global.GetFailedErr
  485. }
  486. return nil
  487. }
  488. // Update 修改IceRaft对象
  489. func (e *IceRaftRecord) Update(c *dto.IceRaftRecordUpdateReq, p *actions.DataPermission) error {
  490. var err error
  491. tx := e.Orm.Begin()
  492. defer func() {
  493. if err != nil {
  494. tx.Rollback()
  495. } else {
  496. tx.Commit()
  497. }
  498. }()
  499. var iceRaftRecordModel = model.IceRaftRecord{}
  500. // 查询冰排是否存在
  501. err = e.Orm.Scopes(actions.Permission(iceRaftRecordModel.TableName(), p)).
  502. First(&iceRaftRecordModel, c.GetId()).Error
  503. if err != nil {
  504. e.Log.Errorf("db error: %s", err)
  505. if errors.Is(err, gorm.ErrRecordNotFound) {
  506. return global.UpdateNotFoundOrNoPermissionErr
  507. }
  508. return global.UpdateFailedErr
  509. }
  510. iceRaftRecordModel.IceLockerId = c.IceLockerId
  511. iceRaftRecordModel.FreezeClaim = c.FreezeClaim
  512. if len(iceRaftRecordModel.OutStorageTime.String()) > 0 {
  513. iceRaftRecordModel.CoolerBoxId = c.CoolerBoxId
  514. }
  515. err = tx.Save(&iceRaftRecordModel).Error
  516. if err != nil {
  517. e.Log.Errorf("db error: %s", err)
  518. return global.UpdateFailedErr
  519. }
  520. c.Id = iceRaftRecordModel.Id
  521. return nil
  522. }
  523. // Remove 删除IceRaft
  524. func (e *IceRaftRecord) Remove(c *dto.IceRaftRecordDeleteReq, p *actions.DataPermission) error {
  525. var err error
  526. tx := e.Orm.Begin()
  527. defer func() {
  528. if err != nil {
  529. tx.Rollback()
  530. } else {
  531. tx.Commit()
  532. }
  533. }()
  534. var iceRaftRecordModel model.IceRaftRecord
  535. // 查询冰排是否存在
  536. err = e.Orm.Scopes(actions.Permission(iceRaftRecordModel.TableName(), p)).
  537. First(&iceRaftRecordModel, c.GetId()).Error
  538. if err != nil {
  539. e.Log.Errorf("db error: %s", err)
  540. if errors.Is(err, gorm.ErrRecordNotFound) {
  541. return global.DeleteNotFoundOrNoPermissionErr
  542. }
  543. return global.DeleteFailedErr
  544. }
  545. db := tx.Delete(&iceRaftRecordModel)
  546. if err = db.Error; err != nil {
  547. e.Log.Errorf("db error: %s", err)
  548. return global.DeleteFailedErr
  549. }
  550. if db.RowsAffected == 0 {
  551. return global.DeleteNotFoundOrNoPermissionErr
  552. }
  553. // 更改冰排关联状态
  554. var iceRaftModel model.IceRaft
  555. var secondIceRaftRecordModel model.IceRaftRecord
  556. err = e.Orm.Scopes(actions.Permission(iceRaftModel.TableName(), p)).
  557. First(&iceRaftModel, iceRaftRecordModel.IceRaftId).Error
  558. if err != nil {
  559. e.Log.Errorf("db error: %s", err)
  560. return global.DeleteFailedErr
  561. }
  562. err = e.Orm.Scopes(actions.Permission(secondIceRaftRecordModel.TableName(), p)).
  563. Where("ice_raft_id = ? and id != ?", iceRaftRecordModel.IceRaftId, iceRaftRecordModel.Id).
  564. First(&secondIceRaftRecordModel).Error
  565. if err != nil {
  566. if errors.Is(err, gorm.ErrRecordNotFound) {
  567. iceRaftModel.IceRaftRecordId = 0
  568. }
  569. }
  570. iceRaftModel.IceRaftRecordId = secondIceRaftRecordModel.Id
  571. err = tx.Save(&iceRaftModel).Error
  572. if err != nil {
  573. e.Log.Errorf("db error: %s", err)
  574. return global.UpdateFailedErr
  575. }
  576. return nil
  577. }
  578. func (e *IceRaftRecord) EndForCold(c *dto.IceRaftRecordEedReq, p *actions.DataPermission) error {
  579. var err error
  580. tx := e.Orm.Begin()
  581. defer func() {
  582. if err != nil {
  583. tx.Rollback()
  584. } else {
  585. tx.Commit()
  586. }
  587. }()
  588. // 查询冰排是否存在
  589. for _, v := range c.Id {
  590. var iceRaftRecordModel model.IceRaftRecord
  591. err = e.Orm.Scopes(actions.Permission(iceRaftRecordModel.TableName(), p)).
  592. First(&iceRaftRecordModel, v).Error
  593. if err != nil {
  594. e.Log.Errorf("db error: %s", err)
  595. if errors.Is(err, gorm.ErrRecordNotFound) {
  596. return global.UpdateNotFoundOrNoPermissionErr
  597. }
  598. return global.UpdateFailedErr
  599. }
  600. iceRaftRecordModel.IsSuitableForCold = 1 // 是否适冷
  601. iceRaftRecordModel.EndForColdTime = model2.Time(time.Now())
  602. iceRaftRecordModel.Id = v
  603. updates := tx.Where("id = ?", iceRaftRecordModel.Id).Updates(&iceRaftRecordModel)
  604. if err = updates.Error; err != nil {
  605. e.Log.Errorf("db error: %s", err)
  606. return global.UpdateFailedErr
  607. }
  608. }
  609. return nil
  610. }
  611. // StartForCold 冰排开始释冷
  612. func (e *IceRaftRecord) StartForCold(c *dto.IceStartbleForColfTimReq, p *actions.DataPermission) error {
  613. var err error
  614. tx := e.Orm.Begin()
  615. defer func() {
  616. if err != nil {
  617. tx.Rollback()
  618. } else {
  619. tx.Commit()
  620. }
  621. }()
  622. //查询冰排是否存在
  623. for _, v := range c.Id {
  624. var iceRaftRecordModel model.IceRaftRecord
  625. err = e.Orm.Scopes(actions.Permission(iceRaftRecordModel.TableName(), p)).
  626. First(&iceRaftRecordModel, v).Error
  627. if err != nil {
  628. e.Log.Errorf("db error: %s", err)
  629. if errors.Is(err, gorm.ErrRecordNotFound) {
  630. return global.UpdateNotFoundOrNoPermissionErr
  631. }
  632. return global.UpdateFailedErr
  633. }
  634. iceRaftRecordModel.StartIceColdTime = model2.Time(time.Now())
  635. updates := tx.Where("id = ?", iceRaftRecordModel.Id).Updates(&iceRaftRecordModel)
  636. if err = updates.Error; err != nil {
  637. e.Log.Errorf("db error: %s", err)
  638. return global.UpdateFailedErr
  639. }
  640. }
  641. return nil
  642. }