system.go 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209
  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. err = 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.SearchUserInfoRsp, 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. fields := "a.Id, a.UserName, a.RealName, a.Mobile, a.DepartmentName"
  81. model := s.Dao.DB.Model("base_user a")
  82. if departmentId != "" && departmentId != "0" {
  83. where += " and DepartmentId = " + departmentId
  84. }
  85. if req.UserName != "" {
  86. where += " and (a.UserName LIKE '%" + req.UserName + "%' or a.RealName LIKE '%" + req.UserName + "%')"
  87. }
  88. if req.Mobile != "" {
  89. where += " and a.Mobile LIKE '%" + req.Mobile + "%'"
  90. }
  91. if req.ReqType == 1 { // 获取主用户信息
  92. count, err = model.InnerJoin("master_user e", "a.Id = e.UserId ").Where(where + " and e.Id is not null").Count()
  93. } else if req.ReqType == 2 { // 从用户信息
  94. if req.IsSelf == "1" {
  95. count, err = model.InnerJoin("base_user_relation e", "a.Id = e.UserId").Where(where).Count()
  96. } else {
  97. count, err = model.InnerJoin("base_user_relation e", "a.Id = e.UserId").Where(where + " and e.Pid = " + strconv.Itoa(int(userId))).Count()
  98. }
  99. fields = "a.Id, a.UserName, a.RealName, a.Mobile, a.DepartmentName,e.Pid AS MasterId"
  100. } else if req.ReqType == 3 { // 不是主从用户信息
  101. 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()
  102. }
  103. if err != nil {
  104. return userInfos, err
  105. }
  106. userInfos.Total = count
  107. err = model.Fields(fields).Page(current, size).Scan(&userInfos.Records)
  108. return userInfos, nil
  109. }
  110. // AddMainUserOrSubUser 添加主从用户
  111. func (s Service) AddMainUserOrUser(req *user.AddMainOrSubReq, userInfo request.UserInfo) error {
  112. tx, err := s.Dao.DB.Begin()
  113. if err != nil {
  114. return err
  115. }
  116. for _, v := range req.Ids {
  117. if req.ReqType == 1 { // 新增主用户
  118. _, err = tx.Insert("master_user", g.Map{"UserId": v})
  119. if err != nil {
  120. tx.Rollback()
  121. return err
  122. }
  123. } else if req.ReqType == 2 { // 添加主从用户关系
  124. // 添加主从用户关系表
  125. saveEntity := user.BaseUserRelation{
  126. UserId: v,
  127. Pid: int(userInfo.Id),
  128. PName: userInfo.RealName,
  129. CreatedBy: int(userInfo.Id),
  130. CreatedAt: gtime.Now(),
  131. }
  132. _, err = tx.Insert("base_user_relation", saveEntity)
  133. if err != nil {
  134. tx.Rollback()
  135. return err
  136. }
  137. }
  138. }
  139. return tx.Commit()
  140. }
  141. // DeleteMainUserOrSubUser 删除主从用户
  142. func (s Service) DeleteMainUserOrSubUser(req *user.AddMainOrSubReq, info request.UserInfo) error {
  143. if req.ReqType == 1 { // 删除主用户 先判断是否有从用户
  144. count, err := s.Dao.DB.Model("base_user_relation").Where("Pid = ?", req.Id).Count()
  145. if err != nil {
  146. return err
  147. }
  148. if count > 0 {
  149. return errors.New("该用户有从用户,无法删除!")
  150. }
  151. count, err = s.Dao.DB.Model("settle_account_main").Where("AppointUserId = " + strconv.Itoa(req.Id) + " and SettleStatus = 0").Count()
  152. if err != nil {
  153. return err
  154. }
  155. if count > 0 {
  156. return errors.New("该用户有未结账明细,无法删除!")
  157. }
  158. count, err = s.Dao.DB.Model("settle_account_bill").Where("MainUserId = " + strconv.Itoa(req.Id) + " and Status = 0").Count()
  159. if err != nil {
  160. return err
  161. }
  162. if count > 0 {
  163. return errors.New("该用户有未结账账单,无法删除!")
  164. }
  165. _, err = s.Dao.DB.Model("master_user").Delete("UserId = ?", req.Id)
  166. if err != nil {
  167. return err
  168. }
  169. _, err = s.Dao.DB.Model("base_user_relation").Delete("Pid = ?", req.Id)
  170. return err
  171. } else if req.ReqType == 2 { // 删除从用户 先判断是否有未结账
  172. count, err := s.Dao.DB.Model("settle_account_main").Where("AppointUserId = " + strconv.Itoa(req.Id) + " and SettleStatus = 0").Count()
  173. if err != nil {
  174. return err
  175. }
  176. if count > 0 {
  177. return errors.New("该用户有未结账明细,无法删除!")
  178. }
  179. _, err = s.Dao.DB.Model("base_user_relation").Delete("UserId = ?", req.Id)
  180. if err != nil {
  181. return err
  182. }
  183. _, err = s.Dao.DB.Model("base_user_relation").Delete("UserId = ?", req.Id)
  184. return err
  185. }
  186. return nil
  187. }
  188. // UserBindAccount 用户绑定
  189. func (s Service) UserBindAccount(req *user.UserBindAccountReq) error {
  190. _, err := s.Dao.DB.Model("user_account_bind").Delete("UserId = " + strconv.Itoa(req.UserId))
  191. if err != nil {
  192. return err
  193. }
  194. _, err = s.Dao.DB.Model("user_account_bind").Insert(g.Map{"UserId": req.UserId, "AccountId": req.Id, "CreateOn": gtime.Now()})
  195. if err != nil {
  196. return err
  197. }
  198. return nil
  199. }