rule_dao.go 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. /*
  2. * @description: 编号规则数据库操作相关
  3. * @Author: LanJianRong
  4. * @Date: 2020-11-27
  5. * @FilePath: \construction_management\dao\rule_dao.go
  6. */
  7. package dao
  8. import (
  9. "github.com/go-xorm/xorm"
  10. "go.mod/models"
  11. )
  12. //数据库操作引擎
  13. type RuleDao struct {
  14. engine *xorm.Engine
  15. }
  16. //获得一个DAO对象
  17. func NewRuleDao(engine *xorm.Engine) *RuleDao {
  18. return &RuleDao{
  19. engine: engine,
  20. }
  21. }
  22. // 通过项目id和标段id查找
  23. func (d *RuleDao) FindByPidWithBid(pid int, bid int) *models.CmRule {
  24. data := &models.CmRule{BidsectionId: bid, ProjectId: pid}
  25. ok, err := d.engine.Get(data)
  26. if ok && err == nil {
  27. return data
  28. } else {
  29. data.Id = 0
  30. return data
  31. }
  32. }
  33. // 根据pid和bid更新、不存在则创建
  34. func (d *RuleDao) UpdateOrCreate(pid int, bid int, key string, value string) error {
  35. data := &models.CmRule{BidsectionId: bid, ProjectId: pid}
  36. has, err := d.engine.Get(data)
  37. if key == "safe_rule" {
  38. data.SafeRule = value
  39. } else if key == "quality_rule" {
  40. data.QualityRule = value
  41. } else if key == "contract_return_rule" {
  42. data.ContractReturnRule = value
  43. } else {
  44. data.ContractPaidRule = value
  45. }
  46. if has && err == nil {
  47. _, err = d.engine.Cols(key).Id(data.Id).Update(data)
  48. } else if !has && err == nil {
  49. _, err = d.engine.Insert(data)
  50. }
  51. return err
  52. }