sso

org_service.go 6.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239
  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, 5); err != nil {
  38. tx_admin.Rollback()
  39. return err
  40. }
  41. nextMonthDate := now.AddDate(0, 0, 30)
  42. subscibe := models.ServeSubscibe{
  43. OrgId: int64(org.Id),
  44. PeriodStart: now.Unix(),
  45. PeriodEnd: nextMonthDate.Unix(),
  46. Status: 1,
  47. CreatedTime: now.Unix(),
  48. UpdatedTime: now.Unix(),
  49. State: 9,
  50. }
  51. if err := tx_admin.Create(&subscibe).Error; err != nil {
  52. tx_admin.Rollback()
  53. return err
  54. }
  55. tx_patient := writeDb.Begin()
  56. 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 {
  57. tx_patient.Rollback()
  58. tx_admin.Rollback()
  59. return err
  60. }
  61. 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 {
  62. tx_patient.Rollback()
  63. tx_admin.Rollback()
  64. return err
  65. }
  66. 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 {
  67. tx_admin.Rollback()
  68. tx_patient.Rollback()
  69. return err
  70. }
  71. tx_admin.Commit()
  72. tx_patient.Commit()
  73. return nil
  74. }
  75. func GetOrgWithAdminUserID(adminUserID int) (*models.Org, error) {
  76. var org models.Org
  77. err := readUserDb.Where("creator = ? AND status <> 0", adminUserID).First(&org).Error
  78. if err == gorm.ErrRecordNotFound {
  79. err = nil
  80. }
  81. if err != nil {
  82. return nil, err
  83. } else {
  84. return &org, nil
  85. }
  86. }
  87. func GetOrgApps(adminUserID int, orgID int) ([]*models.OrgApp, error) {
  88. var apps []*models.OrgApp
  89. err := readUserDb.Model(&models.OrgApp{}).Where("creator = ? AND org_id = ? AND status = 1", adminUserID, orgID).Find(&apps).Error
  90. if err == gorm.ErrRecordNotFound {
  91. err = nil
  92. }
  93. if err != nil {
  94. return nil, err
  95. } else {
  96. return apps, nil
  97. }
  98. }
  99. func DidOrgDidCreateAppWithType(orgID int, appType int) (bool, error) {
  100. var count int
  101. err := readUserDb.Model(&models.OrgApp{}).Where("org_id = ? AND app_type = ? AND status = 1", orgID, appType).Count(&count).Error
  102. if err != nil {
  103. return false, err
  104. } else {
  105. return count == 1, nil
  106. }
  107. }
  108. func CreateOrgApp(adminUserID int, orgID int, appType int) error {
  109. var user models.AdminUser
  110. err := readUserDb.Where("id = ? AND status = 1", adminUserID).Find(&user).Error
  111. if err != nil {
  112. return err
  113. }
  114. now := time.Now().Unix()
  115. tx := writeUserDb.Begin()
  116. app := models.OrgApp{
  117. Creator: adminUserID,
  118. OrgId: orgID,
  119. AppType: appType,
  120. Status: 1,
  121. CreateTime: now,
  122. ModifyTime: now,
  123. }
  124. if createAppErr := tx.Create(&app).Error; createAppErr != nil {
  125. tx.Rollback()
  126. return createAppErr
  127. }
  128. var role models.Role
  129. getRoleErr := readUserDb.Where("creator = ? AND org_id = ? AND is_super_admin = 1", adminUserID, orgID).First(&role).Error
  130. if getRoleErr != nil {
  131. tx.Rollback()
  132. return getRoleErr
  133. }
  134. app_role := models.App_Role{
  135. AdminUserId: adminUserID,
  136. OrgId: orgID,
  137. AppId: app.Id,
  138. RoleId: role.Id,
  139. Avatar: "",
  140. UserName: user.Mobile,
  141. Intro: "",
  142. UserType: 1,
  143. UserTitle: 1,
  144. Status: 1,
  145. CreateTime: now,
  146. ModifyTime: now,
  147. }
  148. if createApp_RoleErr := tx.Create(&app_role).Error; createApp_RoleErr != nil {
  149. tx.Rollback()
  150. return createApp_RoleErr
  151. }
  152. return tx.Commit().Error
  153. }
  154. // 如果出错,没有 rollback,需自行 rollback
  155. func createOrgApp(tx *gorm.DB, superAdminRole *models.Role, userName string, appType int) error {
  156. now := time.Now().Unix()
  157. app := models.OrgApp{
  158. Creator: superAdminRole.Creator,
  159. OrgId: superAdminRole.OrgId,
  160. AppType: appType,
  161. Status: 1,
  162. CreateTime: now,
  163. ModifyTime: now,
  164. }
  165. if createAppErr := tx.Create(&app).Error; createAppErr != nil {
  166. return createAppErr
  167. }
  168. app_role := models.App_Role{
  169. AdminUserId: superAdminRole.Creator,
  170. OrgId: superAdminRole.OrgId,
  171. AppId: app.Id,
  172. RoleId: superAdminRole.Id,
  173. Avatar: "",
  174. UserName: userName,
  175. Intro: "",
  176. UserType: 1,
  177. UserTitle: 1,
  178. Status: 1,
  179. CreateTime: now,
  180. ModifyTime: now,
  181. }
  182. if createApp_RoleErr := tx.Create(&app_role).Error; createApp_RoleErr != nil {
  183. return createApp_RoleErr
  184. }
  185. return nil
  186. }
  187. func GetIllness() ([]*models.Illness, error) {
  188. var illness []*models.Illness
  189. err := readUserDb.Model(&models.Illness{}).Where("status = 1").Find(&illness).Error
  190. if err != nil {
  191. return nil, err
  192. } else {
  193. return illness, nil
  194. }
  195. }
  196. func GetOrgCategoriesByPid(pid int64) ([]*models.OrgType, error) {
  197. var cats []*models.OrgType
  198. err := readUserDb.Model(&models.OrgType{}).Where("pid = ? AND status = 1", pid).Order("sort_no asc").Find(&cats).Error
  199. if err != nil {
  200. return nil, err
  201. } else {
  202. return cats, nil
  203. }
  204. }
  205. func GetOrgServeSubscibe(orgID int) (*models.ServeSubscibe, error) {
  206. var model models.ServeSubscibe
  207. err := readUserDb.Model(&models.ServeSubscibe{}).Where("org_id = ? AND status = 1", orgID).First(&model).Error
  208. if err != nil {
  209. if err == gorm.ErrRecordNotFound {
  210. return nil, nil
  211. } else {
  212. return nil, err
  213. }
  214. }
  215. return &model, nil
  216. }
  217. func CreateOrgServeSubscibe(subscibe *models.ServeSubscibe) error {
  218. err := writeUserDb.Create(subscibe).Error
  219. return err
  220. }