sso

org_service.go 6.3KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243
  1. package service
  2. import (
  3. "SSO/models"
  4. "time"
  5. "github.com/jinzhu/gorm"
  6. )
  7. func CreateOrg(org *models.Org, mobile string) error {
  8. now := time.Now()
  9. tx_admin := writeUserDb.Begin()
  10. if err := tx_admin.Create(org).Error; err != nil {
  11. tx_admin.Rollback()
  12. return err
  13. }
  14. role := models.Role{
  15. RoleName: "超级管理员",
  16. RoleIntro: "",
  17. Creator: org.Creator,
  18. OrgId: org.Id,
  19. AppId: 0,
  20. IsSuperAdmin: true,
  21. Status: 1,
  22. CreateTime: now.Unix(),
  23. ModifyTime: now.Unix(),
  24. }
  25. if err := tx_admin.Create(&role).Error; err != nil {
  26. tx_admin.Rollback()
  27. return err
  28. }
  29. if err := createOrgApp(tx_admin, &role, mobile, 1); err != nil {
  30. tx_admin.Rollback()
  31. return err
  32. }
  33. if err := createOrgApp(tx_admin, &role, mobile, 3); err != nil {
  34. tx_admin.Rollback()
  35. return err
  36. }
  37. if err := createOrgApp(tx_admin, &role, mobile, 4); err != nil {
  38. tx_admin.Rollback()
  39. return err
  40. }
  41. if err := createOrgApp(tx_admin, &role, mobile, 5); err != nil {
  42. tx_admin.Rollback()
  43. return err
  44. }
  45. nextMonthDate := now.AddDate(0, 0, 30)
  46. subscibe := models.ServeSubscibe{
  47. OrgId: int64(org.Id),
  48. PeriodStart: now.Unix(),
  49. PeriodEnd: nextMonthDate.Unix(),
  50. Status: 1,
  51. CreatedTime: now.Unix(),
  52. UpdatedTime: now.Unix(),
  53. State: 9,
  54. }
  55. if err := tx_admin.Create(&subscibe).Error; err != nil {
  56. tx_admin.Rollback()
  57. return err
  58. }
  59. tx_patient := writeDb.Begin()
  60. if err := tx_patient.Exec("INSERT INTO sgj_patient_articles_menu (name, status, type, user_org_id, ctime, mtime) VALUES(?, ?, ?, ?, ?, ?);", "科普教育", 1, 1, org.Id, now.Unix(), now.Unix()).Error; err != nil {
  61. tx_patient.Rollback()
  62. tx_admin.Rollback()
  63. return err
  64. }
  65. if err := tx_patient.Exec("INSERT INTO sgj_patient_good_category (user_org_id, category_name, status, created_time, updated_time) VALUES(?, ?, ?, ?, ?);", org.Id, "普通商品", 1, now.Unix(), now.Unix()).Error; err != nil {
  66. tx_patient.Rollback()
  67. tx_admin.Rollback()
  68. return err
  69. }
  70. if err := tx_admin.Exec("INSERT INTO sgj_user_membership_card (user_org_id, card_name, card_level, upgrade_integral, card_right, use_notice, background_type, background, service_phone, status, created_time, updated_time) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?);", org.Id, "普通会员", 0, 0, "", "", 1, "#CACA41", "", 1, now.Unix(), now.Unix()).Error; err != nil {
  71. tx_admin.Rollback()
  72. tx_patient.Rollback()
  73. return err
  74. }
  75. tx_admin.Commit()
  76. tx_patient.Commit()
  77. return nil
  78. }
  79. func GetOrgWithAdminUserID(adminUserID int) (*models.Org, error) {
  80. var org models.Org
  81. err := readUserDb.Where("creator = ? AND status <> 0", adminUserID).First(&org).Error
  82. if err == gorm.ErrRecordNotFound {
  83. err = nil
  84. }
  85. if err != nil {
  86. return nil, err
  87. } else {
  88. return &org, nil
  89. }
  90. }
  91. func GetOrgApps(adminUserID int, orgID int) ([]*models.OrgApp, error) {
  92. var apps []*models.OrgApp
  93. err := readUserDb.Model(&models.OrgApp{}).Where("creator = ? AND org_id = ? AND status = 1", adminUserID, orgID).Find(&apps).Error
  94. if err == gorm.ErrRecordNotFound {
  95. err = nil
  96. }
  97. if err != nil {
  98. return nil, err
  99. } else {
  100. return apps, nil
  101. }
  102. }
  103. func DidOrgDidCreateAppWithType(orgID int, appType int) (bool, error) {
  104. var count int
  105. err := readUserDb.Model(&models.OrgApp{}).Where("org_id = ? AND app_type = ? AND status = 1", orgID, appType).Count(&count).Error
  106. if err != nil {
  107. return false, err
  108. } else {
  109. return count == 1, nil
  110. }
  111. }
  112. func CreateOrgApp(adminUserID int, orgID int, appType int) error {
  113. var user models.AdminUser
  114. err := readUserDb.Where("id = ? AND status = 1", adminUserID).Find(&user).Error
  115. if err != nil {
  116. return err
  117. }
  118. now := time.Now().Unix()
  119. tx := writeUserDb.Begin()
  120. app := models.OrgApp{
  121. Creator: adminUserID,
  122. OrgId: orgID,
  123. AppType: appType,
  124. Status: 1,
  125. CreateTime: now,
  126. ModifyTime: now,
  127. }
  128. if createAppErr := tx.Create(&app).Error; createAppErr != nil {
  129. tx.Rollback()
  130. return createAppErr
  131. }
  132. var role models.Role
  133. getRoleErr := readUserDb.Where("creator = ? AND org_id = ? AND is_super_admin = 1", adminUserID, orgID).First(&role).Error
  134. if getRoleErr != nil {
  135. tx.Rollback()
  136. return getRoleErr
  137. }
  138. app_role := models.App_Role{
  139. AdminUserId: adminUserID,
  140. OrgId: orgID,
  141. AppId: app.Id,
  142. RoleId: role.Id,
  143. Avatar: "",
  144. UserName: user.Mobile,
  145. Intro: "",
  146. UserType: 1,
  147. UserTitle: 1,
  148. Status: 1,
  149. CreateTime: now,
  150. ModifyTime: now,
  151. }
  152. if createApp_RoleErr := tx.Create(&app_role).Error; createApp_RoleErr != nil {
  153. tx.Rollback()
  154. return createApp_RoleErr
  155. }
  156. return tx.Commit().Error
  157. }
  158. // 如果出错,没有 rollback,需自行 rollback
  159. func createOrgApp(tx *gorm.DB, superAdminRole *models.Role, userName string, appType int) error {
  160. now := time.Now().Unix()
  161. app := models.OrgApp{
  162. Creator: superAdminRole.Creator,
  163. OrgId: superAdminRole.OrgId,
  164. AppType: appType,
  165. Status: 1,
  166. CreateTime: now,
  167. ModifyTime: now,
  168. }
  169. if createAppErr := tx.Create(&app).Error; createAppErr != nil {
  170. return createAppErr
  171. }
  172. app_role := models.App_Role{
  173. AdminUserId: superAdminRole.Creator,
  174. OrgId: superAdminRole.OrgId,
  175. AppId: app.Id,
  176. RoleId: superAdminRole.Id,
  177. Avatar: "",
  178. UserName: userName,
  179. Intro: "",
  180. UserType: 1,
  181. UserTitle: 1,
  182. Status: 1,
  183. CreateTime: now,
  184. ModifyTime: now,
  185. }
  186. if createApp_RoleErr := tx.Create(&app_role).Error; createApp_RoleErr != nil {
  187. return createApp_RoleErr
  188. }
  189. return nil
  190. }
  191. func GetIllness() ([]*models.Illness, error) {
  192. var illness []*models.Illness
  193. err := readUserDb.Model(&models.Illness{}).Where("status = 1").Find(&illness).Error
  194. if err != nil {
  195. return nil, err
  196. } else {
  197. return illness, nil
  198. }
  199. }
  200. func GetOrgCategoriesByPid(pid int64) ([]*models.OrgType, error) {
  201. var cats []*models.OrgType
  202. err := readUserDb.Model(&models.OrgType{}).Where("pid = ? AND status = 1", pid).Order("sort_no asc").Find(&cats).Error
  203. if err != nil {
  204. return nil, err
  205. } else {
  206. return cats, nil
  207. }
  208. }
  209. func GetOrgServeSubscibe(orgID int) (*models.ServeSubscibe, error) {
  210. var model models.ServeSubscibe
  211. err := readUserDb.Model(&models.ServeSubscibe{}).Where("org_id = ? AND status = 1", orgID).First(&model).Error
  212. if err != nil {
  213. if err == gorm.ErrRecordNotFound {
  214. return nil, nil
  215. } else {
  216. return nil, err
  217. }
  218. }
  219. return &model, nil
  220. }
  221. func CreateOrgServeSubscibe(subscibe *models.ServeSubscibe) error {
  222. err := writeUserDb.Create(subscibe).Error
  223. return err
  224. }