settle_account_bill.go 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. package settle_account_bill
  2. import (
  3. "dashoo.cn/micro_libary/request"
  4. "errors"
  5. "fmt"
  6. "github.com/gogf/gf/os/gtime"
  7. "github.com/gogf/gf/util/gconv"
  8. "lims_adapter/dao/account"
  9. "lims_adapter/model"
  10. accountModel "lims_adapter/model/account"
  11. )
  12. // Service 会议室服务
  13. type Service struct {
  14. Dao *account.SettleAccountBillDao
  15. Tenant string
  16. }
  17. // NewSrv 服务初始化
  18. func NewService(tenant string) Service {
  19. return Service{Dao: account.NewSettleAccountBillDao(tenant), Tenant: tenant}
  20. }
  21. // List 会议室列表
  22. func (s Service) List(req model.ListReq) ([]accountModel.SettleAccountBill, int, error) {
  23. entityModel := s.Dao.M
  24. where := "1=1"
  25. if req.Entity != nil {
  26. entity := new(accountModel.SettleAccountBillReq)
  27. err := gconv.Struct(req.Entity, entity)
  28. if err != nil {
  29. return nil, 0, err
  30. }
  31. if entity.MainUserId != 0 {
  32. where += fmt.Sprintf(" AND MainUserId='%v'", entity.MainUserId)
  33. }
  34. if entity.Status != "" {
  35. where += fmt.Sprintf(" AND Status='%v'", entity.Status)
  36. }
  37. }
  38. entityModel = entityModel.Where(where)
  39. total, err := entityModel.Count()
  40. if err != nil {
  41. return nil, 0, err
  42. }
  43. if total == 0 {
  44. return nil, 0, nil
  45. }
  46. res, err := entityModel.Page(req.Current, req.Size).Order("settle_account_bill.CreateOn DESC").Fields("settle_account_bill.*").FindAll()
  47. if err != nil {
  48. return nil, 0, err
  49. }
  50. if res.IsEmpty() {
  51. return nil, 0, nil
  52. }
  53. list := make([]accountModel.SettleAccountBill, 0)
  54. err = res.Structs(&list)
  55. if err != nil {
  56. return nil, 0, err
  57. }
  58. return list, total, nil
  59. }
  60. // 结算
  61. func (s Service) Settle(req accountModel.AccountBillSettleReq, user request.UserInfo) error {
  62. if req.BillId == 0 || req.Amount == 0 {
  63. return errors.New("参数缺失")
  64. }
  65. tx, err := s.Dao.DB.Begin()
  66. if err != nil {
  67. return err
  68. }
  69. _, err = tx.Update("settle_account_bill", fmt.Sprintf("Status='2',SettleUserId='%v',SettleUser='%v',SettleDate='%v'", user.Id, user.RealName, gtime.Now()), fmt.Sprintf("Id='%v'", req.BillId))
  70. if err != nil {
  71. tx.Rollback()
  72. return err
  73. }
  74. _, err = tx.Update("base_account", fmt.Sprintf("Surplus=Surplus-%v,Available=Available-%v", req.Amount, req.Amount), fmt.Sprintf("Id='%v'", req.Amount))
  75. if err != nil {
  76. tx.Rollback()
  77. return err
  78. }
  79. return tx.Commit()
  80. }