system.go 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175
  1. package system
  2. import (
  3. "dashoo.cn/micro_libary/request"
  4. "errors"
  5. "github.com/gogf/gf/frame/g"
  6. "github.com/gogf/gf/os/gtime"
  7. "lims_adapter/dao/system"
  8. model "lims_adapter/model/system"
  9. "lims_adapter/model/user"
  10. "strconv"
  11. )
  12. type Service struct {
  13. Dao *system.BaseItemdetailsDao
  14. Tenant string
  15. }
  16. // NewSrv 服务初始化
  17. func NewSrv(tenant string) Service {
  18. return Service{Dao: system.NewBaseItemdetailsDao(tenant), Tenant: tenant}
  19. }
  20. // DictInfo 获取字典数据
  21. func (s Service) DictInfo(req *model.DictReq) (dictInfo []model.BaseItemdetails, err error) {
  22. where := "DictCode = '" + req.DictCode + "' and Enabled = 1"
  23. if req.ItemName != "" {
  24. where += " and ItemName = '" + req.ItemName + "'"
  25. }
  26. if req.ItemValue != "" {
  27. where += " and ItemValue = '" + req.ItemValue + "'"
  28. }
  29. if req.SortCode != "" {
  30. where += " and SortCode = '" + req.SortCode + "'"
  31. }
  32. err = s.Dao.M.Where(where).Scan(&dictInfo)
  33. if err != nil {
  34. return dictInfo, err
  35. }
  36. return dictInfo, nil
  37. }
  38. // UserList 设备预约权管理:获取用户信息
  39. func (s Service) UserList(req *user.UserInfoReq) (userInfos user.UserInfoRsp, err error) {
  40. where := "Enabled = 1"
  41. departmentId := strconv.Itoa(req.DepartmentId)
  42. instrumentId := strconv.Itoa(req.InstrumentId)
  43. current := req.PageNun
  44. size := req.PageSize
  45. count := 0
  46. model := s.Dao.DB.Model("base_user a")
  47. if departmentId != "" && departmentId != "0" {
  48. where += " and DepartmentId = " + departmentId
  49. }
  50. if req.ReqType == 1 { // 预约资格
  51. count, err = model.Where(where).Count()
  52. } else if req.ReqType == 2 { // 优先预约权
  53. where += " and Id not in(select UserId from base_equipment_qualification where EquipmentId = " +
  54. instrumentId + " and Qualification in (0,3))"
  55. count, err = model.Where(where).Count()
  56. }
  57. if err != nil {
  58. return userInfos, err
  59. }
  60. userInfos.Total = count
  61. model.Page(current, size).Scan(&userInfos.Records)
  62. return userInfos, nil
  63. }
  64. // GetProgramGroup 获取课题组信息
  65. func (s Service) GetProgramGroup(id int) ([]model.BaseProgramGroup, error) {
  66. programGroup := []model.BaseProgramGroup{}
  67. err := s.Dao.DB.Model("base_program_group").Where("OrganizeId = ?", id).Scan(&programGroup)
  68. if err != nil {
  69. return nil, err
  70. }
  71. return programGroup, nil
  72. }
  73. // GetUserList 主从用户管理:获取用户信息
  74. func (s Service) GetUserList(req *user.UserInfoReq, userId int32) (userInfos user.UserInfoRsp, err error) {
  75. where := "a.Enabled = 1"
  76. departmentId := strconv.Itoa(req.DepartmentId)
  77. current := req.PageNun
  78. size := req.PageSize
  79. count := 0
  80. model := s.Dao.DB.Model("base_user a").LeftJoin("base_role b", "a.RoleId = b.Id").
  81. LeftJoin("user_account_bind c", "a.Id = c.UserId").
  82. LeftJoin("base_account d", "c.AccountId = d.Id")
  83. if departmentId != "" && departmentId != "0" {
  84. where += " and DepartmentId = " + departmentId
  85. }
  86. if req.UserName != "" {
  87. where += " and a.UserName = '" + req.UserName + "' or a.RealName = '" + req.UserName + "'"
  88. }
  89. if req.Mobile != "" {
  90. where += " and a.Mobile = '" + req.Mobile + "'"
  91. }
  92. if req.ReqType == 1 { // 获取主用户信息
  93. count, err = model.LeftJoin("master_user e", "a.Id = e.UserId ").
  94. Where(where + " and e.Id is not null").Count()
  95. } else if req.ReqType == 2 { // 从用户信息
  96. count, err = model.LeftJoin("base_user_relation e", "a.Id = e.UserId").
  97. Where(where + " and e.Pid = " + strconv.Itoa(int(userId))).Count()
  98. } else if req.ReqType == 3 { // 不是主从用户信息
  99. count, err = model.Where(where + " and a.Id not in (select UserId from master_user) and a.Id not in (select UserId from base_user_relation)").Count()
  100. }
  101. if err != nil {
  102. return userInfos, err
  103. }
  104. userInfos.Total = count
  105. model.Fields("a.Id, a.UserName, a.RealName, a.Mobile, a.DepartmentName, b.RealName as RoleInfo, d.AccountName, d.Id AccountId").
  106. Page(current, size).Scan(&userInfos.Records)
  107. return userInfos, nil
  108. }
  109. // AddMainUserOrSubUser 添加主从用户
  110. func (s Service) AddMainUserOrUser(req *user.AddMainOrSubReq, userInfo request.UserInfo) error {
  111. for _, v := range req.Ids {
  112. if req.ReqType == 1 { // 新增主用户
  113. s.Dao.DB.Model("master_user").
  114. Insert(g.Map{"UserId": v})
  115. } else if req.ReqType == 2 { // 添加主从用户关系
  116. // 添加主从用户关系表
  117. saveEntity := user.BaseUserRelation{
  118. UserId: v,
  119. Pid: int(userInfo.Id),
  120. PName: userInfo.RealName,
  121. CreatedBy: int(userInfo.Id),
  122. CreatedAt: gtime.Now(),
  123. }
  124. s.Dao.DB.Model("base_user_relation").Insert(saveEntity)
  125. }
  126. }
  127. return nil
  128. }
  129. // DeleteMainUserOrSubUser 删除主从用户
  130. func (s Service) DeleteMainUserOrSubUser(req *user.AddMainOrSubReq, info request.UserInfo) error {
  131. if req.ReqType == 1 { // 删除主用户 先判断是否有从用户
  132. count, err := s.Dao.DB.Model("base_user_relation").Where("Pid = ?", req.Id).Count()
  133. if err != nil {
  134. return err
  135. }
  136. if count > 0 {
  137. return errors.New("该用户有从用户,无法删除!")
  138. }
  139. s.Dao.DB.Model("master_user").Delete("UserId = ?", req.Id)
  140. } else if req.ReqType == 2 { // 删除从用户 先判断是否有未结账
  141. count, err := s.Dao.DB.Model("settle_account_main").
  142. Where("AppointUserId = " + strconv.Itoa(req.Id) + " and SettleStatus = 1").Count()
  143. if err != nil {
  144. return err
  145. }
  146. if count > 0 {
  147. return errors.New("该用户有未结账明细,无法删除!")
  148. }
  149. s.Dao.DB.Model("base_user_relation").Delete("UserId = ?", req.Id)
  150. }
  151. return nil
  152. }
  153. // UserBindAccount 用户绑定
  154. func (s Service) UserBindAccount(req *user.UserBindAccountReq) error {
  155. _, err := s.Dao.DB.Model("user_account_bind").Delete("UserId = " + strconv.Itoa(req.UserId))
  156. if err != nil {
  157. return err
  158. }
  159. _, err = s.Dao.DB.Model("user_account_bind").
  160. Insert(g.Map{"UserId": req.UserId, "AccountId": req.Id, "CreateOn": gtime.Now()})
  161. if err != nil {
  162. return err
  163. }
  164. return nil
  165. }