瀏覽代碼

返回信息多语言

zoujiajian 2 年之前
父節點
當前提交
f99739b347

+ 17 - 0
netflix-dao/src/main/java/com/cyksj/mapper/BackInfoTranslationsMapper.java

@@ -0,0 +1,17 @@
+package com.cyksj.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.cyksj.model.entity.BackInfoTranslations;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * 项目名: yhlxj2
+ * 文件名: BackInfoTranslationsMapper
+ * 创建者: JavaZou
+ * 创建时间:2024/7/16 14:18
+ */
+public interface BackInfoTranslationsMapper extends BaseMapper<BackInfoTranslations> {
+	void batchInsertOrUpdate(@Param("funcId") Long funcId, @Param("type") Integer type, @Param("list") List<BackInfoTranslations> fields, @Param("lang") String lang);
+}

+ 26 - 0
netflix-dao/src/main/java/com/cyksj/model/dto/TranslationsDto.java

@@ -0,0 +1,26 @@
+package com.cyksj.model.dto;
+
+import com.cyksj.model.entity.BackInfoTranslations;
+import com.cyksj.model.entity.UserPageLanguage;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+
+/**
+ * 项目名: yhlxj2
+ * 文件名: TranslationsDto
+ * 创建者: JavaZou
+ * 创建时间:2024/7/16 14:38
+ */
+@Getter
+@Setter
+public class TranslationsDto {
+	private Long funcId;
+
+	private String lang = UserPageLanguage.Language.en_US.name();
+
+	private BackInfoTranslations.Type type;
+
+	private List<BackInfoTranslations> fields;
+}

+ 49 - 0
netflix-dao/src/main/java/com/cyksj/model/entity/BackInfoTranslations.java

@@ -0,0 +1,49 @@
+package com.cyksj.model.entity;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 项目名: yhlxj2
+ * 文件名: BackInfoTranslations
+ * 创建者: JavaZou
+ * 创建时间:2024/7/16 14:13
+ */
+@Getter
+@Setter
+public class BackInfoTranslations extends BaseEntity{
+	/**
+	 * 字段名
+	 */
+	private String fieldName;
+
+	/**
+	 * 类型主键id 如平台id
+	 */
+	private Long funcId;
+
+	/**
+	 * 类型
+	 */
+	private Integer type;
+
+	private String lang;
+
+	/**
+	 * 英文表述
+	 */
+	private String desc;
+
+
+	@Getter
+	public enum Type {
+		goods("商品"),
+		sku("规格"),
+		spec("一级规格");
+		String remark;
+
+		Type(String remark) {
+			this.remark = remark;
+		}
+	}
+}

+ 3 - 0
netflix-dao/src/main/java/com/cyksj/model/entity/OrderDetailView.java

@@ -62,6 +62,9 @@ public class OrderDetailView {
 	@DbField("o.num")
 	private Integer num;
 
+	@DbField("o.ex_code")
+	private String exCode;
+
 	@DbIgnore
 	private OrderDonTransport transport;
 }

+ 3 - 0
netflix-dao/src/main/java/com/cyksj/model/manage/views/OrderDonSearchView.java

@@ -101,6 +101,9 @@ public class OrderDonSearchView {
 	@DbField("o.pay_time")
 	private Date payTime;
 
+	@DbField("o.ex_code")
+	private String exCode;
+
 	/**
 	 * 收货人
 	 */

+ 16 - 0
netflix-dao/src/main/resources/mapper/BackInfoTranslationsMapper.xml

@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+
+<mapper namespace="com.cyksj.mapper.BackInfoTranslationsMapper">
+
+
+    <insert id="batchInsertOrUpdate">
+        insert into `back_info_translations`(`type`,`func_id`,`field_name`,`desc`,`lang`,`created_time`,`update_time`)
+        values
+        <foreach collection="list" item="item" separator=",">
+            (#{type},#{funcId},#{item.fieldName},#{item.desc},#{lang},now(),now());
+        </foreach>
+        ON DUPLICATE KEY UPDATE desc_us = VALUES(desc_us),
+        update_time = VALUES(update_time)
+    </insert>
+</mapper>

+ 26 - 0
netflix-service/src/main/java/com/cyksj/service/translations/BackInfoTranslationsFrontService.java

@@ -0,0 +1,26 @@
+package com.cyksj.service.translations;
+
+import com.cyksj.model.entity.GoodsDonSku;
+import com.cyksj.model.manage.views.GoodsDonViewer;
+import com.cyksj.model.views.GoodsFrontListCategoryView;
+import com.cyksj.model.views.GoodsFrontListView;
+
+import java.util.List;
+
+/**
+ * 项目名: yhlxj2
+ * 文件名: BackInfoTranslationsFrontService
+ * 创建者: JavaZou
+ * 创建时间:2024/7/16 15:07
+ */
+public interface BackInfoTranslationsFrontService {
+	void setGoodsDetailLanguage(GoodsFrontListView views, String lang);
+
+	void setCategoryGoodsLanguage(GoodsFrontListCategoryView data, String lang);
+
+	String setLanguagePayTitle(Long goodsId, Long skuId, String language);
+
+	void setGoodsBackLanguage(GoodsDonViewer goodsDonViewer, String lang);
+
+	void setSkuBackLanguage(List<GoodsDonSku> goodsDonSkus, String lang);
+}

+ 15 - 0
netflix-service/src/main/java/com/cyksj/service/translations/BackInfoTranslationsService.java

@@ -0,0 +1,15 @@
+package com.cyksj.service.translations;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.cyksj.model.dto.TranslationsDto;
+import com.cyksj.model.entity.BackInfoTranslations;
+
+/**
+ * 项目名: yhlxj2
+ * 文件名: BackInfoTranslationsService
+ * 创建者: JavaZou
+ * 创建时间:2024/7/16 14:19
+ */
+public interface BackInfoTranslationsService extends IService<BackInfoTranslations> {
+	void saveOrUpdateTranslations(TranslationsDto dto);
+}

+ 100 - 0
netflix-service/src/main/java/com/cyksj/service/translations/impl/BackInfoTranslationsFrontServiceImpl.java

@@ -0,0 +1,100 @@
+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<GoodsDonSkuFrontView> 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<GoodsDonSku> 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> 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) {
+				}
+			});
+		}
+	}
+}

+ 33 - 0
netflix-service/src/main/java/com/cyksj/service/translations/impl/BackInfoTranslationsServiceImpl.java

@@ -0,0 +1,33 @@
+package com.cyksj.service.translations.impl;
+
+import cn.hutool.core.collection.CollUtil;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.cyksj.mapper.BackInfoTranslationsMapper;
+import com.cyksj.model.dto.TranslationsDto;
+import com.cyksj.model.entity.BackInfoTranslations;
+import com.cyksj.service.translations.BackInfoTranslationsService;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * 项目名: yhlxj2
+ * 文件名: BackInfoTranslationsServiceImpl
+ * 创建者: JavaZou
+ * 创建时间:2024/7/16 14:20
+ */
+@Service
+@RequiredArgsConstructor
+public class BackInfoTranslationsServiceImpl extends ServiceImpl<BackInfoTranslationsMapper, BackInfoTranslations> implements BackInfoTranslationsService {
+	private final BackInfoTranslationsMapper backInfoTranslationsMapper;
+
+	@Override
+	public void saveOrUpdateTranslations(TranslationsDto dto) {
+		List<BackInfoTranslations> fields = dto.getFields();
+		if (CollUtil.isNotEmpty(fields)) {
+			return;
+		}
+		backInfoTranslationsMapper.batchInsertOrUpdate(dto.getFuncId(), dto.getType().ordinal(), dto.getFields(), dto.getLang());
+	}
+}

+ 25 - 101
netflix-web/src/main/java/com/cyksj/web/controller/goods/GoodsDonController.java

@@ -19,8 +19,10 @@ import com.cyksj.mapper.OrderDonMapper;
 import com.cyksj.model.entity.GoodsDon;
 import com.cyksj.model.entity.GoodsDonSku;
 import com.cyksj.model.entity.OrderDon;
+import com.cyksj.model.entity.UserPageLanguage;
 import com.cyksj.model.views.*;
 import com.cyksj.redis.RedisService;
+import com.cyksj.service.translations.BackInfoTranslationsFrontService;
 import com.cyksj.service.user.UserBindRelationService;
 import com.cyksj.service.user.UserService;
 import com.cyksj.web.util.StpUserUtil;
@@ -67,6 +69,8 @@ public class GoodsDonController {
 
     private final UserBindRelationService userBindRelationService;
 
+    private final BackInfoTranslationsFrontService backInfoTranslationsFrontService;
+
     /**
      * 获取平台商品分类
      */
@@ -88,15 +92,6 @@ public class GoodsDonController {
         return GatewayResponse.SUCCESS.newBuilder().toResult(list);
     }
 
-    /**
-     * 商品搜索
-     */
-    @GetMapping("/search")
-    public Result<SearchResult<GoodsDonSearchView>> search() {
-        SearchResult<GoodsDonSearchView> search = beanSearcher.search(GoodsDonSearchView.class, MapUtils.flatBuilder(request.getParameterMap()).build());
-        return GatewayResponse.SUCCESS.newBuilder().toResult(search);
-    }
-
     /**
      * 获取商品列表
      */
@@ -128,8 +123,14 @@ public class GoodsDonController {
      */
     @GetMapping("/get/{id}")
     public Result<? extends Object> getDetail(@PathVariable Long id, String dsCode) {
-        String goodsDetailKey = RedisService.key.YH_HOME_PAGHE_CACHE.getName() + "goods_detail:" + id;
-        //List<Long> filter_goodsIds = getFilterGoodsIds();
+	    String lang = request.getHeader("lang");
+	    AtomicBoolean language = new AtomicBoolean(false);
+	    String goodsDetailKey = RedisService.key.YH_HOME_PAGHE_CACHE.getName() + "goods_detail:" + id;
+	    if (!UserPageLanguage.Language.zh_HK.name().equals(lang)) {
+		    goodsDetailKey += ":" + lang;
+		    language.set(true);
+	    }
+	    //List<Long> filter_goodsIds = getFilterGoodsIds();
         List<Long> filter_goodsIds = null;
         //存在过滤平台 商品详情不返回
         if (CollUtil.isNotEmpty(filter_goodsIds) && filter_goodsIds.contains(id)) {
@@ -151,6 +152,9 @@ public class GoodsDonController {
             }
             views.setSkuList(beanSearcher.searchAll(GoodsDonSkuFrontView.class, builder.build()));
             views.setSold(getGoodsSold(views.getId(), views.getSold()));
+	        if (language.get()) {
+		        backInfoTranslationsFrontService.setGoodsDetailLanguage(views, lang);
+	        }
             redisService.setNx(goodsDetailKey, views, RedisService.key.YH_HOME_PAGHE_CACHE.getTimeout() + 60 * RandomUtil.randomInt(10));
             o = redisService.get(goodsDetailKey);
         }
@@ -209,92 +213,6 @@ public class GoodsDonController {
         return GatewayResponse.SUCCESS.newBuilder().toResult(views);
     }
 
-    /**
-     * 获取商品推荐平台
-     */
-    @GetMapping("/get/recommend/{id}")
-    public Result<List<GoodsFrontListView>> getRecommendGoodsByGid(@PathVariable Long id, String dsCode) throws Exception {
-        String key = RedisService.key.YH_HOME_PAGHE_CACHE.getName() + "recommend:" + id;
-        Object o = redisService.get(key);
-        Long fUid = StpUserUtil.getUserIdAfterLogin();
-        List<GoodsFrontListView> goodsRecommendViews = null;
-        if (o == null) {
-            GoodsDon goodsDon = beanSearcher.searchFirst(GoodsDon.class, MapUtils.builder()
-                    .field(GoodsDon::getId, id).field(GoodsDon::getStatus, true)
-                    .field(GoodsDon::getDeleted, true)
-                    .build());
-            if (goodsDon != null && StrUtil.isNotEmpty(goodsDon.getRecommendGoods())) {
-                List<Long> recommend_gidList = Jsons.parseList(goodsDon.getRecommendGoods(), Long.class);
-                MapBuilder mapBuilder = MapUtils.builder();
-                mapBuilder.field(GoodsFrontListView::getId, recommend_gidList).op(Operator.InList);
-                goodsRecommendViews = beanSearcher.searchAll(GoodsFrontListView.class, mapBuilder.build());
-                redisService.setNx(key, Jsons.toJson(goodsRecommendViews), 60 * 15l);
-                o = redisService.get(key);
-            } else {
-                return GatewayResponse.SUCCESS.newBuilder().toResult();
-            }
-        }
-        if (goodsRecommendViews == null) {
-            goodsRecommendViews = Jsons.parseList(o.toString(), GoodsFrontListView.class);
-        }
-        AtomicLong dsUserId = new AtomicLong();
-        AtomicBoolean existsChannel = new AtomicBoolean(true);
-        if (StrUtil.isNotBlank(dsCode)) {
-            UserSharedDto userSharedDto = userService.getUserShredDtoByDsCode(dsCode);
-            dsUserId.set(userSharedDto.getSharedId());
-        }
-        goodsRecommendViews = goodsRecommendViews.stream().filter(data -> {
-            if (data.getIsOwns()) {
-                if (dsUserId.get() == 0 && fUid != null && existsChannel.get()) {
-                    Long sharedId = userService.getSharedIdByUserId(fUid);
-                    if (sharedId == 0) {
-                        existsChannel.set(false);
-                    }
-                    dsUserId.set(sharedId);
-                }
-                GoodsDonSku minPriceUserOwnsSku = goodsDonSkuMapper.checkAndReturnMinPriceUserOwnsSku(data.getId(), dsUserId.get());
-                if (minPriceUserOwnsSku == null) {
-                    return false;
-                }
-                data.setPrice(minPriceUserOwnsSku.getPrice());
-                data.setMonths(minPriceUserOwnsSku.getMonths());
-                data.setDays(minPriceUserOwnsSku.getDays());
-            }
-            //销量
-            data.setSold(getGoodsSold(data.getId(), data.getSold()));
-            //设置特定价格
-            setSpecificPrice(data, fUid, dsUserId.get());
-            return true;
-        }).collect(Collectors.toList());
-        return GatewayResponse.SUCCESS.newBuilder().toResult(goodsRecommendViews);
-    }
-
-    /**
-     * 获取商品多规格列表
-     */
-    @GetMapping("/get/sku")
-    public Result<List<GoodsDonSkuView>> getGoodsDonSkuView(@RequestParam(value = "skuIds") List<Long> skuIds) {
-        if (skuIds.isEmpty()) {
-            return GatewayResponse.SUCCESS.newBuilder().toResult();
-        }
-        List<GoodsDonSkuView> views = beanSearcher.searchAll(GoodsDonSkuView.class, MapUtils.builder()
-                .field(GoodsDonSkuView::getSkuId, skuIds).op(Operator.InList)
-                .build());
-        return GatewayResponse.SUCCESS.newBuilder().toResult(views);
-    }
-
-    /**
-     * 获取评价列表
-     */
-    @GetMapping("/get/comments")
-    public Result<SearchResult<OrderCommentFrontView>> getComments() {
-        SearchResult<OrderCommentFrontView> search = beanSearcher.search(OrderCommentFrontView.class, MapUtils.flatBuilder(request.getParameterMap())
-                .orderBy(OrderCommentFrontView::getCommentTime).desc()
-                .orderBy(OrderCommentFrontView::getId).desc()
-                .build());
-        return GatewayResponse.SUCCESS.newBuilder().toResult(search);
-    }
-
 
     /**
      * @param goodsId
@@ -477,15 +395,17 @@ public class GoodsDonController {
 	 */
 	@GetMapping("/get/categoryGoods")
 	public Result<? extends Object> getGoodsByCategory(Long cgy, String dsCode) {
+		String lang = request.getHeader("lang");
+		AtomicBoolean language = new AtomicBoolean(false);
 		Long fUid = StpUserUtil.getUserIdAfterLogin();
 		String categoryGoodsKey = RedisService.key.YH_HOME_PAGHE_CACHE.getName() + "category:goods";
 		if (cgy != null) {
 			categoryGoodsKey += ":" + cgy;
 		}
-		//List<Long> filter_goodsIds = getFilterGoodsIds();
 		List<Long> filter_goodsIds = null;
-		if (CollUtil.isNotEmpty(filter_goodsIds)) {
-			categoryGoodsKey += ":hz-ip";
+		if (!UserPageLanguage.Language.zh_HK.name().equals(lang)) {
+			categoryGoodsKey += ":" + lang;
+			language.set(true);
 		}
 		Object o = redisService.get(categoryGoodsKey);
 		if (o == null) {
@@ -500,8 +420,12 @@ public class GoodsDonController {
 			}
 			List<GoodsFrontListCategoryView> goodsFrontListViews = beanSearcher.searchAll(GoodsFrontListCategoryView.class, mapBuilder.build());
 			goodsFrontListViews.forEach(data -> {
-				data.setSold(getGoodsSold(data.getId(), data.getSold()));;
+				data.setSold(getGoodsSold(data.getId(), data.getSold()));
 				data.setNotifyMsg(getPayMsgTime(data.getId(), now, 1));
+				if (language.get()) {
+					//多语言
+					backInfoTranslationsFrontService.setCategoryGoodsLanguage(data, lang);
+				}
 			});
 			redisService.setNx(categoryGoodsKey, goodsFrontListViews, RedisService.key.YH_HOME_PAGHE_CACHE.getTimeout() + 10 * 60);
 			o = redisService.get(categoryGoodsKey);

+ 32 - 0
netflix-web/src/main/java/com/cyksj/web/controller/manage/goods/BackInfoTranslations.java

@@ -0,0 +1,32 @@
+package com.cyksj.web.controller.manage.goods;
+
+import com.cyksj.dto.Result;
+import com.cyksj.enums.GatewayResponse;
+import com.cyksj.model.dto.TranslationsDto;
+import com.cyksj.service.translations.BackInfoTranslationsService;
+import lombok.RequiredArgsConstructor;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * 项目名: yhlxj2
+ * 文件名: BackInfoTranslations
+ * 创建者: JavaZou
+ * 创建时间:2024/7/16 12:21
+ */
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/manage/translations")
+public class BackInfoTranslations {
+	private final BackInfoTranslationsService backInfoTranslationsService;
+	/**
+	 * 新增字段多语言翻译
+	 */
+	@PostMapping("/post")
+	public Result<String> post(@RequestBody TranslationsDto dto) {
+		backInfoTranslationsService.saveOrUpdateTranslations(dto);
+		return GatewayResponse.SUCCESS.newBuilder().toResult();
+	}
+}

+ 12 - 0
netflix-web/src/main/java/com/cyksj/web/controller/manage/goods/CmsGoodsDonController.java

@@ -14,6 +14,7 @@ import com.cyksj.mapper.GoodsDonSkuMapper;
 import com.cyksj.model.entity.GoodsDon;
 import com.cyksj.model.entity.GoodsDonCategory;
 import com.cyksj.model.entity.GoodsDonSku;
+import com.cyksj.model.entity.UserPageLanguage;
 import com.cyksj.model.manage.request.ReqGoodsSpuInsert;
 import com.cyksj.model.manage.views.GoodsDonViewer;
 import com.cyksj.model.views.GoodsDetailView;
@@ -21,6 +22,7 @@ import com.cyksj.model.views.GoodsDonCategoryDetailView;
 import com.cyksj.service.mange.CmsGoodsDonService;
 import com.cyksj.service.mange.GoodsDonCategoryService;
 import com.cyksj.service.mange.RefreshCacheService;
+import com.cyksj.service.translations.BackInfoTranslationsFrontService;
 import com.ejlchina.searcher.BeanSearcher;
 import com.ejlchina.searcher.SearchResult;
 import com.ejlchina.searcher.param.Operator;
@@ -60,6 +62,8 @@ public class CmsGoodsDonController {
 
 	private final GoodsDonSkuMapper skuMapper;
 
+	private final BackInfoTranslationsFrontService backInfoTranslationsFrontService;
+
 	@GetMapping("/get")
 	public Result<SearchResult<GoodsDonCategoryDetailView>> get(){
 		SearchResult<GoodsDonCategoryDetailView> search = beanSearcher.search(GoodsDonCategoryDetailView.class, MapUtils.flatBuilder(request.getParameterMap())
@@ -80,6 +84,10 @@ public class CmsGoodsDonController {
 		}
 		List<GoodsDonCategory> categoryView = goodsDonCategoryService.getCateGoryViewByGoodsId(id);
 		goodsDonViewer.setCategoryList(categoryView.stream().map(GoodsDonCategory::getId).collect(Collectors.toList()));
+		String lang = request.getHeader("lang");
+		if (!StrUtil.equals(UserPageLanguage.Language.zh_HK.name(), lang)) {
+			backInfoTranslationsFrontService.setGoodsBackLanguage(goodsDonViewer, lang);
+		}
 		return GatewayResponse.SUCCESS.newBuilder().toResult(goodsDonViewer);
 	}
 
@@ -91,6 +99,10 @@ public class CmsGoodsDonController {
 		List<GoodsDonSku> goodsDonSkus = beanSearcher.searchAll(GoodsDonSku.class, MapUtils.flatBuilder(request.getParameterMap()).field(GoodsDonSku::getGoodsId, id)
 				.orderBy(GoodsDonSku::getSorted).asc()
 				.build());
+		String lang = request.getHeader("lang");
+		if (!StrUtil.equals(UserPageLanguage.Language.zh_HK.name(), lang)) {
+			backInfoTranslationsFrontService.setSkuBackLanguage(goodsDonSkus, lang);
+		}
 		return GatewayResponse.SUCCESS.newBuilder().toResult(goodsDonSkus);
 	}
 

+ 10 - 2
netflix-web/src/main/java/com/cyksj/web/controller/payment/OrderController.java

@@ -25,6 +25,7 @@ import com.cyksj.service.paypal.PayPalService;
 import com.cyksj.service.paypal.PaypalPayConfigService;
 import com.cyksj.service.stripe.StripePayConfigService;
 import com.cyksj.service.stripe.StripeService;
+import com.cyksj.service.translations.BackInfoTranslationsFrontService;
 import com.cyksj.service.user.UserBindRelationService;
 import com.cyksj.web.util.StpUserUtil;
 import com.ejlchina.searcher.BeanSearcher;
@@ -51,6 +52,7 @@ import javax.servlet.http.HttpServletResponse;
 import java.io.InputStream;
 import java.nio.charset.StandardCharsets;
 import java.util.List;
+import java.util.Optional;
 
 /**
  * @author chan
@@ -98,7 +100,7 @@ public class OrderController {
     private StripeService stripeService;
 
     @Autowired
-    private UserBindRelationService userBindRelationService;
+    private BackInfoTranslationsFrontService backInfoTranslationsFrontService;
 
     @Autowired
     private CryptomusService cryptomusService;
@@ -156,7 +158,7 @@ public class OrderController {
      * 获取订单列表
      */
     @GetMapping("/get")
-    public Result<SearchResult<OrderDonView>> list(){
+    public Result<SearchResult<OrderDonView>> list() {
         long userId = StpUserUtil.getLoginIdAsLong();
         MapBuilder builder = MapUtils.flatBuilder(request.getParameterMap());
         List<Long> userIds = UserBindRelationService.getRelationUserIdList(userId, null);
@@ -164,6 +166,12 @@ public class OrderController {
                 .field(OrderDonView::getUserId, userIds).op(Operator.InList)
                 .orderBy(OrderDonView::getId).desc()
                 .build());
+        String lang = request.getHeader("lang");
+        if (!StrUtil.equals(UserPageLanguage.Language.zh_HK.name(), lang)) {
+            search.getDataList().forEach(order -> {
+                Optional.ofNullable(backInfoTranslationsFrontService.setLanguagePayTitle(order.getGoodsId(), order.getSkuId(), lang)).ifPresent(payTitle -> order.setPayTitle(payTitle));
+            });
+        }
         return GatewayResponse.SUCCESS.newBuilder().toResult(search);
     }