project_account_dao.go 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189
  1. /*
  2. * @description:项目用户数据库操作
  3. * @Author: CP
  4. * @Date: 2020-08-31 15:57:04
  5. * @FilePath: \construction_management\dao\project_account_dao.go
  6. */
  7. package dao
  8. import (
  9. "errors"
  10. "github.com/go-xorm/xorm"
  11. "go.mod/models"
  12. "go.mod/web/viewmodels"
  13. )
  14. //数据库操作引擎
  15. type ProjectAccountDao struct {
  16. engine *xorm.Engine
  17. }
  18. //获得一个DAO对象
  19. func NewProjectAccountDao(engine *xorm.Engine) *ProjectAccountDao {
  20. return &ProjectAccountDao{
  21. engine: engine,
  22. }
  23. }
  24. //CmProjectAccount 设置的值获得数据-弃用
  25. // func (d *ProjectAccountDao) GetOne(data *models.CmProjectAccount) *models.CmProjectAccount {
  26. // //data := data
  27. // //Get取到值后,会自动赋值到data中
  28. // ok, err := d.engine.
  29. // Where("account = ?", data.Account).
  30. // Get(data)
  31. // if ok && err == nil {
  32. // return data
  33. // } else {
  34. // data.Id = 0
  35. // return data
  36. // }
  37. // }
  38. // 根据账号获得数据
  39. func (d *ProjectAccountDao) GetAccount(account string) *models.CmProjectAccount {
  40. data := &models.CmProjectAccount{}
  41. ok, err := d.engine.
  42. Where("account = ?", account).
  43. Get(data)
  44. if ok && err == nil {
  45. return data
  46. } else {
  47. data.Id = 0
  48. return data
  49. }
  50. }
  51. func (d *ProjectAccountDao) GetAccountByAuth(account string) *models.CmProjectAccount {
  52. data := &models.CmProjectAccount{}
  53. ok, err := d.engine.
  54. Where("account = ? and jl_auth = 1", account).
  55. Get(data)
  56. if ok && err == nil {
  57. return data
  58. } else {
  59. data.Id = 0
  60. return data
  61. }
  62. }
  63. func (d *ProjectAccountDao) GetAccountProjectId(account string, projectId int) *models.CmProjectAccount {
  64. data := &models.CmProjectAccount{}
  65. ok, err := d.engine.
  66. Where("account = ? and project_id = ?", account, projectId).
  67. Get(data)
  68. if ok && err == nil {
  69. return data
  70. } else {
  71. data.Id = 0
  72. return data
  73. }
  74. }
  75. func (d *ProjectAccountDao) GetAdmin(projectId int) *models.CmProjectAccount {
  76. data := &models.CmProjectAccount{}
  77. ok, err := d.engine.
  78. Where("is_admin = 1 and project_id = ?", projectId).
  79. Get(data)
  80. if ok && err == nil {
  81. return data
  82. } else {
  83. data.Id = 0
  84. return data
  85. }
  86. }
  87. //id获得数据
  88. func (d *ProjectAccountDao) Get(id int, projectId int) *models.CmProjectAccount {
  89. data := &models.CmProjectAccount{Id: id, ProjectId: projectId}
  90. ok, err := d.engine.Get(data)
  91. if ok && err == nil {
  92. return data
  93. } else {
  94. data.Id = 0
  95. return data
  96. }
  97. }
  98. // 获得项目下的账号信息
  99. func (d *ProjectAccountDao) GetAll(projectId int) []models.CmProjectAccount {
  100. datalist := make([]models.CmProjectAccount, 0)
  101. err := d.engine.
  102. Where("project_id = ?", projectId).
  103. Desc("id").
  104. Find(&datalist)
  105. if err != nil {
  106. return datalist
  107. } else {
  108. return datalist
  109. }
  110. }
  111. func (d *ProjectAccountDao) GetInId(ids string, name string) []models.CmProjectAccount {
  112. datalist := make([]models.CmProjectAccount, 0)
  113. err := d.engine.
  114. Where("id in ( "+ids+" ) ").
  115. And("account like ? or name like ? or company like ? or mobile like ?", name+"%", name+"%", name+"%", name+"%").
  116. Desc("id").
  117. Find(&datalist)
  118. if err != nil {
  119. return datalist
  120. } else {
  121. return datalist
  122. }
  123. }
  124. // 检索 账号姓名单位手机
  125. func (d *ProjectAccountDao) Search(name string, projectId int) []models.CmProjectAccount {
  126. datalist := make([]models.CmProjectAccount, 0)
  127. err := d.engine.
  128. Where("project_id = ? ", projectId).
  129. And("account like ? or name like ? or mobile like ?", "%"+name+"%", "%"+name+"%", "%"+name+"%").
  130. // And("account like ? or name like ? or company like ? or mobile like ?", "%"+name+"%", "%"+name+"%", "%"+name+"%", "%"+name+"%").
  131. Desc("id").
  132. Find(&datalist)
  133. if err != nil {
  134. return datalist
  135. } else {
  136. return datalist
  137. }
  138. }
  139. func JlSync() {
  140. }
  141. // 新增
  142. func (d *ProjectAccountDao) Add(data *models.CmProjectAccount) error {
  143. _, err := d.engine.Insert(data)
  144. return err
  145. }
  146. //更新
  147. func (d *ProjectAccountDao) Update(data *models.CmProjectAccount, columns []string) error {
  148. //_, err := d.engine.Id(data.Id).MustCols(columns...).Update(data)
  149. _, err := d.engine.Where("id = ? and project_id = ? ", data.Id, data.ProjectId).MustCols(columns...).Update(data)
  150. if err != nil {
  151. return errors.New("更新账号失败")
  152. }
  153. return nil
  154. }
  155. // 物理删除
  156. func (d *ProjectAccountDao) Delete(data *models.CmProjectAccount) error {
  157. _, err := d.engine.Where("id = ? and project_id = ? ", data.Id, data.ProjectId).Delete(data)
  158. if err != nil {
  159. return errors.New("删除到账号失败")
  160. }
  161. return nil
  162. }
  163. // 查找
  164. func (d *ProjectAccountDao) FindById(id int) (viewmodels.ProjectInfo, error) {
  165. projectInfo := viewmodels.ProjectInfo{}
  166. _, err := d.engine.Sql("select p.`name` as project_name, p.`code`, p.`create_time`, a.`mobile`, a.`name` from `cm_project` as p, `cm_project_account` as a where p.`user_id` = a.`id` and p.`id` = ?", id).Get(&projectInfo)
  167. return projectInfo, err
  168. }