cust_customer_invoice_header.go 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191
  1. package cust
  2. import (
  3. "context"
  4. "database/sql"
  5. "fmt"
  6. dao "dashoo.cn/micro/app/dao/cust"
  7. model "dashoo.cn/micro/app/model/cust"
  8. "dashoo.cn/opms_libary/micro_srv"
  9. "dashoo.cn/opms_libary/myerrors"
  10. "dashoo.cn/opms_libary/request"
  11. "github.com/gogf/gf/os/gtime"
  12. "github.com/gogf/gf/util/gvalid"
  13. )
  14. type CustCustomerInvoiceHeaderService struct {
  15. Dao *dao.CustCustomerInvoiceHeaderDao
  16. CustomerDao *dao.CustCustomerDao
  17. Tenant string
  18. userInfo request.UserInfo
  19. }
  20. func NewCustCustomerInvoiceHeaderService(ctx context.Context) (*CustCustomerInvoiceHeaderService, error) {
  21. tenant, err := micro_srv.GetTenant(ctx)
  22. if err != nil {
  23. return nil, fmt.Errorf("获取组合码异常:%s", err.Error())
  24. }
  25. // 获取用户信息
  26. userInfo, err := micro_srv.GetUserInfo(ctx)
  27. if err != nil {
  28. return nil, fmt.Errorf("获取用户信息异常:%s", err.Error())
  29. }
  30. return &CustCustomerInvoiceHeaderService{
  31. Dao: dao.NewCustCustomerInvoiceHeaderDao(tenant),
  32. CustomerDao: dao.NewCustCustomerDao(tenant),
  33. Tenant: tenant,
  34. userInfo: userInfo,
  35. }, nil
  36. }
  37. func (s CustCustomerInvoiceHeaderService) Get(ctx context.Context, id int) (*model.CustCustomerInvoiceHeader, error) {
  38. ent, err := s.Dao.Where("Id = ?", id).One()
  39. if err != nil {
  40. return nil, err
  41. }
  42. if ent == nil {
  43. return nil, myerrors.TipsError("开票抬头不存在")
  44. }
  45. return ent, nil
  46. }
  47. func (s CustCustomerInvoiceHeaderService) List(ctx context.Context, req *model.CustCustomerInvoiceHeaderListReq) (int, []*model.CustCustomerInvoiceHeader, error) {
  48. dao := &s.Dao.CustCustomerInvoiceHeaderDao
  49. if req.SearchText != "" {
  50. likestr := fmt.Sprintf("%%%s%%", req.SearchText)
  51. dao = dao.Where("(cuct_name LIKE ? || company_name LIKE ? || tax_no LIKE ?)", likestr, likestr, likestr)
  52. }
  53. if req.CustId != 0 {
  54. dao = dao.Where("cust_id = ?", req.CustId)
  55. }
  56. if req.CuctName != "" {
  57. likestr := fmt.Sprintf("%%%s%%", req.CuctName)
  58. dao = dao.Where("cuct_name like ?", likestr)
  59. }
  60. if req.CompanyName != "" {
  61. likestr := fmt.Sprintf("%%%s%%", req.CompanyName)
  62. dao = dao.Where("company_name like ?", likestr)
  63. }
  64. if req.TaxNo != "" {
  65. likestr := fmt.Sprintf("%%%s%%", req.TaxNo)
  66. dao = dao.Where("tax_no like ?", likestr)
  67. }
  68. if req.BeginTime != "" {
  69. dao = dao.Where("created_time > ?", req.BeginTime)
  70. }
  71. if req.EndTime != "" {
  72. dao = dao.Where("created_time < ?", req.EndTime)
  73. }
  74. total, err := dao.Count()
  75. if err != nil {
  76. return 0, nil, err
  77. }
  78. if req.PageNum != 0 {
  79. dao = dao.Page(req.GetPage())
  80. }
  81. orderby := "created_time desc"
  82. if req.OrderBy != "" {
  83. orderby = req.OrderBy
  84. }
  85. dao = dao.Order(orderby)
  86. ents := []*model.CustCustomerInvoiceHeader{}
  87. err = dao.Structs(&ents)
  88. if err != nil && err != sql.ErrNoRows {
  89. return 0, nil, err
  90. }
  91. return total, ents, err
  92. }
  93. func (s CustCustomerInvoiceHeaderService) Add(ctx context.Context, req *model.CustCustomerInvoiceHeaderAddReq) (int, error) {
  94. validErr := gvalid.CheckStruct(ctx, req, nil)
  95. if validErr != nil {
  96. return 0, myerrors.TipsError(validErr.Current().Error())
  97. }
  98. ent, err := s.CustomerDao.Where("id = ?", req.CustId).One()
  99. if err != nil {
  100. return 0, err
  101. }
  102. if ent == nil {
  103. return 0, myerrors.TipsError(fmt.Sprintf("客户:%d 不存在", req.CustId))
  104. }
  105. id, err := s.Dao.InsertAndGetId(model.CustCustomerInvoiceHeader{
  106. CustId: req.CustId,
  107. CuctName: ent.CustName,
  108. CompanyName: req.CompanyName,
  109. TaxNo: req.TaxNo,
  110. Address: req.Address,
  111. Telephone: req.Telephone,
  112. BankNo: req.BankNo,
  113. Remark: req.Remark,
  114. CreatedBy: int(s.userInfo.Id),
  115. CreatedName: s.userInfo.NickName,
  116. CreatedTime: gtime.Now(),
  117. UpdatedBy: int(s.userInfo.Id),
  118. UpdatedName: s.userInfo.NickName,
  119. UpdatedTime: gtime.Now(),
  120. })
  121. if err != nil {
  122. return 0, err
  123. }
  124. return int(id), err
  125. }
  126. func (s CustCustomerInvoiceHeaderService) Update(ctx context.Context, req *model.CustCustomerInvoiceHeaderUpdateReq) error {
  127. validErr := gvalid.CheckStruct(ctx, req, nil)
  128. if validErr != nil {
  129. return myerrors.TipsError(validErr.Current().Error())
  130. }
  131. ent, err := s.Dao.Where("id = ?", req.Id).One()
  132. if err != nil {
  133. return err
  134. }
  135. if ent == nil {
  136. return myerrors.TipsError(fmt.Sprintf("开票抬头不存在: %d", req.Id))
  137. }
  138. dao := &s.Dao.CustCustomerInvoiceHeaderDao
  139. toupdate := map[string]interface{}{}
  140. if req.CompanyName != "" {
  141. toupdate["company_name"] = req.CompanyName
  142. }
  143. if req.TaxNo != "" {
  144. toupdate["tax_no"] = req.TaxNo
  145. }
  146. if req.Address != "" {
  147. toupdate["address"] = req.Address
  148. }
  149. if req.Telephone != "" {
  150. toupdate["telephone"] = req.Telephone
  151. }
  152. if req.BankNo != "" {
  153. toupdate["bank_no"] = req.BankNo
  154. }
  155. if req.Remark != nil {
  156. toupdate["remark"] = *req.Remark
  157. }
  158. if len(toupdate) != 0 {
  159. toupdate["updated_by"] = int(s.userInfo.Id)
  160. toupdate["updated_name"] = s.userInfo.NickName
  161. toupdate["updated_time"] = gtime.Now()
  162. _, err = dao.Where("Id", req.Id).Data(toupdate).Update()
  163. if err != nil {
  164. return err
  165. }
  166. }
  167. return nil
  168. }
  169. func (s CustCustomerInvoiceHeaderService) Delete(ctx context.Context, id []int) error {
  170. if len(id) == 0 {
  171. return nil
  172. }
  173. _, err := s.Dao.Where("Id IN (?)", id).Delete()
  174. return err
  175. }