소스 검색

fix:会员积分赠送计算bug

lhm 3 년 전
부모
커밋
035a37d1b9

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

@@ -119,6 +119,11 @@ public class Mall2MemberConsumptionRecordsEntity implements Serializable {
     private Integer afterScore;
 
     /**
+     * 订单赠送积分
+     */
+    private Integer orderGiftScore;
+
+    /**
      * 设置:主键
      */
     public void setMmcrId(Integer mmcrId) {
@@ -373,4 +378,12 @@ public class Mall2MemberConsumptionRecordsEntity implements Serializable {
     public void setChange_id(String change_id) {
         this.change_id = change_id;
     }
+
+    public Integer getOrderGiftScore() {
+        return orderGiftScore;
+    }
+
+    public void setOrderGiftScore(Integer orderGiftScore) {
+        this.orderGiftScore = orderGiftScore;
+    }
 }

+ 1 - 1
kmall-admin/src/main/java/com/kmall/admin/haikong/task/MemberOrderSyncResendTask.java

@@ -41,7 +41,7 @@ public class MemberOrderSyncResendTask {
     private HaiKongMemberOrderSyncResendService haiKongMemberOrderSyncResendService;
 
     //    @Scheduled(cron = "0 55 0/2 * * ?")
-    @Scheduled(cron = "0/20 0/2 * * * ?")
+//    @Scheduled(cron = "0/20 0/2 * * * ?")
     public void resend() {
         // 查询等待发送和发送失败的记录
         List<HaiKongMemberOrderSyncResendEntity> haiKongMemberOrderSyncResendEntities = haiKongMemberOrderSyncResendService.queryListByResendStatus();

+ 146 - 12
kmall-admin/src/main/java/com/kmall/admin/haikong/vo/PointsRulesAndDetailVO.java

@@ -3,6 +3,8 @@ package com.kmall.admin.haikong.vo;
 import com.kmall.admin.dto.Mall2RulesDto;
 import com.kmall.admin.entity.vip.Mall2PointsRulesEntity;
 
+import java.math.BigDecimal;
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -12,31 +14,163 @@ import java.util.List;
  */
 public class PointsRulesAndDetailVO {
 
-    private Mall2PointsRulesEntity mall2PointsRulesEntity;
+    private Integer mprId;
 
-    private List<Mall2RulesDto> mall2PointsRulesDetailList;
+    private Integer pointsType;
 
-    public Mall2PointsRulesEntity getMall2PointsRulesEntity() {
-        return mall2PointsRulesEntity;
+    private Date pointsBeginTime;
+
+    private Date pointsEndTime;
+
+    private String isValid;
+
+    private BigDecimal ratio;
+
+    private Integer id;
+
+    private Integer fatherId;
+
+    private String pointRulesType;
+
+    private String pointsDetailName;
+
+    private String pointsDetailNameId;
+
+    private String pointsStoreName;
+
+    private String pointsStoreId;
+
+    private String remark;
+
+    public Integer getMprId() {
+        return mprId;
+    }
+
+    public void setMprId(Integer mprId) {
+        this.mprId = mprId;
+    }
+
+    public Integer getPointsType() {
+        return pointsType;
+    }
+
+    public void setPointsType(Integer pointsType) {
+        this.pointsType = pointsType;
+    }
+
+    public Date getPointsBeginTime() {
+        return pointsBeginTime;
+    }
+
+    public void setPointsBeginTime(Date pointsBeginTime) {
+        this.pointsBeginTime = pointsBeginTime;
+    }
+
+    public Date getPointsEndTime() {
+        return pointsEndTime;
+    }
+
+    public void setPointsEndTime(Date pointsEndTime) {
+        this.pointsEndTime = pointsEndTime;
+    }
+
+    public String getIsValid() {
+        return isValid;
+    }
+
+    public void setIsValid(String isValid) {
+        this.isValid = isValid;
+    }
+
+    public BigDecimal getRatio() {
+        return ratio;
+    }
+
+    public void setRatio(BigDecimal ratio) {
+        this.ratio = ratio;
+    }
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public Integer getFatherId() {
+        return fatherId;
+    }
+
+    public void setFatherId(Integer fatherId) {
+        this.fatherId = fatherId;
+    }
+
+    public String getPointRulesType() {
+        return pointRulesType;
+    }
+
+    public void setPointRulesType(String pointRulesType) {
+        this.pointRulesType = pointRulesType;
+    }
+
+    public String getPointsDetailName() {
+        return pointsDetailName;
+    }
+
+    public void setPointsDetailName(String pointsDetailName) {
+        this.pointsDetailName = pointsDetailName;
+    }
+
+    public String getPointsDetailNameId() {
+        return pointsDetailNameId;
+    }
+
+    public void setPointsDetailNameId(String pointsDetailNameId) {
+        this.pointsDetailNameId = pointsDetailNameId;
+    }
+
+    public String getPointsStoreName() {
+        return pointsStoreName;
+    }
+
+    public void setPointsStoreName(String pointsStoreName) {
+        this.pointsStoreName = pointsStoreName;
+    }
+
+    public String getPointsStoreId() {
+        return pointsStoreId;
     }
 
-    public void setMall2PointsRulesEntity(Mall2PointsRulesEntity mall2PointsRulesEntity) {
-        this.mall2PointsRulesEntity = mall2PointsRulesEntity;
+    public void setPointsStoreId(String pointsStoreId) {
+        this.pointsStoreId = pointsStoreId;
     }
 
-    public List<Mall2RulesDto> getMall2PointsRulesDetailList() {
-        return mall2PointsRulesDetailList;
+    public String getRemark() {
+        return remark;
     }
 
-    public void setMall2PointsRulesDetailList(List<Mall2RulesDto> mall2PointsRulesDetailList) {
-        this.mall2PointsRulesDetailList = mall2PointsRulesDetailList;
+    public void setRemark(String remark) {
+        this.remark = remark;
     }
 
     @Override
     public String toString() {
         return "PointsRulesAndDetailVO{" +
-                "mall2PointsRulesEntity=" + mall2PointsRulesEntity +
-                ", mall2PointsRulesDetailList=" + mall2PointsRulesDetailList +
+                "mprId=" + mprId +
+                ", pointsType='" + pointsType + '\'' +
+                ", pointsBeginTime=" + pointsBeginTime +
+                ", pointsEndTime=" + pointsEndTime +
+                ", isValid='" + isValid + '\'' +
+                ", ratio=" + ratio +
+                ", id=" + id +
+                ", fatherId=" + fatherId +
+                ", pointRulesType='" + pointRulesType + '\'' +
+                ", pointsDetailName='" + pointsDetailName + '\'' +
+                ", pointsDetailNameId='" + pointsDetailNameId + '\'' +
+                ", pointsStoreName='" + pointsStoreName + '\'' +
+                ", pointsStoreId='" + pointsStoreId + '\'' +
+                ", remark='" + remark + '\'' +
                 '}';
     }
 }

+ 100 - 83
kmall-admin/src/main/java/com/kmall/admin/service/impl/OrderServiceImpl.java

@@ -2307,6 +2307,7 @@ public class OrderServiceImpl implements OrderService {
                     goodsEntity.setActualPaymentAmount(goodsDto.getTotalPrice());
                     goodsEntity.setSellVolume(goodsDto.getSellVolume());
                     goodsEntity.setActivity(goodsDto.getActivity());
+                    goodsEntity.setStoreId(storeId);
                     goodsEntities.add(goodsEntity);
                 } else {
                     // sku不存在
@@ -2321,7 +2322,7 @@ public class OrderServiceImpl implements OrderService {
 
             String openId = (String) param.get("openId");
             String memberCode = (String) param.get("memberCode");
-            UserEntity userEntity = userDao.queryByOpenId(openId);
+            UserEntity userEntity = userDao.queryByMobile((String) userInfo.get("customPhone"));
             if (userEntity == null) {
                 // 保存用户信息
                 userEntity = new UserEntity();
@@ -2473,7 +2474,6 @@ public class OrderServiceImpl implements OrderService {
                 saleRecordEntity.setOrderSn(order.getOrder_sn());
                 saleRecordEntity.setSallerId(userId + "");
                 saleRecordEntity.setSalesTime(new Date());
-//                saleRecordEntity.setDiscountId(topicId + "");
                 saleRecordEntity.setCreateTime(new Date());
                 saleRecordDao.save(saleRecordEntity);
             }
@@ -2482,87 +2482,107 @@ public class OrderServiceImpl implements OrderService {
             Integer userEntityId = userEntity.getId();
             // 总的积分:基础积分
             AtomicReference<Integer> memberScore = new AtomicReference<>(0);
-            List<PointsRulesAndDetailVO> pointsRulesAndDetailVOList = mall2PointsRulesService.queryListByTime(new Date()).stream().sorted().collect(Collectors.toList());
-            // 商品map,key===>sku value===>金额
-            Map<String, BigDecimal> goodsMap = goodsEntities.stream().collect(Collectors.toMap(GoodsEntity::getSku, GoodsEntity::getActualPaymentAmount, (k1, k2) -> k2));
-            // 订单全部的sku
-            Set<String> goodsSkuList = goodsMap.keySet();
-            // 保存不在按商品计算积分的sku
-            List<String> nonGoodsSkuList = new ArrayList<>();
-            // 保存不在按分类计算积分的sku,剩下的就按门店计算,如果门店积分规则没有设置。。。。
-            List<String> nonCategorySkuList = new ArrayList<>();
-            pointsRulesAndDetailVOList.forEach(pointsRulesAndDetailVO -> {
-                Mall2PointsRulesEntity mall2PointsRulesEntity = pointsRulesAndDetailVO.getMall2PointsRulesEntity();
-                List<Mall2RulesDto> mall2PointsRulesDetailList = pointsRulesAndDetailVO.getMall2PointsRulesDetailList();
-                List<String> skuList = mall2PointsRulesDetailList.stream().map(Mall2RulesDto::getPointsRulesName).collect(Collectors.toList());
-                Integer pointsType = mall2PointsRulesEntity.getPointsType();
-                // 积分比例
-                BigDecimal ratio = mall2PointsRulesEntity.getRatio();
-                if (pointsType.equals(Constants.MemberScoreRulesEnum.TWO.getCode())) {
-                    // 商品,优先级最高,查询
-                    goodsSkuList.forEach(sku -> {
-                        if (skuList.contains(sku)) {
+            // 无会员码,不参与积分赠送
+            if (!org.springframework.util.StringUtils.isEmpty(memberCode)) {
+                List<PointsRulesAndDetailVO> pointsRulesAndDetailVOList = mall2PointsRulesService.queryListByTime(new Date());
+                // 商品map,key===>sku value===>金额
+                Map<String, BigDecimal> goodsMap = goodsEntities.stream().collect(Collectors.toMap(GoodsEntity::getSku, GoodsEntity::getActualPaymentAmount, (k1, k2) -> k2));
+                // 商品数据map,key===>sku value===>商品实体
+                Map<String, GoodsEntity> goodsDataMap = goodsEntities.stream().collect(Collectors.toMap(GoodsEntity::getSku, goodsEntity -> goodsEntity, (k1, k2) -> k2));
+                // 订单全部的sku
+                Set<String> goodsSkuList = goodsMap.keySet();
+                // 订单全部商品的分类列表,只有二级分类才能设置生成规则
+                Set<Integer> categorySet = goodsEntities.stream().map(GoodsEntity::getCategoryId).collect(Collectors.toSet());
+                pointsRulesAndDetailVOList.forEach(pointsRulesAndDetailVO -> {
+                    Integer pointsType = pointsRulesAndDetailVO.getPointsType();
+                    // 可以是sku、门店id、分类id
+                    String pointsDetailNameId = pointsRulesAndDetailVO.getPointsDetailNameId();
+                    // 积分比例
+                    BigDecimal ratio = pointsRulesAndDetailVO.getRatio();
+                    if (pointsType.equals(Constants.MemberScoreRulesEnum.TWO.getCode())) {
+                        // 商品,优先级最高,查询
+                        if (goodsSkuList.contains(pointsDetailNameId)) {
                             // 商品积分生成规则包含这个sku
                             // 订单中该sku的总金额
-                            BigDecimal money = goodsMap.get(sku);
-                            if (ratio.compareTo(BigDecimal.ZERO) != 0) {
+                            BigDecimal money = goodsMap.get(pointsDetailNameId);
+                            if (ratio.compareTo(BigDecimal.ZERO) > 0) {
                                 // 算出所积的分
                                 memberScore.set(money.multiply(ratio).add(new BigDecimal(memberScore.get())).intValue());
                             } else {
                                 // 积分比例设置为0,该商品不记积分。
-                                LOGGER.info("商品SKU:【{}】,积分生成规则设置积分比例为:{},故不产生积分!", sku, ratio);
+                                LOGGER.info("商品SKU:【{}】,积分生成规则设置积分比例为:{},故不产生积分!", pointsDetailNameId, ratio);
                             }
-                        } else {
-                            // 不包含sku,则需要判断是否有其他规则
-                            nonGoodsSkuList.add(sku);
+                            goodsDataMap.remove(pointsDetailNameId);
                         }
-                    });
 
-                }
-                if (pointsType.equals(Constants.MemberScoreRulesEnum.ONE.getCode())) {
-                    // 商品类别
-                    nonGoodsSkuList.forEach(sku -> {
-                        if (nonGoodsSkuList.contains(sku)) {
-                            // 订单中该sku的总金额
-                            BigDecimal money = goodsMap.get(sku);
-                            if (ratio.compareTo(BigDecimal.ZERO) != 0) {
-                                // 算出所积的分
-                                memberScore.set(money.multiply(ratio).add(new BigDecimal(memberScore.get())).intValue());
+                    }
+                    if (pointsType.equals(Constants.MemberScoreRulesEnum.ONE.getCode())) {
+                        Collection<GoodsEntity> goodsEntityCollection = goodsDataMap.values();
+                        goodsEntityCollection.forEach(goodsEntity -> {
+                            // 商品类别
+                            Integer categoryId = goodsEntity.getCategoryId();
+                            String sku = goodsEntity.getSku();
+                            if (categorySet.contains(categoryId)) {
+                                if (categoryId.equals(Integer.parseInt(pointsDetailNameId))) {
+                                    // 订单中该sku的总金额
+                                    BigDecimal money = goodsMap.get(sku);
+                                    if (ratio.compareTo(BigDecimal.ZERO) > 0) {
+                                        // 算出所积的分
+                                        memberScore.set(money.multiply(ratio).add(new BigDecimal(memberScore.get())).intValue());
+                                    } else {
+                                        // 积分比例设置为0,该商品不记积分。
+                                        LOGGER.info("分类:【{}】,积分生成规则设置积分比例为:{},故不产生积分!", pointsDetailNameId, ratio);
+                                    }
+                                    goodsDataMap.remove(sku);
+                                }
                             }
-                        } else {
-                            nonCategorySkuList.add(sku);
-                        }
-                    });
-                }
-                if (pointsType.equals(Constants.MemberScoreRulesEnum.ZERO.getCode())) {
-                    // 门店
-                    nonCategorySkuList.forEach(sku -> {
-                        if (nonCategorySkuList.contains(sku)) {
-                            // 订单中该sku的总金额
-                            BigDecimal money = goodsMap.get(sku);
-                            if (ratio.compareTo(BigDecimal.ZERO) != 0) {
-                                // 算出所积的分
-                                memberScore.set(money.multiply(ratio).multiply(new BigDecimal(memberScore.get())).intValue());
+                        });
+                    }
+                    if (pointsType.equals(Constants.MemberScoreRulesEnum.ZERO.getCode())) {
+                        // 门店
+                        Collection<GoodsEntity> goodsEntityCollection = goodsDataMap.values();
+                        goodsEntityCollection.forEach(goodsEntity -> {
+                            Integer storeId1 = goodsEntity.getStoreId();
+                            String sku = goodsEntity.getSku();
+                            if (storeId.equals(storeId1)) {
+                                // 订单中该sku的总金额
+                                BigDecimal money = goodsMap.get(sku);
+                                if (ratio.compareTo(BigDecimal.ZERO) != 0) {
+                                    // 算出所积的分
+                                    memberScore.set(money.multiply(ratio).add(new BigDecimal(memberScore.get())).intValue());
+                                } else {
+                                    // 积分比例设置为0,该商品不记积分。
+                                    LOGGER.info("门店:【{}】,积分生成规则设置积分比例为:{},故不产生积分!", pointsDetailNameId, ratio);
+                                }
                             }
-                        }
-                    });
+                        });
+                    }
+                });
+
+                // 增加该会员的积分
+                Mall2MemberPointsEntity memberPointsEntity = memberPointsDao.queryByUserId(userEntityId);
+                if (memberPointsEntity == null) {
+                    memberPointsEntity = new Mall2MemberPointsEntity();
+                    memberPointsEntity.setUserId(userEntityId + "");
+                    memberPointsEntity.setPoints(memberScore.get());
+                    memberPointsEntity.setCreaterSn(userId + "");
+                    memberPointsEntity.setCreateTime(new Date());
+                    memberPointsDao.save(memberPointsEntity);
+                } else {
+                    memberPointsEntity.setPoints(memberScore.get() + memberPointsEntity.getPoints());
+                    memberPointsEntity.setModerSn(userId + "");
+                    memberPointsEntity.setModTime(new Date());
+                    Integer point = 0;
+                    if (Objects.isNull(memberPointsEntity.getPoints())) {
+                        point = memberScore.get();
+                    } else {
+                        point = memberPointsEntity.getPoints() + memberScore.get();
+                    }
+                    memberPointsEntity.setPoints(point);
+                    memberPointsDao.update(memberPointsEntity);
                 }
-            });
-            // 增加该会员的积分
-            Mall2MemberPointsEntity memberPointsEntity = memberPointsDao.queryByUserId(userEntityId);
-            if (memberPointsEntity == null) {
-                memberPointsEntity = new Mall2MemberPointsEntity();
-                memberPointsEntity.setUserId(userEntityId + "");
-                memberPointsEntity.setPoints(memberScore.get());
-                memberPointsEntity.setCreaterSn(userId + "");
-                memberPointsEntity.setCreateTime(new Date());
-                memberPointsDao.save(memberPointsEntity);
-            } else {
-                memberPointsEntity.setPoints(memberScore.get() + memberPointsEntity.getPoints());
-                memberPointsEntity.setModerSn(userId + "");
-                memberPointsEntity.setModTime(new Date());
-                memberPointsDao.update(memberPointsEntity);
             }
+
             // 增加该会员的消费记录
             Mall2MemberConsumptionRecordsEntity consumptionRecords = new Mall2MemberConsumptionRecordsEntity();
             consumptionRecords.setUserId(userEntity.getId() + "");
@@ -2572,33 +2592,29 @@ public class OrderServiceImpl implements OrderService {
             // 积分消费记录
             Integer beforeScoreInteger = (Integer) param.get("beforeScore");
             Integer afterScoreStrInteger = (Integer) param.get("afterScore");
-            int deductionScore = (Integer) param.get("deductionScore");
+            int deductionScore = org.springframework.util.StringUtils.isEmpty((String) param.get("deductionScore")) ? 0 : Integer.parseInt((String) param.get("deductionScore"));
             String memberPhone = String.valueOf(param.get("memberPhone"));
-            BigDecimal scoreDeductionPrice = BigDecimal.valueOf((Integer) param.get("scoreDeductionPrice"));
+            BigDecimal scoreDeductionPrice = new BigDecimal(org.springframework.util.StringUtils.isEmpty((String) param.get("scoreDeductionPrice")) ? "0" : (String) param.get("scoreDeductionPrice"));
             consumptionRecords.setBeforeScore(beforeScoreInteger);
             consumptionRecords.setAfterScore(afterScoreStrInteger);
-            // TODO 需要新增字段:订单赠送积分
             consumptionRecords.setOrderTotalPrice(order.getActual_price());
             consumptionRecords.setScoreDeductionPrice(scoreDeductionPrice);
             consumptionRecords.setMemberCode(memberCode);
             consumptionRecords.setMemberPhone(memberPhone);
+            consumptionRecords.setOrderGiftScore(memberScore.get());
             consumptionRecords.setDeductionScore(deductionScore);
             consumptionRecords.setCreaterSn(userId + "");
             consumptionRecords.setCreateTime(new Date());
             memberConsumptionRecordsDao.save(consumptionRecords);
 
-            // 同步会员订单消费记录
-            /*if (!org.springframework.util.StringUtils.isEmpty(memberCode)) {
-                syncMemberConsumeRecord(memberPhone, order, deductionScore);
-            }
-
-            // 积分变动接口,下单扣减
             if (!org.springframework.util.StringUtils.isEmpty(memberCode)) {
+                // 同步会员订单消费记录
+                syncMemberConsumeRecord(memberPhone, order, deductionScore);
                 syncMemberScoreChangeRecord(openId, order, deductionScore, "下单扣减", HaiKongMemberScoreChangeEventEnum.SUBTRACT.getEvent());
-                // 下单赠送,一元积一分
-                Integer score = order.getActual_price().intValue();
+                // 积分变动接口,下单扣减
+                Integer score = memberScore.get();
                 syncMemberScoreChangeRecord(openId, order, score, "下单赠送", HaiKongMemberScoreChangeEventEnum.ADD.getEvent());
-            }*/
+            }
 
             // 生成取票码
             PickUpCodeEntity pickUpCodeEntity = new PickUpCodeEntity();
@@ -3004,7 +3020,7 @@ public class OrderServiceImpl implements OrderService {
             haiKongMemberOrderSyncResendService.save(haiKongMemberOrderSyncResendEntity);
             LOGGER.info("请求会员系统同步消费订单接口成功!响应数据:{}", memberOrderSyncResponseJson);
         } catch (Exception e) {
-            LOGGER.error("请求会员系统同步消费订单接口失败!准备新增发送失败记录,等待重发!异常信息:", e);
+            LOGGER.error("请求会员系统同步消费订单接口出现异常!准备新增发送失败记录,等待重发!异常信息:", e);
             // 没有请求成功,写表,重发
             haiKongMemberOrderSyncResendEntity.setResendStatus(HaiKongMemberOrderResendStatusEnum.WAIT_RESEND.getStatus());
             haiKongMemberOrderSyncResendService.save(haiKongMemberOrderSyncResendEntity);
@@ -3046,6 +3062,7 @@ public class OrderServiceImpl implements OrderService {
             haiKongMemberScoreChangeRecordService.save(haiKongMemberScoreChangeRecordEntity);
             LOGGER.info("请求会员系统积分变动接口成功!响应数据:{}", changeMemberScoreResponseJson);
         } catch (Exception e) {
+            LOGGER.error("请求会员系统积分变动接口出现异常!准备新增发送失败记录,等待重发!异常信息:", e);
             // 失败重发
             haiKongMemberScoreChangeRecordEntity.setResendStatus(HaiKongMemberOrderResendStatusEnum.WAIT_RESEND.getStatus());
             haiKongMemberScoreChangeRecordService.save(haiKongMemberScoreChangeRecordEntity);

+ 19 - 13
kmall-admin/src/main/resources/mybatis/mapper/vip/Mall2MemberConsumptionRecordsDao.xml

@@ -23,6 +23,7 @@
         <result property="scoreLimit" column="score_limit"/>
         <result property="beforeScore" column="before_score"/>
         <result property="afterScore" column="after_score"/>
+        <result property="orderGiftScore" column="order_gift_score"/>
     </resultMap>
 
 	<select id="queryObject" resultType="com.kmall.admin.entity.vip.Mall2MemberConsumptionRecordsEntity">
@@ -45,7 +46,8 @@
 			`score_deduction_price`,
 			`score_limit`,
 			`before_score`,
-			`after_score`
+			`after_score`,
+			`order_gift_score`
 		from mall2_member_consumption_records
 		where mmcr_id = #{id}
 	</select>
@@ -72,7 +74,8 @@
 			records.`score_deduction_price`,
 			records.`score_limit`,
 			records.`before_score`,
-			records.`after_score`
+			records.`after_score`,
+			records.`order_gift_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
@@ -127,7 +130,8 @@
 			`score_deduction_price`,
 			`score_limit`,
 			`before_score`,
-			`after_score`)
+			`after_score`,
+			`order_gift_score`)
 		values(
 			#{mmcrId},
 			#{userId},
@@ -147,7 +151,8 @@
 			#{scoreDeductionPrice},
 			#{scoreLimit},
 			#{beforeScore},
-			#{afterScore})
+			#{afterScore},
+			#{orderGiftScore})
 	</insert>
 
 	<update id="update" parameterType="com.kmall.admin.entity.vip.Mall2MemberConsumptionRecordsEntity">
@@ -162,15 +167,16 @@
 			<if test="createTime != null">`create_time` = #{createTime}, </if>
 			<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>
+			<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>
+			<if test="orderGiftScore != null">`order_gift_score` = #{orderGiftScore}</if>
 		</set>
 		where mmcr_id = #{mmcrId}
 	</update>

+ 2 - 2
kmall-admin/src/main/resources/mybatis/mapper/vip/Mall2PointsRulesDao.xml

@@ -148,8 +148,8 @@
 			mprs.`id` as id,
 			mprs.`father_id` as fatherId,
 			mprs.`points_rules_type` as pointRulesType,
-			mprs.`points_detil_name` as pointsDetilName,
-			mprs.`points_detil_name_id` as pointsDetilNameId,
+			mprs.`points_detil_name` as pointsDetailName,
+			mprs.`points_detil_name_id` as pointsDetailNameId,
 			mprs.`points_store_name` as pointsStoreName,
 			mprs.`points_store_id` as pointsStoreId,
 			mprs.`remark` as remark

+ 4 - 3
kmall-admin/src/main/webapp/js/sale/sale.js

@@ -625,7 +625,8 @@ let vm = new Vue({
 
             let result = [];
             for(let i=0; i<vm.searchGoods.length; i++){
-                if(vm.searchGoods[i].name.indexOf(vm.prodBarcode) > -1){
+                let goods = vm.searchGoods[i];
+                if(goods != null && goods.name.indexOf(vm.prodBarcode) > -1){
                     if(result.length <= 9){
                         result.push(vm.searchGoods[i]);
                     }else{
@@ -1963,8 +1964,8 @@ function toPayOrder(payCode){
                  'machineCode':vm.machineCode,
                  'memberCode': vm.memberCode,
                  'memberPhone': vm.memberPhone,
-                 'deductionScore': vm.deductionScore,
-                 'actualPrice': vm.actualPrice,
+                 'deductionScore': new BigNumber(vm.deductionScore).toString(),
+                 'actualPrice': new BigNumber(vm.actualPrice).toString(),
                  'scoreDeductionPrice': vm.scoreDeductionPrice,
                  'scoreLimit': vm.scoreLimit,
                  'beforeScore': vm.beforeScore,