Commit 70b9ec3ef2fb84a82975515d7fc76fdec05bd827

Authored by zhongnanhuang
1 parent 91f82d07

商品价格显示修改

shop/pom.xml
@@ -13,6 +13,11 @@ @@ -13,6 +13,11 @@
13 13
14 <dependencies> 14 <dependencies>
15 <dependency> 15 <dependency>
  16 + <groupId>commons-collections</groupId>
  17 + <artifactId>commons-collections</artifactId>
  18 + <version>3.2.1</version>
  19 + </dependency>
  20 + <dependency>
16 <groupId>org.springframework.boot</groupId> 21 <groupId>org.springframework.boot</groupId>
17 <artifactId>spring-boot-starter-web</artifactId> 22 <artifactId>spring-boot-starter-web</artifactId>
18 <!-- <version>2.2.5.RELEASE</version>--> 23 <!-- <version>2.2.5.RELEASE</version>-->
shop/src/main/java/com/canrd/shop/common/constant/PriceConstants.java 0 → 100644
  1 +package com.canrd.shop.common.constant;
  2 +
  3 +/**
  4 + * @author zhongnanhuang
  5 + * @version 1.0
  6 + * @project canrd-services
  7 + * @description
  8 + * @date 2024/11/7 16:54:11
  9 + */
  10 +public class PriceConstants {
  11 + public static final String USD = "USD";
  12 +}
shop/src/main/java/com/canrd/shop/common/constant/SwitchControlConstants.java 0 → 100644
  1 +package com.canrd.shop.common.constant;
  2 +
  3 +/**
  4 + * @author zhongnanhuang
  5 + * @version 1.0
  6 + * @project canrd-services
  7 + * @description
  8 + * @date 2024/11/7 16:00:18
  9 + */
  10 +public class SwitchControlConstants {
  11 +
  12 + public static final String PRODUCT_PRICE_SHOW = "product_price_show";
  13 +}
shop/src/main/java/com/canrd/shop/controller/ProductController.java
@@ -7,11 +7,21 @@ import com.canrd.shop.module.vo.ProductQueryVO; @@ -7,11 +7,21 @@ import com.canrd.shop.module.vo.ProductQueryVO;
7 import com.canrd.shop.module.vo.ProductVO; 7 import com.canrd.shop.module.vo.ProductVO;
8 import com.canrd.shop.service.ProductCategoryService; 8 import com.canrd.shop.service.ProductCategoryService;
9 import com.canrd.shop.service.ProductService; 9 import com.canrd.shop.service.ProductService;
  10 +import org.apache.commons.collections.Transformer;
  11 +import org.apache.commons.collections.functors.ChainedTransformer;
  12 +import org.apache.commons.collections.functors.ConstantTransformer;
  13 +import org.apache.commons.collections.functors.InvokerTransformer;
  14 +import org.apache.commons.collections.keyvalue.TiedMapEntry;
  15 +import org.apache.commons.collections.map.LazyMap;
10 import org.springframework.beans.factory.annotation.Autowired; 16 import org.springframework.beans.factory.annotation.Autowired;
11 import org.springframework.validation.annotation.Validated; 17 import org.springframework.validation.annotation.Validated;
12 import org.springframework.web.bind.annotation.*; 18 import org.springframework.web.bind.annotation.*;
13 19
14 import javax.annotation.Resource; 20 import javax.annotation.Resource;
  21 +import java.io.*;
  22 +import java.lang.reflect.Field;
  23 +import java.util.HashMap;
  24 +import java.util.Map;
15 25
16 /** 26 /**
17 * (Product)表控制层 27 * (Product)表控制层
shop/src/main/java/com/canrd/shop/module/dto/ProductDO.java
@@ -6,6 +6,7 @@ import lombok.*; @@ -6,6 +6,7 @@ import lombok.*;
6 import lombok.experimental.SuperBuilder; 6 import lombok.experimental.SuperBuilder;
7 7
8 import java.io.Serializable; 8 import java.io.Serializable;
  9 +import java.math.BigDecimal;
9 import java.util.Date; 10 import java.util.Date;
10 11
11 /** 12 /**
@@ -93,7 +94,7 @@ public class ProductDO implements Serializable { @@ -93,7 +94,7 @@ public class ProductDO implements Serializable {
93 94
94 private Integer point; 95 private Integer point;
95 96
96 - private Double price; 97 + private BigDecimal price;
97 98
98 private String productimageliststore; 99 private String productimageliststore;
99 100
shop/src/main/java/com/canrd/shop/module/vo/ProductVO.java
@@ -4,6 +4,7 @@ import lombok.*; @@ -4,6 +4,7 @@ import lombok.*;
4 import lombok.experimental.SuperBuilder; 4 import lombok.experimental.SuperBuilder;
5 5
6 import java.io.Serializable; 6 import java.io.Serializable;
  7 +import java.math.BigDecimal;
7 import java.util.Date; 8 import java.util.Date;
8 import java.util.List; 9 import java.util.List;
9 10
@@ -92,7 +93,8 @@ public class ProductVO implements Serializable { @@ -92,7 +93,8 @@ public class ProductVO implements Serializable {
92 93
93 private Integer point; 94 private Integer point;
94 95
95 - private Double price; 96 + private BigDecimal price;
  97 + private Boolean priceShow;
96 98
97 private String productimageliststore; 99 private String productimageliststore;
98 100
shop/src/main/java/com/canrd/shop/module/vo/TickeyTypeVO.java
1 package com.canrd.shop.module.vo; 1 package com.canrd.shop.module.vo;
2 2
3 -import lombok.AllArgsConstructor;  
4 -import lombok.Data;  
5 -import lombok.EqualsAndHashCode;  
6 -import lombok.NoArgsConstructor;  
7 -import lombok.ToString; 3 +import lombok.*;
8 import lombok.experimental.SuperBuilder; 4 import lombok.experimental.SuperBuilder;
9 5
10 import java.math.BigDecimal; 6 import java.math.BigDecimal;
@@ -35,4 +31,13 @@ public class TickeyTypeVO { @@ -35,4 +31,13 @@ public class TickeyTypeVO {
35 * 产品价格 31 * 产品价格
36 */ 32 */
37 private BigDecimal price; 33 private BigDecimal price;
  34 +
  35 + @Setter
  36 + private Boolean priceShow;
  37 +
  38 + public Boolean getPriceShow(){
  39 + return price != null;
  40 + }
  41 +
  42 + private String priceUnit;
38 } 43 }
shop/src/main/java/com/canrd/shop/service/impl/ProductServiceImpl.java
@@ -8,7 +8,9 @@ import com.baomidou.mybatisplus.core.metadata.IPage; @@ -8,7 +8,9 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
8 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; 8 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
9 import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 9 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
10 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 10 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  11 +import com.canrd.shop.common.constant.PriceConstants;
11 import com.canrd.shop.common.constant.ServerResult; 12 import com.canrd.shop.common.constant.ServerResult;
  13 +import com.canrd.shop.common.constant.SwitchControlConstants;
12 import com.canrd.shop.common.utils.ChatGptUtil; 14 import com.canrd.shop.common.utils.ChatGptUtil;
13 import com.canrd.shop.common.utils.PageUtils; 15 import com.canrd.shop.common.utils.PageUtils;
14 import com.canrd.shop.common.utils.StringUtils; 16 import com.canrd.shop.common.utils.StringUtils;
@@ -22,18 +24,18 @@ import com.canrd.shop.module.dto.TicketTypeDO; @@ -22,18 +24,18 @@ import com.canrd.shop.module.dto.TicketTypeDO;
22 import com.canrd.shop.module.vo.ProductAttributeVO; 24 import com.canrd.shop.module.vo.ProductAttributeVO;
23 import com.canrd.shop.module.vo.ProductQueryVO; 25 import com.canrd.shop.module.vo.ProductQueryVO;
24 import com.canrd.shop.module.vo.ProductVO; 26 import com.canrd.shop.module.vo.ProductVO;
25 -import com.canrd.shop.service.BrandService;  
26 -import com.canrd.shop.service.ProductAttributeMapStoreService;  
27 -import com.canrd.shop.service.ProductAttributeService;  
28 -import com.canrd.shop.service.ProductService;  
29 -import com.canrd.shop.service.TicketTypeService; 27 +import com.canrd.shop.module.vo.TickeyTypeVO;
  28 +import com.canrd.shop.service.*;
30 import com.google.common.collect.Lists; 29 import com.google.common.collect.Lists;
31 import com.google.common.collect.Sets; 30 import com.google.common.collect.Sets;
32 import lombok.extern.slf4j.Slf4j; 31 import lombok.extern.slf4j.Slf4j;
  32 +import org.apache.commons.lang3.BooleanUtils;
33 import org.springframework.beans.factory.annotation.Autowired; 33 import org.springframework.beans.factory.annotation.Autowired;
34 import org.springframework.stereotype.Service; 34 import org.springframework.stereotype.Service;
35 35
36 import java.io.IOException; 36 import java.io.IOException;
  37 +import java.math.BigDecimal;
  38 +import java.math.RoundingMode;
37 import java.util.*; 39 import java.util.*;
38 import java.util.function.Function; 40 import java.util.function.Function;
39 import java.util.stream.Collectors; 41 import java.util.stream.Collectors;
@@ -70,6 +72,9 @@ public class ProductServiceImpl extends ServiceImpl&lt;ProductMapper, ProductDO&gt; im @@ -70,6 +72,9 @@ public class ProductServiceImpl extends ServiceImpl&lt;ProductMapper, ProductDO&gt; im
70 @Autowired 72 @Autowired
71 private ChatGptUtil chatGptUtil; 73 private ChatGptUtil chatGptUtil;
72 74
  75 + @Autowired
  76 + private ISwitchControlService switchControlService;
  77 +
73 /** 78 /**
74 * 通过ID查询单条数据 79 * 通过ID查询单条数据
75 * <p> 80 * <p>
@@ -86,6 +91,7 @@ public class ProductServiceImpl extends ServiceImpl&lt;ProductMapper, ProductDO&gt; im @@ -86,6 +91,7 @@ public class ProductServiceImpl extends ServiceImpl&lt;ProductMapper, ProductDO&gt; im
86 if (Objects.isNull(productDO)) { 91 if (Objects.isNull(productDO)) {
87 return ServerResult.success(null); 92 return ServerResult.success(null);
88 } 93 }
  94 +
89 ProductVO productVO = productConverter.convertToProductVO(productDO); 95 ProductVO productVO = productConverter.convertToProductVO(productDO);
90 if (StringUtils.isNotBlank(productDO.getBrandId())) { 96 if (StringUtils.isNotBlank(productDO.getBrandId())) {
91 BrandDO brandDO = brandService.getById(productDO.getBrandId()); 97 BrandDO brandDO = brandService.getById(productDO.getBrandId());
@@ -109,11 +115,20 @@ public class ProductServiceImpl extends ServiceImpl&lt;ProductMapper, ProductDO&gt; im @@ -109,11 +115,20 @@ public class ProductServiceImpl extends ServiceImpl&lt;ProductMapper, ProductDO&gt; im
109 }); 115 });
110 productVO.setProductAttributeList(productAttributeVOS); 116 productVO.setProductAttributeList(productAttributeVOS);
111 } 117 }
112 - 118 + // 金额处理
  119 + Boolean productPriceShow = switchControlService.getEnabledByName(SwitchControlConstants.PRODUCT_PRICE_SHOW);
113 List<TicketTypeDO> ticketTypeDOS = ticketTypeService.selectByProductId(productDO.getId()); 120 List<TicketTypeDO> ticketTypeDOS = ticketTypeService.selectByProductId(productDO.getId());
114 if(CollectionUtils.isNotEmpty(ticketTypeDOS)){ 121 if(CollectionUtils.isNotEmpty(ticketTypeDOS)){
115 - productVO.setTicketTypes(ticketTypeDOS.stream().map(productConverter::convertToTickeyTypeVO).collect(Collectors.toList())); 122 + List<TickeyTypeVO> typeVOS = ticketTypeDOS.stream().map(productConverter::convertToTickeyTypeVO).collect(Collectors.toList());
  123 + for (TickeyTypeVO typeVO : typeVOS) {
  124 + handleProductPriceShow(productPriceShow,typeVO);
  125 + }
  126 + productVO.setTicketTypes(typeVOS);
116 } 127 }
  128 +
  129 + productVO.setPriceShow(productPriceShow);
  130 +
  131 +
117 return ServerResult.success(productVO); 132 return ServerResult.success(productVO);
118 } 133 }
119 134
@@ -220,9 +235,28 @@ public class ProductServiceImpl extends ServiceImpl&lt;ProductMapper, ProductDO&gt; im @@ -220,9 +235,28 @@ public class ProductServiceImpl extends ServiceImpl&lt;ProductMapper, ProductDO&gt; im
220 List<ProductDO> allProductList = Lists.newArrayList(); 235 List<ProductDO> allProductList = Lists.newArrayList();
221 allProductList.addAll(accurateProducts); 236 allProductList.addAll(accurateProducts);
222 allProductList.addAll(similarProductList); 237 allProductList.addAll(similarProductList);
  238 +
223 return pager(productQueryVO,allProductList); 239 return pager(productQueryVO,allProductList);
224 } 240 }
225 241
  242 + private void handleProductPriceShow(Boolean productPriceShow, TickeyTypeVO tickeyTypeVO) {
  243 + if (BooleanUtils.isTrue(productPriceShow)) {
  244 + BigDecimal price = tickeyTypeVO.getPrice();
  245 + if (price == null) {
  246 + return;
  247 + }
  248 + BigDecimal computedPrice = price
  249 + .divide(new BigDecimal("0.7"), 2, RoundingMode.HALF_UP)
  250 + .multiply(new BigDecimal("0.148"))
  251 + .setScale(2, RoundingMode.HALF_UP);
  252 + tickeyTypeVO.setPrice(computedPrice);
  253 + tickeyTypeVO.setPriceUnit(PriceConstants.USD);
  254 + return;
  255 + }
  256 +
  257 + tickeyTypeVO.setPrice(null);
  258 + }
  259 +
226 public ServerResult pager(ProductQueryVO productQueryVO,List<ProductDO> allProductList) { 260 public ServerResult pager(ProductQueryVO productQueryVO,List<ProductDO> allProductList) {
227 int pageSize = productQueryVO.getPageSize(); 261 int pageSize = productQueryVO.getPageSize();
228 int pageNumber = productQueryVO.getPageNo(); 262 int pageNumber = productQueryVO.getPageNo();
shop/src/main/resources/application-prod.yml
@@ -59,7 +59,7 @@ spring: @@ -59,7 +59,7 @@ spring:
59 testOnReturn: true 59 testOnReturn: true
60 password: 123456 60 password: 123456
61 time-between-eviction-runs-millis: 1000 61 time-between-eviction-runs-millis: 1000
62 - url: jdbc:mysql://47.89.254.121:3306/canrd_overseas?useUnicode=true&characterEncoding=UTF-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=Asia/Shanghai&useSSL=false&autoReconnect=true&failOverReadOnly=false&maxReconnects=10&allowMultiQueries=true&useAffectedRows=true&autoReconnectForPools=true 62 + url: jdbc:mysql://localhost:3306/canrd_overseas?useUnicode=true&characterEncoding=UTF-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=Asia/Shanghai&useSSL=false&autoReconnect=true&failOverReadOnly=false&maxReconnects=10&allowMultiQueries=true&useAffectedRows=true&autoReconnectForPools=true
63 username: root 63 username: root
64 64
65 65
shop/src/main/resources/application.yml
@@ -3,7 +3,7 @@ server: @@ -3,7 +3,7 @@ server:
3 3
4 spring: 4 spring:
5 profiles: 5 profiles:
6 - active: test 6 + active: prod
7 mvc: 7 mvc:
8 throw-exception-if-no-handler-found: true 8 throw-exception-if-no-handler-found: true
9 resources: 9 resources: