Преглед изворни кода

Merge remote-tracking branch 'origin/master'

Mr.qian пре 3 недеља
родитељ
комит
67a86d0727
24 измењених фајлова са 717 додато и 240 уклоњено
  1. 23 22
      mall-service/src/main/java/com/txz/mall/business/impl/OrderServiceBusinessImpl.java
  2. 4 3
      mall-service/src/main/java/com/txz/mall/business/impl/PinkServiceBusinessImpl.java
  3. 3 2
      mall-service/src/main/java/com/txz/mall/controller/CombinationController.java
  4. 3 2
      mall-service/src/main/java/com/txz/mall/controller/appcontroller/AppCombinationController.java
  5. 2 1
      mall-service/src/main/java/com/txz/mall/controller/appcontroller/MidFavoriteController.java
  6. 6 2
      mall-service/src/main/java/com/txz/mall/controller/i18nTestController.java
  7. 2 1
      mall-service/src/main/java/com/txz/mall/core/AuthService.java
  8. 3 1
      mall-service/src/main/java/com/txz/mall/core/ResultCode.java
  9. 3 1
      mall-service/src/main/java/com/txz/mall/dubbo/client/OperatingConfigDubboServiceClient.java
  10. 3 1
      mall-service/src/main/java/com/txz/mall/service/impl/CategoryServiceImpl.java
  11. 8 7
      mall-service/src/main/java/com/txz/mall/service/impl/StoreCombinationServiceImpl.java
  12. 4 2
      mall-service/src/main/java/com/txz/mall/service/impl/StoreFlashActivityServiceImpl.java
  13. 157 159
      mall-service/src/main/java/com/txz/mall/service/impl/StoreOrderServiceImpl.java
  14. 10 8
      mall-service/src/main/java/com/txz/mall/service/impl/StorePinkServiceImpl.java
  15. 3 2
      mall-service/src/main/java/com/txz/mall/service/impl/StorePinkSummaryServiceImpl.java
  16. 2 1
      mall-service/src/main/java/com/txz/mall/service/impl/StoreProductRuleServiceImpl.java
  17. 13 12
      mall-service/src/main/java/com/txz/mall/service/impl/StoreProductServiceImpl.java
  18. 2 1
      mall-service/src/main/java/com/txz/mall/service/impl/UserSignServiceImpl.java
  19. 19 4
      mall-service/src/main/java/com/txz/mall/util/I18nUtil.java
  20. 3 2
      mall-service/src/main/java/com/txz/mall/web/ro/SendNoticeRO.java
  21. 0 1
      mall-service/src/main/resources/i18n/messages.properties
  22. 147 1
      mall-service/src/main/resources/i18n/messages_bn_BD.properties
  23. 139 2
      mall-service/src/main/resources/i18n/messages_en_US.properties
  24. 158 2
      mall-service/src/main/resources/i18n/messages_zh_CN.properties

+ 23 - 22
mall-service/src/main/java/com/txz/mall/business/impl/OrderServiceBusinessImpl.java

@@ -11,6 +11,7 @@ import com.txz.mall.dubbo.client.CifUserDubboServiceClient;
 import com.txz.mall.enums.PinkOrderStatusEnum;
 import com.txz.mall.model.*;
 import com.txz.mall.service.*;
+import com.txz.mall.util.I18nUtil;
 import lombok.AllArgsConstructor;
 import org.apache.commons.lang.time.DateUtils;
 import org.springframework.beans.BeanUtils;
@@ -33,7 +34,7 @@ import java.util.stream.Collectors;
 @Transactional
 @AllArgsConstructor
 public class OrderServiceBusinessImpl implements OrderServiceBusiness {
-    
+
     private final StoreOrderService storeOrderService;
     private final StoreOrderInfoService storeOrderInfoService;
     private final UserAddressService userAddressService;
@@ -43,7 +44,7 @@ public class OrderServiceBusinessImpl implements OrderServiceBusiness {
     private final StorePinkService storePinkService;
     private final RedisUtil redisUtil;
     private final CifRedEnvelopeDubboServiceClient cifRedEnvelopeDubboServiceClient;
-    
+
     @Override
     public StoreOrderVO orderDetail(Long id, String orderNo) {
         StoreOrderVO vo = new StoreOrderVO();
@@ -53,9 +54,9 @@ public class OrderServiceBusinessImpl implements OrderServiceBusiness {
         } else if (!ObjectUtils.isEmpty(orderNo)) {
             storeOrder = storeOrderService.findBy("orderId", orderNo);
         }
-        
-        if (ObjectUtils.isEmpty(storeOrder)) {
-            throw new ServiceException("订单不存在 ID:" + id);
+
+        if(ObjectUtils.isEmpty(storeOrder)){
+            throw new ServiceException(I18nUtil.get("order.does.not.exist.id")+id);
         }
         id = storeOrder.getId();
         Condition infoCondition = new Condition(StoreOrderInfo.class);
@@ -64,12 +65,12 @@ public class OrderServiceBusinessImpl implements OrderServiceBusiness {
         infoCriteria.andEqualTo("orderId", storeOrder.getId());
         List<StoreOrderInfo> infoList = storeOrderInfoService.findByCondition(infoCondition);
         List<StoreOrderStatus> logList = storeOrderStatusService.getLogList(storeOrder.getId());
-        
+
         Condition storePinkCondition = new Condition(StorePink.class);
         Example.Criteria storePinkCriteria = storePinkCondition.createCriteria();
         storePinkCriteria.andEqualTo("isDelete", 0);
         storePinkCriteria.andEqualTo("orderIdKey", id);
-        
+
         List<StorePink> byCondition = storePinkService.findByCondition(storePinkCondition);
         if (!org.springframework.util.CollectionUtils.isEmpty(byCondition)) {
             StorePink storePink = byCondition.get(0);
@@ -77,33 +78,33 @@ public class OrderServiceBusinessImpl implements OrderServiceBusiness {
         }
         //        UserDTO user = userDubboServiceClient.getUser(storeOrder.getUid());
         UserAddress userAddress = userAddressService.findById(storeOrder.getAddressId());
-        
-        
+
+
         List<String> orderCodeList = new ArrayList<>();
         orderCodeList.add(storeOrder.getOrderId());
-        
+
         Map<String, EarningsDTO> collect = new HashMap<>();
         // 查询订单收益
         List<EarningsDTO> earningsByOrders = cifRedEnvelopeDubboServiceClient.getEarningsByOrders(orderCodeList);
         if (!org.springframework.util.CollectionUtils.isEmpty(earningsByOrders)) {
             collect = earningsByOrders.stream().filter(a -> !ObjectUtils.isEmpty(a)).collect(Collectors.toMap(EarningsDTO::getOrderNo, a -> a, (b, c) -> c));
-            
+
         }
-        
+
         BeanUtils.copyProperties(storeOrder, vo);
         EarningsDTO earningsDTO = collect.get(storeOrder.getOrderId());
         if (!ObjectUtils.isEmpty(earningsDTO)) {
             vo.setBrokerage(earningsDTO.getEarnings());
         }
-        
+
         vo.setOrderInfoVO(infoList);
         vo.setOrderAddressVO(userAddress);
         vo.setOrderStatusVO(logList);
-        
+
         //        vo.setUserVO(user);
         return vo;
     }
-    
+
     //
     //    @Override
     //    public List<StoreCombinationRankVO> getRank() {
@@ -154,8 +155,8 @@ public class OrderServiceBusinessImpl implements OrderServiceBusiness {
     //        redisUtil.set(key, list);
     //        return list;
     //    }
-    
-    
+
+
     @Override
     public List<StoreCombinationRankVO> getRank() {
         List<StoreCombinationRankVO> list = new ArrayList<>();
@@ -166,7 +167,7 @@ public class OrderServiceBusinessImpl implements OrderServiceBusiness {
         //     list = JSONObject.parseArray(orderVoString, StoreCombinationRankVO.class);
         //     return list;
         // }
-        
+
         Condition orderCondition = new Condition(StoreOrder.class);
         Example.Criteria orderCriteria = orderCondition.createCriteria();
         Date date = new Date();
@@ -186,14 +187,14 @@ public class OrderServiceBusinessImpl implements OrderServiceBusiness {
                         StoreOrder::getCombinationId,
                         Collectors.counting()
                 ));
-        
+
         // 获取前10个热门商品组合
         List<Map.Entry<Long, Long>> topCombinations = combinationCountMap.entrySet()
                 .stream()
                 .sorted(Map.Entry.<Long, Long>comparingByValue().reversed())
                 .limit(10)
                 .collect(Collectors.toList());
-        
+
         List<StoreCombination> combinationList = storeCombinationService.findByIds(String.join(",", topCombinations.stream().map(Map.Entry::getKey).map(Object::toString).collect(Collectors.toList())));
         for (StoreCombination storeCombination : combinationList) {
             List<StoreCombination> collect = combinationList.stream().filter(c -> c.getId().equals(storeCombination.getId())).collect(Collectors.toList());
@@ -211,6 +212,6 @@ public class OrderServiceBusinessImpl implements OrderServiceBusiness {
         // redisUtil.set(key, list);
         return list;
     }
-    
-    
+
+
 }

+ 4 - 3
mall-service/src/main/java/com/txz/mall/business/impl/PinkServiceBusinessImpl.java

@@ -15,6 +15,7 @@ import com.txz.mall.model.StorePink;
 import com.txz.mall.service.StoreCombinationService;
 import com.txz.mall.service.StoreOrderService;
 import com.txz.mall.service.StorePinkService;
+import com.txz.mall.util.I18nUtil;
 import lombok.AllArgsConstructor;
 import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
@@ -48,13 +49,13 @@ public class PinkServiceBusinessImpl implements PinkServiceBusiness {
     public List<StorePinkDetailVO> getAdminList(Long pinkId,String terminal) {
 
         if (ObjectUtils.isEmpty(pinkId)) {
-            throw new ServiceException("拼团id为空");
+            throw new ServiceException(I18nUtil.get("group.buying.id.is.empty"));
         }
         StorePink storePink = storePinkService.findById(pinkId);
 
 
         if (ObjectUtils.isEmpty(storePink)) {
-            throw new ServiceException("拼团数据不存在id:"+pinkId);
+            throw new ServiceException(I18nUtil.get("group.buying.data.does.not.exist.id")+pinkId);
         }
         List<StorePinkDetailVO> resultList = new ArrayList<>();
       //  if (StorePinkStatusEnum.RESULTS_ANNOUNCED.getKey().equals(storePink.getStatus())) {
@@ -220,7 +221,7 @@ public class PinkServiceBusinessImpl implements PinkServiceBusiness {
         if (!applyList.isEmpty()) {
             boolean task = storeOrderService.refundApplyTask(applyList);
             if (!task) {
-                throw new ServiceException("拼团未成功,订单申请退款失败");
+                throw new ServiceException(I18nUtil.get("group.buying.failed.order.refund.application.failed"));
             }
         }
         if (CollUtil.isNotEmpty(pinkSuccessList) && !pinkSuccessList.isEmpty()) {

+ 3 - 2
mall-service/src/main/java/com/txz/mall/controller/CombinationController.java

@@ -10,6 +10,7 @@ import com.txz.mall.core.ServiceException;
 import com.txz.mall.model.StoreCombination;
 import com.txz.mall.service.StoreCombinationService;
 import com.txz.mall.service.StoreOrderService;
+import com.txz.mall.util.I18nUtil;
 import com.txz.mall.web.param.addparam.StoreCombinationAddParam;
 import dto.GoPinkDTO;
 import dto.StoreProductDTO;
@@ -74,7 +75,7 @@ public class CombinationController {
         }
         Date date = new Date();
         if (combination.getIsShow().equals(1) && combination.getStartTime().before(date) && combination.getStopTime().after(date)) {
-            throw new ServiceException("活动开启中,商品不支持删除");
+            throw new ServiceException("the.activity.is.ongoing.and.the.product.does.not.support.deletion");
         }
         try {
             StoreCombination storeCombination = new StoreCombination();
@@ -177,7 +178,7 @@ public class CombinationController {
     @ApiOperation(value = "添加活动商品")
     public Result addActivityProduct(@RequestBody StoreCombinationAddParam storeCombinationAddParam) {
         if (CollectionUtils.isEmpty(storeCombinationAddParam.getList())) {
-            throw new ServiceException("添加商品不能为空");
+            throw new ServiceException(I18nUtil.get("the.added.product.cannot.be.empty"));
         }
         if (storeCombinationAddParam.getActivityId() == null) {
             return Result.fail(ResultCode.ID_IS_NULL);

+ 3 - 2
mall-service/src/main/java/com/txz/mall/controller/appcontroller/AppCombinationController.java

@@ -12,6 +12,7 @@ import com.txz.mall.core.ServiceException;
 import com.txz.mall.model.StoreCombination;
 import com.txz.mall.service.StoreCombinationService;
 import com.txz.mall.service.StoreOrderService;
+import com.txz.mall.util.I18nUtil;
 import com.txz.mall.web.param.addparam.StoreCombinationAddParam;
 import com.txz.mall.web.vo.SpuListRO;
 import dto.GoPinkDTO;
@@ -75,7 +76,7 @@ public class AppCombinationController {
     //        }
     //        Date date = new Date();
     //        if (combination.getIsShow().equals(1) && combination.getStartTime().before(date) && combination.getStopTime().after(date)) {
-    //            throw new ServiceException("活动开启中,商品不支持删除");
+    //            throw new ServiceException(I18nUtil.get("the.activity.is.ongoing.and.the.product.does.not.support.deletion"));
     //        }
     //        try {
     //            StoreCombination storeCombination = new StoreCombination();
@@ -215,7 +216,7 @@ public class AppCombinationController {
     @ApiOperation(value = "添加活动商品")
     public Result addActivityProduct(@RequestBody StoreCombinationAddParam storeCombinationAddParam) {
         if (CollectionUtils.isEmpty(storeCombinationAddParam.getList())) {
-            throw new ServiceException("添加商品不能为空");
+            throw new ServiceException("the.added.product.cannot.be.empty");
         }
         if (storeCombinationAddParam.getActivityId() == null) {
             return Result.fail(ResultCode.ID_IS_NULL);

+ 2 - 1
mall-service/src/main/java/com/txz/mall/controller/appcontroller/MidFavoriteController.java

@@ -19,6 +19,7 @@ import com.github.pagehelper.PageInfo;
 import com.txz.mall.service.StoreCombinationService;
 import com.txz.mall.service.StoreProductService;
 import com.txz.mall.util.EasyToUseUtil;
+import com.txz.mall.util.I18nUtil;
 import com.txz.mall.web.bo.MidFavoriteBO;
 import com.txz.mall.web.param.BasePageParam;
 import com.txz.mall.web.param.MidFavoriteParam;
@@ -94,7 +95,7 @@ public class MidFavoriteController {
 
 		List<MidFavorite> list = midFavoriteService.findByCondition(condition);
 		if(!CollectionUtils.isEmpty(list)){
-			throw new ServiceException("重复收藏同样的商品");
+			throw new ServiceException(I18nUtil.get("duplicate.favorite.of.the.same.product"));
 		}
 		List<MidFavorite> midFavoriteList = new ArrayList<>();
 

+ 6 - 2
mall-service/src/main/java/com/txz/mall/controller/i18nTestController.java

@@ -4,6 +4,7 @@ import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
 import com.txz.mall.core.Result;
 import com.txz.mall.core.ResultCode;
+import com.txz.mall.core.ServiceException;
 import com.txz.mall.model.StoreCombination;
 import com.txz.mall.util.I18nUtil;
 import io.swagger.annotations.ApiOperation;
@@ -32,8 +33,11 @@ public class i18nTestController {
     public String getMore() {
 
         String lala = I18nUtil.get("order.does.not.exist");
-
-        return lala;
+        System.out.println(I18nUtil.get("product.export.template"));
+//        if(true) {
+//            throw new ServiceException(I18nUtil.get("product.export.template"));
+//        }
+        return I18nUtil.get("product.export.template")+"3";
     }
 
 

+ 2 - 1
mall-service/src/main/java/com/txz/mall/core/AuthService.java

@@ -2,6 +2,7 @@ package com.txz.mall.core;
 
 import cn.hutool.core.date.DateField;
 import cn.hutool.core.date.DateUtil;
+import com.txz.mall.util.I18nUtil;
 import io.jsonwebtoken.Claims;
 import io.jsonwebtoken.ExpiredJwtException;
 import io.jsonwebtoken.Jwts;
@@ -49,7 +50,7 @@ public class AuthService {
             }
             return claims;
         } catch (Exception e) {
-            throw new ServiceException("请先登录");
+            throw new ServiceException(I18nUtil.get("please.log.in.first"));
         }
         
     }

+ 3 - 1
mall-service/src/main/java/com/txz/mall/core/ResultCode.java

@@ -1,5 +1,7 @@
 package com.txz.mall.core;
 
+import com.txz.mall.util.I18nUtil;
+
 /**
  * 响应码枚举,参考HTTP状态码的语义
  */
@@ -27,7 +29,7 @@ public enum ResultCode {
     NAME_IS_NULL("6003","名称不能为空"),
     SEQ_IS_NULL("6004","排序不能为空"),
     LEVEL_IS_NULL("6005","级别不能为空"),
-    USERID_IS_NULL("6006","用户id不能为空"),
+    USERID_IS_NULL("6006", "user id cannot be empty"),
     RESULT_IS_NULL("6007","查询结果为空"),
     TYPE_IS_NULL("6008","类型为空"),
     SQL_ERROR("6009","数据库异常"),

+ 3 - 1
mall-service/src/main/java/com/txz/mall/dubbo/client/OperatingConfigDubboServiceClient.java

@@ -1,6 +1,7 @@
 package com.txz.mall.dubbo.client;
 
 import com.txz.mall.core.ServiceException;
+import com.txz.mall.util.I18nUtil;
 import com.txz.operating.dto.ConfigDTO;
 import com.txz.operating.result.Result;
 import com.txz.operating.service.OperatingConfigDubboService;
@@ -26,7 +27,8 @@ public class OperatingConfigDubboServiceClient {
         if (configByCode.getCode().equals("200") && configByCode.getData() != null) {
             return configByCode.getData();
         } else {
-            throw new ServiceException("获取配置失败");
+
+            throw new ServiceException(I18nUtil.get("failed.to.get.configuration"));
         }
     }
 }

+ 3 - 1
mall-service/src/main/java/com/txz/mall/service/impl/CategoryServiceImpl.java

@@ -8,6 +8,7 @@ import com.txz.mall.core.ServiceException;
 import com.txz.mall.dao.CategoryMapper;
 import com.txz.mall.model.Category;
 import com.txz.mall.service.CategoryService;
+import com.txz.mall.util.I18nUtil;
 import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -54,7 +55,8 @@ public class CategoryServiceImpl extends AbstractService<Category> implements Ca
     public void delete(Long id) {
         //查看是否有子类, 物理删除
         if (getChildCountByPid(id) > 0) {
-            throw new ServiceException("当前分类下有子类,请先删除子类!");
+            String s = I18nUtil.get("there.are.subcategories.under.the.current.category.please.delete.the.subcategories.first");
+            throw new ServiceException(s);
         }
 
         Category category = new Category();

+ 8 - 7
mall-service/src/main/java/com/txz/mall/service/impl/StoreCombinationServiceImpl.java

@@ -13,6 +13,7 @@ import com.txz.mall.service.StoreCombinationService;
 import com.txz.mall.service.StoreFlashActivityService;
 import com.txz.mall.service.StorePinkService;
 import com.txz.mall.service.StoreProductService;
+import com.txz.mall.util.I18nUtil;
 import lombok.AllArgsConstructor;
 import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
@@ -44,7 +45,7 @@ public class StoreCombinationServiceImpl extends AbstractService<StoreCombinatio
     public void addActivityProduct(List<StoreCombination> list, Long activityId) {
         StoreFlashActivity flashActivity = storeFlashActivityService.findById(activityId);
         if (flashActivity == null || flashActivity.getIsDelete().equals(1)) {
-            throw new ServiceException("找不到对应的活动");
+            throw new ServiceException(I18nUtil.get("cannot.find.the.corresponding.activity"));
         }
         FlashActivityVO activityVO = JSONObject.parseObject(flashActivity.getContent(), FlashActivityVO.class);
         String idsStr = list.stream()
@@ -121,7 +122,7 @@ public class StoreCombinationServiceImpl extends AbstractService<StoreCombinatio
         criteria.andEqualTo("isShow", 1);
         List<StoreCombination> combinationList = findByCondition(condition);
         if (CollUtil.isEmpty(combinationList)) {
-            throw new ServiceException("拼团商品不存在或未开启");
+            throw new ServiceException(I18nUtil.get("group.buying.product.does.not.exist.or.is.not.activated"));
         }
         return combinationList.get(0);
     }
@@ -133,7 +134,7 @@ public class StoreCombinationServiceImpl extends AbstractService<StoreCombinatio
     public synchronized void operationStock(Long id, Integer num, String type) {
         StoreCombination combination = findById(id);
        if(ObjectUtils.isEmpty(combination)){
-           throw new ServiceException("拼团活动不存在id:" + id);
+           throw new ServiceException(I18nUtil.get("group.buying.activity.does.not.exist.id") + id);
        }
 
         StoreCombination storeCombinationForUpdate = new StoreCombination();
@@ -143,7 +144,7 @@ public class StoreCombinationServiceImpl extends AbstractService<StoreCombinatio
             int stock = combination.getStock() + num;
             int quota = combination.getQuota() + num;
             if(sales<0){
-                throw new ServiceException("拼团活动m_store_combination销量扣减为负数id:"+id);
+                throw new ServiceException(I18nUtil.get("the.sales.deduction.of.group.buying.activity.m_store_combination.is.negative.id")+id);
             }
 
             storeCombinationForUpdate.setSales(sales);
@@ -156,10 +157,10 @@ public class StoreCombinationServiceImpl extends AbstractService<StoreCombinatio
             int stock = combination.getStock() - num;
             int quota = combination.getQuota() - num;
             if(stock<0){
-                throw new ServiceException("拼团活动m_store_combination.stock扣减为负数id:"+id);
+                throw new ServiceException(I18nUtil.get("the.stock.deduction.of.group.buying.activity.m_store_combination.is.negative.id")+id);
             }
             if(quota<0){
-                throw new ServiceException("拼团活动m_store_combination.quota扣减为负数id:"+id);
+                throw new ServiceException(I18nUtil.get("the.quota.deduction.of.group.buying.activity.m_store_combination.is.negative.id")+id);
             }
 
             storeCombinationForUpdate.setSales(sales);
@@ -172,7 +173,7 @@ public class StoreCombinationServiceImpl extends AbstractService<StoreCombinatio
         example.createCriteria().andEqualTo("id",id).andEqualTo("version",combination.getVersion());
         int i = storeCombinationMapper.updateByConditionSelective(storeCombinationForUpdate, example);
         if(!(i==1)){
-            throw new ServiceException("StoreCombination库存操作失败id:"+id);
+            throw new ServiceException(I18nUtil.get("storecombination.inventory.operation.failed.id")+id);
         }
 
     }

+ 4 - 2
mall-service/src/main/java/com/txz/mall/service/impl/StoreFlashActivityServiceImpl.java

@@ -12,6 +12,7 @@ import com.txz.mall.model.StoreFlashActivity;
 import com.txz.mall.service.StoreCombinationService;
 import com.txz.mall.service.StoreFlashActivityService;
 import com.txz.mall.util.EasyToUseUtil;
+import com.txz.mall.util.I18nUtil;
 import dto.StoreFlashActivityDTO;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.BeanUtils;
@@ -82,7 +83,8 @@ public class StoreFlashActivityServiceImpl extends AbstractService<StoreFlashAct
 
         StoreFlashActivity storeFlashActivityOri = findById(dto.getId());
         if(ObjectUtils.isEmpty(storeFlashActivityOri)){
-            throw new ServiceException("活动不存在id:"+storeFlashActivityOri.getId());
+            String s = I18nUtil.get("activity.does.not.exist.id");
+            throw new ServiceException(s+storeFlashActivityOri.getId());
         }
 //        FlashActivityVO activityVOOri = new FlashActivityVO();
 //        //数据库中的现有数据
@@ -175,7 +177,7 @@ public class StoreFlashActivityServiceImpl extends AbstractService<StoreFlashAct
 
         StoreFlashActivity storeFlashActivityOri = findById(storeFlashActivity.getId());
         if(ObjectUtils.isEmpty(storeFlashActivityOri)){
-            throw new ServiceException("活动不存在id:"+storeFlashActivityOri.getId());
+            throw new ServiceException(I18nUtil.get("activity.does.not.exist.id")+storeFlashActivityOri.getId());
         }
 
         JSONObject tokenUser = UserUtil.getTokenUser(null);

Разлика између датотеке није приказан због своје велике величине
+ 157 - 159
mall-service/src/main/java/com/txz/mall/service/impl/StoreOrderServiceImpl.java


+ 10 - 8
mall-service/src/main/java/com/txz/mall/service/impl/StorePinkServiceImpl.java

@@ -24,6 +24,7 @@ import com.txz.mall.model.StoreOrder;
 import com.txz.mall.model.StorePink;
 import com.txz.mall.model.StorePinkSummary;
 import com.txz.mall.service.*;
+import com.txz.mall.util.I18nUtil;
 import com.txz.mall.util.OrderStateMachine;
 import com.txz.mall.util.RandomUtil;
 import com.txz.mall.web.vo.ProductCarouselVO;
@@ -136,11 +137,11 @@ public class StorePinkServiceImpl extends AbstractService<StorePink> implements
 //        criteria.andEqualTo("status", 1);
 //        List<StorePink> list = findByCondition(condition);
 //        if (CollUtil.isEmpty(list)) {
-//            throw new ServiceException("没有拼团订单");
+//            throw new ServiceException(I18nUtil.get("no.group.buying.orders"));
 //        }
 //        long count = list.stream().filter(i -> i.getLId().equals(1)).count();
 //        if (count >= luckNum) {
-//            throw new ServiceException("已有天选");
+//            throw new ServiceException(I18nUtil.get("already.have.a.chosen.one"));
 //        }
 //
 //        List<Long> idCollect = list.stream().map(StorePink::getId).collect(Collectors.toList());
@@ -183,17 +184,18 @@ public class StorePinkServiceImpl extends AbstractService<StorePink> implements
         criteria.andEqualTo("orderStatus", PinkOrderStatusEnum.GROUP_ORDER_PAID.getKey());
         List<StorePink> list = findByCondition(condition);
         if (CollUtil.isEmpty(list)) {
-            throw new ServiceException("没有拼团订单"+spsId);
+            String s = I18nUtil.get("no.group.buying.orders");
+            throw new ServiceException(s+spsId);
         }
         long count = list.stream().filter(i -> i.getLId().equals(1)).count();
         if (count >= luckNum) {
-            throw new ServiceException("已有天选"+spsId);
+            throw new ServiceException(I18nUtil.get("already.have.a.chosen.one")+spsId);
         }
 
 
         StorePinkSummary storePinkSummary = storePinkSummaryService.findById(spsId);
         if(ObjectUtils.isEmpty(storePinkSummary)){
-            throw new ServiceException("没有拼团汇总记录"+spsId);
+            throw new ServiceException(I18nUtil.get("no.group.buying.summary.records")+spsId);
         }
 
 
@@ -221,7 +223,7 @@ public class StorePinkServiceImpl extends AbstractService<StorePink> implements
 
             PinkOrderStatusEnum pinkOrderStatusEnum = OrderStateMachine.handleEvent(storeOrder, OrderEventsEnum.GROUP_PURCHASE_WIN, null);
             if(ObjectUtils.isEmpty(pinkOrderStatusEnum)){
-                throw new ServiceException("当前订单状态不允许推进到待发货order.id:"+storePink.getOrderIdKey());
+                throw new ServiceException(I18nUtil.get("current.order.status.does.not.allow.progression.to.pending.shipment.orderid")+storePink.getOrderIdKey());
             }
             if(!ObjectUtils.isEmpty(storeOrder.getAddressId())) {
                 luckPink.setOrderStatus(PinkOrderStatusEnum.GROUP_ORDER_TO_SHIP.getKey());
@@ -256,7 +258,7 @@ public class StorePinkServiceImpl extends AbstractService<StorePink> implements
             StoreOrder storeOrder = storeOrderService.findById(a.getOrderIdKey());
             PinkOrderStatusEnum pinkOrderStatusEnum = OrderStateMachine.handleEvent(storeOrder, OrderEventsEnum.GROUP_PURCHASE_NOT_WIN, null);
             if(ObjectUtils.isEmpty(pinkOrderStatusEnum)){
-                throw new ServiceException("当前订单状态不允许推进到未中奖订单关闭状态 order.id:"+a.getOrderIdKey());
+                throw new ServiceException(I18nUtil.get("the.current.order.status.does.not.allow.advancement.to.the.closed.status.of.unwinning.orders.orderid")+a.getOrderIdKey());
             }
             // storePink2.setStopTime(date);
             StorePink unLuckPink = new StorePink();
@@ -308,7 +310,7 @@ public class StorePinkServiceImpl extends AbstractService<StorePink> implements
         Result result = cifAccountDubboServiceClient.accomplishGroup(param);
         log.info("cifAccountDubboServiceClient.accomplishGroup result"+result);
         if(!result.getCode().equals("200")){
-            throw new ServiceException("拼团成团未中奖用户退款失败message:"+result.getMessage());
+            throw new ServiceException(I18nUtil.get("refund.failed.for.users.who.did.not.win.the.group.buying.message")+result.getMessage());
         }
 
 

+ 3 - 2
mall-service/src/main/java/com/txz/mall/service/impl/StorePinkSummaryServiceImpl.java

@@ -9,6 +9,7 @@ import com.txz.mall.model.StorePink;
 import com.txz.mall.model.StorePinkSummary;
 import com.txz.mall.service.StorePinkSummaryService;
 import com.txz.mall.core.AbstractService;
+import com.txz.mall.util.I18nUtil;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
@@ -50,7 +51,7 @@ public class StorePinkSummaryServiceImpl extends AbstractService<StorePinkSummar
 
         StorePinkSummary storePinkSummary = mStorePinkSummaryMapper.selectByPrimaryKey(id);
         if(ObjectUtils.isEmpty(storePinkSummary)){
-            throw new ServiceException("拼团汇总不存在 id:"+id);
+            throw new ServiceException(I18nUtil.get("group.buying.summary.does.not.exist.id")+id);
         }
 
         Integer status = storePinkSummary.getStatus();
@@ -93,7 +94,7 @@ public class StorePinkSummaryServiceImpl extends AbstractService<StorePinkSummar
 
 
             if(stipulatedNumber < sumUnpayAndPaid){
-                throw new ServiceException("拼团超员 id:"+id);
+                throw new ServiceException(I18nUtil.get("group.buying.overcrowded.id")+id);
             }
 
 

+ 2 - 1
mall-service/src/main/java/com/txz/mall/service/impl/StoreProductRuleServiceImpl.java

@@ -6,6 +6,7 @@ import com.txz.mall.core.ServiceException;
 import com.txz.mall.dao.StoreProductRuleMapper;
 import com.txz.mall.model.StoreProductRule;
 import com.txz.mall.service.StoreProductRuleService;
+import com.txz.mall.util.I18nUtil;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -30,7 +31,7 @@ public class StoreProductRuleServiceImpl extends AbstractService<StoreProductRul
     public void saveRule(StoreProductRule storeProductRule) {
         // 格式  {"id":573,"ruleName":"衣服规格1","ruleValue":"[{\"value\":\"颜色\",\"detail\":[\"蓝色\",\"黄色\"],\"inputVisible\":false},{\"value\":\"尺码\",\"detail\":[\"s码\",\"m码\",\"l码\"],\"inputVisible\":false}]"}
         if (CollectionUtils.isEmpty(getListByRuleName(storeProductRule.getRuleName()))) {
-            throw new ServiceException("此规格值已经存在");
+            throw new ServiceException(I18nUtil.get("his.specification.value.already.exists"));
         }
         save(storeProductRule);
     }

+ 13 - 12
mall-service/src/main/java/com/txz/mall/service/impl/StoreProductServiceImpl.java

@@ -23,6 +23,7 @@ import com.txz.mall.service.ProductAttrService;
 import com.txz.mall.service.ProductAttrValueService;
 import com.txz.mall.service.StoreProductService;
 import com.txz.mall.util.EasyExcelUtil;
+import com.txz.mall.util.I18nUtil;
 import dto.FavoriteDTO;
 import dto.StoreProductAddRequest;
 import dto.StoreProductAttrAddRequest;
@@ -77,12 +78,12 @@ public class StoreProductServiceImpl extends AbstractService<StoreProduct> imple
         String suffix = FileUtil.extName(name);
         log.info("获取到的文件名为----->{},后缀为----->{}", name, suffix);
         if ("xlsx".equals(suffix) || "xls".equals(suffix)) {
-            throw new ServiceException("请传入xlsx或xls文档格式文件");
+            throw new ServiceException(I18nUtil.get("please.upload.files.in.xlsx.or.xls.format"));
         }
         try {
             List<StoreProduct> list = EasyExcelUtil.syncReadModel(file.getInputStream(), StoreProduct.class, 0, 1);
             if (CollectionUtils.isEmpty(list)) {
-                throw new ServiceException("请填写内容后再提交!");
+                throw new ServiceException(I18nUtil.get("please.fill.in.the.content.before.submitting"));
             }
 
         } catch (Exception e) {
@@ -97,14 +98,14 @@ public class StoreProductServiceImpl extends AbstractService<StoreProduct> imple
             outputStream = response.getOutputStream();
             response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
             response.setCharacterEncoding("utf-8");
-            String fileName = URLEncoder.encode("商品导出模板", "UTF-8").replaceAll("\\+", "%20");
+            String fileName = URLEncoder.encode(I18nUtil.get("product.export.template"), "UTF-8").replaceAll("\\+", "%20");
             response.setHeader(
                     "Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx");
             List<StoreProduct> list = new ArrayList<>();
-            EasyExcel.write(outputStream, StoreProduct.class).sheet("商品导出模板").doWrite(list);
+            EasyExcel.write(outputStream, StoreProduct.class).sheet(I18nUtil.get("product.export.template")).doWrite(list);
         } catch (Exception e) {
             log.error("模板下载失败", e);
-            throw new ServiceException("模板下载失败, 请联系管理员");
+            throw new ServiceException(I18nUtil.get("template.download.failed.please.contact.the.administrator"));
         }
     }
 
@@ -112,7 +113,7 @@ public class StoreProductServiceImpl extends AbstractService<StoreProduct> imple
     public StoreProductInfoVO getInfo(Long id) {
         StoreProduct storeProduct = findById(id);
         if (ObjectUtil.isNull(storeProduct)) {
-            throw new ServiceException("未找到对应商品信息");
+            throw new ServiceException(I18nUtil.get("corresponding.product.information.not.found"));
         }
         StoreProductInfoVO storeProductResponse = new StoreProductInfoVO();
         BeanUtils.copyProperties(storeProduct, storeProductResponse);
@@ -245,7 +246,7 @@ public class StoreProductServiceImpl extends AbstractService<StoreProduct> imple
     @Transactional
     public void save(StoreProductAddRequest request) {
         if (request.getId() != null) {
-            throw new ServiceException("商品已存在");
+            throw new ServiceException(I18nUtil.get("product.already.exists"));
         }
         assignAttributes(request, 0);
     }
@@ -260,7 +261,7 @@ public class StoreProductServiceImpl extends AbstractService<StoreProduct> imple
         // 多规格需要校验规格参数
         if (request.getSpecType().equals(0)) {
             if (request.getAttrValue().size() > 1) {
-                throw new ServiceException("单规格商品属性值不能大于1");
+                throw new ServiceException(I18nUtil.get("the.attribute.value.of.a.single.specification.product.cannot.be.greater.than.1"));
             }
         }
         StoreProduct storeProduct = new StoreProduct();
@@ -374,7 +375,7 @@ public class StoreProductServiceImpl extends AbstractService<StoreProduct> imple
     public void operationStock(Long id, Integer num, String type) {
         StoreProduct storeProduct = storeProductMapper.selectByPrimaryKey(id);
         if(ObjectUtils.isEmpty(storeProduct)){
-            throw new ServiceException("商品不存在id:"+id);
+            throw new ServiceException(I18nUtil.get("product.does.not.exist.id")+id);
         }
 
         StoreProduct forUpdatestoreProduct = new StoreProduct();
@@ -382,7 +383,7 @@ public class StoreProductServiceImpl extends AbstractService<StoreProduct> imple
             int stock = storeProduct.getStock()+num;
             int sales = storeProduct.getSales()-num;
             if(sales<0){
-                throw new ServiceException("销量扣减为负数productId:"+id);
+                throw new ServiceException(I18nUtil.get("sales.deduction.is.negative.productid")+id);
             }
 
             forUpdatestoreProduct.setStock(stock);
@@ -393,7 +394,7 @@ public class StoreProductServiceImpl extends AbstractService<StoreProduct> imple
             int stock = storeProduct.getStock()-num;
             int sales = storeProduct.getSales()+num;
             if(stock<0){
-                throw new ServiceException("库存扣减为负数productId:"+id);
+                throw new ServiceException(I18nUtil.get("inventory.deduction.is.negative.productid")+id);
             }
             forUpdatestoreProduct.setStock(stock);
             forUpdatestoreProduct.setSales(sales);
@@ -403,7 +404,7 @@ public class StoreProductServiceImpl extends AbstractService<StoreProduct> imple
         example.createCriteria().andEqualTo("id",id).andEqualTo("version",storeProduct.getVersion());
         int i = storeProductMapper.updateByConditionSelective(forUpdatestoreProduct, example);
         if (!(i==1)) {
-            throw new ServiceException("更新商品库存失败!商品id = " + id);
+            throw new ServiceException(I18nUtil.get("failed.to.update.product.inventory.product.id") + id);
         }
     }
 

+ 2 - 1
mall-service/src/main/java/com/txz/mall/service/impl/UserSignServiceImpl.java

@@ -9,6 +9,7 @@ import com.txz.mall.dubbo.client.CifAccountDubboServiceClient;
 import com.txz.mall.dubbo.client.OperatingConfigDubboServiceClient;
 import com.txz.mall.model.UserSign;
 import com.txz.mall.service.UserSignService;
+import com.txz.mall.util.I18nUtil;
 import com.txz.mall.util.OrderUtils;
 import com.txz.operating.dto.ConfigDTO;
 import org.apache.commons.lang.time.DateUtils;
@@ -66,7 +67,7 @@ public class UserSignServiceImpl extends AbstractService<UserSign> implements Us
         // 2. 判断今天是否已经签到
         boolean hasSignedToday = hasSignedToday(uid);
         if (hasSignedToday) {
-            throw new RuntimeException("今天已经签到过了!");
+            throw new RuntimeException(I18nUtil.get("you.have.already.checked.in.today"));
         }
 
         // 3. 获取昨天的签到记录,判断是否连续签到

+ 19 - 4
mall-service/src/main/java/com/txz/mall/util/I18nUtil.java

@@ -4,6 +4,9 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.MessageSource;
 import org.springframework.context.i18n.LocaleContextHolder;
 import org.springframework.stereotype.Component;
+import org.springframework.util.ObjectUtils;
+import org.springframework.web.context.request.RequestContextHolder;
+import org.springframework.web.context.request.ServletRequestAttributes;
 
 import javax.annotation.PostConstruct;
 import javax.annotation.Resource;
@@ -39,10 +42,19 @@ public class I18nUtil
     // 静态 get 方法(同上)
     public static String get(String msgKey) {
         try {
-            LocaleContextHolder.setLocale(Locale.US); //英文
-
-          //  Locale bengaliLocale = new Locale("bn", "BD"); //孟加拉文
-         //   LocaleContextHolder.setLocale(bengaliLocale);
+            ServletRequestAttributes sra = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
+            String header = sra.getRequest().getHeader("accept-language");
+            LocaleContextHolder.setLocale(Locale.US);
+            if(ObjectUtils.isEmpty(header)) {
+                if ("en".equals(header)) {
+                    LocaleContextHolder.setLocale(Locale.US);
+                } else if ("zh".equals(header)) {
+                    LocaleContextHolder.setLocale(Locale.SIMPLIFIED_CHINESE);
+                } else if ("bd".equals(header)) {
+                    Locale bengaliLocale = new Locale("bn", "BD"); //孟加拉文
+                    LocaleContextHolder.setLocale(bengaliLocale);
+                }
+            }
 
             return staticMessageSource.getMessage(msgKey, null, LocaleContextHolder.getLocale());
         } catch (Exception e) {
@@ -52,4 +64,7 @@ public class I18nUtil
 
 
 
+
+
+
 }

+ 3 - 2
mall-service/src/main/java/com/txz/mall/web/ro/SendNoticeRO.java

@@ -1,5 +1,6 @@
 package com.txz.mall.web.ro;
 
+import com.txz.mall.util.I18nUtil;
 import lombok.Data;
 
 import javax.validation.constraints.NotNull;
@@ -22,8 +23,8 @@ public class SendNoticeRO {
     /**
      * 用户id
      */
-    @NotNull(message = "用户id不能为空", groups = {Send.class})
-    @Size(min = 1, message = "用户id不能为空", groups = {Send.class})
+    @NotNull(message = "user.id.cannot.be.empty", groups = {Send.class})
+    @Size(min = 1, message = "user.id.cannot.be.empty", groups = {Send.class})
     private List<Long> uids;
     
     public interface Send {

+ 0 - 1
mall-service/src/main/resources/i18n/messages.properties

@@ -1 +0,0 @@
-lala.sasa.qq=hello world

+ 147 - 1
mall-service/src/main/resources/i18n/messages_bn_BD.properties

@@ -1 +1,147 @@
-order.does.not.exist=\u0985\u09B0\u09CD\u09A1\u09BE\u09B0 \u09A8\u09C7\u0987
+order.does.not.exist=\u0985\u09B0\u09CD\u09A1\u09BE\u09B0 \u09A8\u09C7\u0987
+
+
+
+
+this.specification.value.already.exists=
+order.does.not.exist.id=
+group.buying.id.is.empty=
+group.buying.data.does.not.exist.id=
+group.buying.failed.order.refund.application.failed=
+the.activity.is.ongoing.and.the.product.does.not.support.deletion=
+the.added.product.cannot.be.empty=
+product.id.does.not.exist=
+repeatedly.collect.the.same.product=
+please.log.in.first=
+user.not.logged.in=
+failed.to.get.configuration=
+there.are.subcategories.under.the.current.category.please.delete.the.subcategories.firs=
+cannot.find.the.corresponding.activity=
+group.buying.product.does.not.exist.or.is.not.activated=
+group.buying.activity.does.not.exist.id=
+the.sales.deduction.of.group.buying.activity.m_store_combination.is.negative.id=
+the.stock.deduction.of.group.buying.activity.m_store_combination.is.negative.id=
+the.quota.deduction.of.group.buying.activity.m_store_combination.is.negative.id=
+storecombination.inventory.operation.failed.id=
+activity.does.not.exist.id=
+order.does.not.exist=
+the.corresponding.group.buying.does.not.exist=
+group.buying.product.does.not.exist.or.is.not.activated=
+group.buying.is.full=
+the.corresponding.group.buying.product.does.not.exist=
+there.is.no.group.to.join.temporarily=
+all.groups.have.been.joined=
+the.number.of.group.buying.participants.exceeds.the.limit.please.initiate.group.buying.again.pinkid=
+batch.delivery.input.parameter.is.empty.dto=
+batch.delivery.order.orderid.is.empty.orderidlist=
+do.not.exceed.500.orders.for.one.batch.delivery=
+batch.delivery.order.list.does.not.exist=
+the.current.status.does.not.support.delivery.storeorder=
+the.pre-order.details.list.cannot.be.empty=
+user.id.cannot.be.empty=
+user.is.empty.userid=
+product.number.cannot.be.empty=
+product.specification.attribute.value.cannot.be.empty=
+the.purchase.quantity.must.be.greater.than.0=
+product.information.does.not.exist.please.refresh.and.reselect=
+the.product.has.been.deleted.please.refresh.and.reselect=
+the.product.has.been.removed.from.the.shelves.please.refresh.and.reselect=
+insufficient.product.inventory.please.refresh.and.reselect=
+product.specification.information.does.not.exist.please.refresh.and.reselect=
+insufficient.product.specification.inventory.please.refresh.and.reselect=
+insufficient.group.buying.product.inventory=
+group.buying.product.specification.does.not.exist=
+group.buying.product.activity.has.not.started=
+group.buying.product.has.expired=
+insufficient.inventory.of.group.buying.product.specifications=
+group.buying.main.product.does.not.exist=
+insufficient.inventory.of.group.buying.main.product=
+group.buying.main.product.specification.does.not.exist=
+insufficient.inventory.of.group.buying.main.product.specifications=
+the.purchase.times.configuration.corresponding.to.the.user.level.does.not.exist=
+you.have.reached.the.upper.limit.of.the.group.buying.activity.for.this.product=
+pre-order.does.not.exist=
+no.group.buying.orders=
+already.have.a.chosen.one=
+no.group.buying.summary.records=
+the.previous.order.status.does.not.allow.advancement.to.pending.delivery.orderid=
+the.current.order.status.does.not.allow.advancement.to.the.closed.status.of.unwinning.orders.orderid=
+refund.failed.for.users.who.did.not.win.the.group.buying.message=
+group.buying.summary.does.not.exist.id=
+group.buying.overcrowded.id=
+please.upload.files.in.xlsx.or.xls.format=
+please.fill.in.the.content.before.submitting=
+template.download.failed.please.contact.the.administrator=
+corresponding.product.information.not.found=
+product.already.exists=
+the.attribute.value.of.a.single.specification.product.cannot.be.greater.than.1=
+product.does.not.exist.id=
+sales.deduction.is.negative.productid=
+inventory.deduction.is.negative.productid=
+failed.to.update.product.inventory.product.id=
+
+
+duplicate.group.buying=
+duplicate.favorite.of.the.same.product=
+order.list.for.batch.shipment.does.not.exist=
+main.group.buying.product.does.not.exist=
+current.order.status.does.not.allow.progression.to.pending.shipment.orderid=
+failed.to.update.product.inventory.product.id.=
+id=
+order.number=
+user.id=
+user.registered.mobile.phone.number=
+order.status=
+order.amount=
+order.placement.time=
+payment.time=
+product.id=
+product.name=
+product.specification=
+purchase.quantity=
+recipient.name=
+recipient.mobile.phone=
+recipient.detailed.address=
+postcode=
+courier.company=
+express.delivery.courier=
+please.select.a.delivery.address=
+delivery.address.is.incorrect=
+order.is.empty.orderid=
+order.has.been.paid.orderid=
+current.status.does.not.support.payment.orderid=
+failed.to.obtain.user's.wallet.account=
+payment.failed=
+order.does.not.exist.when.initiating.active.refund.id=
+current.status.does.not.support.refund.cancellation.id=
+current.member.is.the.group.leader.and.the.group.has.not.drawn.a.prize;.refund.is.temporarily.not.supported=
+group.buying.information.does.not.exist.when.closing.due.to.group.buying.timeout.id=
+refund.failed.please.initiate.again=
+order.does.not.exist.id=
+current.status.does.not.support.cancellation=
+group.buying.information.does.not.exist.when.canceling.the.order.id=
+current.status.does.not.support.refund.cancellation=
+group.buying.information.does.not.exist.when.initiating.active.refund.id=
+refund.failed.please.initiate.again.orderid=
+current.status.does.not.support.refund.cancellationid=
+scheduled.task.failed.to.close.the.order.order.id=
+order.does.not.exist.when.canceling.the.order.id=
+current.status.does.not.support.cancellation=
+group.buying.information.does.not.exist.when.canceling.the.order.id=
+failed.to.process.ordertimeoutautomaticcancel=
+current.status.does.not.support.shipment=
+courier.tracking.number.or.courier.company.cannot.be.empty=
+purchased.product.information.does.not.exist=
+purchased.product.has.been.deleted=
+purchased.product.has.been.removed.from.shelves=
+insufficient.inventory.for.the.purchased.product=
+specification.information.of.the.purchased.product.does.not.exist=
+insufficient.inventory.for.the.purchased.product=
+order.does.not.exist.orderid=
+group.buying.data.does.not.exist=
+current.order.status.does.not.allow.progression.to.pending.shipment.orderid=
+current.status.does.not.support.receipt.confirmation.storeorder=
+automatic.order.receipt.confirmation=
+current.order.status.does.not.allow.progression.to.pending.shipment.orderid=
+product.export.template=
+you.have.already.checked.in.today=

+ 139 - 2
mall-service/src/main/resources/i18n/messages_en_US.properties

@@ -1,4 +1,3 @@
-order.does.not.exist=Order does not exist
 
 group.order.to.pay=To Pay
 PinkOrderStatusEnum.GROUP_ORDER_TO_PAY=To Pay
@@ -15,4 +14,142 @@ PinkOrderStatusEnum.GROUP_ORDER_CLOSED=Closed
 group.order.to.receive=To Receive
 PinkOrderStatusEnum.GROUP_ORDER_TO_RECEIVE=To Receive
 group.order.completed=Completed
-PinkOrderStatusEnum.GROUP_ORDER_COMPLETED=Completed
+PinkOrderStatusEnum.GROUP_ORDER_COMPLETED=Completed
+
+
+this.specification.value.already.exists=this specification value already exists
+order.does.not.exist.id=order does not exist id
+group.buying.id.is.empty=group buying id is empty
+group.buying.data.does.not.exist.id=group buying data does not exist id
+group.buying.failed.order.refund.application.failed=group buying failed order refund application failed
+the.activity.is.ongoing.and.the.product.does.not.support.deletion=the activity is ongoing and the product does not support deletion
+the.added.product.cannot.be.empty=the added product cannot be empty
+product.id.does.not.exist=product id does not exist
+repeatedly.collect.the.same.product=repeatedly collect the same product
+please.log.in.first=please log in first
+user.not.logged.in=user not logged in
+failed.to.get.configuration=failed to get configuration
+there.are.subcategories.under.the.current.category.please.delete.the.subcategories.firs=there are subcategories under the current category please delete the subcategories first
+cannot.find.the.corresponding.activity=cannot find the corresponding activity
+group.buying.product.does.not.exist.or.is.not.activated=group buying product does not exist or is not activated
+group.buying.activity.does.not.exist.id=group buying activity does not exist id
+the.sales.deduction.of.group.buying.activity.m_store_combination.is.negative.id=the sales deduction of group buying activity m_store_combination is negative id
+the.stock.deduction.of.group.buying.activity.m_store_combination.is.negative.id=the stock deduction of group buying activity m_store_combination is negative id
+the.quota.deduction.of.group.buying.activity.m_store_combination.is.negative.id=the quota deduction of group buying activity m_store_combination is negative id
+storecombination.inventory.operation.failed.id=storecombination inventory operation failed id
+activity.does.not.exist.id=activity does not exist id
+order.does.not.exist=order does not exist
+the.corresponding.group.buying.does.not.exist=the corresponding group buying does not exist
+group.buying.is.full=group buying is full
+the.corresponding.group.buying.product.does.not.exist=the corresponding group buying product does not exist
+there.is.no.group.to.join.temporarily=there is no group to join temporarily
+all.groups.have.been.joined=all groups have been joined
+the.number.of.group.buying.participants.exceeds.the.limit.please.initiate.group.buying.again.pinkid=the number of group buying participants exceeds the limit please initiate group buying again pinkid
+batch.delivery.input.parameter.is.empty.dto=batch delivery input parameter is empty dto
+batch.delivery.order.orderid.is.empty.orderidlist=batch delivery order orderid is empty orderidlist
+do.not.exceed.500.orders.for.one.batch.delivery=do not exceed 500 orders for one batch delivery
+batch.delivery.order.list.does.not.exist=batch delivery order list does not exist
+the.current.status.does.not.support.delivery.storeorder=the current status does not support delivery storeorder
+the.pre-order.details.list.cannot.be.empty=the pre-order details list cannot be empty
+user.id.cannot.be.empty=user id cannot be empty
+user.is.empty.userid=user is empty userid
+product.number.cannot.be.empty=product number cannot be empty
+product.specification.attribute.value.cannot.be.empty=product specification attribute value cannot be empty
+the.purchase.quantity.must.be.greater.than.0=the purchase quantity must be greater than 0
+product.information.does.not.exist.please.refresh.and.reselect=product information does not exist please refresh and reselect
+the.product.has.been.deleted.please.refresh.and.reselect=the product has been deleted please refresh and reselect
+the.product.has.been.removed.from.the.shelves.please.refresh.and.reselect=the product has been removed from the shelves please refresh and reselect
+insufficient.product.inventory.please.refresh.and.reselect=insufficient product inventory please refresh and reselect
+product.specification.information.does.not.exist.please.refresh.and.reselect=product specification information does not exist please refresh and reselect
+insufficient.product.specification.inventory.please.refresh.and.reselect=insufficient product specification inventory please refresh and reselect
+insufficient.group.buying.product.inventory=insufficient group buying product inventory
+group.buying.product.specification.does.not.exist=group buying product specification does not exist
+group.buying.product.activity.has.not.started=group buying product activity has not started
+group.buying.product.has.expired=group buying product has expired
+insufficient.inventory.of.group.buying.product.specifications=insufficient inventory of group buying product specifications
+group.buying.main.product.does.not.exist=group buying main product does not exist
+insufficient.inventory.of.group.buying.main.product=insufficient inventory of group buying main product
+group.buying.main.product.specification.does.not.exist=group buying main product specification does not exist
+insufficient.inventory.of.group.buying.main.product.specifications=insufficient inventory of group buying main product specifications
+the.purchase.times.configuration.corresponding.to.the.user.level.does.not.exist=the purchase times configuration corresponding to the user level does not exist
+you.have.reached.the.upper.limit.of.the.group.buying.activity.for.this.product=you have reached the upper limit of the group buying activity for this product
+pre-order.does.not.exist=pre-order does not exist
+no.group.buying.orders=no group buying orders
+already.have.a.chosen.one=already have a chosen one
+no.group.buying.summary.records=no group buying summary records
+the.previous.order.status.does.not.allow.advancement.to.pending.delivery.orderid=the previous order status does not allow advancement to pending delivery orderid
+the.current.order.status.does.not.allow.advancement.to.the.closed.status.of.unwinning.orders.orderid=the current order status does not allow advancement to the closed status of unwinning orders orderid
+refund.failed.for.users.who.did.not.win.the.group.buying.message=refund failed for users who did not win the group buying message
+group.buying.summary.does.not.exist.id=group buying summary does not exist id
+group.buying.overcrowded.id=group buying overcrowded id
+please.upload.files.in.xlsx.or.xls.format=please upload files in xlsx or xls format
+please.fill.in.the.content.before.submitting=please fill in the content before submitting
+template.download.failed.please.contact.the.administrator=template download failed please contact the administrator
+corresponding.product.information.not.found=corresponding product information not found
+product.already.exists=product already exists
+the.attribute.value.of.a.single.specification.product.cannot.be.greater.than.1=the attribute value of a single specification product cannot be greater than 1
+product.does.not.exist.id=product does not exist id
+sales.deduction.is.negative.productid=sales deduction is negative productid
+inventory.deduction.is.negative.productid=inventory deduction is negative productid
+failed.to.update.product.inventory.product.id=failed to update product inventory product id
+
+
+duplicate.group.buying=duplicate group buying
+duplicate.favorite.of.the.same.product=duplicate favorite of the same product
+order.list.for.batch.shipment.does.not.exist=order list for batch shipment does not exist
+main.group.buying.product.does.not.exist=main group buying product does not exist
+current.order.status.does.not.allow.progression.to.pending.shipment.orderid=current order status does not allow progression to pending shipment orderid
+id=id
+order.number=order number
+user.id=user id
+user.registered.mobile.phone.number=user's registered mobile phone number
+order.status=order status
+order.amount=order amount
+order.placement.time=order placement time
+payment.time=payment time
+product.id=product id
+product.name=product name
+product.specification=product specification
+purchase.quantity=purchase quantity
+recipient.name=recipient's name
+recipient.mobile.phone=recipient's mobile phone
+recipient.detailed.address=recipient's detailed address
+postcode=postcode
+courier.company=courier company
+express.delivery.courier=express delivery courier
+please.select.a.delivery.address=please select a delivery address
+delivery.address.is.incorrect=delivery address is incorrect
+order.is.empty.orderid=order is empty orderid
+order.has.been.paid.orderid=order has been paid orderid
+current.status.does.not.support.payment.orderid=current status does not support payment orderid
+failed.to.obtain.user.wallet.account=failed to obtain user's wallet account
+payment.failed=payment failed
+order.does.not.exist.when.initiating.active.refund.id=order does not exist when initiating active refund id
+current.status.does.not.support.refund.cancellation.id=current status does not support refund cancellation id
+current.member.is.the.group.leader.and.the.group.has.not.drawn.a.prize.refund.is.temporarily.not.supported=current member is the group leader, and the group has not drawn a prize; refund is temporarily not supported:
+group.buying.information.does.not.exist.when.closing.due.to.group.buying.timeout.id=group buying information does not exist when closing due to group buying timeout id
+refund.failed.please.initiate.again=refund failed, please initiate again
+current.status.does.not.support.cancellation=current status does not support cancellation
+group.buying.information.does.not.exist.when.canceling.the.order.id=group buying information does not exist when canceling the order id
+current.status.does.not.support.refund.cancellation=current status does not support refund cancellation
+group.buying.information.does.not.exist.when.initiating.active.refund.id=group buying information does not exist when initiating active refund id
+refund.failed.please.initiate.again.orderid=refund failed, please initiate again orderid
+current.status.does.not.support.refund.cancellationid=current status does not support refund cancellationid
+scheduled.task.failed.to.close.the.order.order.id=scheduled task failed to close the order order id
+order.does.not.exist.when.canceling.the.order.id=order does not exist when canceling the order id
+failed.to.process.ordertimeoutautomaticcancel=failed to process ordertimeoutautomaticcancel
+current.status.does.not.support.shipment=current status does not support shipment
+courier.tracking.number.or.courier.company.cannot.be.empty=courier tracking number or courier company cannot be empty
+purchased.product.information.does.not.exist=purchased product information does not exist
+purchased.product.has.been.deleted=purchased product has been deleted
+purchased.product.has.been.removed.from.shelves=purchased product has been removed from shelves
+insufficient.inventory.for.the.purchased.product=insufficient inventory for the purchased product
+specification.information.of.the.purchased.product.does.not.exist=specification information of the purchased product does not exist
+
+order.does.not.exist.orderid=order does not exist orderid
+group.buying.data.does.not.exist=group buying data does not exist:
+current.status.does.not.support.receipt.confirmation.storeorder=current status does not support receipt confirmation storeorder
+automatic.order.receipt.confirmation=automatic order receipt confirmation
+product.export.template=product export template
+you.have.already.checked.in.today=you have already checked in today
+

+ 158 - 2
mall-service/src/main/resources/i18n/messages_zh_CN.properties

@@ -1,2 +1,158 @@
-\u8BA2\u5355\u4E0D\u5B58\u5728 ID
-\u62FC\u56E2id\u4E3A\u7A7A
+
+group.order.to.pay=To Pay
+PinkOrderStatusEnum.GROUP_ORDER_TO_PAY=To Pay
+group.order.cancellation=Cancellation
+PinkOrderStatusEnum.GROUP_ORDER_CANCELLATION=Cancellation
+group.order.paid=Paid
+PinkOrderStatusEnum.GROUP_ORDER_PAID=Paid
+group.order.refund=Refund
+PinkOrderStatusEnum.GROUP_ORDER_REFUND=Refund
+group.order.to.ship=To Ship
+PinkOrderStatusEnum.GROUP_ORDER_TO_SHIP=To Ship
+group.order.closed=Closed
+PinkOrderStatusEnum.GROUP_ORDER_CLOSED=Closed
+group.order.to.receive=To Receive
+PinkOrderStatusEnum.GROUP_ORDER_TO_RECEIVE=To Receive
+group.order.completed=Completed
+PinkOrderStatusEnum.GROUP_ORDER_COMPLETED=Completed
+
+
+this.specification.value.already.exists=\u6B64\u89C4\u683C\u503C\u5DF2\u7ECF\u5B58\u5728
+order.does.not.exist.id=\u8BA2\u5355\u4E0D\u5B58\u5728 ID\uFF1A
+group.buying.id.is.empty=\u62FC\u56E2id\u4E3A\u7A7A
+group.buying.data.does.not.exist.id=\u62FC\u56E2\u6570\u636E\u4E0D\u5B58\u5728id:
+group.buying.failed.order.refund.application.failed=\u62FC\u56E2\u672A\u6210\u529F,\u8BA2\u5355\u7533\u8BF7\u9000\u6B3E\u5931\u8D25
+the.activity.is.ongoing.and.the.product.does.not.support.deletion=\u6D3B\u52A8\u5F00\u542F\u4E2D\uFF0C\u5546\u54C1\u4E0D\u652F\u6301\u5220\u9664
+the.added.product.cannot.be.empty=\u6DFB\u52A0\u5546\u54C1\u4E0D\u80FD\u4E3A\u7A7A
+product.id.does.not.exist=\u5546\u54C1id\u4E0D\u5B58\u5728
+repeatedly.collect.the.same.product=\u91CD\u590D\u6536\u85CF\u540C\u6837\u7684\u5546\u54C1
+please.log.in.first=\u8BF7\u5148\u767B\u5F55
+user.not.logged.in=\u7528\u6237\u672A\u767B\u9646
+failed.to.get.configuration=\u83B7\u53D6\u914D\u7F6E\u5931\u8D25
+there.are.subcategories.under.the.current.category.please.delete.the.subcategories.first=\u5F53\u524D\u5206\u7C7B\u4E0B\u6709\u5B50\u7C7B\uFF0C\u8BF7\u5148\u5220\u9664\u5B50\u7C7B\uFF01
+cannot.find.the.corresponding.activity=\u627E\u4E0D\u5230\u5BF9\u5E94\u7684\u6D3B\u52A8
+group.buying.product.does.not.exist.or.is.not.activated=\u62FC\u56E2\u5546\u54C1\u4E0D\u5B58\u5728\u6216\u672A\u5F00\u542F
+group.buying.activity.does.not.exist.id=\u62FC\u56E2\u6D3B\u52A8\u4E0D\u5B58\u5728id\uFF1A
+the.sales.deduction.of.group.buying.activity.m_store_combination.is.negative.id=\u62FC\u56E2\u6D3B\u52A8m_store_combination\u9500\u91CF\u6263\u51CF\u4E3A\u8D1F\u6570id\uFF1A
+the.stock.deduction.of.group.buying.activity.m_store_combination.is.negative.id=\u62FC\u56E2\u6D3B\u52A8m_store_combination.stock\u6263\u51CF\u4E3A\u8D1F\u6570id\uFF1A
+the.quota.deduction.of.group.buying.activity.m_store_combination.is.negative.id=\u62FC\u56E2\u6D3B\u52A8m_store_combination.quota\u6263\u51CF\u4E3A\u8D1F\u6570id\uFF1A
+storecombination.inventory.operation.failed.id=StoreCombination\u5E93\u5B58\u64CD\u4F5C\u5931\u8D25id:
+activity.does.not.exist.id=\u6D3B\u52A8\u4E0D\u5B58\u5728id\uFF1A
+order.does.not.exist=\u8BA2\u5355\u4E0D\u5B58\u5728
+the.corresponding.group.buying.does.not.exist=\u5BF9\u5E94\u7684\u62FC\u56E2\u4E0D\u5B58\u5728
+group.buying.product.does.not.exist.or.is.not.activated=\u62FC\u56E2\u5546\u54C1\u4E0D\u5B58\u5728\u6216\u672A\u5F00\u542F
+group.buying.is.full=\u62FC\u56E2\u5DF2\u6EE1
+the.corresponding.group.buying.product.does.not.exist=\u5BF9\u5E94\u62FC\u56E2\u5546\u54C1\u4E0D\u5B58\u5728
+there.is.no.group.to.join.temporarily=\u6682\u65F6\u6CA1\u6709\u53EF\u52A0\u5165\u7684\u56E2
+all.groups.have.been.joined=\u6240\u6709\u7684\u56E2\u5747\u5DF2\u53C2\u52A0
+the.number.of.group.buying.participants.exceeds.the.limit.please.initiate.group.buying.again.pinkid=\u62FC\u56E2\u4EBA\u6570\u8D85\u5458\u8BF7\u91CD\u65B0\u53D1\u8D77\u62FC\u56E2 pinkid\uFF1A
+batch.delivery.input.parameter.is.empty.dto=\u6279\u91CF\u53D1\u8D27\u5165\u53C2\u4E3A\u7A7Adto\uFF1A
+batch.delivery.order.orderid.is.empty.orderidlist=\u6279\u91CF\u53D1\u8D27\u8BA2\u5355orderid\u4E3A\u7A7AorderIdList\uFF1A
+do.not.exceed.500.orders.for.one.batch.delivery=1\u6B21\u6279\u91CF\u53D1\u8D27\u8BA2\u5355\u4E0D\u8981\u8D85\u8FC7500\u6761
+batch.delivery.order.list.does.not.exist=\u6279\u91CF\u53D1\u8D27\u8BA2\u5355\u8BA2\u5355\u5217\u8868\u4E0D\u5B58\u5728\uFF1A
+the.current.status.does.not.support.delivery.storeorder=\u5F53\u524D\u72B6\u6001\u4E0D\u652F\u6301\u53D1\u8D27storeOrder:
+the.pre-order.details.list.cannot.be.empty=\u9884\u4E0B\u5355\u8BA2\u5355\u8BE6\u60C5\u5217\u8868\u4E0D\u80FD\u4E3A\u7A7A
+user.id.cannot.be.empty=\u7528\u6237id\u4E0D\u80FD\u4E3A\u7A7A
+user.is.empty.userid=\u7528\u6237\u4E3A\u7A7AuserId:
+product.number.cannot.be.empty=\u5546\u54C1\u7F16\u53F7\u4E0D\u80FD\u4E3A\u7A7A
+product.specification.attribute.value.cannot.be.empty=\u5546\u54C1\u89C4\u683C\u5C5E\u6027\u503C\u4E0D\u80FD\u4E3A\u7A7A
+the.purchase.quantity.must.be.greater.than.0=\u8D2D\u4E70\u6570\u91CF\u5FC5\u987B\u5927\u4E8E0
+product.information.does.not.exist.please.refresh.and.reselect=\u5546\u54C1\u4FE1\u606F\u4E0D\u5B58\u5728\uFF0C\u8BF7\u5237\u65B0\u540E\u91CD\u65B0\u9009\u62E9
+the.product.has.been.deleted.please.refresh.and.reselect=\u5546\u54C1\u5DF2\u5220\u9664\uFF0C\u8BF7\u5237\u65B0\u540E\u91CD\u65B0\u9009\u62E9
+the.product.has.been.removed.from.the.shelves.please.refresh.and.reselect=\u5546\u54C1\u5DF2\u4E0B\u67B6\uFF0C\u8BF7\u5237\u65B0\u540E\u91CD\u65B0\u9009\u62E9
+insufficient.product.inventory.please.refresh.and.reselect=\u5546\u54C1\u5E93\u5B58\u4E0D\u8DB3\uFF0C\u8BF7\u5237\u65B0\u540E\u91CD\u65B0\u9009\u62E9
+product.specification.information.does.not.exist.please.refresh.and.reselect=\u5546\u54C1\u89C4\u683C\u4FE1\u606F\u4E0D\u5B58\u5728\uFF0C\u8BF7\u5237\u65B0\u540E\u91CD\u65B0\u9009\u62E9
+insufficient.product.specification.inventory.please.refresh.and.reselect=\u5546\u54C1\u89C4\u683C\u5E93\u5B58\u4E0D\u8DB3\uFF0C\u8BF7\u5237\u65B0\u540E\u91CD\u65B0\u9009\u62E9
+insufficient.group.buying.product.inventory=\u62FC\u56E2\u5546\u54C1\u5E93\u5B58\u4E0D\u8DB3
+group.buying.product.specification.does.not.exist=\u62FC\u56E2\u5546\u54C1\u89C4\u683C\u4E0D\u5B58\u5728
+group.buying.product.activity.has.not.started=\u62FC\u56E2\u5546\u54C1\u6D3B\u52A8\u672A\u5F00\u59CB
+group.buying.product.has.expired=\u62FC\u56E2\u5546\u54C1\u5DF2\u8FC7\u671F
+insufficient.inventory.of.group.buying.product.specifications=\u62FC\u56E2\u5546\u54C1\u89C4\u683C\u5E93\u5B58\u4E0D\u8DB3
+group.buying.main.product.does.not.exist=\u62FC\u56E2\u4E3B\u5546\u54C1\u4E0D\u5B58\u5728
+insufficient.inventory.of.group.buying.main.product=\u62FC\u56E2\u4E3B\u5546\u54C1\u5E93\u5B58\u4E0D\u8DB3
+group.buying.main.product.specification.does.not.exist=\u62FC\u56E2\u4E3B\u5546\u54C1\u89C4\u683C\u4E0D\u5B58\u5728
+insufficient.inventory.of.group.buying.main.product.specifications=\u62FC\u56E2\u4E3B\u5546\u54C1\u89C4\u683C\u5E93\u5B58\u4E0D\u8DB3
+the.purchase.times.configuration.corresponding.to.the.user.level.does.not.exist=\u7528\u6237\u7B49\u7EA7\u5BF9\u5E94\u7684\u8D2D\u4E70\u6B21\u6570\u914D\u7F6E\u4E0D\u5B58\u5728
+you.have.reached.the.upper.limit.of.the.group.buying.activity.for.this.product=\u60A8\u5DF2\u8FBE\u5230\u8BE5\u5546\u54C1\u62FC\u56E2\u6D3B\u52A8\u4E0A\u9650
+pre-order.does.not.exist=\u9884\u4E0B\u5355\u8BA2\u5355\u4E0D\u5B58\u5728
+no.group.buying.orders=\u6CA1\u6709\u62FC\u56E2\u8BA2\u5355
+already.have.a.chosen.one=\u5DF2\u6709\u5929\u9009
+no.group.buying.summary.records=\u6CA1\u6709\u62FC\u56E2\u6C47\u603B\u8BB0\u5F55
+the.previous.order.status.does.not.allow.advancement.to.pending.delivery.orderid=\u524D\u8BA2\u5355\u72B6\u6001\u4E0D\u5141\u8BB8\u63A8\u8FDB\u5230\u5F85\u53D1\u8D27order.id\uFF1A
+the.current.order.status.does.not.allow.advancement.to.the.closed.status.of.unwinning.orders.orderid=\u5F53\u524D\u8BA2\u5355\u72B6\u6001\u4E0D\u5141\u8BB8\u63A8\u8FDB\u5230\u672A\u4E2D\u5956\u8BA2\u5355\u5173\u95ED\u72B6\u6001 order.id\uFF1A
+refund.failed.for.users.who.did.not.win.the.group.buying.message=\u62FC\u56E2\u6210\u56E2\u672A\u4E2D\u5956\u7528\u6237\u9000\u6B3E\u5931\u8D25message:
+group.buying.summary.does.not.exist.id=\u62FC\u56E2\u6C47\u603B\u4E0D\u5B58\u5728 id:
+group.buying.overcrowded.id=\u62FC\u56E2\u8D85\u5458 id:
+please.upload.files.in.xlsx.or.xls.format=\u8BF7\u4F20\u5165xlsx\u6216xls\u6587\u6863\u683C\u5F0F\u6587\u4EF6
+please.fill.in.the.content.before.submitting=\u8BF7\u586B\u5199\u5185\u5BB9\u540E\u518D\u63D0\u4EA4!
+template.download.failed.please.contact.the.administrator=\u6A21\u677F\u4E0B\u8F7D\u5931\u8D25, \u8BF7\u8054\u7CFB\u7BA1\u7406\u5458
+corresponding.product.information.not.found=\u672A\u627E\u5230\u5BF9\u5E94\u5546\u54C1\u4FE1\u606F
+product.already.exists=\u5546\u54C1\u5DF2\u5B58\u5728
+the.attribute.value.of.a.single.specification.product.cannot.be.greater.than.1=\u5355\u89C4\u683C\u5546\u54C1\u5C5E\u6027\u503C\u4E0D\u80FD\u5927\u4E8E1
+product.does.not.exist.id=\u5546\u54C1\u4E0D\u5B58\u5728id\uFF1A
+sales.deduction.is.negative.productid=\u9500\u91CF\u6263\u51CF\u4E3A\u8D1F\u6570productId\uFF1A
+inventory.deduction.is.negative.productid=\u5E93\u5B58\u6263\u51CF\u4E3A\u8D1F\u6570productId\uFF1A
+failed.to.update.product.inventory.product.id=\u66F4\u65B0\u5546\u54C1\u5E93\u5B58\u5931\u8D25\uFF01\u5546\u54C1id =
+
+
+
+
+duplicate.group.buying=\u91CD\u590D\u62FC\u56E2
+duplicate.favorite.of.the.same.product=\u91CD\u590D\u6536\u85CF\u540C\u6837\u7684\u5546\u54C1
+order.list.for.batch.shipment.does.not.exist=\u6279\u91CF\u53D1\u8D27\u8BA2\u5355\u8BA2\u5355\u5217\u8868\u4E0D\u5B58\u5728\uFF1A
+main.group.buying.product.does.not.exist=\u62FC\u56E2\u4E3B\u5546\u54C1\u4E0D\u5B58\u5728
+current.order.status.does.not.allow.progression.to.pending.shipment.orderid=\u5F53\u524D\u8BA2\u5355\u72B6\u6001\u4E0D\u5141\u8BB8\u63A8\u8FDB\u5230\u5F85\u53D1\u8D27order.id\uFF1A
+id=ID
+order.number=\u8BA2\u5355\u53F7
+user.id=\u7528\u6237ID
+user.registered.mobile.phone.number=\u7528\u6237\u6CE8\u518C\u624B\u673A\u53F7
+order.status=\u8BA2\u5355\u72B6\u6001
+order.amount=\u8BA2\u5355\u91D1\u989D
+order.placement.time=\u4E0B\u5355\u65F6\u95F4
+payment.time=\u652F\u4ED8\u65F6\u95F4
+product.id=\u5546\u54C1ID
+product.name=\u5546\u54C1\u540D\u79F0
+product.specification=\u5546\u54C1\u89C4\u683C
+purchase.quantity=\u8D2D\u4E70\u6570\u91CF
+recipient.name=\u6536\u4EF6\u4EBA\u59D3\u540D
+recipient.mobile.phone=\u6536\u4EF6\u4EBA\u624B\u673A
+recipient.detailed.address=\u6536\u4EF6\u4EBA\u8BE6\u7EC6\u5730\u5740
+postcode=\u90AE\u7F16
+courier.company=\u5FEB\u9012\u516C\u53F8
+express.delivery.courier=\u5FEB\u9012
+please.select.a.delivery.address=\u8BF7\u9009\u62E9\u6536\u8D27\u5730\u5740
+delivery.address.is.incorrect=\u6536\u8D27\u5730\u5740\u6709\u8BEF
+order.is.empty.orderid=\u8BA2\u5355\u4E3A\u7A7AorderId:
+order.has.been.paid.orderid=\u8BA2\u5355\u5DF2\u652F\u4ED8orderId:
+current.status.does.not.support.payment.orderid=\u5F53\u524D\u72B6\u6001\u4E0D\u652F\u6301\u53BB\u652F\u6301\u53BB\u652F\u4ED8orderId:
+failed.to.obtain.user.wallet.account=\u83B7\u53D6\u7528\u6237\u94B1\u5305\u8D26\u6237\u5931\u8D25
+payment.failed=\u652F\u4ED8\u5931\u8D25
+order.does.not.exist.when.initiating.active.refund.id=\u8BA2\u5355\u4E3B\u52A8\u9000\u6B3E\u65F6\u8BA2\u5355\u4E0D\u5B58\u5728id:
+current.status.does.not.support.refund.cancellation.id=\u5F53\u524D\u72B6\u6001\u4E0D\u652F\u6301\u9000\u6B3E\u5173\u95EDid\uFF1A
+current.member.is.the.group.leader.and.the.group.has.not.drawn.a.prize.refund.is.temporarily.not.supported=\u5F53\u524D\u6210\u5458\u662F\u56E2\u957F\uFF0C\u4E14\u8BE5\u56E2\u672A\u5F00\u5956\uFF0C\u6682\u65F6\u4E0D\u652F\u6301\u9000\u6B3E\uFF1A
+group.buying.information.does.not.exist.when.closing.due.to.group.buying.timeout.id=\u62FC\u56E2\u65F6\u95F4\u8FC7\u671F\u5173\u95ED\u65F6\u65F6\u62FC\u56E2\u4FE1\u606F\u4E0D\u5B58\u5728ID\uFF1A
+refund.failed.please.initiate.again=\u9000\u6B3E\u5931\u8D25\u8BF7\u91CD\u65B0\u53D1\u8D77
+current.status.does.not.support.cancellation=\u5F53\u524D\u72B6\u6001\u4E0D\u652F\u6301\u53D6\u6D88
+group.buying.information.does.not.exist.when.canceling.the.order.id=\u8BA2\u5355\u53D6\u6D88\u65F6\u62FC\u56E2\u4FE1\u606F\u4E0D\u5B58\u5728ID\uFF1A
+current.status.does.not.support.refund.cancellation=\u5F53\u524D\u72B6\u6001\u4E0D\u652F\u6301\u9000\u6B3E\u5173\u95ED
+group.buying.information.does.not.exist.when.initiating.active.refund.id=\u4E3B\u52A8\u53D1\u8D77\u9000\u6B3E\u65F6\u62FC\u56E2\u4FE1\u606F\u4E0D\u5B58\u5728ID\uFF1A
+refund.failed.please.initiate.again.orderid=\u9000\u6B3E\u5931\u8D25\u8BF7\u91CD\u65B0\u53D1\u8D77orderId:
+current.status.does.not.support.refund.cancellationid=\u5F53\u524D\u72B6\u6001\u4E0D\u652F\u6301\u9000\u6B3E\u5173\u95ED:id
+scheduled.task.failed.to.close.the.order.order.id=\u5B9A\u65F6\u4EFB\u52A1\u5173\u5355\u5904\u7406\u5931\u8D25\u8BA2\u5355id\uFF1A
+order.does.not.exist.when.canceling.the.order.id=\u8BA2\u5355\u53D6\u6D88\u65F6\u8BA2\u5355\u4E0D\u5B58\u5728id:
+failed.to.process.ordertimeoutautomaticcancel=orderTimeoutAutomaticCancel\u5904\u7406\u5931\u8D25
+current.status.does.not.support.shipment=\u5F53\u524D\u72B6\u6001\u4E0D\u652F\u6301\u53D1\u8D27
+courier.tracking.number.or.courier.company.cannot.be.empty=\u5FEB\u9012\u5355\u53F7\u6216\u5FEB\u9012\u516C\u53F8\u4E0D\u80FD\u4E3A\u7A7A
+purchased.product.information.does.not.exist=\u8D2D\u4E70\u7684\u5546\u54C1\u4FE1\u606F\u4E0D\u5B58\u5728
+purchased.product.has.been.deleted=\u8D2D\u4E70\u7684\u5546\u54C1\u5DF2\u5220\u9664
+purchased.product.has.been.removed.from.shelves=\u8D2D\u4E70\u7684\u5546\u54C1\u5DF2\u4E0B\u67B6
+insufficient.inventory.for.the.purchased.product=\u8D2D\u4E70\u7684\u5546\u54C1\u5E93\u5B58\u4E0D\u8DB3
+specification.information.of.the.purchased.product.does.not.exist=\u8D2D\u4E70\u7684\u5546\u54C1\u89C4\u683C\u4FE1\u606F\u4E0D\u5B58\u5728
+order.does.not.exist.orderid=\u8BA2\u5355\u4E0D\u5B58\u5728OrderId\uFF1A
+group.buying.data.does.not.exist=\u62FC\u56E2\u6570\u636E\u4E0D\u5B58\u5728\uFF1A
+current.status.does.not.support.receipt.confirmation.storeorder=\u5F53\u524D\u72B6\u6001\u4E0D\u652F\u6301\u7B7E\u6536storeOrder:
+automatic.order.receipt.confirmation=\u8BA2\u5355\u81EA\u52A8\u7B7E\u6536
+product.export.template=\u5546\u54C1\u5BFC\u51FA\u6A21\u677F
+you.have.already.checked.in.today=\u4ECA\u5929\u5DF2\u7ECF\u7B7E\u5230\u8FC7\u4E86\uFF01
+
+

Неке датотеке нису приказане због велике количине промена