oc_service.go 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284
  1. package service
  2. import (
  3. "time"
  4. "xps/cmd/constant"
  5. "xps/cmd/datasource"
  6. "xps/pkg/base"
  7. "xps/pkg/system/datamodel"
  8. "xps/pkg/system/repository"
  9. "xps/pkg/system/viewmodel"
  10. )
  11. type OcService interface {
  12. GetList(m map[string]interface{}) ([]viewmodel.OcInfo, error)
  13. GetPage(m map[string]interface{}) (*base.PageResult, error)
  14. GetById(ocId int64) (*viewmodel.OcInfo, error)
  15. Create(d *datamodel.Oc) error
  16. Update(d *datamodel.Oc) error
  17. Delete(m map[string]interface{}) error
  18. GetAdmin(ocId int64) (*viewmodel.OcAdminInfo, error)
  19. CreateAdmin(d *viewmodel.OcAdminInfo) error
  20. UpdateAdmin(d *viewmodel.OcAdminInfo) error
  21. ResetAdminPwd(ocId, accountId int64) error
  22. UpdateStatus(ocId, status int64) error
  23. UpdateLicStatus(ocId, status int64) error
  24. }
  25. type ocService struct {
  26. ocRepo *repository.OcRepo
  27. groupCatRepo *repository.GroupCatRepo
  28. groupRepo *repository.GroupRepo
  29. accountRepo *repository.AccountRepo
  30. positionRepo *repository.PositionRepo
  31. groupMemberRepo *repository.GroupMemberRepo
  32. groupMemberPositionRepo *repository.GroupMemberPositionRepo
  33. roleMemberRepo *repository.RoleMemberRepo
  34. }
  35. func NewOcService() OcService {
  36. return &ocService{
  37. ocRepo: repository.NewOcRepo(datasource.InstanceMaster()),
  38. }
  39. }
  40. func (s *ocService) GetList(m map[string]interface{}) ([]viewmodel.OcInfo, error) {
  41. return s.ocRepo.GetList(m)
  42. }
  43. func (s *ocService) GetPage(m map[string]interface{}) (*base.PageResult, error) {
  44. return s.ocRepo.GetPage(m)
  45. }
  46. func (s *ocService) GetById(ocId int64) (*viewmodel.OcInfo, error) {
  47. return s.ocRepo.GetById(ocId)
  48. }
  49. func (s *ocService) Create(o *datamodel.Oc) error {
  50. ocId := NewID()
  51. ocName := o.OcName
  52. userId := o.CreatedBy
  53. // 1.Create OC
  54. o.OcId = ocId
  55. o.RootId = ocId
  56. o.ParentId = 0
  57. o.GroupId = ocId
  58. o.NodeLeft = 1
  59. o.NodeRight = 2
  60. o.NodeLevel = 1
  61. o.IsLeaf = 1
  62. o.Status = 1
  63. o.CreatedAt = time.Now()
  64. err1 := s.ocRepo.Create(o)
  65. if err1 != nil {
  66. return err1
  67. }
  68. // 2.Group Cat
  69. groupCat := &datamodel.GroupCat{
  70. OcId: ocId,
  71. GroupCatId: ocId,
  72. GroupCatTitle: "公司",
  73. IsFixed: 1,
  74. GroupCatDesc: "公司",
  75. CreatedAt: time.Now(),
  76. CreatedBy: userId,
  77. }
  78. err2 := s.groupCatRepo.Create(groupCat)
  79. if err2 != nil {
  80. return err1
  81. }
  82. // 3.Group
  83. group := &datamodel.Group{
  84. OcId: ocId,
  85. GroupId: ocId,
  86. GroupName: ocName,
  87. GroupCatId: ocId,
  88. NodeLeft: 1,
  89. NodeRight: 2,
  90. NodeLevel: 1,
  91. RootId: ocId,
  92. ParentId: 0,
  93. IsFixed: 1,
  94. IsLeaf: 1,
  95. GroupCode: "",
  96. GroupPath: "",
  97. CreatedBy: userId,
  98. CreatedAt: time.Now(),
  99. }
  100. err3 := s.groupRepo.Create(group)
  101. if err3 != nil {
  102. return err3
  103. }
  104. return nil
  105. }
  106. func (s *ocService) Update(o *datamodel.Oc) error {
  107. ocId := o.OcId
  108. ocName := o.OcName
  109. userId := o.UpdatedBy
  110. // 1. Update OC
  111. o.UpdatedAt = time.Now()
  112. err1 := s.ocRepo.Update(o)
  113. if err1 != nil {
  114. return err1
  115. }
  116. // 2.Group
  117. group := &datamodel.Group{
  118. OcId: ocId,
  119. GroupId: ocId,
  120. GroupName: ocName,
  121. UpdatedAt: time.Now(),
  122. UpdatedBy: userId,
  123. }
  124. err2 := s.groupRepo.Update(group)
  125. if err2 != nil {
  126. return err2
  127. }
  128. return nil
  129. }
  130. func (s *ocService) Delete(m map[string]interface{}) error {
  131. return s.ocRepo.Delete(m)
  132. }
  133. func (s *ocService) GetAdmin(ocId int64) (*viewmodel.OcAdminInfo, error) {
  134. return s.ocRepo.GetAdmin(ocId)
  135. }
  136. func (s *ocService) CreateAdmin(a *viewmodel.OcAdminInfo) error {
  137. ocId := a.OcId
  138. adminId := ocId
  139. userId := a.CreatedBy
  140. //1.Account
  141. account := &datamodel.Account{
  142. OcId: ocId,
  143. AccountId: adminId,
  144. AccountName: a.AdminName,
  145. Password: "21218cca77804d2ba1922c33e0151105",
  146. AccountPhone: a.AdminPhone,
  147. AccountType: 0,
  148. AccountAvatar: "",
  149. IsFixed: 1,
  150. Status: 1,
  151. CreatedBy: userId,
  152. CreatedAt: time.Now(),
  153. }
  154. err1 := s.accountRepo.Create(account)
  155. if err1 != nil {
  156. return err1
  157. }
  158. //2.OC Admin
  159. oc := &datamodel.Oc{
  160. OcId: ocId,
  161. AdminId: adminId,
  162. }
  163. err2 := s.ocRepo.Update(oc)
  164. if err2 != nil {
  165. return err2
  166. }
  167. //3.Role Member
  168. roleMember := &datamodel.RoleMember{
  169. OcId: ocId,
  170. RmId: ocId,
  171. RoleId: constant.ENT_ROLE_ADMIN,
  172. AccountId: adminId,
  173. }
  174. err3 := s.roleMemberRepo.Create(roleMember)
  175. if err3 != nil {
  176. return err3
  177. }
  178. //4.Position
  179. position := &datamodel.Position{
  180. OcId: ocId,
  181. PositionId: ocId,
  182. PositionName: "管理员",
  183. PositionDesc: "管理员",
  184. IsFixed: 1,
  185. CreatedAt: time.Now(),
  186. CreatedBy: userId,
  187. }
  188. err4 := s.positionRepo.Create(position)
  189. if err4 != nil {
  190. return err4
  191. }
  192. //5.Group Member
  193. groupMember := &datamodel.GroupMember{
  194. OcId: ocId,
  195. GmId: ocId,
  196. GroupId: ocId,
  197. AccountId: adminId,
  198. IsFixed: 1,
  199. }
  200. err5 := s.groupMemberRepo.Create(groupMember)
  201. if err5 != nil {
  202. return err5
  203. }
  204. //6.Group Member Position
  205. groupMemberPosition := &datamodel.GroupMemberPosition{
  206. OcId: ocId,
  207. GmpId: ocId,
  208. GroupId: ocId,
  209. AccountId: adminId,
  210. PositionId: ocId,
  211. IsFixed: 1,
  212. }
  213. err6 := s.groupMemberPositionRepo.Create(groupMemberPosition)
  214. return err6
  215. }
  216. func (s *ocService) UpdateAdmin(a *viewmodel.OcAdminInfo) error {
  217. ocId := a.OcId
  218. adminId := a.AdminId
  219. userId := a.UpdatedBy
  220. //1. Account
  221. account := &datamodel.Account{
  222. OcId: ocId,
  223. AccountId: adminId,
  224. AccountName: a.AdminName,
  225. AccountPhone: a.AdminPhone,
  226. UpdatedBy: userId,
  227. UpdatedAt: time.Now(),
  228. }
  229. return s.accountRepo.Update(ocId, adminId, account)
  230. }
  231. func (s *ocService) ResetAdminPwd(ocId, accountId int64) error {
  232. //1. Account
  233. account := &datamodel.Account{
  234. OcId: ocId,
  235. AccountId: accountId,
  236. Password: "21218cca77804d2ba1922c33e0151105",
  237. }
  238. return s.accountRepo.Update(ocId, accountId, account)
  239. }
  240. func (s *ocService) UpdateStatus(ocId, status int64) error {
  241. oc := &datamodel.Oc{
  242. OcId: ocId,
  243. Status: status,
  244. }
  245. return s.ocRepo.Update(oc)
  246. }
  247. func (s *ocService) UpdateLicStatus(ocId, status int64) error {
  248. oc := &datamodel.Oc{
  249. OcId: ocId,
  250. IfLic: status,
  251. }
  252. return s.ocRepo.Update(oc)
  253. }