BE_SiteContent_Update.groovy 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. import com.sdtool.business.dao.SystemDao
  2. import com.sdtool.common.api.BusinessExecutor
  3. import com.sdtool.common.api.ConfigService
  4. import com.sdtool.common.api.NoSqlKeysService
  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.site.SiteContent
  10. import com.dySweetFishPlugin.redis.RedisService
  11. import com.dySweetFishPlugin.sql.dao.OperatorWait
  12. import com.dySweetFishPlugin.sql.dao.TunaService
  13. import com.sweetfish.convert.json.JsonConvert
  14. import com.sweetfish.service.RetResult
  15. import org.apache.commons.lang3.StringUtils
  16. import javax.annotation.Resource
  17. import java.nio.charset.StandardCharsets
  18. import java.nio.file.Files
  19. import java.nio.file.Paths
  20. import java.nio.file.StandardOpenOption
  21. import static com.sweetfish.net.Server.RESNAME_SERVER_ROOT
  22. class BE_SiteContent_Update implements BusinessExecutor<InvokeCallParams, InvokeCallResult> {
  23. @Resource
  24. private JsonConvert jsonConvert
  25. @Resource
  26. private RedisService redisService
  27. @Resource
  28. private NoSqlKeysService keysService
  29. @Resource
  30. private ConfigService configService
  31. @Resource
  32. private TunaService tunaService
  33. private SystemDao systemDao
  34. @Resource(name = RESNAME_SERVER_ROOT)
  35. String webRootStr
  36. @Override
  37. String scriptName() {
  38. return "网站内容修改"
  39. }
  40. @Override
  41. ERPModule module() {
  42. return ERPModule.CONFIG
  43. }
  44. @Override
  45. OperatorWait getAWait(InvokeCallParams s) {
  46. return OperatorWait.ASNYC
  47. }
  48. @Override
  49. boolean needLogin(InvokeCallParams source) {
  50. return true
  51. }
  52. @Override
  53. void start(long supplierCode) {
  54. systemDao = tunaService.generate(SystemDao.class)
  55. }
  56. private <T> T getRedisDocInfo(String redisKey, String field, Class<T> clazz) {
  57. String docJson = redisService.hget(redisKey, field)
  58. if (StringUtils.isNotBlank(docJson)) {
  59. return jsonConvert.convertFrom(clazz, docJson)
  60. } else return null
  61. }
  62. RetResult<InvokeCallResult> execute(InvokeCallParams source) {
  63. SiteContent siteContent = jsonConvert.convertFrom(SiteContent.class, source.params)
  64. SiteContent redisInfo = getRedisDocInfo(keysService.getRedisKey(RedisKeys.KEY_SITE_CONTENT, source.supplierCode), String.valueOf(siteContent.id), SiteContent.class)
  65. if (redisInfo == null) {
  66. return RetResult.<InvokeCallResult> errorT().retinfo("无效的网站内容信息")
  67. }
  68. redisInfo.groupName = siteContent.groupName
  69. redisInfo.caption = siteContent.caption
  70. redisInfo.siteLabel = siteContent.siteLabel
  71. redisInfo.contentUrl = siteContent.contentUrl
  72. redisInfo.sortIndex = siteContent.sortIndex
  73. //内容存文件
  74. String fileName = webRootStr + File.separator +
  75. "siteContent" + File.separator +
  76. source.supplierCode + File.separator +
  77. siteContent.id + ".txt"
  78. String writeContent = ""
  79. if (StringUtils.isNotEmpty(siteContent.content)) {
  80. writeContent = siteContent.content
  81. }
  82. Files.write(Paths.get(fileName),
  83. Collections.singleton(new StringBuilder(writeContent)),
  84. StandardCharsets.UTF_8,
  85. StandardOpenOption.CREATE,
  86. StandardOpenOption.WRITE,
  87. StandardOpenOption.TRUNCATE_EXISTING)
  88. siteContent.content = ""
  89. redisService.hset(keysService.getRedisKey(RedisKeys.KEY_SITE_CONTENT, source.supplierCode), String.valueOf(redisInfo.getId()), redisInfo)
  90. configService.removeCacheSiteContentInfo(redisInfo.id, source.supplierCode)
  91. systemDao.updateSiteContent(redisInfo, source.dataSourceId, source.supplierCode)
  92. return RetResult.<InvokeCallResult> successT().result(
  93. InvokeCallResult.success().data("")
  94. )
  95. }
  96. }