BE_ERPLoginCheck.groovy 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. import com.sweetfish.service.RetResult
  2. import com.yinjie.printerAuthorize.common.api.BusinessExecutor
  3. import com.yinjie.printerAuthorize.common.api.LoginUserService
  4. import com.yinjie.printerAuthorize.common.datas.ERPModule
  5. import com.yinjie.printerAuthorize.common.entity.base.BaseEntity
  6. import com.yinjie.printerAuthorize.common.entity.base.ProcessEntityItem
  7. import com.yinjie.printerAuthorize.common.entity.site.ERPTokenUser
  8. import com.yinjie.printerAuthorize.common.entity.site.LoginResult
  9. import com.yinjie.printerAuthorize.common.entity.system.LoginUser
  10. import org.apache.logging.log4j.LogManager
  11. import org.apache.logging.log4j.Logger
  12. import javax.annotation.Resource
  13. /**
  14. * ERP系统登录用户检查
  15. * 主要用于servlet中的身份验证,检查用户是否禁用了,过期了之类的
  16. */
  17. @SuppressWarnings("unused")
  18. class BE_ERPLoginCheck implements BusinessExecutor<ProcessEntityItem<BaseEntity>, BaseEntity> {
  19. protected final Logger logger = LogManager.getLogger(this.getClass().getSimpleName())
  20. @Resource
  21. LoginUserService userService
  22. //登录策略,当前数据库那一个地方需要重启服务,可改成不需要的,参考TunaDaoService动态sql执行
  23. def loginStrategies = [
  24. "0": [
  25. "name" : "后台管理系统用户检查",
  26. "check": { ERPTokenUser currentUser ->
  27. if (currentUser.account.equalsIgnoreCase("SuperResourcer")) {
  28. return true
  29. } else {
  30. LoginUser info = userService.getRedisLoginUser(currentUser.id, currentUser.supplierCode)
  31. if ((info == null) || (info.getStatus() == 1)) {
  32. return false
  33. }
  34. return true
  35. }
  36. }
  37. ]
  38. ]
  39. @Override
  40. String scriptName() {
  41. return "ERP系统登录用户检查"
  42. }
  43. @Override
  44. ERPModule module() {
  45. return ERPModule.LOGIN
  46. }
  47. @Override
  48. RetResult<BaseEntity> execute(ProcessEntityItem<BaseEntity> source) {
  49. ERPTokenUser currentUser = source.currentUser
  50. if (currentUser.supplierCode <= 0L) {
  51. return RetResult.<LoginResult> errorT().retinfo("用户信息不正确")
  52. }
  53. if (!loginStrategies.containsKey(String.valueOf(currentUser.userFrom))) {
  54. return RetResult.<LoginResult> errorT().retinfo("无效的登录来源")
  55. }
  56. def loginStrategy = loginStrategies.get(String.valueOf(currentUser.userFrom))
  57. def checkResult = loginStrategy.check.call(currentUser)
  58. if (checkResult) {
  59. return RetResult.<BaseEntity> successT()
  60. } else {
  61. return RetResult.<LoginResult> errorT().retinfo("未登录")
  62. }
  63. }
  64. }