rule_dao.go 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  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. "fmt"
  10. "github.com/go-xorm/xorm"
  11. "go.mod/models"
  12. )
  13. //数据库操作引擎
  14. type RuleDao struct {
  15. engine *xorm.Engine
  16. }
  17. //获得一个DAO对象
  18. func NewRuleDao(engine *xorm.Engine) *RuleDao {
  19. return &RuleDao{
  20. engine: engine,
  21. }
  22. }
  23. // 通过项目id和标段id查找
  24. func (d *RuleDao) FindByPidWithBid(pid int, bid int) *models.CmRule {
  25. data := &models.CmRule{BidsectionId: bid, ProjectId: pid}
  26. ok, err := d.engine.Get(data)
  27. if ok && err == nil {
  28. return data
  29. } else {
  30. data.Id = 0
  31. return data
  32. }
  33. }
  34. // 根据pid和bid更新、不存在则创建
  35. func (d *RuleDao) UpdateOrCreate(pid int, bid int, key string, value string) error {
  36. data := &models.CmRule{BidsectionId: bid, ProjectId: pid}
  37. has, err := d.engine.Get(data)
  38. if key == "safe_rule" {
  39. data.SafeRule = value
  40. } else if key == "quality_rule" {
  41. data.QualityRule = value
  42. } else {
  43. data.ContractRule = value
  44. }
  45. // fmt.Println("newData", data, "value", value, "key", key)
  46. if has && err == nil {
  47. _, err := d.engine.Id(data.Id).Update(data)
  48. fmt.Println("err2", err)
  49. return err
  50. } else if !has && err == nil {
  51. _, err := d.engine.Insert(data)
  52. fmt.Println("err3", err)
  53. return err
  54. }
  55. fmt.Println(err)
  56. return err
  57. }