BE_MallUser_SetLevel.groovy 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. import com.sdtool.business.dao.MallDao
  2. import com.sdtool.common.api.BusinessExecutor
  3. import com.sdtool.common.api.NoSqlKeysService
  4. import com.sdtool.common.api.mall.MallAdminService
  5. import com.sdtool.common.datas.ERPModule
  6. import com.sdtool.common.datas.RedisKeys
  7. import com.sdtool.common.entity.base.InvokeCallParams
  8. import com.sdtool.common.entity.base.InvokeCallResult
  9. import com.sdtool.common.entity.mall.MallUser
  10. import com.sdtool.common.entity.mall.MallUserLevel
  11. import com.dySweetFishPlugin.redis.RedisService
  12. import com.dySweetFishPlugin.sql.TableIdService
  13. import com.dySweetFishPlugin.sql.dao.OperatorWait
  14. import com.dySweetFishPlugin.sql.dao.TunaService
  15. import com.dySweetFishPlugin.tool.lang.DateUtil
  16. import com.sweetfish.convert.json.JsonConvert
  17. import com.sweetfish.service.RetResult
  18. import groovy.json.JsonSlurper
  19. import org.apache.commons.lang3.StringUtils
  20. import javax.annotation.Resource
  21. import java.time.LocalDateTime
  22. import java.time.ZoneId
  23. /**
  24. * @Author: xl Created on 2024-05-11
  25. * @Content:
  26. */
  27. class BE_MallUser_SetLevel implements BusinessExecutor<InvokeCallParams, InvokeCallResult> {
  28. @Resource
  29. TunaService tunaService
  30. @Resource
  31. JsonConvert jsonConvert
  32. @Resource
  33. TableIdService tableIdService
  34. @Resource
  35. RedisService redisService
  36. @Resource
  37. NoSqlKeysService keysService
  38. @Resource
  39. MallAdminService mallAdminService
  40. private MallDao mallDao
  41. @Override
  42. String scriptName() {
  43. return "商城客户-修改此客户级别"
  44. }
  45. @Override
  46. ERPModule module() {
  47. return ERPModule.MALL_ADMIN
  48. }
  49. @Override
  50. OperatorWait getAWait(InvokeCallParams s) {
  51. return OperatorWait.ASNYC
  52. }
  53. @Override
  54. boolean needLogin(InvokeCallParams source) {
  55. return true
  56. }
  57. @Override
  58. void start(long supplierCode) {
  59. mallDao = tunaService.generate(MallDao.class)
  60. }
  61. @Override
  62. RetResult<InvokeCallParams> checkExecute(InvokeCallParams source) {
  63. JsonSlurper jsonSlurper = new JsonSlurper()
  64. def invokeData = jsonSlurper.parseText(source.params)
  65. String ids = invokeData["ids"]
  66. long idLevel = invokeData["idLevel"] as long
  67. if (StringUtils.isBlank(ids)) {
  68. return RetResult.<InvokeCallParams> errorT().retinfo("没有传入用户id")
  69. }
  70. if (idLevel <= 0) {
  71. return RetResult.<InvokeCallParams> errorT().retinfo("没有传入级别id")
  72. }
  73. return RetResult.<InvokeCallParams> successT().result(source)
  74. }
  75. RetResult<InvokeCallResult> execute(InvokeCallParams source) {
  76. JsonSlurper jsonSlurper = new JsonSlurper()
  77. def invokeData = jsonSlurper.parseText(source.params)
  78. String ids = invokeData["ids"]
  79. long idLevel = invokeData["idLevel"] as long
  80. MallUserLevel userLevel = mallAdminService.getRedisMallUserLevel(idLevel, source.supplierCode)
  81. List<MallUser> updateList = mallAdminService.getRedisMallUserList(ids.split(","), source.supplierCode).findAll { it != null }
  82. updateList.each { mallUser ->
  83. mallUser.idLevel = userLevel.id
  84. //计算过期时间
  85. if ((mallUser.levelExpireDateLong <= 0L) && (userLevel.expireDays > 0)) {
  86. LocalDateTime createTime = DateUtil.dateToLocalDateTime(mallUser.createTime).toLocalDate().atStartOfDay()
  87. LocalDateTime newDateTime = createTime.plusDays(userLevel.expireDays + 1).toLocalDate().atStartOfDay()
  88. mallUser.levelExpireDateLong = newDateTime.atZone(ZoneId.systemDefault()).toInstant().toEpochMilli()
  89. mallUser.levelExpireDate = Date.from(newDateTime.atZone(ZoneId.systemDefault()).toInstant())
  90. }
  91. }
  92. int iData = mallDao.setMallUserIdLevel(updateList, source.dataSourceId, source.supplierCode)
  93. if (iData > 0) {
  94. Map<String, String> redisMap = updateList.collectEntries { [String.valueOf(it.id), jsonConvert.convertTo(it)] }
  95. redisService.hmset(keysService.getRedisKey(RedisKeys.KEY_ERP_MALL_User, source.supplierCode), redisMap)
  96. return RetResult.<InvokeCallResult> successT()
  97. }
  98. return RetResult.<InvokeCallResult> errorT().retinfo("修改用户级别失败")
  99. }
  100. }