BackInfoTranslationsFrontServiceImpl.java 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. package com.cyksj.service.translations.impl;
  2. import cn.hutool.core.collection.CollUtil;
  3. import com.baomidou.mybatisplus.core.toolkit.Wrappers;
  4. import com.cyksj.mapper.BackInfoTranslationsMapper;
  5. import com.cyksj.model.entity.BackInfoTranslations;
  6. import com.cyksj.model.entity.GoodsDonSku;
  7. import com.cyksj.model.manage.views.GoodsDonViewer;
  8. import com.cyksj.model.views.GoodsDonSkuFrontView;
  9. import com.cyksj.model.views.GoodsFrontListCategoryView;
  10. import com.cyksj.model.views.GoodsFrontListView;
  11. import com.cyksj.service.translations.BackInfoTranslationsFrontService;
  12. import lombok.RequiredArgsConstructor;
  13. import org.springframework.stereotype.Service;
  14. import java.lang.reflect.Field;
  15. import java.util.List;
  16. /**
  17. * 项目名: yhlxj2
  18. * 文件名: BackInfoTranslationsFrontServiceImpl
  19. * 创建者: JavaZou
  20. * 创建时间:2024/7/16 15:07
  21. */
  22. @Service
  23. @RequiredArgsConstructor
  24. public class BackInfoTranslationsFrontServiceImpl implements BackInfoTranslationsFrontService {
  25. private final BackInfoTranslationsMapper backInfoTranslationsMapper;
  26. @Override
  27. public void setGoodsDetailLanguage(GoodsFrontListView views, String lang) {
  28. if (views == null) {
  29. return;
  30. }
  31. //平台
  32. setFieldLanguage(views.getClass(), views, BackInfoTranslations.Type.goods.ordinal(), views.getId(), lang);
  33. //规格
  34. List<GoodsDonSkuFrontView> skuList = views.getSkuList();
  35. if (CollUtil.isNotEmpty(skuList)) {
  36. skuList.forEach(sku -> setFieldLanguage(sku.getClass(), sku, BackInfoTranslations.Type.sku.ordinal(), sku.getId(), lang));
  37. }
  38. }
  39. @Override
  40. public void setCategoryGoodsLanguage(GoodsFrontListCategoryView data, String lang) {
  41. if (data == null) {
  42. return;
  43. }
  44. //平台
  45. setFieldLanguage(data.getClass(), data, BackInfoTranslations.Type.goods.ordinal(), data.getId(), lang);
  46. }
  47. @Override
  48. public String setLanguagePayTitle(Long goodsId, Long skuId, String lang) {
  49. BackInfoTranslations goodsL = backInfoTranslationsMapper.selectOne(Wrappers.lambdaQuery(BackInfoTranslations.class)
  50. .eq(BackInfoTranslations::getType, BackInfoTranslations.Type.goods.ordinal())
  51. .eq(BackInfoTranslations::getFuncId, goodsId)
  52. .eq(BackInfoTranslations::getLang, lang)
  53. .eq(BackInfoTranslations::getFieldName, "title"));
  54. BackInfoTranslations skuL = backInfoTranslationsMapper.selectOne(Wrappers.lambdaQuery(BackInfoTranslations.class)
  55. .eq(BackInfoTranslations::getType, BackInfoTranslations.Type.sku.ordinal())
  56. .eq(BackInfoTranslations::getFuncId, skuId)
  57. .eq(BackInfoTranslations::getLang, lang)
  58. .eq(BackInfoTranslations::getFieldName, "specVal"));
  59. if (goodsL != null && skuL != null) {
  60. return new StringBuilder().append(goodsL.getDesc()).append(skuL.getDesc()).toString();
  61. }
  62. return null;
  63. }
  64. @Override
  65. public void setGoodsBackLanguage(GoodsDonViewer goodsDonViewer, String lang) {
  66. setFieldLanguage(goodsDonViewer.getClass(), goodsDonViewer, BackInfoTranslations.Type.goods.ordinal(), goodsDonViewer.getId(), lang);
  67. }
  68. @Override
  69. public void setSkuBackLanguage(List<GoodsDonSku> goodsDonSkus, String lang) {
  70. goodsDonSkus.forEach(sku -> setFieldLanguage(sku.getClass(), sku, BackInfoTranslations.Type.sku.ordinal(), sku.getId(), lang));
  71. }
  72. public void setFieldLanguage(Class<?> tclass, Object obj, Integer type, Long funcId, String lang) {
  73. List<BackInfoTranslations> backInfoTranslations = backInfoTranslationsMapper.selectList(Wrappers.lambdaQuery(BackInfoTranslations.class)
  74. .eq(BackInfoTranslations::getType, type)
  75. .eq(BackInfoTranslations::getLang, lang)
  76. .eq(BackInfoTranslations::getFuncId, funcId));
  77. if (CollUtil.isNotEmpty(backInfoTranslations)) {
  78. backInfoTranslations.forEach(tanslate -> {
  79. String fieldName = tanslate.getFieldName();
  80. try {
  81. Field declaredField = tclass.getDeclaredField(fieldName);
  82. declaredField.setAccessible(true);
  83. declaredField.set(obj, tanslate.getDesc());
  84. } catch (IllegalAccessException e) {
  85. } catch (NoSuchFieldException e) {
  86. }
  87. });
  88. }
  89. }
  90. }