智慧食堂
Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

208 строки
5.8 KiB

  1. package db
  2. import (
  3. "applet/app/db/model"
  4. "applet/app/enum"
  5. "applet/app/utils/logx"
  6. "errors"
  7. "reflect"
  8. "xorm.io/xorm"
  9. )
  10. type UserIdentityDb struct {
  11. Db *xorm.Engine `json:"db"`
  12. Uid int `json:"uid"`
  13. }
  14. func (userIdentityDb *UserIdentityDb) Set(uid int) { // set方法
  15. userIdentityDb.Db = Db
  16. userIdentityDb.Uid = uid
  17. }
  18. func (userIdentityDb *UserIdentityDb) GetUserIdentity(id int) (m *model.UserIdentity, err error) {
  19. m = new(model.UserIdentity)
  20. has, err := userIdentityDb.Db.Where("id =?", id).Get(m)
  21. if err != nil {
  22. return nil, logx.Error(err)
  23. }
  24. if has == false {
  25. return nil, nil
  26. }
  27. return m, nil
  28. }
  29. func (userIdentityDb *UserIdentityDb) UserIdentityExist(enterpriseId int, idNo string) (m *model.UserIdentity, err error) {
  30. m = new(model.UserIdentity)
  31. has, err := userIdentityDb.Db.Where("enterprise_id =?", enterpriseId).And("id_no =?", idNo).Get(m)
  32. if err != nil {
  33. return nil, logx.Error(err)
  34. }
  35. if has == false {
  36. return nil, nil
  37. }
  38. return m, nil
  39. }
  40. func (userIdentityDb *UserIdentityDb) UserIdentityExistV1(enterpriseId int, name string, classId int) (m *model.UserIdentity, err error) {
  41. m = new(model.UserIdentity)
  42. var mm []model.UserIdentity
  43. if err = userIdentityDb.Db.Where("enterprise_id =?", enterpriseId).And("name =?", name).Find(&mm); err != nil {
  44. return nil, logx.Error(err)
  45. }
  46. if len(mm) <= 0 {
  47. return nil, nil
  48. }
  49. classWithUserDb := ClassWithUserDb{}
  50. classWithUserDb.Set()
  51. for _, v := range mm {
  52. //查找 class_with_user
  53. class, err1 := classWithUserDb.GetClassWithUserByUserIdentityId(v.Id)
  54. if err1 != nil {
  55. return nil, err
  56. }
  57. if class == nil {
  58. return nil, errors.New("当前学生身份待管理员确认")
  59. }
  60. if class.ClassId == classId {
  61. return m, nil
  62. }
  63. }
  64. return nil, nil
  65. }
  66. func (userIdentityDb *UserIdentityDb) FindUserIdentity() (*[]UserIdentityWithEnterprise, error) {
  67. var m []UserIdentityWithEnterprise
  68. if err := userIdentityDb.Db.
  69. Join("LEFT", "enterprise", "user_identity.enterprise_id = enterprise.id").
  70. Where("user_identity.state =?", enum.UserIdentityStateForNormal).
  71. And("user_identity.uid =?", userIdentityDb.Uid).Desc("user_identity.id").Find(&m); err != nil {
  72. return nil, logx.Error(err)
  73. }
  74. return &m, nil
  75. }
  76. func (userIdentityDb *UserIdentityDb) UserIdentity(id int) (m *UserIdentityWithEnterprise, err error) {
  77. m = new(UserIdentityWithEnterprise)
  78. has, err := userIdentityDb.Db.Join("LEFT", "enterprise", "user_identity.enterprise_id = enterprise.id").
  79. And("user_identity.id =?", id).Desc("user_identity.id").Get(m)
  80. if err != nil {
  81. return nil, logx.Error(err)
  82. }
  83. if has == false {
  84. return nil, nil
  85. }
  86. return m, nil
  87. }
  88. func (userIdentityDb *UserIdentityDb) UserIdentityInsert(m *model.UserIdentity) (int, error) {
  89. _, err := userIdentityDb.Db.InsertOne(m)
  90. if err != nil {
  91. return 0, err
  92. }
  93. return m.Id, nil
  94. }
  95. func (userIdentityDb *UserIdentityDb) UserIdentityInsertBySession(session *xorm.Session, m *model.UserIdentity) (int, error) {
  96. _, err := session.InsertOne(m)
  97. if err != nil {
  98. return 0, err
  99. }
  100. return m.Id, nil
  101. }
  102. func (userIdentityDb *UserIdentityDb) BatchAddUserIdentities(mm []*model.UserIdentity) (int64, error) {
  103. affected, err := userIdentityDb.Db.Insert(mm)
  104. if err != nil {
  105. return 0, err
  106. }
  107. return affected, nil
  108. }
  109. func (userIdentityDb *UserIdentityDb) UserIdentityDelete(id interface{}) (int64, error) {
  110. if reflect.TypeOf(id).Kind() == reflect.Slice {
  111. return Db.In("id", id).Delete(model.UserIdentity{})
  112. } else {
  113. return Db.Where("id = ?", id).Delete(model.UserIdentity{})
  114. }
  115. }
  116. func (userIdentityDb *UserIdentityDb) UserIdentityUpdate(id interface{}, m *model.UserIdentity, forceColums ...string) (int64, error) {
  117. var (
  118. affected int64
  119. err error
  120. )
  121. if forceColums != nil {
  122. affected, err = userIdentityDb.Db.Where("id=?", id).Cols(forceColums...).Update(m)
  123. } else {
  124. affected, err = userIdentityDb.Db.Where("id=?", id).Update(m)
  125. }
  126. if err != nil {
  127. return 0, err
  128. }
  129. return affected, nil
  130. }
  131. func (userIdentityDb *UserIdentityDb) UserIdentityUpdateBySession(session *xorm.Session, id interface{}, m *model.UserIdentity, forceColums ...string) (int64, error) {
  132. var (
  133. affected int64
  134. err error
  135. )
  136. if forceColums != nil {
  137. affected, err = session.Where("id=?", id).Cols(forceColums...).Update(m)
  138. } else {
  139. affected, err = session.Where("id=?", id).Update(m)
  140. }
  141. if err != nil {
  142. return 0, err
  143. }
  144. return affected, nil
  145. }
  146. func (userIdentityDb *UserIdentityDb) CountUserIdentityForEnterprise(enterpriseId, identity int) (total int64, err error) {
  147. var m model.UserIdentity
  148. total, err = userIdentityDb.Db.Where("enterprise_id =? AND identity =?", enterpriseId, identity).Count(&m)
  149. if err != nil {
  150. return
  151. }
  152. return
  153. }
  154. func (userIdentityDb *UserIdentityDb) FindUserIdentityForEnterpriseByIdentity(enterpriseId, identity int) (*[]model.UserIdentity, error) {
  155. var m []model.UserIdentity
  156. err := userIdentityDb.Db.Where("enterprise_id =? AND identity =?", enterpriseId, identity).Find(&m)
  157. if err != nil {
  158. return nil, err
  159. }
  160. return &m, nil
  161. }
  162. func (userIdentityDb *UserIdentityDb) FindUserIdentityForEnterprise(enterpriseId int) (*[]model.UserIdentity, error) {
  163. var m []model.UserIdentity
  164. err := userIdentityDb.Db.Where("enterprise_id =?", enterpriseId).Find(&m)
  165. if err != nil {
  166. return nil, err
  167. }
  168. return &m, nil
  169. }
  170. type UserIdentityWithUser struct {
  171. model.UserIdentity `xorm:"extends"`
  172. model.User `xorm:"extends"`
  173. model.ClassWithUser `xorm:"extends"`
  174. model.Class `xorm:"extends"`
  175. model.Grade `xorm:"extends"`
  176. model.SelfSupportForUserFaceInfo `xorm:"extends"`
  177. model.Enterprise `xorm:"extends"`
  178. }
  179. func (UserIdentityWithUser) TableName() string {
  180. return "user_identity"
  181. }
  182. type UserIdentityWithEnterprise struct {
  183. model.UserIdentity `xorm:"extends"`
  184. model.Enterprise `xorm:"extends"`
  185. }
  186. func (UserIdentityWithEnterprise) TableName() string {
  187. return "user_identity"
  188. }