Bläddra i källkod

Merge remote-tracking branch 'origin/master'

wangming 2 dagar sedan
förälder
incheckning
2b9cca2ecf

+ 15 - 10
yami-shop-api/src/main/java/com/yami/shop/api/controller/MyOrderController.java

@@ -119,13 +119,16 @@ public class MyOrderController {
 
         //计算订单使用积分
         Integer score = 0;
-        for (OrderItem orderItem : orderItems) {
-            score += orderItem.getUseScore();
-        }
+//        for (OrderItem orderItem : orderItems) {
+//            score += orderItem.getUseScore();
+//        }
+//        if (score > 0) {
+//            score = (int) (score + order.getFreightAmount());
+//        }
 
         List<OrderItemDto> orderItemDtoList = mapperFacade.mapAsList(orderItems, OrderItemDto.class);
         //加上运费
-        orderShopDto.setOrderScore((int) (score+order.getFreightAmount()));
+        orderShopDto.setOrderScore(score);
         orderShopDto.setShopId(shopDetail.getShopId());
 //        orderShopDto.setShopId(0L);
         orderShopDto.setDvyType(order.getDvyType());
@@ -136,9 +139,12 @@ public class MyOrderController {
         orderShopDto.setTransfee(order.getFreightAmount());
 //        Math.abs
         Long l = pointsRecordMapper.statisticsPoint(userId, Math.toIntExact(order.getChannelId()));
+        //当前剩余总可用的积分
         orderShopDto.setTotalAvailableScore(l);
         if (null != order.getOffsetPoints()) {
+            //当前订单抵扣的积分转换成钱
             orderShopDto.setReduceAmount(Arith.div(Double.valueOf(order.getOffsetPoints()), 100));
+            //当前订单使用了多少积分
             orderShopDto.setTotalUsableScore(Double.valueOf(order.getOffsetPoints()));
         }
         orderShopDto.setCreateTime(order.getCreateTime());
@@ -214,7 +220,7 @@ public class MyOrderController {
                                                      @RequestParam(value = "dvyType", required = false) Integer dvyType
     ) {
         String userId = SecurityUtils.getUser().getUserId();
-        IPage<MyOrderDto> myOrderDtoIpage = myOrderService.pageMyOrderByUserIdAndStatus(page, userId, status,dvyType);
+        IPage<MyOrderDto> myOrderDtoIpage = myOrderService.pageMyOrderByUserIdAndStatus(page, userId, status, dvyType);
         return ResponseEntity.ok(myOrderDtoIpage);
     }
 
@@ -306,7 +312,6 @@ public class MyOrderController {
         if (!Objects.equals(order.getHbOrderStatus(), OrderStatus.UNPAY.value())) {
             throw new GlobalException("订单已支付,无法取消订单");
         }
-
         List<OrderItem> orderItems = orderItemService.getOrderItemsByOrderNumber(orderNumber);
         order.setOrderItems(orderItems);
         // 取消订单
@@ -328,10 +333,10 @@ public class MyOrderController {
     public ResponseEntity<String> receipt(@PathVariable("orderNumber") String orderNumber) {
         String userId = SecurityUtils.getUser().getUserId();
         Order order = orderService.getOrderByOrderNumberAndUserId(orderNumber, userId, true);
-        if (Objects.equals(order.getDvyType(), 1)){
-            CullenUtils.validateDataThrowException(Objects.equals(order.getHbOrderStatus(), 0),"订单未支付");
-            CullenUtils.validateDataThrowException(Objects.equals(order.getHbOrderStatus(), 1),"订单未发货,无法确认收货");
-        }else {
+        if (Objects.equals(order.getDvyType(), 1)) {
+            CullenUtils.validateDataThrowException(Objects.equals(order.getHbOrderStatus(), 0), "订单未支付");
+            CullenUtils.validateDataThrowException(Objects.equals(order.getHbOrderStatus(), 1), "订单未发货,无法确认收货");
+        } else {
             if (!Objects.equals(order.getHbOrderStatus(), OrderStatus.CONSIGNMENT.value())) {
                 throw new GlobalException("订单未发货,无法确认收货");
             }

+ 2 - 3
yami-shop-api/src/main/java/com/yami/shop/api/listener/ConfirmOrderListener.java

@@ -102,7 +102,6 @@ public class ConfirmOrderListener {
             totalCount = shopCartItem.getProdCount() + totalCount;
             total = Arith.add(shopCartItem.getProductTotalAmount(), total);
             // 用户地址如果为空,则表示该用户从未设置过任何地址相关信息
-            // TODO wangjian 计算积分抵现和分摊,报错
             shopCartItem.setActualTotal(shopCartItem.getProductTotalAmount());
             shopCartOrderDto.setTotalWeight(Arith.add(shopCartOrderDto.getTotalWeight(), Arith.mul(shopCartItem.getWeight(), shopCartItem.getProdCount())));
         }
@@ -132,11 +131,12 @@ public class ConfirmOrderListener {
                         //   2         3         4
                         //  5*2+5     5*3+5     5*4+5
                         int num = 1;
-                        while (sub > (1 << num) * 10) {
+                        while (sub > (1 << num) * 1000) {//单位g
                             num++;
                             transfee = Arith.add(transfee, Arith.mul(transfee, num));
                         }
                     }
+                    System.out.println(transfee);
                     break;
                 case 2: //夫妻店,B端只走物流
                     orderParam.setDvyType(DvyType.DELIVERY.value());
@@ -150,7 +150,6 @@ public class ConfirmOrderListener {
         }
 
 
-        //TODO wangjian 减免运费
         Double freeTransfee = 0.0;
 //        List<FreightFeeReduction> feeReductions = freightFeeReductionService.list(new LambdaQueryWrapper<FreightFeeReduction>()
 //                        .eq(FreightFeeReduction::getStatus, 1)

+ 3 - 24
yami-shop-api/src/main/java/com/yami/shop/api/listener/SubmitOrderListener.java

@@ -141,8 +141,8 @@ public class SubmitOrderListener {
                 order.setIsPayed(0);
                 order.setHbOrderStatus(OrderStatus.UNPAY.value());
                 order.setOrderType(OrderType.ORDINARY.value());
-                //加运费
-                double actualTotal = Arith.add(shopCartOrderDto.getActualTotal(),shopCartOrderDto.getTransfee());
+                //这个运费是已经算过的了
+                double actualTotal = shopCartOrderDto.getActualTotal();
                 //企业用户才进这个判断,并且该用户的积分必须大于0
                 if (1 == mergerOrder.getPlatform() && null != point && point > 0) {
                     order.setOrderType(OrderType.SCORE.value());
@@ -159,8 +159,8 @@ public class SubmitOrderListener {
                     } else {
                         //积分不够抵扣
                         double sub = Arith.sub(mul, vp);
+                        order.setOffsetPoints(point);
                         //剩下需要付的钱
-                        order.setOffsetPoints(Long.valueOf(String.valueOf(sub).split("\\.")[0]));
                         actualTotal = sub / 100;
                         mergerOrder.setNextPay(Boolean.TRUE);
                     }
@@ -286,27 +286,6 @@ public class SubmitOrderListener {
         if (!basketIds.isEmpty()) {
             basketMapper.deleteShopCartItemsByBasketIds(userId, basketIds);
         }
-
-//        现在不用维护库存
-//        // 更新sku库存
-//        skuStocksMap.forEach((key, sku) -> {
-//
-//            if (skuMapper.updateStocks(sku) == 0) {
-//                skuService.removeSkuCacheBySkuId(key, sku.getProdId());
-//                productService.removeProductCacheByProdId(sku.getProdId());
-//                throw new GlobalException("商品:[" + sku.getProdName() + "]库存不足");
-//            }
-//        });
-//
-//        //更新商品库存
-//        prodStocksMap.forEach((prodId, prod) -> {
-//
-//            if (productMapper.updateStocks(prod) == 0) {
-//                productService.removeProductCacheByProdId(prodId);
-//                throw new GlobalException("商品:[" + prod.getProdName() + "]库存不足");
-//            }
-//        });
-
     }
 
     @SuppressWarnings({"Duplicates"})

+ 3 - 3
yami-shop-bean/src/main/java/com/yami/shop/bean/dto/OrderRefundDto.java

@@ -97,11 +97,11 @@ public class OrderRefundDto extends OrderRefund implements Serializable {
      */
     private Boolean isCancel;
 
-    private Double freightAmount;
+    private Double freightAmount = 0.0;
 
-    private Long offsetPoints;
+    private Long offsetPoints = 0L;
 
     private Double goodsTotal;
     //过期的积分
-    private Long refundExpiredScore;
+    private Long refundExpiredScore = 0L;
 }

+ 20 - 11
yami-shop-service/src/main/java/com/yami/shop/service/impl/OrderRefundServiceImpl.java

@@ -66,6 +66,7 @@ public class OrderRefundServiceImpl extends ServiceImpl<OrderRefundMapper, Order
     private final ShopDetailService shopDetailService;
     private final ShopWalletMapper shopWalletMapper;
     private final OrderMapper orderMapper;
+    private final OrderItemMapper orderItemMapper;
     private final MapperFacade mapperFacade;
     private final ShopWalletLogService shopWalletLogService;
     private final ApplicationContext applicationContext;
@@ -75,7 +76,6 @@ public class OrderRefundServiceImpl extends ServiceImpl<OrderRefundMapper, Order
     private final OrderRefundSkuMapper orderRefundSkuMapper;
 
 
-
     /**
      * 获取分页对象
      */
@@ -114,14 +114,14 @@ public class OrderRefundServiceImpl extends ServiceImpl<OrderRefundMapper, Order
         // 如果是单项退款,且订单状态为待发货,则判断退款操作是否可以取消
         if (orderRefundDto.getRefundType().equals(RefundType.SINGLE.value()) && orderRefundDto.getStatus().equals(OrderStatus.PADYED.value())) {
             Integer orderRefundNums = orderRefundMapper.getOrderRefundCountByRefundSn(orderRefundDto.getRefundSn());
-            Integer orderItemNums = orderItemService.count(new LambdaQueryWrapper<OrderItem>().eq(OrderItem::getOrderNumber, orderRefundDto.getOrderNumber()));
+            int orderItemNums = orderItemService.count(new LambdaQueryWrapper<OrderItem>().eq(OrderItem::getOrderNumber, orderRefundDto.getOrderNumber()));
             //订单退款项等于订单项(多个订单项) -> 该订单已全部进行退款申请 -> 不能进行取消退款操作
             if (orderItemNums > 1 && orderRefundNums.equals(orderItemNums)) {
                 orderRefundDto.setIsCancel(false);
             }
         }
         orderRefundDto.setRecords(orderRefundRecordMapper.selectList(new LambdaQueryWrapper<OrderRefundRecord>()
-                .eq(OrderRefundRecord::getOrderRefundId,orderRefundDto.getRefundId())
+                .eq(OrderRefundRecord::getOrderRefundId, orderRefundDto.getRefundId())
                 .orderByDesc(OrderRefundRecord::getSort)));
         return orderRefundDto;
     }
@@ -296,9 +296,18 @@ public class OrderRefundServiceImpl extends ServiceImpl<OrderRefundMapper, Order
     }
 
     private void getRefundTypeByOrderItem2(OrderRefundDto orderRefundDto) {
+        int oldSum = orderItemMapper.selectList(new LambdaQueryWrapper<OrderItem>()
+                        .eq(OrderItem::getOrderNumber, orderRefundDto.getOrderNumber())).stream().mapToInt(OrderItem::getProdCount)
+                .sum();
         List<OrderItem> item = orderItemService.getRefundTypeByOrderItem2(orderRefundDto.getRefundId());
-        if (!item.isEmpty()){
-            orderRefundDto.setGoodsTotal(item.stream().map(OrderItem::getGoodsTotal).reduce(0.0, Double::sum));}
+        int newSum = item.stream().mapToInt(OrderItem::getProductCount).sum();
+        if (!item.isEmpty()) {
+            orderRefundDto.setGoodsTotal(item.stream().map(OrderItem::getGoodsTotal).reduce(0.0, Double::sum));
+            if (oldSum == newSum) {
+                //代表全部退,所以需要增加运费显示
+                orderRefundDto.setGoodsTotal(orderRefundDto.getGoodsTotal() + orderRefundDto.getFreightAmount());
+            }
+        }
         orderRefundDto.setOrderItems(item);
     }
 
@@ -943,7 +952,7 @@ public class OrderRefundServiceImpl extends ServiceImpl<OrderRefundMapper, Order
     //*************************** 售后接口 ***************************
     @Override
     public String createRefundOrder(String channelOrderId, String afterSaleOrder) {
-        log.info("createRefundOrder 退款单推送单号开始channelOrderId:{},afterSaleOrder:{}",channelOrderId,afterSaleOrder);
+        log.info("createRefundOrder 退款单推送单号开始channelOrderId:{},afterSaleOrder:{}", channelOrderId, afterSaleOrder);
         HBBaseReq<Object> build = HBBaseReq.create();
         build.setAppId(hbSignUtil.getAppId());
 
@@ -1002,7 +1011,7 @@ public class OrderRefundServiceImpl extends ServiceImpl<OrderRefundMapper, Order
             thirdPartyRefundRequest.setOutStationNo(shopDetailByShopId.getHbStationNo());
             thirdPartyRefundRequest.setAfterSaleOrder(orderRefund.getRefundSn());
             thirdPartyRefundRequest.setSaleType(1);//售前售后标 1:售前 2:售后
-            if (order.getHbOrderStatus().equals(OrderStatus.SUCCESS.value())){
+            if (order.getHbOrderStatus().equals(OrderStatus.SUCCESS.value())) {
                 thirdPartyRefundRequest.setSaleType(2);
             }
             thirdPartyRefundRequest.setReason(orderRefund.getBuyerReason());
@@ -1012,7 +1021,7 @@ public class OrderRefundServiceImpl extends ServiceImpl<OrderRefundMapper, Order
             Integer applyType = orderRefund.getApplyType();
             if (Objects.equals(applyType, 1)) {
                 thirdPartyRefundRequest.setApplyDeal(10);
-            } else if (Objects.equals(applyType, 2)){
+            } else if (Objects.equals(applyType, 2)) {
                 thirdPartyRefundRequest.setApplyDeal(40);
             } else {
                 thirdPartyRefundRequest.setApplyDeal(50);
@@ -1104,9 +1113,9 @@ public class OrderRefundServiceImpl extends ServiceImpl<OrderRefundMapper, Order
                 //审核通过
                 orderRefund.setApplyType(applyDeal);
 
-                if (applyDeal == 1){
+                if (applyDeal == 1) {
                     orderRefund.setReturnMoneySts(ReturnMoneyStsType.SUCCESS.value());
-                }else{
+                } else {
                     //退货退款需要处理二审
                     orderRefund.setReturnMoneySts(ReturnMoneyStsType.CONSIGNMENT.value());
                 }
@@ -1122,7 +1131,7 @@ public class OrderRefundServiceImpl extends ServiceImpl<OrderRefundMapper, Order
                 orderRefundRecordMapper.insert(orderRefundRecord1);
             }
 
-            if (applyDeal == 1){
+            if (applyDeal == 1) {
                 orderService.returnRefund(orderRefund.getOrderNumber());
             }
             //推送商家审核状态后 同步退款单状态

+ 12 - 11
yami-shop-service/src/main/java/com/yami/shop/service/impl/OrderServiceImpl.java

@@ -276,7 +276,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
             allOrderItems.addAll(orderItems);
             eventPublisher.publishEvent(new CancelOrderEvent(order));
             // 判定是不是积分订单,如果是或者包含积分则退积分
-            if (Objects.equals(OrderType.ORDINARY.value(), order.getOrderType())) {
+            if (Objects.equals(OrderType.SCORE.value(), order.getOrderType())) {
                 List<PointsRecord> pointsRecords = pointsRecordMapper.selectList(new LambdaQueryWrapper<PointsRecord>()
                         .eq(PointsRecord::getOrderNumber, order.getOrderNumber())
                         .eq(PointsRecord::getPointsType, 2)//购物的积分
@@ -292,8 +292,9 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
                     pointsRecord.setPoints(pointsRecord.getVariablePoints());
                     pointsRecord.setVariablePoints(BigDecimal.valueOf(0));
                     pointsRecord.setPointsType(3);
-                    pointsRecord.setCurrentlyAvailablePoints(BigDecimal.valueOf(l).add(pointsRecord.getPoints()));
-                    pointsRecordMapper.updateById(pointsRecord);
+                    pointsRecord.setPointsAudit(1);
+                    pointsRecord.setCurrentlyAvailablePoints(BigDecimal.valueOf(null != l ? l : 0).add(pointsRecord.getPoints()));
+                    pointsRecordMapper.insert(pointsRecord);
                 }
             }
         }
@@ -341,8 +342,8 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
     @Override
     public IPage<Order> deliverList(PageParam<Order> page, BackendOrderParam orderParam) {
         List<Order> orderList = orderMapper.deliverList(new PageAdapter(page), orderParam);
-        if (!orderList.isEmpty()){
-            orderList.forEach(c-> {
+        if (!orderList.isEmpty()) {
+            orderList.forEach(c -> {
                 List<OrderItem> orderItems = orderItemMapper.getListByOrderNumber(c.getOrderNumber());
                 c.setOrderItems(orderItems);
                 c.setGoodsTotalCount(orderItems.stream().map(OrderItem::getProdCount).reduce(0, Integer::sum));
@@ -1146,12 +1147,12 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
     @Override
     public Map<String, Integer> deliverListStatusNum() {
         Map<String, Integer> map = new LinkedTreeMap<>();
-        map.put("all",orderMapper.statusCount(Lists.newArrayList(0, 1,20,30,40,50,60,70,80)));
-        map.put("paddingPay",orderMapper.statusCount(Lists.newArrayList(0)));
-        map.put("paddingShipped",orderMapper.statusCount(Lists.newArrayList(1)));
-        map.put("paddingReceived",orderMapper.statusCount(Lists.newArrayList(20,30,40,50,70)));
-        map.put("completed",orderMapper.statusCount(Lists.newArrayList(80)));
-        map.put("cancel",orderMapper.statusCount(Lists.newArrayList(60)));
+        map.put("all", orderMapper.statusCount(Lists.newArrayList(0, 1, 20, 30, 40, 50, 60, 70, 80)));
+        map.put("paddingPay", orderMapper.statusCount(Lists.newArrayList(0)));
+        map.put("paddingShipped", orderMapper.statusCount(Lists.newArrayList(1)));
+        map.put("paddingReceived", orderMapper.statusCount(Lists.newArrayList(20, 30, 40, 50, 70)));
+        map.put("completed", orderMapper.statusCount(Lists.newArrayList(80)));
+        map.put("cancel", orderMapper.statusCount(Lists.newArrayList(60)));
         return map;
     }
 

+ 7 - 3
yami-shop-service/src/main/java/com/yami/shop/service/impl/QnhServiceImpl.java

@@ -24,6 +24,7 @@ import com.yami.shop.bean.vo.StoreListVo;
 import com.yami.shop.common.exception.GlobalException;
 import com.yami.shop.common.exception.YamiShopBindException;
 import com.yami.shop.dao.ShopDetailMapper;
+import com.yami.shop.dao.ShopSkuMapper;
 import com.yami.shop.service.*;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.codec.digest.DigestUtils;
@@ -89,6 +90,9 @@ public class QnhServiceImpl implements IQnhService {
     @Resource
     private ShopDetailMapper shopDetailMapper;
 
+    @Resource
+    private ShopSkuMapper shopSkuMapper;
+
     @Override
     public List<StoreListVo> getStores(StoreDto dto) {
         Map<String, Object> body = bulidMap();
@@ -201,11 +205,11 @@ public class QnhServiceImpl implements IQnhService {
         if (ObjectUtils.isNotEmpty(shopDetail)) {
             jsonObject.put("poi_code", shopDetail.getThirdPartyCode());
         }
+        ShopSku shopSku = shopSkuMapper.selectByShopAndProd(one1.getSkuId(), byId.getShopId());
         jsonObject.put("sku_code", skuCode);
         jsonObject.put("page_size", 50);
-        //TODO wangjian 原先查询牵牛花的库存,现在需要替换成海博的
-        one1.setStocks(9999);
-        one1.setActualStocks(9999);
+        one1.setStocks(shopSku.getShopSkuStocks());
+        one1.setActualStocks(shopSku.getShopSkuStocks());
         return Boolean.TRUE;
 //        HttpResponse execute = getExecute(body, jsonObject, GET_SKU_STOCK);
 //        JSONObject result = JSONObject.parseObject(execute.body());

+ 51 - 22
yami-shop-user/yami-shop-user-comment/src/main/java/com/yami/shop/user/comment/service/impl/UserScoreDetailServiceImpl.java

@@ -153,38 +153,67 @@ public class UserScoreDetailServiceImpl extends ServiceImpl<UserScoreDetailMappe
         IPage<PointsRecord> pointsRecordIPage = pointsRecordMapper.selectPage(page, new LambdaQueryWrapper<PointsRecord>()
                 .eq(PointsRecord::getUserId, userId)
                 .eq(PointsRecord::getChannelId, platform)
+                .orderByAsc(PointsRecord::getCreationDate)
         );
         SimpleDateFormat sdf = new SimpleDateFormat("MM月dd日 HH:mm");
-        List<PointsRecord> collect = pointsRecordIPage.getRecords().stream().peek((pointsRecord) -> {
+        List<PointsRecord> collect = pointsRecordIPage.getRecords().stream().flatMap((pointsRecord) -> {
             pointsRecord.setCreationDateStr(sdf.format(pointsRecord.getCreationDate()));
             String mark = "";
-            if (isExpiredToday(pointsRecord.getExpiryDate())) {
-                pointsRecord.setPointsTypeStr("过期");
-                mark = "-";
-                pointsRecord.setVariablePointsStr(mark + (null!=pointsRecord.getVariablePoints()?pointsRecord.getVariablePoints():"0"));
-            } else {
-                switch (pointsRecord.getPointsType()) {
-                    case 1:
-                        pointsRecord.setPointsTypeStr("充值");
-                        mark = "+";
-                        pointsRecord.setVariablePointsStr(mark + pointsRecord.getPoints());
-                        break;
-                    case 2:
-                        pointsRecord.setPointsTypeStr("购物");
+            List<PointsRecord> recordsToAdd = new ArrayList<>();
+            recordsToAdd.add(pointsRecord); // 先添加原对象
+            switch (pointsRecord.getPointsType()) {
+                case 1:
+                    int variablePoints = pointsRecord.getVariablePoints() != null ?
+                            pointsRecord.getVariablePoints().intValue() : 0;
+                    int remainingPoints = pointsRecord.getPoints().intValue() - variablePoints;
+
+                    if (remainingPoints > 0 && isExpiredToday(pointsRecord.getExpiryDate())) {
+
+                        PointsRecord expiredRecord = new PointsRecord();
+                        // 复制关键属性(根据实际属性补充)
+                        expiredRecord.setId(pointsRecord.getId()); // 若ID唯一需注意业务逻辑
+                        expiredRecord.setCreationDate(pointsRecord.getCreationDate());
+                        expiredRecord.setPointsType(pointsRecord.getPointsType());
+                        expiredRecord.setPoints(pointsRecord.getPoints());
+                        expiredRecord.setVariablePoints(pointsRecord.getVariablePoints());
+                        expiredRecord.setExpiryDate(pointsRecord.getExpiryDate());
+                        expiredRecord.setCurrentlyAvailablePoints(pointsRecord.getCurrentlyAvailablePoints());
+
+                        // 设置复制对象的显示属性
+                        expiredRecord.setCreationDateStr(pointsRecord.getCreationDateStr()); // 复用已格式化的日期
+                        expiredRecord.setPointsTypeStr("过期扣减"); // 示例:区分类型
+                        expiredRecord.setVariablePointsStr("-" + remainingPoints); // 示例:显示过期数量
+                        // 设置原对象为过期记录
+                        expiredRecord.setPointsTypeStr("过期");
                         mark = "-";
-                        pointsRecord.setVariablePointsStr(mark + (null!=pointsRecord.getVariablePoints()?pointsRecord.getVariablePoints():"0"));
-                        break;
-                    case 3:
-                        pointsRecord.setPointsTypeStr("退款");
+                        expiredRecord.setVariablePointsStr(mark +
+                                (pointsRecord.getVariablePoints() != null ?
+                                        pointsRecord.getVariablePoints() : pointsRecord.getPoints()));
+                        recordsToAdd.add(expiredRecord); // 添加复制对象
+                    }
+                        pointsRecord.setPointsTypeStr("充值");
                         mark = "+";
                         pointsRecord.setVariablePointsStr(mark + pointsRecord.getPoints());
-                        break;
-                }
+                    break;
+                case 2:
+                    pointsRecord.setPointsTypeStr("购物");
+                    mark = "-";
+                    pointsRecord.setVariablePointsStr(mark +
+                            (pointsRecord.getVariablePoints() != null ?
+                                    pointsRecord.getVariablePoints() : "0"));
+                    break;
+                case 3:
+                    pointsRecord.setPointsTypeStr("退款");
+                    mark = "+";
+                    pointsRecord.setVariablePointsStr(mark + pointsRecord.getPoints());
+                    break;
             }
-            //此时当前可用
-            if(null!=pointsRecord.getCurrentlyAvailablePoints()){
+
+            // 设置可用积分(原对象和复制对象都会执行)
+            if (pointsRecord.getCurrentlyAvailablePoints() != null) {
                 pointsRecord.setTotalAvailablePoints(pointsRecord.getCurrentlyAvailablePoints().longValue());
             }
+            return recordsToAdd.stream();
         }).collect(Collectors.toList());
         pointsRecordIPage.setRecords(collect);
         return pointsRecordIPage;