Bläddra i källkod

积分抵扣流程优化,优惠券前端优化

lhm 3 år sedan
förälder
incheckning
aa0a57191f

+ 105 - 0
kmall-admin/src/main/java/com/kmall/admin/entity/vip/Mall2MemberConsumptionRecordsEntity.java

@@ -1,6 +1,7 @@
 package com.kmall.admin.entity.vip;
 
 import java.io.Serializable;
+import java.math.BigDecimal;
 import java.util.Date;
 
 /**
@@ -62,6 +63,46 @@ public class Mall2MemberConsumptionRecordsEntity implements Serializable {
     private Date tstm;
 
     /**
+     * 订单抵扣积分
+     */
+    private Integer deductionScore;
+
+    /**
+     * 会员码
+     */
+    private String memberCode;
+
+    /**
+     * 会员手机号
+     */
+    private String memberPhone;
+
+    /**
+     * 订单总额
+     */
+    private BigDecimal orderTotalPrice;
+
+    /**
+     * 积分抵扣金额
+     */
+    private BigDecimal scoreDeductionPrice;
+
+    /**
+     * 积分抵扣规则,多少积分抵一元
+     */
+    private Integer scoreLimit;
+
+    /**
+     * 下单前积分数量
+     */
+    private Integer beforeScore;
+
+    /**
+     * 下单后积分数量
+     */
+    private Integer afterScore;
+
+    /**
      * 设置:主键
      */
     public void setMmcrId(Integer mmcrId) {
@@ -220,4 +261,68 @@ public class Mall2MemberConsumptionRecordsEntity implements Serializable {
     public void setShopName(String shopName) {
         this.shopName = shopName;
     }
+
+    public Integer getDeductionScore() {
+        return deductionScore;
+    }
+
+    public void setDeductionScore(Integer deductionScore) {
+        this.deductionScore = deductionScore;
+    }
+
+    public String getMemberCode() {
+        return memberCode;
+    }
+
+    public void setMemberCode(String memberCode) {
+        this.memberCode = memberCode;
+    }
+
+    public String getMemberPhone() {
+        return memberPhone;
+    }
+
+    public void setMemberPhone(String memberPhone) {
+        this.memberPhone = memberPhone;
+    }
+
+    public BigDecimal getOrderTotalPrice() {
+        return orderTotalPrice;
+    }
+
+    public void setOrderTotalPrice(BigDecimal orderTotalPrice) {
+        this.orderTotalPrice = orderTotalPrice;
+    }
+
+    public BigDecimal getScoreDeductionPrice() {
+        return scoreDeductionPrice;
+    }
+
+    public void setScoreDeductionPrice(BigDecimal scoreDeductionPrice) {
+        this.scoreDeductionPrice = scoreDeductionPrice;
+    }
+
+    public Integer getScoreLimit() {
+        return scoreLimit;
+    }
+
+    public void setScoreLimit(Integer scoreLimit) {
+        this.scoreLimit = scoreLimit;
+    }
+
+    public Integer getBeforeScore() {
+        return beforeScore;
+    }
+
+    public void setBeforeScore(Integer beforeScore) {
+        this.beforeScore = beforeScore;
+    }
+
+    public Integer getAfterScore() {
+        return afterScore;
+    }
+
+    public void setAfterScore(Integer afterScore) {
+        this.afterScore = afterScore;
+    }
 }

+ 50 - 33
kmall-admin/src/main/java/com/kmall/admin/haikong/client/HaiKongMemberTemplate.java

@@ -1,13 +1,16 @@
 package com.kmall.admin.haikong.client;
 
 import cn.hutool.core.map.MapUtil;
+import com.fasterxml.jackson.core.type.TypeReference;
 import com.kmall.admin.haikong.config.HaiKongProperties;
+import com.kmall.admin.haikong.constant.Constants;
+import com.kmall.admin.haikong.dto.AccessTokenDTO;
+import com.kmall.admin.haikong.dto.MemberInfoDTO;
 import com.kmall.admin.haikong.task.MemberSysAccessTokenRefreshTask;
-import com.kmall.admin.haikong.utils.ApacheHttpUtils;
-import com.kmall.admin.haikong.utils.HttpGetWithEntity;
-import com.kmall.admin.haikong.utils.MemberSysSignUtils;
-import com.kmall.admin.haikong.utils.OkHttpUtils;
+import com.kmall.admin.haikong.utils.*;
 import com.kmall.admin.haikong.constant.HaiKongMemberSystemUrlEnum;
+import com.kmall.admin.utils.jackson.JacksonUtil;
+import com.kmall.manager.manager.redis.JedisUtil;
 import okhttp3.MediaType;
 import okhttp3.Request;
 import okhttp3.RequestBody;
@@ -224,40 +227,54 @@ public class HaiKongMemberTemplate {
 
     public static void main(String[] args) throws Exception {
 
-//        HaiKongMemberTemplate haiKongMemberTemplate = new HaiKongMemberTemplate();
-//
-//        HaiKongProperties haiKongProperties = new HaiKongProperties();
-//
-//        haiKongProperties.setRetry(3);
-//        haiKongProperties.setMemberAppId("mianshuitestzhanxiao");
-//        haiKongProperties.setMemberAppSecret("mianshuitestzhanxiao1029");
-//        haiKongProperties.setMemberUrl("https://test-ump.greedc.com");
-//
-//        haiKongMemberTemplate.setHaiKongProperties(haiKongProperties);
-//
-////        String accessToken = haiKongMemberTemplate.getAccessToken();
-//
-////        System.out.println(accessToken);
-//
-//        String accessToken = "atBF2B26D3DB790E652E7A810BCC927040";
-//
-//        String refreshToken = "rt256E320B415B9B9A0DB7CA21E773F795";
-//
-//        String body = "{\"phone\": \"13726271499\"}";
-//
+        HaiKongMemberTemplate haiKongMemberTemplate = new HaiKongMemberTemplate();
+
+        HaiKongProperties haiKongProperties = new HaiKongProperties();
+
+        haiKongProperties.setMemberUrl("https://test-ump.greedc.com");
+        haiKongProperties.setMemberAppId("mianshuitestzhanxiao");
+        haiKongProperties.setMemberAppSecret("mianshuitestzhanxiao1029");
+        haiKongProperties.setRetry(3);
+
+        haiKongMemberTemplate.setHaiKongProperties(haiKongProperties);
+
+//        String accessToken = haiKongMemberTemplate.getAccessToken();
+
+//        System.out.println(accessToken);
+
+        String accessToken = "at9528E3271080F8A3C5AE9FD9C8EBC9D9";
+
+        String refreshToken = "rt6D6F3077B2CDFA31BB294CF0662194F3";
+
+        String body = "{\"phone\": \"13726271499\"}";
+
 //        String refreshAccessToken = haiKongMemberTemplate.refreshAccessToken(refreshToken);
 //        System.out.println(refreshAccessToken);
-        /*log.info("请求获取会员优惠券详细信息接口......");
-        String url = haiKongProperties.getMemberUrl() + haiKongMemberTemplate.appendQueryParam(HaiKongMemberSystemUrlEnum.QUERY_MEMBER_COUPON.getUrl(), accessToken);
+        log.info("请求获取会员优惠券详细信息接口......");
+        String url = haiKongProperties.getMemberUrl() + haiKongMemberTemplate.appendQueryParam(HaiKongMemberSystemUrlEnum.QUERY_MEMBER_INFO_BY_PHONE.getUrl(), accessToken);
         url = haiKongMemberTemplate.getSignUrl(url, body);
 
-        HttpGetWithEntity httpGet = new HttpGetWithEntity(url);
-        HttpEntity httpEntity = new StringEntity(body, ContentType.APPLICATION_JSON);
-        httpGet.setEntity(httpEntity);
+        Request build = new Request.Builder().url(url).post(haiKongMemberTemplate.requestBody(body)).build();
+
+        String retry = OkHttpUtils.retry(build, 3);
+
+        System.out.println(retry);
+
+        Response<MemberInfoDTO> response = JacksonUtil.fromListJson(retry, new TypeReference<Response<MemberInfoDTO>>() {
+        });
+
+        System.out.println("会员积分========>" + response.getData().getScore() + "会员码========>" + response.getData().getOpenId());
+
+
+//        HttpGetWithEntity httpGet = new HttpGetWithEntity(url);
+//        HttpEntity httpEntity = new StringEntity(body, ContentType.APPLICATION_JSON);
+//        httpGet.setEntity(httpEntity);
+//
+//        String response = ApacheHttpUtils.retry(httpGet, haiKongProperties.getRetry());
+//        System.out.println(response);
+//        log.info("请求获取会员优惠券详细信息接口成功......");
+
 
-        String response = ApacheHttpUtils.retry(httpGet, haiKongProperties.getRetry());
-        System.out.println(response);
-        log.info("请求获取会员优惠券详细信息接口成功......");*/
 
     }
 

+ 1 - 0
kmall-admin/src/main/java/com/kmall/admin/haikong/config/HaiKongConfig.java

@@ -25,6 +25,7 @@ public class HaiKongConfig {
         haiKongProperties.setMemberUrl(environment.getProperty("haikong.member.url"));
         haiKongProperties.setMemberAppId(environment.getProperty("haikong.member.appId"));
         haiKongProperties.setMemberAppSecret(environment.getProperty("haikong.member.appSecret"));
+        haiKongProperties.setMemberScoreLimit(Integer.parseInt(environment.getProperty("haikong.member.scoreLimit")));
         haiKongProperties.setRetry(Integer.parseInt(environment.getProperty("haikong.retry")));
         haiKongProperties.setVmcconnectUrl(environment.getProperty("haikong.vmcconnect.url"));
         haiKongProperties.setVmcconnectAppId(environment.getProperty("haikong.vmcconnect.appId"));

+ 5 - 5
kmall-admin/src/main/java/com/kmall/admin/haikong/config/HaiKongProperties.java

@@ -13,7 +13,7 @@ public class HaiKongProperties {
 
     private String memberAppSecret;
 
-    private Integer scoreLimit;
+    private Integer memberScoreLimit;
 
     private Integer retry;
 
@@ -91,12 +91,12 @@ public class HaiKongProperties {
         this.memberAppSecret = memberAppSecret;
     }
 
-    public Integer getScoreLimit() {
-        return scoreLimit;
+    public Integer getMemberScoreLimit() {
+        return memberScoreLimit;
     }
 
-    public void setScoreLimit(Integer scoreLimit) {
-        this.scoreLimit = scoreLimit;
+    public void setMemberScoreLimit(Integer memberScoreLimit) {
+        this.memberScoreLimit = memberScoreLimit;
     }
 
     public Integer getRetry() {

+ 20 - 13
kmall-admin/src/main/java/com/kmall/admin/service/impl/OrderServiceImpl.java

@@ -2341,7 +2341,7 @@ public class OrderServiceImpl implements OrderService {
         if (isCalculateScorePrice.get()) {
             // 3-1. 计算总价的50%
             BigDecimal halfPrice = preferentialPrice.multiply(new BigDecimal("0.5")).setScale(2, BigDecimal.ROUND_HALF_UP);
-            Integer scoreLimit = haiKongProperties.getScoreLimit();
+            Integer scoreLimit = haiKongProperties.getMemberScoreLimit();
             if (score < scoreLimit) {
                 LOGGER.warn("用户【{}】的积分数量为:{},最低需要30积分才能抵扣!", userInfo.get("customName"), score);
                 return preferentialPrice;
@@ -4303,29 +4303,36 @@ public class OrderServiceImpl implements OrderService {
         // 计算完活动优惠后,计算积分抵扣。(活动与积分抵扣不互斥)
         if (!org.springframework.util.StringUtils.isEmpty(memberCode)) {
             String memberInfoByCodeResponseJson;
-            Response<MemberInfoDTO> response;
+            Response<Object> response;
             try {
                 // 查询会员信息
-                memberInfoByCodeResponseJson = haiKongMemberTemplate.getMemberInfoByCode("{\"code\":" + memberCode + "}");
-                response = JacksonUtil.fromListJson(memberInfoByCodeResponseJson, new TypeReference<Response<MemberInfoDTO>>() {
+                memberInfoByCodeResponseJson = haiKongMemberTemplate.getMemberInfoByPhone("{\"phone\":" + memberCode + "}");
+                response = JacksonUtil.fromListJson(memberInfoByCodeResponseJson, new TypeReference<Response<Object>>() {
                 });
+                if (Objects.isNull(response) || Objects.nonNull(response.getErrorCode())) {
+                    LOGGER.error("请求会员系统出现异常!error:{}", memberInfoByCodeResponseJson);
+                    throw new ServiceException(String.format("请求会员系统出现异常!会员码:%s,error:%s", memberCode, memberInfoByCodeResponseJson));
+                }
             } catch (Exception e) {
                 LOGGER.error("请求会员系统失败或处理响应失败!", e);
                 throw new ServiceException(e);
             }
             BigDecimal afterDiscountPrice;
-            if (Objects.nonNull(response) && response.getSuccess()) {
-                MemberInfoDTO memberInfoDTO = response.getData();
+            if (response.getSuccess()) {
+                MemberInfoDTO memberInfoDTO = JacksonUtil.fromStringJson(JacksonUtil.toJson(response.getData()), MemberInfoDTO.class);
+                assert memberInfoDTO != null : String.format("会员码:【%s】会员信息错误!%s", memberCode, JacksonUtil.toJson(response));
                 Integer score = memberInfoDTO.getScore();
                 if (Objects.nonNull(score) && score > 0) {
                     // 有积分
                     afterDiscountPrice = calculatePreferentialPrice(orderTotalPrice, score, storeId, memberCode);
                     calculateOrderDiscountPriceResponseVO.setOrderTotalPrice(afterDiscountPrice);
+                    calculateOrderDiscountPriceResponseVO.setGoodsDetailsDtos(goodsDetailsDtos);
                     // 订单完成后再添加积分消费记录,以及同步积分信息
+                    return calculateOrderDiscountPriceResponseVO;
                 }
-            } else if (Objects.nonNull(response)) {
+            } else {
                 LOGGER.error("查询会员信息失败!响应结果:{}", memberInfoByCodeResponseJson);
-                throw new ServiceException(String.format("错误码:%s,错误信息:%s", response.getErrorCode(), response.getErrorMessage()));
+                throw new ServiceException(String.format("会员码:%s,错误码:%s,错误信息:%s", memberCode, response.getErrorCode(), response.getErrorMessage()));
             }
         }
         calculateOrderDiscountPriceResponseVO.setGoodsDetailsDtos(goodsDetailsDtos);
@@ -4353,9 +4360,9 @@ public class OrderServiceImpl implements OrderService {
         }
         // 2. 计算积分抵扣后的总价格
         if (isCalculateScorePrice.get()) {
-            // 3-1. 计算总价的50%,百分比可以进行设置
-            BigDecimal halfPrice = orderTotalPrice.multiply(new BigDecimal("0.5")).setScale(2, BigDecimal.ROUND_HALF_UP);
-            Integer scoreLimit = haiKongProperties.getScoreLimit();
+            // 3-1. 计算总价的50%,百分比可以进行设置,算出整数(向下取整)
+            BigDecimal halfPrice = orderTotalPrice.multiply(new BigDecimal("0.5")).setScale(0, BigDecimal.ROUND_FLOOR);
+            Integer scoreLimit = haiKongProperties.getMemberScoreLimit();
             if (score < scoreLimit) {
                 LOGGER.warn("用户【{}】的积分数量为:{},最低需要30积分才能抵扣!", memberCode, score);
                 return orderTotalPrice;
@@ -4364,12 +4371,12 @@ public class OrderServiceImpl implements OrderService {
                 int scoreMayDeductionPrice = (int) (score / scoreLimit);
                 BigDecimal scoreMayDeductionPriceDecimal = new BigDecimal(scoreMayDeductionPrice);
                 // 3-3. 计算积分抵扣后的价格
-                if (halfPrice.compareTo(scoreMayDeductionPriceDecimal) > 0) {
+                if (halfPrice.compareTo(scoreMayDeductionPriceDecimal) <= 0) {
                     // 积分能抵扣的金额大于订单总额的50%,按50%抵扣
                     scoreMayDeductionPriceDecimal = halfPrice;
                 }
                 orderTotalPrice = orderTotalPrice.subtract(scoreMayDeductionPriceDecimal);
-                LOGGER.info("会员【{}】,积分抵扣前剩余:{},积分抵扣订单金额后剩余:{},积分抵扣后的订单总额为:{}", memberCode, score, scoreMayDeductionPriceDecimal.multiply(new BigDecimal(scoreLimit)), orderTotalPrice);
+                LOGGER.info("会员【{}】,积分抵扣前剩余:{},积分抵扣订单金额后剩余:{},积分抵扣后的订单总额为:{}", memberCode, score, (score - scoreMayDeductionPriceDecimal.multiply(new BigDecimal(scoreLimit)).intValue()), orderTotalPrice);
             }
         } else {
             LOGGER.info("会员【{}】的积分为0,不参加积分抵扣!", memberCode);

+ 5 - 0
kmall-admin/src/main/resources/XmlTemplate/CouponMerchandiseDtoList.xml

@@ -11,6 +11,11 @@
                 <mapping row="1" col="3">CouponMerchandiseDto.deadline</mapping>
                 <mapping row="1" col="4">CouponMerchandiseDto.discountPrice</mapping>
                 <mapping row="1" col="5">CouponMerchandiseDto.couponSn</mapping>
+                <mapping row="1" col="6">CouponMerchandiseDto.activityType</mapping>
+                <mapping row="1" col="7">CouponMerchandiseDto.brandId</mapping>
+                <mapping row="1" col="8">CouponMerchandiseDto.categoryId</mapping>
+                <mapping row="1" col="9">CouponMerchandiseDto.brandName</mapping>
+                <mapping row="1" col="10">CouponMerchandiseDto.categoryName</mapping>
             </section>
             <loopbreakcondition>
                 <rowcheck offset="0">

+ 52 - 4
kmall-admin/src/main/resources/mybatis/mapper/vip/Mall2MemberConsumptionRecordsDao.xml

@@ -15,6 +15,14 @@
         <result property="moderSn" column="moder_sn"/>
         <result property="modTime" column="mod_time"/>
         <result property="tstm" column="tstm"/>
+        <result property="deductionScore" column="deduction_score"/>
+        <result property="memberCode" column="member_code"/>
+        <result property="memberPhone" column="member_phone"/>
+        <result property="orderTotalPrice" column="order_total_price"/>
+        <result property="scoreDeductionPrice" column="score_deduction_price"/>
+        <result property="scoreLimit" column="score_limit"/>
+        <result property="beforeScore" column="before_score"/>
+        <result property="afterScore" column="after_score"/>
     </resultMap>
 
 	<select id="queryObject" resultType="com.kmall.admin.entity.vip.Mall2MemberConsumptionRecordsEntity">
@@ -29,7 +37,15 @@
 			`create_time`,
 			`moder_sn`,
 			`mod_time`,
-			`tstm`
+			`tstm`,
+			`deduction_score`,
+			`member_code`,
+			`member_phone`,
+			`order_total_price`,
+			`score_deduction_price`,
+			`score_limit`,
+			`before_score`,
+			`after_score`
 		from mall2_member_consumption_records
 		where mmcr_id = #{id}
 	</select>
@@ -48,7 +64,15 @@
     		records.mod_time,
     		records.tstm,
 			mu.username as userName,
-			store.store_name as shopName
+			store.store_name as shopName,
+			records.`deduction_score`,
+			records.`member_code`,
+			records.`member_phone`,
+			records.`order_total_price`,
+			records.`score_deduction_price`,
+			records.`score_limit`,
+			records.`before_score`,
+			records.`after_score`
 		from mall2_member_consumption_records records
 		left join mall_user mu on mu.id = records.user_id
 		left join mall_store store on store.id = records.shop_sn
@@ -95,7 +119,15 @@
 			`create_time`,
 			`moder_sn`,
 			`mod_time`,
-			`tstm`)
+			`tstm`,
+			`deduction_score`,
+			`member_code`,
+			`member_phone`,
+			`order_total_price`,
+			`score_deduction_price`,
+			`score_limit`,
+			`before_score`,
+			`after_score`)
 		values(
 			#{mmcrId},
 			#{userId},
@@ -107,7 +139,15 @@
 			#{createTime},
 			#{moderSn},
 			#{modTime},
-			#{tstm})
+			#{tstm},
+			#{deductionScore},
+			#{memberCode},
+			#{memberPhone},
+			#{orderTotalPrice},
+			#{scoreDeductionPrice},
+			#{scoreLimit},
+			#{beforeScore},
+			#{afterScore})
 	</insert>
 
 	<update id="update" parameterType="com.kmall.admin.entity.vip.Mall2MemberConsumptionRecordsEntity">
@@ -123,6 +163,14 @@
 			<if test="moderSn != null">`moder_sn` = #{moderSn}, </if>
 			<if test="modTime != null">`mod_time` = #{modTime}, </if>
 			<if test="tstm != null">`tstm` = #{tstm}</if>
+			<if test="deductionScore != null">`deduction_score` = #{deductionScore}</if>
+			<if test="memberCode != null">`member_code` = #{memberCode}</if>
+			<if test="memberPhone != null">`member_phone` = #{memberPhone}</if>
+			<if test="orderTotalPrice != null">`order_total_price` = #{orderTotalPrice}</if>
+			<if test="scoreDeductionPrice != null">`score_deduction_price` = #{scoreDeductionPrice}</if>
+			<if test="scoreLimit != null">`score_limit` = #{scoreLimit}</if>
+			<if test="beforeScore != null">`before_score` = #{beforeScore}</if>
+			<if test="afterScore != null">`after_score` = #{afterScore}</if>
 		</set>
 		where mmcr_id = #{mmcrId}
 	</update>

+ 15 - 0
kmall-admin/src/main/webapp/WEB-INF/page/mk/mkactivitiescoupon.html

@@ -52,6 +52,21 @@
             <Form-item label="优惠金额" prop="couponPrice">
                 <i-input v-model="mkActivitiesCoupon.couponPrice" placeholder="优惠金额"/>
             </Form-item>
+            <Form-item label="优惠券类型" prop="activityType">
+                <i-input v-model="mkActivitiesCoupon.activityType" placeholder="优惠券类型"/>
+            </Form-item>
+            <Form-item label="品牌ID" prop="brandId">
+                <i-input v-model="mkActivitiesCoupon.brandId" placeholder="品牌ID"/>
+            </Form-item>
+            <Form-item label="品牌名" prop="brandName">
+                <i-input v-model="mkActivitiesCoupon.brandName" placeholder="品牌名"/>
+            </Form-item>
+            <Form-item label="分类ID" prop="categoryId">
+                <i-input v-model="mkActivitiesCoupon.categoryId" placeholder="分类ID"/>
+            </Form-item>
+            <Form-item label="分类名" prop="categoryName">
+                <i-input v-model="mkActivitiesCoupon.categoryName" placeholder="分类名"/>
+            </Form-item>
             <Form-item label="截止日期" prop="deadline">
                 <i-input v-model="mkActivitiesCoupon.deadline" placeholder="截止日期 yyyy-mm-dd"/>
             </Form-item>

+ 5 - 0
kmall-admin/src/main/webapp/js/mk/mkactivitiescoupon.js

@@ -28,6 +28,11 @@ $(function () {
 			{label: '适用商品条码', name: 'barcode', index: 'barcode', width: 80, align: 'center'},
 			{label: '优惠券码', name: 'couponSn', index: 'coupon_sn', width: 80, align: 'center'},
 			{label: '优惠金额', name: 'couponPrice', index: 'coupon_price', width: 80, align: 'center'},
+			{label: '优惠券类型', name: 'activityType', index: 'activity_type', width: 80, align: 'center'},
+			{label: '品牌ID', name: 'brandId', index: 'brand_id', width: 80, align: 'center'},
+			{label: '品牌名', name: 'brandName', index: 'brand_name', width: 80, align: 'center'},
+			{label: '分类ID', name: 'categoryId', index: 'category_id', width: 80, align: 'center'},
+			{label: '分类名', name: 'categoryName', index: 'category_name', width: 80, align: 'center'},
 			{label: '截止日期', name: 'deadline', index: 'deadline', width: 80, align: 'center'}],
 		viewrecords: true,
 		postData: {'mkaId': vm.mkaId},

BIN
kmall-admin/src/main/webapp/statics/file/activities_coupon_yyyy_mm_dd_v1.0.0.xlsx


+ 48 - 0
sql/kmall_table_alter.sql

@@ -0,0 +1,48 @@
+# 营销方式-满赠表
+alter table mk_activities_full_gift add full_gift_type char(1) comment '满赠类型,0:按品牌 1:按商品分类';
+
+alter table mk_activities_full_gift add category_id int(11) comment '分类id';
+
+alter table mk_activities_full_gift add category_name varchar(32) comment '分类名称';
+
+alter table mk_activities_full_gift add brand_id int(11) comment '品牌id';
+
+alter table mk_activities_full_gift add shop_name varchar(64) comment '门店名称';
+
+alter table mk_activities_full_gift add gift_number int(8) comment '赠品数量';
+
+alter table mk_activities_full_gift add full_gift_type char(1) comment '满赠类型,0:按品牌 1:按商品分类';
+
+# 营销方式-优惠券表
+alter table mk_activities_coupon add full_gift_type char(1) comment '优惠券类型,0:按品牌 1:按商品分类 2:按商品';
+
+alter table mk_activities_coupon add category_id int(11) comment '分类id';
+
+alter table mk_activities_coupon add category_name varchar(255) comment '分类名称';
+
+alter table mk_activities_coupon add brand_id int(11) comment '品牌id';
+
+alter table mk_activities_coupon add brand_name varchar(255) comment '品牌id';
+
+
+# 门店库存表
+alter table mall_product_store_rela add exit_region_number int(11) comment '展销店出区数';
+
+
+# 会员消费记录表
+alter table mall2_member_consumption_records add deduction_score int(11) comment '订单抵扣积分';
+
+alter table mall2_member_consumption_records add member_code varchar(64) comment '会员码';
+
+alter table mall2_member_consumption_records add member_phone varchar(20) comment '会员手机号';
+
+alter table mall2_member_consumption_records add order_total_price decimal(10,2) comment '订单总金额';
+
+alter table mall2_member_consumption_records add score_deduction_price decimal(10,2) comment '积分抵扣金额';
+
+alter table mall2_member_consumption_records add score_limit int(11) comment '积分抵扣规则,多少积分抵一元';
+
+alter table mall2_member_consumption_records add before_score int(11) comment '下单之前积分数量';
+
+alter table mall2_member_consumption_records add after_score int(11) comment '下单之后积分数量';
+