package com.cyksj.service.translations.impl; import cn.hutool.core.collection.CollUtil; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.cyksj.mapper.BackInfoTranslationsMapper; import com.cyksj.model.entity.BackInfoTranslations; import com.cyksj.model.entity.GoodsDonSku; import com.cyksj.model.manage.views.GoodsDonViewer; import com.cyksj.model.views.GoodsDonSkuFrontView; import com.cyksj.model.views.GoodsFrontListCategoryView; import com.cyksj.model.views.GoodsFrontListView; import com.cyksj.service.translations.BackInfoTranslationsFrontService; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import java.lang.reflect.Field; import java.util.List; /** * 项目名: yhlxj2 * 文件名: BackInfoTranslationsFrontServiceImpl * 创建者: JavaZou * 创建时间:2024/7/16 15:07 */ @Service @RequiredArgsConstructor public class BackInfoTranslationsFrontServiceImpl implements BackInfoTranslationsFrontService { private final BackInfoTranslationsMapper backInfoTranslationsMapper; @Override public void setGoodsDetailLanguage(GoodsFrontListView views, String lang) { if (views == null) { return; } //平台 setFieldLanguage(views.getClass(), views, BackInfoTranslations.Type.goods.ordinal(), views.getId(), lang); //规格 List skuList = views.getSkuList(); if (CollUtil.isNotEmpty(skuList)) { skuList.forEach(sku -> setFieldLanguage(sku.getClass(), sku, BackInfoTranslations.Type.sku.ordinal(), sku.getId(), lang)); } } @Override public void setCategoryGoodsLanguage(GoodsFrontListCategoryView data, String lang) { if (data == null) { return; } //平台 setFieldLanguage(data.getClass(), data, BackInfoTranslations.Type.goods.ordinal(), data.getId(), lang); } @Override public String setLanguagePayTitle(Long goodsId, Long skuId, String lang) { BackInfoTranslations goodsL = backInfoTranslationsMapper.selectOne(Wrappers.lambdaQuery(BackInfoTranslations.class) .eq(BackInfoTranslations::getType, BackInfoTranslations.Type.goods.ordinal()) .eq(BackInfoTranslations::getFuncId, goodsId) .eq(BackInfoTranslations::getLang, lang) .eq(BackInfoTranslations::getFieldName, "title")); BackInfoTranslations skuL = backInfoTranslationsMapper.selectOne(Wrappers.lambdaQuery(BackInfoTranslations.class) .eq(BackInfoTranslations::getType, BackInfoTranslations.Type.sku.ordinal()) .eq(BackInfoTranslations::getFuncId, skuId) .eq(BackInfoTranslations::getLang, lang) .eq(BackInfoTranslations::getFieldName, "specVal")); if (goodsL != null && skuL != null) { return new StringBuilder().append(goodsL.getDesc()).append(skuL.getDesc()).toString(); } return null; } @Override public void setGoodsBackLanguage(GoodsDonViewer goodsDonViewer, String lang) { setFieldLanguage(goodsDonViewer.getClass(), goodsDonViewer, BackInfoTranslations.Type.goods.ordinal(), goodsDonViewer.getId(), lang); } @Override public void setSkuBackLanguage(List goodsDonSkus, String lang) { goodsDonSkus.forEach(sku -> setFieldLanguage(sku.getClass(), sku, BackInfoTranslations.Type.sku.ordinal(), sku.getId(), lang)); } public void setFieldLanguage(Class tclass, Object obj, Integer type, Long funcId, String lang) { List backInfoTranslations = backInfoTranslationsMapper.selectList(Wrappers.lambdaQuery(BackInfoTranslations.class) .eq(BackInfoTranslations::getType, type) .eq(BackInfoTranslations::getLang, lang) .eq(BackInfoTranslations::getFuncId, funcId)); if (CollUtil.isNotEmpty(backInfoTranslations)) { backInfoTranslations.forEach(tanslate -> { String fieldName = tanslate.getFieldName(); try { Field declaredField = tclass.getDeclaredField(fieldName); declaredField.setAccessible(true); declaredField.set(obj, tanslate.getDesc()); } catch (IllegalAccessException e) { } catch (NoSuchFieldException e) { } }); } } }