瀏覽代碼

呵呵商城改版part1

Aslee 3 年之前
父節點
當前提交
d755e1492f

+ 17 - 0
src/main/java/com/caimei/controller/CouponApi.java

@@ -128,4 +128,21 @@ public class CouponApi {
         }
         return couponService.couponsByProductIds(userId, productIds);
     }
+
+    @ApiOperation("首页优惠券列表")
+    @ApiImplicitParams({
+            @ApiImplicitParam(required = false, name = "userId", value = "机构用户id"),
+            @ApiImplicitParam(required = false, name = "pageNum", value = "页码"),
+            @ApiImplicitParam(required = false, name = "pageSize", value = "每页数量")
+    })
+    @GetMapping("/home")
+    public ResponseJson<List<CouponVo>> homeCouponList(Integer userId) {
+        return couponService.homeCouponList(userId);
+    }
+
+    @ApiOperation("分享券广告弹窗")
+    @GetMapping("/share/display")
+    public ResponseJson<String> shareCouponDisplay() {
+        return couponService.shareCouponDisplay();
+    }
 }

+ 5 - 5
src/main/java/com/caimei/controller/HeHeApi.java

@@ -25,8 +25,8 @@ import java.util.Map;
 @RequiredArgsConstructor
 @RequestMapping("/user/he")
 public class HeHeApi {
-    @Value("${caimei.userUrl}")
-    private String userUrl;
+    @Value("${caimei.cloudApi}")
+    private String cloudApi;
 
     @Autowired
     private CouponService couponService;
@@ -34,7 +34,7 @@ public class HeHeApi {
     @ApiOperation("微信授权登录")
     @GetMapping("/authorization")
     public ResponseJson<String> authorization(String code) throws Exception {
-        String url = userUrl + "/user/he/authorization?code=" + code;
+        String url = cloudApi + "/user/he/authorization?code=" + code;
         String parameters = HttpRequest.sendGet(url);
         return getResponseJson(parameters);
     }
@@ -42,7 +42,7 @@ public class HeHeApi {
     @ApiOperation("手机号验证码登录")
     @PostMapping("/mobile/login")
     public ResponseJson<String> mobileLogin(@RequestBody Map<String, Object> param) throws Exception {
-        String url = userUrl + "/user/he/mobile/login";
+        String url = cloudApi + "/user/he/mobile/login";
         String parameters = HttpRequest.sendPost(url, param);
         return getResponseJson(parameters);
     }
@@ -50,7 +50,7 @@ public class HeHeApi {
     @ApiOperation("发送手机号验证码")
     @GetMapping("/send")
     public ResponseJson<String> sendVerificationCode(String mobile) throws Exception {
-        String url = userUrl + "/user/he/send?mobile=" + mobile;
+        String url = cloudApi + "/user/he/send?mobile=" + mobile;
         String parameters = HttpRequest.sendGet(url);
         return getResponseJson(parameters);
     }

+ 1 - 0
src/main/java/com/caimei/controller/OrderSubmitApi.java

@@ -40,6 +40,7 @@ public class OrderSubmitApi {
             @ApiImplicitParam(name = "productId", value = "立即购买商品ID", required = false),
             @ApiImplicitParam(name = "productCount", value = "立即购买商品数量", required = false),
             @ApiImplicitParam(name = "heUserId", value = "分销者用户id", required = false),
+            @ApiImplicitParam(name = "collageFlag", value = "是否拼团购买:0不拼团,1拼团", required = false),
             @ApiImplicitParam(name = "collageFlag", value = "是否拼团购买:0不拼团,1拼团", required = false)
     })
     @GetMapping("/confirm")

+ 73 - 35
src/main/java/com/caimei/controller/ProductApi.java

@@ -1,16 +1,20 @@
 package com.caimei.controller;
 
+import com.alibaba.fastjson.JSONObject;
 import com.caimei.model.ResponseJson;
+import com.caimei.model.vo.CmHeHeImageVo;
 import com.caimei.model.vo.FloorVo;
 import com.caimei.model.vo.HeHeActivityVo;
 import com.caimei.model.vo.ProductVo;
 import com.caimei.service.ProductService;
+import com.caimei.util.HttpRequest;
 import com.github.pagehelper.PageInfo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
 import lombok.RequiredArgsConstructor;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestParam;
@@ -32,19 +36,27 @@ import java.util.Map;
 public class ProductApi {
     private final ProductService productService;
 
+    @Value("${caimei.cloudApi}")
+    private String cloudApi;
+
     @ApiOperation("轮播图")
     @GetMapping("/carousel")
-    public ResponseJson<List<String>> carouselFigure() {
+    public ResponseJson<List<CmHeHeImageVo>> carouselFigure() {
         return productService.carouselFigure();
     }
 
     @ApiOperation("首页楼层")
-    @GetMapping("/floor")
+    @GetMapping("/home/init")
     @ApiImplicitParam(name = "userId", required = true, value = "用户id")
-    public ResponseJson<List<FloorVo>> productFloor(Integer userId) {
-        return productService.productFloor(userId);
+    public ResponseJson<String> gethomeData(Integer userId) throws Exception {
+        String url = cloudApi + "/commodity/hehe/home/init?userId=" + userId;
+        String parameters = HttpRequest.sendGet(url);
+        return getResponseJson(parameters);
     }
 
+    /**
+     * 废弃
+     */
     @ApiOperation("首页楼层详情")
     @ApiImplicitParams({
             @ApiImplicitParam(name = "floorId", value = "楼层Id", required = true),
@@ -61,15 +73,28 @@ public class ProductApi {
 
     @ApiOperation("商品列表")
     @ApiImplicitParams({
+            @ApiImplicitParam(name = "listType", value = "列表类型:1首页搜索商品列表,2首页分类商品列表,3首页楼层商品列表.4二级分类商品列表", required = false),
+            @ApiImplicitParam(name = "homeTypeId", value = "首页分类id", required = false),
+            @ApiImplicitParam(name = "homeFloorId", value = "首页楼层id", required = false),
+            @ApiImplicitParam(name = "smallTypeId", value = "二级分类id", required = false),
             @ApiImplicitParam(name = "name", value = "搜索商品名称", required = false),
             @ApiImplicitParam(name = "userId", value = "用户id", required = false),
-            @ApiImplicitParam(name = "pageNum", value = "第几页", required = false),
-            @ApiImplicitParam(name = "pageSize", value = "一页多少条", required = false)
+            @ApiImplicitParam(name = "sortType", value = "排序类型:1综合,2价格升序,3价格降序,4最新", required = false),
+            @ApiImplicitParam(name = "productIds", value = "综合排序已查出的商品id,以,隔开", required = false),
+            @ApiImplicitParam(name = "pageNum", value = "页码", required = false),
+            @ApiImplicitParam(name = "pageSize", value = "每页数量", required = false)
     })
     @GetMapping("/list")
-    public ResponseJson<PageInfo<ProductVo>> productList(String name, Integer userId, @RequestParam(value = "pageNum", defaultValue = "1") Integer pageNum,
-                                                         @RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize) {
-        return productService.productList(name, userId, pageNum, pageSize);
+    public ResponseJson<String> productList(@RequestParam(value = "listType", defaultValue = "1") Integer listType, Integer homeTypeId,
+                                            Integer homeFloorId, Integer smallTypeId, String name, Integer userId, String productIds,
+                                            @RequestParam(value = "sortType", defaultValue = "4") Integer sortType,
+                                            @RequestParam(value = "pageNum", defaultValue = "1") Integer pageNum,
+                                            @RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize) throws Exception {
+        String url = cloudApi + "/commodity/hehe/product/list?listType=" + listType + "&homeTypeId=" + homeTypeId +
+                "&homeFloorId=" + homeFloorId + "&smallTypeId=" + smallTypeId+ "&name=" + name + "&userId=" + userId +
+                "&sortType=" + sortType + "&productIds=" + productIds + "&pageNum=" + pageNum + "&pageSize=" + pageSize;
+        String parameters = HttpRequest.sendGet(url);
+        return getResponseJson(parameters);
     }
 
     @ApiOperation("商品详情")
@@ -78,43 +103,42 @@ public class ProductApi {
             @ApiImplicitParam(name = "userId", required = true, value = "机构用户Id")
     })
     @GetMapping("/details")
-    public ResponseJson<ProductVo> productDetails(Integer productId, Integer userId) {
-        return productService.productDetails(productId, userId);
+    public ResponseJson<String> productDetails(Integer productId, Integer userId) throws Exception {
+        String url = cloudApi + "/commodity/hehe/details?productId=" + productId + "&userId=" + userId;
+        String parameters = HttpRequest.sendGet(url);
+        return getResponseJson(parameters);
     }
 
     @ApiOperation("商品搜索历史记录")
     @ApiImplicitParam(name = "userId", required = true, value = "用户id")
     @GetMapping("/search/history")
-    public ResponseJson<List<String>> searchHistory(Integer userId) {
-        if (userId == null) {
-            return ResponseJson.error("参数异常", null);
-        }
-        return productService.searchHistory(userId);
+    public ResponseJson<String> searchHistory(Integer userId) throws Exception {
+        String url = cloudApi + "/commodity/search/query/history?userId=" + userId;
+        String parameters = HttpRequest.sendGet(url);
+        return getResponseJson(parameters);
     }
 
     @ApiOperation("删除搜索历史记录")
     @ApiImplicitParam(name = "userId", required = true, value = "用户id")
     @GetMapping("/delete/history")
-    public ResponseJson<String> deleteHistory(Integer userId) {
-        if (userId == null) {
-            return ResponseJson.error("参数异常", null);
-        }
-        return productService.deleteHistory(userId);
+    public ResponseJson<String> deleteHistory(Integer userId) throws Exception {
+        String url = cloudApi + "/commodity/search/query/history/delete?userId=" + userId;
+        String parameters = HttpRequest.sendGet(url);
+        return getResponseJson(parameters);
     }
 
-    @ApiOperation("活动专区")
+    @ApiOperation("活动专区(旧:/product/activityArea)")
     @ApiImplicitParams({
             @ApiImplicitParam(name = "userId", value = "分销者用户id", required = true),
             @ApiImplicitParam(name = "pageNum", value = "第几页", required = false),
             @ApiImplicitParam(name = "pageSize", value = "一页多少条", required = false)
     })
-    @GetMapping("/activityArea")
-    public ResponseJson<PageInfo<HeHeActivityVo>> activityArea(Integer userId, @RequestParam(value = "pageNum", defaultValue = "1") Integer pageNum,
-                                                               @RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize) {
-        if (userId == null) {
-            return ResponseJson.error("参数异常", null);
-        }
-        return productService.activityArea(userId, pageNum, pageSize);
+    @GetMapping("/activity/list")
+    public ResponseJson<String> activityArea(Integer userId, @RequestParam(value = "pageNum", defaultValue = "1") Integer pageNum,
+                                                               @RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize) throws Exception {
+        String url = cloudApi + "/commodity/hehe/activity/list?userId=" + userId + "&pageNum=" + pageNum + "&pageSize=" + pageSize;
+        String parameters = HttpRequest.sendGet(url);
+        return getResponseJson(parameters);
     }
 
     @ApiOperation("活动详情")
@@ -125,12 +149,26 @@ public class ProductApi {
             @ApiImplicitParam(name = "pageSize", value = "一页多少条", required = false)
     })
     @GetMapping("/activity/details")
-    public ResponseJson<Map<String, Object>> activityDetails(Integer userId, Integer activityId,
+    public ResponseJson<String> activityDetails(Integer userId, Integer activityId,
                                                              @RequestParam(value = "pageNum", defaultValue = "1") Integer pageNum,
-                                                             @RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize) {
-        if (userId == null || activityId == null) {
-            return ResponseJson.error("参数异常", null);
-        }
-        return productService.activityDetails(userId, activityId, pageNum, pageSize);
+                                                             @RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize) throws Exception {
+        String url = cloudApi + "/commodity/hehe/activity/details?userId=" + userId + "&activityId=" + activityId+ "&pageNum=" + pageNum + "&pageSize=" + pageSize;
+        String parameters = HttpRequest.sendGet(url);
+        return getResponseJson(parameters);}
+
+    @ApiOperation("首页分类列表")
+    @GetMapping("/home/type")
+    public ResponseJson<String> getHomeTypeList() throws Exception {
+        String url = cloudApi + "/commodity/hehe/home/type";
+        String parameters = HttpRequest.sendGet(url);
+        return getResponseJson(parameters);
+    }
+
+    private ResponseJson<String> getResponseJson(String parameters) {
+        JSONObject object = JSONObject.parseObject(parameters);
+        Integer code = object.getInteger("code");
+        String msg = object.getString("msg");
+        String data = object.getString("data");
+        return ResponseJson.success(code, msg, data);
     }
 }

+ 2 - 2
src/main/java/com/caimei/mapper/CouponMapper.java

@@ -23,14 +23,14 @@ public interface CouponMapper {
 
     /**
      * 优惠券类型
-     * @param couponType    劵类型 1活动券 2专享券 3新人券 4好友分享券 5好友消费券
+     * @param couponType    劵类型 1活动券 2专享券 3新人券 4好友分享券 5好友消费券 6消费分享券
      * @return
      */
     Integer getCouponCount(int couponType);
 
     /**
      * 获取进行中的优惠券Id
-     * @param couponType    劵类型 1活动券 2专享券 3新人券 4好友分享券 5好友消费券
+     * @param couponType    劵类型 1活动券 2专享券 3新人券 4好友分享券 5好友消费券 6消费分享券
      * @return
      */
     List<Integer> getCurrentCouponIds(int couponType);

+ 1 - 3
src/main/java/com/caimei/mapper/ProductMapper.java

@@ -1,6 +1,5 @@
 package com.caimei.mapper;
 
-import com.caimei.model.po.CmHeheCollagePo;
 import com.caimei.model.po.CmHeheCollageProductPo;
 import com.caimei.model.po.ProductDetailInfoPo;
 import com.caimei.model.po.UserSearchHistoryPo;
@@ -8,7 +7,6 @@ import com.caimei.model.vo.*;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
-import java.math.BigDecimal;
 import java.util.List;
 
 /**
@@ -24,7 +22,7 @@ public interface ProductMapper {
      *
      * @return
      */
-    List<String> findImageAll();
+    List<CmHeHeImageVo> findAllImage();
 
     /**
      * 查询商品

+ 26 - 0
src/main/java/com/caimei/model/vo/CmHeHeImageVo.java

@@ -0,0 +1,26 @@
+package com.caimei.model.vo;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * cm_hehe_image:呵呵商城轮播图
+ *
+ * @author
+ */
+@Data
+public class CmHeHeImageVo implements Serializable {
+
+    /**
+     * 轮播图
+     */
+    private String image;
+
+    /**
+     * 链接
+     */
+    private String link;
+
+    private static final long serialVersionUID = 1L;
+}

+ 10 - 1
src/main/java/com/caimei/service/CouponService.java

@@ -1,6 +1,5 @@
 package com.caimei.service;
 
-import com.alibaba.fastjson.JSONObject;
 import com.caimei.model.ResponseJson;
 import com.caimei.model.dto.CouponsDto;
 import com.caimei.model.vo.CouponVo;
@@ -80,4 +79,14 @@ public interface CouponService {
      * @return
      */
     ResponseJson<Map<String, Object>> couponsByProductIds(Integer userId, String productIds);
+
+    /**
+     * 首页优惠券列表
+     */
+    ResponseJson<List<CouponVo>> homeCouponList(Integer userId);
+
+    /**
+     * 分享券广告展示
+     */
+    ResponseJson<String> shareCouponDisplay();
 }

+ 2 - 1
src/main/java/com/caimei/service/ProductService.java

@@ -1,6 +1,7 @@
 package com.caimei.service;
 
 import com.caimei.model.ResponseJson;
+import com.caimei.model.vo.CmHeHeImageVo;
 import com.caimei.model.vo.FloorVo;
 import com.caimei.model.vo.HeHeActivityVo;
 import com.caimei.model.vo.ProductVo;
@@ -21,7 +22,7 @@ public interface ProductService {
      *
      * @return
      */
-    ResponseJson<List<String>> carouselFigure();
+    ResponseJson<List<CmHeHeImageVo>> carouselFigure();
 
     /**
      * 商品列表

+ 19 - 3
src/main/java/com/caimei/service/impl/CouponServiceImpl.java

@@ -1,12 +1,9 @@
 package com.caimei.service.impl;
 
-import com.alibaba.fastjson.JSONObject;
 import com.caimei.mapper.CouponMapper;
 import com.caimei.mapper.ProductMapper;
 import com.caimei.model.ResponseJson;
 import com.caimei.model.dto.CouponsDto;
-import com.caimei.model.po.CouponPo;
-import com.caimei.model.po.CouponSharePo;
 import com.caimei.model.po.ReceiveCouponPo;
 import com.caimei.model.po.UserSearchHistoryPo;
 import com.caimei.model.vo.*;
@@ -196,4 +193,23 @@ public class CouponServiceImpl implements CouponService {
         couponsMap.put("receiveCouponList", receiveCouponList);
         return ResponseJson.success(couponsMap);
     }
+
+    @Override
+    public ResponseJson<List<CouponVo>> homeCouponList(Integer userId) {
+        Date registerTime = couponMapper.getUserRegisterTime(userId);
+        List<CouponVo> couponList = couponMapper.findCouponList(userId, null, registerTime, null);
+        return ResponseJson.success(couponList);
+    }
+
+    @Override
+    public ResponseJson<String> shareCouponDisplay() {
+        Integer inviteCouponCount = couponMapper.getCouponCount(4);
+        Integer consumeCouponCount = couponMapper.getCouponCount(5);
+        Integer shareCouponCount = couponMapper.getCouponCount(6);
+        String couponDisplay = "";
+        couponDisplay += inviteCouponCount > 0 ? "1" : "";
+        couponDisplay += consumeCouponCount > 0 ? ",2" : "";
+        couponDisplay += shareCouponCount > 0 ? ",3" : "";
+        return ResponseJson.success(couponDisplay);
+    }
 }

+ 4 - 4
src/main/java/com/caimei/service/impl/PayOrderServiceImpl.java

@@ -43,8 +43,8 @@ public class PayOrderServiceImpl implements PayOrderService {
     @Value("${caimei.delayedSplittingUrl}")
     private String delayedSplittingUrl;
 
-    @Value("${caimei.userUrl}")
-    private String userUrl;
+    @Value("${caimei.cloudApi}")
+    private String cloudApi;
 
     /**
      * 商户标识
@@ -234,7 +234,7 @@ public class PayOrderServiceImpl implements PayOrderService {
                     map.put("type", 3);
                     map.put("mobile", mobile);
                     map.put("content", content);
-                    String url = userUrl + "/tools/sms/send";
+                    String url = cloudApi + "/tools/sms/send";
                     try {
                         String result = HttpRequest.sendPost(url, map);
                         log.info("【呵呵好友消费券派送】mobile:" + mobile + ",result:" + result);
@@ -278,7 +278,7 @@ public class PayOrderServiceImpl implements PayOrderService {
                         String content = "您的商品已拼团成功,请赶紧登录呵呵商城小程序查看订单吧。";
                         map.put("type", 1);
                         map.put("content", content);
-                        String url = userUrl + "/tools/sms/send";
+                        String url = cloudApi + "/tools/sms/send";
                         try {
                             for (String userMobile : mobileList) {
                                 map.put("mobile", userMobile);

+ 2 - 3
src/main/java/com/caimei/service/impl/ProductServiceImpl.java

@@ -2,7 +2,6 @@ package com.caimei.service.impl;
 
 import com.caimei.mapper.ProductMapper;
 import com.caimei.model.ResponseJson;
-import com.caimei.model.po.CmHeheCollagePo;
 import com.caimei.model.po.CmHeheCollageProductPo;
 import com.caimei.model.po.ProductDetailInfoPo;
 import com.caimei.model.po.UserSearchHistoryPo;
@@ -34,8 +33,8 @@ public class ProductServiceImpl implements ProductService {
     private String domain;
 
     @Override
-    public ResponseJson<List<String>> carouselFigure() {
-        List<String> images = productMapper.findImageAll();
+    public ResponseJson<List<CmHeHeImageVo>> carouselFigure() {
+        List<CmHeHeImageVo> images = productMapper.findAllImage();
         return ResponseJson.success(images);
     }
 

+ 1 - 1
src/main/resources/config/beta/application-beta.yml

@@ -47,6 +47,6 @@ caimei:
   #支付链接重定向地址
   redirectLink: https://mall2c-b.caimei365.com/PayOrder/jumpPage
   #微服务网关地址
-  userUrl: https://core-b.caimei365.com
+  cloudApi: https://core-b.caimei365.com
   #延时分账异步回调地址
   delayedSplittingUrl: https://mall2c-b.caimei365.com/PayOrder/delayedSplittingCallback

+ 1 - 1
src/main/resources/config/dev/application-dev.yml

@@ -46,6 +46,6 @@ caimei:
   #支付链接重定向地址
   redirectLink: https://mall2c-b.caimei365.com/PayOrder/jumpPage
   #微服务网关地址
-  userUrl: http://localhost:18002
+  cloudApi: http://localhost:18002
   #延时分账异步回调地址
   delayedSplittingUrl: https://mall2c-b.caimei365.com/PayOrder/delayedSplittingCallback

+ 1 - 1
src/main/resources/config/prod/application-prod.yml

@@ -48,6 +48,6 @@ caimei:
   #支付链接重定向地址
   redirectLink: https://mall2c.caimei365.com/PayOrder/jumpPage
   #微服务网关地址
-  userUrl: https://core.caimei365.com
+  cloudApi: https://core.caimei365.com
   #延时分账异步回调地址
   delayedSplittingUrl: https://mall2c.caimei365.com/PayOrder/delayedSplittingCallback

+ 3 - 2
src/main/resources/mapper/CouponMapper.xml

@@ -21,7 +21,7 @@
     <select id="getCouponCount" resultType="java.lang.Integer">
         select count(*) from cm_hehe_coupon
         where couponType = #{couponType}
-          and if(startNowFlag = 1,true, NOW() <![CDATA[  >=  ]]> startTime )
+          and if(startNowFlag = 1,true, NOW() <![CDATA[  >=  ]]> startTime)
         and if(permanentFlag = 1,true,NOW() <![CDATA[  <=  ]]> endTime)
     </select>
     <select id="checkReceiveFlag" resultType="java.lang.Boolean">
@@ -81,7 +81,7 @@
             </foreach>)
         </if>
         <if test="userId == null or userId == 0">
-            AND couponType not in (2,4,5)
+            AND couponType not in (2,4,5,6)
             and if(receiveFlag = 1,
                 if(permanentFlag = 1,true,NOW() <![CDATA[ < ]]> endTime),
                 NOW() <![CDATA[ < ]]> date_add(startTime,interval receivePeriod DAY))
@@ -97,6 +97,7 @@
                 or (couponType = 3 and #{registerTime} <![CDATA[ >= ]]> startTime and if(permanentFlag = 1,true,#{registerTime} <![CDATA[ < ]]> endTime))
                 or (couponType = 4 and chcs.shareUserId = #{userId})
                 or (couponType = 5 and chcs.shareUserId = #{userId})
+                or (couponType = 6 and chcs.shareUserId = #{userId})
                 )
             and if(receiveFlag = 1,
                 if(permanentFlag = 1,true,NOW() <![CDATA[ < ]]> endTime),

+ 3 - 2
src/main/resources/mapper/ProductMapper.xml

@@ -3,9 +3,9 @@
         PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.caimei.mapper.ProductMapper">
-    <select id="findImageAll" resultType="string">
+    <select id="findAllImage" resultType="com.caimei.model.vo.CmHeHeImageVo">
         SELECT
-            image
+            image,link
         FROM
             cm_hehe_image
         WHERE
@@ -104,6 +104,7 @@
         SELECT
             a.productId,
             a.price,
+            a.price as normalPrice,
             a.includedTax,
             a.invoiceType,
             a.clubTaxPoint,