system.go 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182
  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. //s.Dao.DB.Model("base_user").
  117. // Update("IsMain = 2", "Id = " + strconv.Itoa(v))
  118. // 添加主从用户关系表
  119. saveEntity := user.BaseUserRelation{
  120. UserId: v,
  121. Pid: int(userInfo.Id),
  122. PName: userInfo.RealName,
  123. CreatedBy: int(userInfo.Id),
  124. CreatedAt: gtime.Now(),
  125. }
  126. s.Dao.DB.Model("base_user_relation").Insert(saveEntity)
  127. }
  128. }
  129. return nil
  130. }
  131. // DeleteMainUserOrSubUser 删除主从用户
  132. func (s Service) DeleteMainUserOrSubUser(req *user.AddMainOrSubReq, info request.UserInfo) error {
  133. if req.ReqType == 1 { // 删除主用户 先判断是否有从用户
  134. count, err := s.Dao.DB.Model("base_user_relation").Where("Pid = ?", req.Id).Count()
  135. if err != nil {
  136. return err
  137. }
  138. if count > 0 {
  139. return errors.New("该用户有从用户,无法删除!")
  140. }
  141. s.Dao.DB.Model("master_user").Delete("UserId = ?", req.Id)
  142. } else if req.ReqType == 2 { // 删除从用户 先判断是否有未结账
  143. count, err := s.Dao.DB.Model("settle_account_main").
  144. Where("AppointUserId = " + strconv.Itoa(req.Id) + " and SettleStatus = 1").Count()
  145. if err != nil {
  146. return err
  147. }
  148. if count > 0 {
  149. return errors.New("该用户有未结账明细,无法删除!")
  150. }
  151. s.Dao.DB.Model("base_user_relation").Delete("UserId = ?", req.Id)
  152. }
  153. //s.Dao.DB.Model("base_user").
  154. // Update("IsMain = 0 and ModifiedOn = '"+ gtime.Now().String() +
  155. // "' and ModifiedUserId = "+ strconv.Itoa(int(info.Id)) +
  156. // " and ModifiedBy = '"+ info.RealName + "'", "Id = "+ strconv.Itoa(req.Id))
  157. return nil
  158. }
  159. // UserBindAccount 用户绑定
  160. func (s Service) UserBindAccount(req *user.UserBindAccountReq) error {
  161. _, err := s.Dao.DB.Model("user_account_bind").Delete("UserId = " + strconv.Itoa(req.UserId))
  162. if err != nil {
  163. return err
  164. }
  165. _, err = s.Dao.DB.Model("user_account_bind").
  166. Insert(g.Map{"UserId": req.UserId, "AccountId": req.Id, "CreateOn": gtime.Now()})
  167. if err != nil {
  168. return err
  169. }
  170. return nil
  171. }